2011-05-27 Pedro Alves <pedro@codesourcery.com>
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5    2008, 2009, 2010, 2011 Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "arch-utils.h"
24 #include <ctype.h>
25 #include "hashtab.h"
26 #include "symtab.h"
27 #include "frame.h"
28 #include "breakpoint.h"
29 #include "tracepoint.h"
30 #include "gdbtypes.h"
31 #include "expression.h"
32 #include "gdbcore.h"
33 #include "gdbcmd.h"
34 #include "value.h"
35 #include "command.h"
36 #include "inferior.h"
37 #include "gdbthread.h"
38 #include "target.h"
39 #include "language.h"
40 #include "gdb_string.h"
41 #include "demangle.h"
42 #include "filenames.h"
43 #include "annotate.h"
44 #include "symfile.h"
45 #include "objfiles.h"
46 #include "source.h"
47 #include "linespec.h"
48 #include "completer.h"
49 #include "gdb.h"
50 #include "ui-out.h"
51 #include "cli/cli-script.h"
52 #include "gdb_assert.h"
53 #include "block.h"
54 #include "solib.h"
55 #include "solist.h"
56 #include "observer.h"
57 #include "exceptions.h"
58 #include "memattr.h"
59 #include "ada-lang.h"
60 #include "top.h"
61 #include "wrapper.h"
62 #include "valprint.h"
63 #include "jit.h"
64 #include "xml-syscall.h"
65 #include "parser-defs.h"
66 #include "cli/cli-utils.h"
67 #include "continuations.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 /* Arguments to pass as context to some catch command handlers.  */
80 #define CATCH_PERMANENT ((void *) (uintptr_t) 0)
81 #define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
82
83 /* Prototypes for local functions.  */
84
85 static void enable_delete_command (char *, int);
86
87 static void enable_once_command (char *, int);
88
89 static void disable_command (char *, int);
90
91 static void enable_command (char *, int);
92
93 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
94                                                       void *),
95                                     void *);
96
97 static void ignore_command (char *, int);
98
99 static int breakpoint_re_set_one (void *);
100
101 static void clear_command (char *, int);
102
103 static void catch_command (char *, int);
104
105 static int can_use_hardware_watchpoint (struct value *);
106
107 static void break_command_1 (char *, int, int);
108
109 static void mention (struct breakpoint *);
110
111 /* This function is used in gdbtk sources and thus can not be made
112    static.  */
113 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
114                                               struct symtab_and_line,
115                                               enum bptype);
116
117 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
118
119 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
120                                             CORE_ADDR bpaddr,
121                                             enum bptype bptype);
122
123 static void describe_other_breakpoints (struct gdbarch *,
124                                         struct program_space *, CORE_ADDR,
125                                         struct obj_section *, int);
126
127 static int breakpoint_address_match (struct address_space *aspace1,
128                                      CORE_ADDR addr1,
129                                      struct address_space *aspace2,
130                                      CORE_ADDR addr2);
131
132 static int watchpoint_locations_match (struct bp_location *loc1,
133                                        struct bp_location *loc2);
134
135 static int breakpoint_location_address_match (struct bp_location *bl,
136                                               struct address_space *aspace,
137                                               CORE_ADDR addr);
138
139 static void breakpoints_info (char *, int);
140
141 static void watchpoints_info (char *, int);
142
143 static int breakpoint_1 (char *, int, 
144                          int (*) (const struct breakpoint *));
145
146 static int breakpoint_cond_eval (void *);
147
148 static void cleanup_executing_breakpoints (void *);
149
150 static void commands_command (char *, int);
151
152 static void condition_command (char *, int);
153
154 typedef enum
155   {
156     mark_inserted,
157     mark_uninserted
158   }
159 insertion_state_t;
160
161 static int remove_breakpoint (struct bp_location *, insertion_state_t);
162 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
163
164 static enum print_stop_action print_it_typical (bpstat);
165
166 static enum print_stop_action print_bp_stop_message (bpstat bs);
167
168 static int watchpoint_check (void *);
169
170 static void maintenance_info_breakpoints (char *, int);
171
172 static int hw_breakpoint_used_count (void);
173
174 static int hw_watchpoint_used_count (enum bptype, int *);
175
176 static void hbreak_command (char *, int);
177
178 static void thbreak_command (char *, int);
179
180 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp);
181
182 static void stop_command (char *arg, int from_tty);
183
184 static void stopin_command (char *arg, int from_tty);
185
186 static void stopat_command (char *arg, int from_tty);
187
188 static char *ep_parse_optional_if_clause (char **arg);
189
190 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
191                                        char *arg, int tempflag, int from_tty);
192
193 static void tcatch_command (char *arg, int from_tty);
194
195 static void detach_single_step_breakpoints (void);
196
197 static int single_step_breakpoint_inserted_here_p (struct address_space *,
198                                                    CORE_ADDR pc);
199
200 static void free_bp_location (struct bp_location *loc);
201 static void incref_bp_location (struct bp_location *loc);
202 static void decref_bp_location (struct bp_location **loc);
203
204 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
205
206 static void update_global_location_list (int);
207
208 static void update_global_location_list_nothrow (int);
209
210 static int is_hardware_watchpoint (const struct breakpoint *bpt);
211
212 static int is_watchpoint (const struct breakpoint *bpt);
213
214 static void insert_breakpoint_locations (void);
215
216 static int syscall_catchpoint_p (struct breakpoint *b);
217
218 static void tracepoints_info (char *, int);
219
220 static void delete_trace_command (char *, int);
221
222 static void enable_trace_command (char *, int);
223
224 static void disable_trace_command (char *, int);
225
226 static void trace_pass_command (char *, int);
227
228 static int is_masked_watchpoint (const struct breakpoint *b);
229
230 /* Assuming we're creating a static tracepoint, does S look like a
231    static tracepoint marker spec ("-m MARKER_ID")?  */
232 #define is_marker_spec(s)                                               \
233   (s != NULL && strncmp (s, "-m", 2) == 0 && ((s)[2] == ' ' || (s)[2] == '\t'))
234
235 /* A reference-counted struct command_line.  This lets multiple
236    breakpoints share a single command list.  */
237 struct counted_command_line
238 {
239   /* The reference count.  */
240   int refc;
241
242   /* The command list.  */
243   struct command_line *commands;
244 };
245
246 struct command_line *
247 breakpoint_commands (struct breakpoint *b)
248 {
249   return b->commands ? b->commands->commands : NULL;
250 }
251
252 /* Flag indicating that a command has proceeded the inferior past the
253    current breakpoint.  */
254
255 static int breakpoint_proceeded;
256
257 const char *
258 bpdisp_text (enum bpdisp disp)
259 {
260   /* NOTE: the following values are a part of MI protocol and
261      represent values of 'disp' field returned when inferior stops at
262      a breakpoint.  */
263   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
264
265   return bpdisps[(int) disp];
266 }
267
268 /* Prototypes for exported functions.  */
269 /* If FALSE, gdb will not use hardware support for watchpoints, even
270    if such is available.  */
271 static int can_use_hw_watchpoints;
272
273 static void
274 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
275                              struct cmd_list_element *c,
276                              const char *value)
277 {
278   fprintf_filtered (file,
279                     _("Debugger's willingness to use "
280                       "watchpoint hardware is %s.\n"),
281                     value);
282 }
283
284 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
285    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
286    for unrecognized breakpoint locations.
287    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
288 static enum auto_boolean pending_break_support;
289 static void
290 show_pending_break_support (struct ui_file *file, int from_tty,
291                             struct cmd_list_element *c,
292                             const char *value)
293 {
294   fprintf_filtered (file,
295                     _("Debugger's behavior regarding "
296                       "pending breakpoints is %s.\n"),
297                     value);
298 }
299
300 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
301    set with "break" but falling in read-only memory.
302    If 0, gdb will warn about such breakpoints, but won't automatically
303    use hardware breakpoints.  */
304 static int automatic_hardware_breakpoints;
305 static void
306 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
307                                      struct cmd_list_element *c,
308                                      const char *value)
309 {
310   fprintf_filtered (file,
311                     _("Automatic usage of hardware breakpoints is %s.\n"),
312                     value);
313 }
314
315 /* If on, gdb will keep breakpoints inserted even as inferior is
316    stopped, and immediately insert any new breakpoints.  If off, gdb
317    will insert breakpoints into inferior only when resuming it, and
318    will remove breakpoints upon stop.  If auto, GDB will behave as ON
319    if in non-stop mode, and as OFF if all-stop mode.*/
320
321 static const char always_inserted_auto[] = "auto";
322 static const char always_inserted_on[] = "on";
323 static const char always_inserted_off[] = "off";
324 static const char *always_inserted_enums[] = {
325   always_inserted_auto,
326   always_inserted_off,
327   always_inserted_on,
328   NULL
329 };
330 static const char *always_inserted_mode = always_inserted_auto;
331 static void
332 show_always_inserted_mode (struct ui_file *file, int from_tty,
333                      struct cmd_list_element *c, const char *value)
334 {
335   if (always_inserted_mode == always_inserted_auto)
336     fprintf_filtered (file,
337                       _("Always inserted breakpoint "
338                         "mode is %s (currently %s).\n"),
339                       value,
340                       breakpoints_always_inserted_mode () ? "on" : "off");
341   else
342     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
343                       value);
344 }
345
346 int
347 breakpoints_always_inserted_mode (void)
348 {
349   return (always_inserted_mode == always_inserted_on
350           || (always_inserted_mode == always_inserted_auto && non_stop));
351 }
352
353 void _initialize_breakpoint (void);
354
355 /* Are we executing breakpoint commands?  */
356 static int executing_breakpoint_commands;
357
358 /* Are overlay event breakpoints enabled? */
359 static int overlay_events_enabled;
360
361 /* See description in breakpoint.h. */
362 int target_exact_watchpoints = 0;
363
364 /* Walk the following statement or block through all breakpoints.
365    ALL_BREAKPOINTS_SAFE does so even if the statment deletes the
366    current breakpoint.  */
367
368 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
369
370 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
371         for (B = breakpoint_chain;      \
372              B ? (TMP=B->next, 1): 0;   \
373              B = TMP)
374
375 /* Similar iterator for the low-level breakpoints.  SAFE variant is
376    not provided so update_global_location_list must not be called
377    while executing the block of ALL_BP_LOCATIONS.  */
378
379 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
380         for (BP_TMP = bp_location;                                      \
381              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
382              BP_TMP++)
383
384 /* Iterator for tracepoints only.  */
385
386 #define ALL_TRACEPOINTS(B)  \
387   for (B = breakpoint_chain; B; B = B->next)  \
388     if (is_tracepoint (B))
389
390 /* Chains of all breakpoints defined.  */
391
392 struct breakpoint *breakpoint_chain;
393
394 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
395
396 static struct bp_location **bp_location;
397
398 /* Number of elements of BP_LOCATION.  */
399
400 static unsigned bp_location_count;
401
402 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
403    ADDRESS for the current elements of BP_LOCATION which get a valid
404    result from bp_location_has_shadow.  You can use it for roughly
405    limiting the subrange of BP_LOCATION to scan for shadow bytes for
406    an address you need to read.  */
407
408 static CORE_ADDR bp_location_placed_address_before_address_max;
409
410 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
411    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
412    BP_LOCATION which get a valid result from bp_location_has_shadow.
413    You can use it for roughly limiting the subrange of BP_LOCATION to
414    scan for shadow bytes for an address you need to read.  */
415
416 static CORE_ADDR bp_location_shadow_len_after_address_max;
417
418 /* The locations that no longer correspond to any breakpoint, unlinked
419    from bp_location array, but for which a hit may still be reported
420    by a target.  */
421 VEC(bp_location_p) *moribund_locations = NULL;
422
423 /* Number of last breakpoint made.  */
424
425 static int breakpoint_count;
426
427 /* The value of `breakpoint_count' before the last command that
428    created breakpoints.  If the last (break-like) command created more
429    than one breakpoint, then the difference between BREAKPOINT_COUNT
430    and PREV_BREAKPOINT_COUNT is more than one.  */
431 static int prev_breakpoint_count;
432
433 /* Number of last tracepoint made.  */
434
435 static int tracepoint_count;
436
437 static struct cmd_list_element *breakpoint_set_cmdlist;
438 static struct cmd_list_element *breakpoint_show_cmdlist;
439 struct cmd_list_element *save_cmdlist;
440
441 /* Return whether a breakpoint is an active enabled breakpoint.  */
442 static int
443 breakpoint_enabled (struct breakpoint *b)
444 {
445   return (b->enable_state == bp_enabled);
446 }
447
448 /* Set breakpoint count to NUM.  */
449
450 static void
451 set_breakpoint_count (int num)
452 {
453   prev_breakpoint_count = breakpoint_count;
454   breakpoint_count = num;
455   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
456 }
457
458 /* Used by `start_rbreak_breakpoints' below, to record the current
459    breakpoint count before "rbreak" creates any breakpoint.  */
460 static int rbreak_start_breakpoint_count;
461
462 /* Called at the start an "rbreak" command to record the first
463    breakpoint made.  */
464
465 void
466 start_rbreak_breakpoints (void)
467 {
468   rbreak_start_breakpoint_count = breakpoint_count;
469 }
470
471 /* Called at the end of an "rbreak" command to record the last
472    breakpoint made.  */
473
474 void
475 end_rbreak_breakpoints (void)
476 {
477   prev_breakpoint_count = rbreak_start_breakpoint_count;
478 }
479
480 /* Used in run_command to zero the hit count when a new run starts.  */
481
482 void
483 clear_breakpoint_hit_counts (void)
484 {
485   struct breakpoint *b;
486
487   ALL_BREAKPOINTS (b)
488     b->hit_count = 0;
489 }
490
491 /* Allocate a new counted_command_line with reference count of 1.
492    The new structure owns COMMANDS.  */
493
494 static struct counted_command_line *
495 alloc_counted_command_line (struct command_line *commands)
496 {
497   struct counted_command_line *result
498     = xmalloc (sizeof (struct counted_command_line));
499
500   result->refc = 1;
501   result->commands = commands;
502   return result;
503 }
504
505 /* Increment reference count.  This does nothing if CMD is NULL.  */
506
507 static void
508 incref_counted_command_line (struct counted_command_line *cmd)
509 {
510   if (cmd)
511     ++cmd->refc;
512 }
513
514 /* Decrement reference count.  If the reference count reaches 0,
515    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
516    nothing if *CMDP is NULL.  */
517
518 static void
519 decref_counted_command_line (struct counted_command_line **cmdp)
520 {
521   if (*cmdp)
522     {
523       if (--(*cmdp)->refc == 0)
524         {
525           free_command_lines (&(*cmdp)->commands);
526           xfree (*cmdp);
527         }
528       *cmdp = NULL;
529     }
530 }
531
532 /* A cleanup function that calls decref_counted_command_line.  */
533
534 static void
535 do_cleanup_counted_command_line (void *arg)
536 {
537   decref_counted_command_line (arg);
538 }
539
540 /* Create a cleanup that calls decref_counted_command_line on the
541    argument.  */
542
543 static struct cleanup *
544 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
545 {
546   return make_cleanup (do_cleanup_counted_command_line, cmdp);
547 }
548
549 /* Default address, symtab and line to put a breakpoint at
550    for "break" command with no arg.
551    If default_breakpoint_valid is zero, the other three are
552    not valid, and "break" with no arg is an error.
553
554    This set by print_stack_frame, which calls set_default_breakpoint.  */
555
556 int default_breakpoint_valid;
557 CORE_ADDR default_breakpoint_address;
558 struct symtab *default_breakpoint_symtab;
559 int default_breakpoint_line;
560 struct program_space *default_breakpoint_pspace;
561
562 \f
563 /* Return the breakpoint with the specified number, or NULL
564    if the number does not refer to an existing breakpoint.  */
565
566 struct breakpoint *
567 get_breakpoint (int num)
568 {
569   struct breakpoint *b;
570
571   ALL_BREAKPOINTS (b)
572     if (b->number == num)
573       return b;
574   
575   return NULL;
576 }
577
578 \f
579
580 void
581 set_breakpoint_condition (struct breakpoint *b, char *exp,
582                           int from_tty)
583 {
584   struct bp_location *loc = b->loc;
585
586   for (; loc; loc = loc->next)
587     {
588       xfree (loc->cond);
589       loc->cond = NULL;
590     }
591   xfree (b->cond_string);
592   b->cond_string = NULL;
593   xfree (b->cond_exp);
594   b->cond_exp = NULL;
595
596   if (*exp == 0)
597     {
598       if (from_tty)
599         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
600     }
601   else
602     {
603       char *arg = exp;
604
605       /* I don't know if it matters whether this is the string the user
606          typed in or the decompiled expression.  */
607       b->cond_string = xstrdup (arg);
608       b->condition_not_parsed = 0;
609
610       if (is_watchpoint (b))
611         {
612           innermost_block = NULL;
613           arg = exp;
614           b->cond_exp = parse_exp_1 (&arg, 0, 0);
615           if (*arg)
616             error (_("Junk at end of expression"));
617           b->cond_exp_valid_block = innermost_block;
618         }
619       else
620         {
621           for (loc = b->loc; loc; loc = loc->next)
622             {
623               arg = exp;
624               loc->cond =
625                 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
626               if (*arg)
627                 error (_("Junk at end of expression"));
628             }
629         }
630     }
631   breakpoints_changed ();
632   observer_notify_breakpoint_modified (b);
633 }
634
635 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
636
637 static void
638 condition_command (char *arg, int from_tty)
639 {
640   struct breakpoint *b;
641   char *p;
642   int bnum;
643
644   if (arg == 0)
645     error_no_arg (_("breakpoint number"));
646
647   p = arg;
648   bnum = get_number (&p);
649   if (bnum == 0)
650     error (_("Bad breakpoint argument: '%s'"), arg);
651
652   ALL_BREAKPOINTS (b)
653     if (b->number == bnum)
654       {
655         /* Check if this breakpoint has a Python object assigned to
656            it, and if it has a definition of the "stop"
657            method.  This method and conditions entered into GDB from
658            the CLI are mutually exclusive.  */
659         if (b->py_bp_object
660             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
661           error (_("Cannot set a condition where a Python 'stop' "
662                    "method has been defined in the breakpoint."));
663         set_breakpoint_condition (b, p, from_tty);
664         return;
665       }
666
667   error (_("No breakpoint number %d."), bnum);
668 }
669
670 /* Check that COMMAND do not contain commands that are suitable
671    only for tracepoints and not suitable for ordinary breakpoints.
672    Throw if any such commands is found.  */
673
674 static void
675 check_no_tracepoint_commands (struct command_line *commands)
676 {
677   struct command_line *c;
678
679   for (c = commands; c; c = c->next)
680     {
681       int i;
682
683       if (c->control_type == while_stepping_control)
684         error (_("The 'while-stepping' command can "
685                  "only be used for tracepoints"));
686
687       for (i = 0; i < c->body_count; ++i)
688         check_no_tracepoint_commands ((c->body_list)[i]);
689
690       /* Not that command parsing removes leading whitespace and comment
691          lines and also empty lines.  So, we only need to check for
692          command directly.  */
693       if (strstr (c->line, "collect ") == c->line)
694         error (_("The 'collect' command can only be used for tracepoints"));
695
696       if (strstr (c->line, "teval ") == c->line)
697         error (_("The 'teval' command can only be used for tracepoints"));
698     }
699 }
700
701 /* Encapsulate tests for different types of tracepoints.  */
702
703 int
704 is_tracepoint (const struct breakpoint *b)
705 {
706   return (b->type == bp_tracepoint
707           || b->type == bp_fast_tracepoint
708           || b->type == bp_static_tracepoint);
709 }
710   
711 /* A helper function that validsates that COMMANDS are valid for a
712    breakpoint.  This function will throw an exception if a problem is
713    found.  */
714
715 static void
716 validate_commands_for_breakpoint (struct breakpoint *b,
717                                   struct command_line *commands)
718 {
719   if (is_tracepoint (b))
720     {
721       /* We need to verify that each top-level element of commands is
722          valid for tracepoints, that there's at most one
723          while-stepping element, and that while-stepping's body has
724          valid tracing commands excluding nested while-stepping.  */
725       struct command_line *c;
726       struct command_line *while_stepping = 0;
727       for (c = commands; c; c = c->next)
728         {
729           if (c->control_type == while_stepping_control)
730             {
731               if (b->type == bp_fast_tracepoint)
732                 error (_("The 'while-stepping' command "
733                          "cannot be used for fast tracepoint"));
734               else if (b->type == bp_static_tracepoint)
735                 error (_("The 'while-stepping' command "
736                          "cannot be used for static tracepoint"));
737
738               if (while_stepping)
739                 error (_("The 'while-stepping' command "
740                          "can be used only once"));
741               else
742                 while_stepping = c;
743             }
744         }
745       if (while_stepping)
746         {
747           struct command_line *c2;
748
749           gdb_assert (while_stepping->body_count == 1);
750           c2 = while_stepping->body_list[0];
751           for (; c2; c2 = c2->next)
752             {
753               if (c2->control_type == while_stepping_control)
754                 error (_("The 'while-stepping' command cannot be nested"));
755             }
756         }
757     }
758   else
759     {
760       check_no_tracepoint_commands (commands);
761     }
762 }
763
764 /* Return a vector of all the static tracepoints set at ADDR.  The
765    caller is responsible for releasing the vector.  */
766
767 VEC(breakpoint_p) *
768 static_tracepoints_here (CORE_ADDR addr)
769 {
770   struct breakpoint *b;
771   VEC(breakpoint_p) *found = 0;
772   struct bp_location *loc;
773
774   ALL_BREAKPOINTS (b)
775     if (b->type == bp_static_tracepoint)
776       {
777         for (loc = b->loc; loc; loc = loc->next)
778           if (loc->address == addr)
779             VEC_safe_push(breakpoint_p, found, b);
780       }
781
782   return found;
783 }
784
785 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
786    validate that only allowed commands are included.  */
787
788 void
789 breakpoint_set_commands (struct breakpoint *b, 
790                          struct command_line *commands)
791 {
792   validate_commands_for_breakpoint (b, commands);
793
794   decref_counted_command_line (&b->commands);
795   b->commands = alloc_counted_command_line (commands);
796   breakpoints_changed ();
797   observer_notify_breakpoint_modified (b);
798 }
799
800 /* Set the internal `silent' flag on the breakpoint.  Note that this
801    is not the same as the "silent" that may appear in the breakpoint's
802    commands.  */
803
804 void
805 breakpoint_set_silent (struct breakpoint *b, int silent)
806 {
807   int old_silent = b->silent;
808
809   b->silent = silent;
810   if (old_silent != silent)
811     observer_notify_breakpoint_modified (b);
812 }
813
814 /* Set the thread for this breakpoint.  If THREAD is -1, make the
815    breakpoint work for any thread.  */
816
817 void
818 breakpoint_set_thread (struct breakpoint *b, int thread)
819 {
820   int old_thread = b->thread;
821
822   b->thread = thread;
823   if (old_thread != thread)
824     observer_notify_breakpoint_modified (b);
825 }
826
827 /* Set the task for this breakpoint.  If TASK is 0, make the
828    breakpoint work for any task.  */
829
830 void
831 breakpoint_set_task (struct breakpoint *b, int task)
832 {
833   int old_task = b->task;
834
835   b->task = task;
836   if (old_task != task)
837     observer_notify_breakpoint_modified (b);
838 }
839
840 void
841 check_tracepoint_command (char *line, void *closure)
842 {
843   struct breakpoint *b = closure;
844
845   validate_actionline (&line, b);
846 }
847
848 /* A structure used to pass information through
849    map_breakpoint_numbers.  */
850
851 struct commands_info
852 {
853   /* True if the command was typed at a tty.  */
854   int from_tty;
855
856   /* The breakpoint range spec.  */
857   char *arg;
858
859   /* Non-NULL if the body of the commands are being read from this
860      already-parsed command.  */
861   struct command_line *control;
862
863   /* The command lines read from the user, or NULL if they have not
864      yet been read.  */
865   struct counted_command_line *cmd;
866 };
867
868 /* A callback for map_breakpoint_numbers that sets the commands for
869    commands_command.  */
870
871 static void
872 do_map_commands_command (struct breakpoint *b, void *data)
873 {
874   struct commands_info *info = data;
875
876   if (info->cmd == NULL)
877     {
878       struct command_line *l;
879
880       if (info->control != NULL)
881         l = copy_command_lines (info->control->body_list[0]);
882       else
883         {
884           struct cleanup *old_chain;
885           char *str;
886
887           str = xstrprintf (_("Type commands for breakpoint(s) "
888                               "%s, one per line."),
889                             info->arg);
890
891           old_chain = make_cleanup (xfree, str);
892
893           l = read_command_lines (str,
894                                   info->from_tty, 1,
895                                   (is_tracepoint (b)
896                                    ? check_tracepoint_command : 0),
897                                   b);
898
899           do_cleanups (old_chain);
900         }
901
902       info->cmd = alloc_counted_command_line (l);
903     }
904
905   /* If a breakpoint was on the list more than once, we don't need to
906      do anything.  */
907   if (b->commands != info->cmd)
908     {
909       validate_commands_for_breakpoint (b, info->cmd->commands);
910       incref_counted_command_line (info->cmd);
911       decref_counted_command_line (&b->commands);
912       b->commands = info->cmd;
913       breakpoints_changed ();
914       observer_notify_breakpoint_modified (b);
915     }
916 }
917
918 static void
919 commands_command_1 (char *arg, int from_tty, 
920                     struct command_line *control)
921 {
922   struct cleanup *cleanups;
923   struct commands_info info;
924
925   info.from_tty = from_tty;
926   info.control = control;
927   info.cmd = NULL;
928   /* If we read command lines from the user, then `info' will hold an
929      extra reference to the commands that we must clean up.  */
930   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
931
932   if (arg == NULL || !*arg)
933     {
934       if (breakpoint_count - prev_breakpoint_count > 1)
935         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
936                           breakpoint_count);
937       else if (breakpoint_count > 0)
938         arg = xstrprintf ("%d", breakpoint_count);
939       else
940         {
941           /* So that we don't try to free the incoming non-NULL
942              argument in the cleanup below.  Mapping breakpoint
943              numbers will fail in this case.  */
944           arg = NULL;
945         }
946     }
947   else
948     /* The command loop has some static state, so we need to preserve
949        our argument.  */
950     arg = xstrdup (arg);
951
952   if (arg != NULL)
953     make_cleanup (xfree, arg);
954
955   info.arg = arg;
956
957   map_breakpoint_numbers (arg, do_map_commands_command, &info);
958
959   if (info.cmd == NULL)
960     error (_("No breakpoints specified."));
961
962   do_cleanups (cleanups);
963 }
964
965 static void
966 commands_command (char *arg, int from_tty)
967 {
968   commands_command_1 (arg, from_tty, NULL);
969 }
970
971 /* Like commands_command, but instead of reading the commands from
972    input stream, takes them from an already parsed command structure.
973
974    This is used by cli-script.c to DTRT with breakpoint commands
975    that are part of if and while bodies.  */
976 enum command_control_type
977 commands_from_control_command (char *arg, struct command_line *cmd)
978 {
979   commands_command_1 (arg, 0, cmd);
980   return simple_control;
981 }
982
983 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
984
985 static int
986 bp_location_has_shadow (struct bp_location *bl)
987 {
988   if (bl->loc_type != bp_loc_software_breakpoint)
989     return 0;
990   if (!bl->inserted)
991     return 0;
992   if (bl->target_info.shadow_len == 0)
993     /* bp isn't valid, or doesn't shadow memory.  */
994     return 0;
995   return 1;
996 }
997
998 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
999    by replacing any memory breakpoints with their shadowed contents.
1000
1001    The range of shadowed area by each bp_location is:
1002      bl->address - bp_location_placed_address_before_address_max
1003      up to bl->address + bp_location_shadow_len_after_address_max
1004    The range we were requested to resolve shadows for is:
1005      memaddr ... memaddr + len
1006    Thus the safe cutoff boundaries for performance optimization are
1007      memaddr + len <= (bl->address
1008                        - bp_location_placed_address_before_address_max)
1009    and:
1010      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1011
1012 void
1013 breakpoint_restore_shadows (gdb_byte *buf, ULONGEST memaddr, LONGEST len)
1014 {
1015   /* Left boundary, right boundary and median element of our binary
1016      search.  */
1017   unsigned bc_l, bc_r, bc;
1018
1019   /* Find BC_L which is a leftmost element which may affect BUF
1020      content.  It is safe to report lower value but a failure to
1021      report higher one.  */
1022
1023   bc_l = 0;
1024   bc_r = bp_location_count;
1025   while (bc_l + 1 < bc_r)
1026     {
1027       struct bp_location *bl;
1028
1029       bc = (bc_l + bc_r) / 2;
1030       bl = bp_location[bc];
1031
1032       /* Check first BL->ADDRESS will not overflow due to the added
1033          constant.  Then advance the left boundary only if we are sure
1034          the BC element can in no way affect the BUF content (MEMADDR
1035          to MEMADDR + LEN range).
1036
1037          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1038          offset so that we cannot miss a breakpoint with its shadow
1039          range tail still reaching MEMADDR.  */
1040
1041       if ((bl->address + bp_location_shadow_len_after_address_max
1042            >= bl->address)
1043           && (bl->address + bp_location_shadow_len_after_address_max
1044               <= memaddr))
1045         bc_l = bc;
1046       else
1047         bc_r = bc;
1048     }
1049
1050   /* Due to the binary search above, we need to make sure we pick the
1051      first location that's at BC_L's address.  E.g., if there are
1052      multiple locations at the same address, BC_L may end up pointing
1053      at a duplicate location, and miss the "master"/"inserted"
1054      location.  Say, given locations L1, L2 and L3 at addresses A and
1055      B:
1056
1057       L1@A, L2@A, L3@B, ...
1058
1059      BC_L could end up pointing at location L2, while the "master"
1060      location could be L1.  Since the `loc->inserted' flag is only set
1061      on "master" locations, we'd forget to restore the shadow of L1
1062      and L2.  */
1063   while (bc_l > 0
1064          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1065     bc_l--;
1066
1067   /* Now do full processing of the found relevant range of elements.  */
1068
1069   for (bc = bc_l; bc < bp_location_count; bc++)
1070   {
1071     struct bp_location *bl = bp_location[bc];
1072     CORE_ADDR bp_addr = 0;
1073     int bp_size = 0;
1074     int bptoffset = 0;
1075
1076     /* bp_location array has BL->OWNER always non-NULL.  */
1077     if (bl->owner->type == bp_none)
1078       warning (_("reading through apparently deleted breakpoint #%d?"),
1079                bl->owner->number);
1080
1081     /* Performance optimization: any futher element can no longer affect BUF
1082        content.  */
1083
1084     if (bl->address >= bp_location_placed_address_before_address_max
1085         && memaddr + len <= (bl->address
1086                              - bp_location_placed_address_before_address_max))
1087       break;
1088
1089     if (!bp_location_has_shadow (bl))
1090       continue;
1091     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1092                                    current_program_space->aspace, 0))
1093       continue;
1094
1095     /* Addresses and length of the part of the breakpoint that
1096        we need to copy.  */
1097     bp_addr = bl->target_info.placed_address;
1098     bp_size = bl->target_info.shadow_len;
1099
1100     if (bp_addr + bp_size <= memaddr)
1101       /* The breakpoint is entirely before the chunk of memory we
1102          are reading.  */
1103       continue;
1104
1105     if (bp_addr >= memaddr + len)
1106       /* The breakpoint is entirely after the chunk of memory we are
1107          reading.  */
1108       continue;
1109
1110     /* Offset within shadow_contents.  */
1111     if (bp_addr < memaddr)
1112       {
1113         /* Only copy the second part of the breakpoint.  */
1114         bp_size -= memaddr - bp_addr;
1115         bptoffset = memaddr - bp_addr;
1116         bp_addr = memaddr;
1117       }
1118
1119     if (bp_addr + bp_size > memaddr + len)
1120       {
1121         /* Only copy the first part of the breakpoint.  */
1122         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1123       }
1124
1125     memcpy (buf + bp_addr - memaddr,
1126             bl->target_info.shadow_contents + bptoffset, bp_size);
1127   }
1128 }
1129 \f
1130
1131 /* Return true if BPT is of any hardware watchpoint kind.  */
1132
1133 static int
1134 is_hardware_watchpoint (const struct breakpoint *bpt)
1135 {
1136   return (bpt->type == bp_hardware_watchpoint
1137           || bpt->type == bp_read_watchpoint
1138           || bpt->type == bp_access_watchpoint);
1139 }
1140
1141 /* Return true if BPT is of any watchpoint kind, hardware or
1142    software.  */
1143
1144 static int
1145 is_watchpoint (const struct breakpoint *bpt)
1146 {
1147   return (is_hardware_watchpoint (bpt)
1148           || bpt->type == bp_watchpoint);
1149 }
1150
1151 /* Assuming that B is a watchpoint: returns true if the current thread
1152    and its running state are safe to evaluate or update watchpoint B.
1153    Watchpoints on local expressions need to be evaluated in the
1154    context of the thread that was current when the watchpoint was
1155    created, and, that thread needs to be stopped to be able to select
1156    the correct frame context.  Watchpoints on global expressions can
1157    be evaluated on any thread, and in any state.  It is presently left
1158    to the target allowing memory accesses when threads are
1159    running.  */
1160
1161 static int
1162 watchpoint_in_thread_scope (struct breakpoint *b)
1163 {
1164   return (ptid_equal (b->watchpoint_thread, null_ptid)
1165           || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1166               && !is_executing (inferior_ptid)));
1167 }
1168
1169 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1170    associated bp_watchpoint_scope breakpoint.  */
1171
1172 static void
1173 watchpoint_del_at_next_stop (struct breakpoint *b)
1174 {
1175   gdb_assert (is_watchpoint (b));
1176
1177   if (b->related_breakpoint != b)
1178     {
1179       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1180       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1181       b->related_breakpoint->disposition = disp_del_at_next_stop;
1182       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1183       b->related_breakpoint = b;
1184     }
1185   b->disposition = disp_del_at_next_stop;
1186 }
1187
1188 /* Assuming that B is a watchpoint:
1189    - Reparse watchpoint expression, if REPARSE is non-zero
1190    - Evaluate expression and store the result in B->val
1191    - Evaluate the condition if there is one, and store the result
1192      in b->loc->cond.
1193    - Update the list of values that must be watched in B->loc.
1194
1195    If the watchpoint disposition is disp_del_at_next_stop, then do
1196    nothing.  If this is local watchpoint that is out of scope, delete
1197    it.
1198
1199    Even with `set breakpoint always-inserted on' the watchpoints are
1200    removed + inserted on each stop here.  Normal breakpoints must
1201    never be removed because they might be missed by a running thread
1202    when debugging in non-stop mode.  On the other hand, hardware
1203    watchpoints (is_hardware_watchpoint; processed here) are specific
1204    to each LWP since they are stored in each LWP's hardware debug
1205    registers.  Therefore, such LWP must be stopped first in order to
1206    be able to modify its hardware watchpoints.
1207
1208    Hardware watchpoints must be reset exactly once after being
1209    presented to the user.  It cannot be done sooner, because it would
1210    reset the data used to present the watchpoint hit to the user.  And
1211    it must not be done later because it could display the same single
1212    watchpoint hit during multiple GDB stops.  Note that the latter is
1213    relevant only to the hardware watchpoint types bp_read_watchpoint
1214    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1215    not user-visible - its hit is suppressed if the memory content has
1216    not changed.
1217
1218    The following constraints influence the location where we can reset
1219    hardware watchpoints:
1220
1221    * target_stopped_by_watchpoint and target_stopped_data_address are
1222      called several times when GDB stops.
1223
1224    [linux] 
1225    * Multiple hardware watchpoints can be hit at the same time,
1226      causing GDB to stop.  GDB only presents one hardware watchpoint
1227      hit at a time as the reason for stopping, and all the other hits
1228      are presented later, one after the other, each time the user
1229      requests the execution to be resumed.  Execution is not resumed
1230      for the threads still having pending hit event stored in
1231      LWP_INFO->STATUS.  While the watchpoint is already removed from
1232      the inferior on the first stop the thread hit event is kept being
1233      reported from its cached value by linux_nat_stopped_data_address
1234      until the real thread resume happens after the watchpoint gets
1235      presented and thus its LWP_INFO->STATUS gets reset.
1236
1237    Therefore the hardware watchpoint hit can get safely reset on the
1238    watchpoint removal from inferior.  */
1239
1240 static void
1241 update_watchpoint (struct breakpoint *b, int reparse)
1242 {
1243   int within_current_scope;
1244   struct frame_id saved_frame_id;
1245   int frame_saved;
1246
1247   gdb_assert (is_watchpoint (b));
1248
1249   /* If this is a local watchpoint, we only want to check if the
1250      watchpoint frame is in scope if the current thread is the thread
1251      that was used to create the watchpoint.  */
1252   if (!watchpoint_in_thread_scope (b))
1253     return;
1254
1255   if (b->disposition == disp_del_at_next_stop)
1256     return;
1257  
1258   frame_saved = 0;
1259
1260   /* Determine if the watchpoint is within scope.  */
1261   if (b->exp_valid_block == NULL)
1262     within_current_scope = 1;
1263   else
1264     {
1265       struct frame_info *fi = get_current_frame ();
1266       struct gdbarch *frame_arch = get_frame_arch (fi);
1267       CORE_ADDR frame_pc = get_frame_pc (fi);
1268
1269       /* If we're in a function epilogue, unwinding may not work
1270          properly, so do not attempt to recreate locations at this
1271          point.  See similar comments in watchpoint_check.  */
1272       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1273         return;
1274
1275       /* Save the current frame's ID so we can restore it after
1276          evaluating the watchpoint expression on its own frame.  */
1277       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1278          took a frame parameter, so that we didn't have to change the
1279          selected frame.  */
1280       frame_saved = 1;
1281       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1282
1283       fi = frame_find_by_id (b->watchpoint_frame);
1284       within_current_scope = (fi != NULL);
1285       if (within_current_scope)
1286         select_frame (fi);
1287     }
1288
1289   /* We don't free locations.  They are stored in the bp_location array
1290      and update_global_location_list will eventually delete them and
1291      remove breakpoints if needed.  */
1292   b->loc = NULL;
1293
1294   if (within_current_scope && reparse)
1295     {
1296       char *s;
1297
1298       if (b->exp)
1299         {
1300           xfree (b->exp);
1301           b->exp = NULL;
1302         }
1303       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1304       b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
1305       /* If the meaning of expression itself changed, the old value is
1306          no longer relevant.  We don't want to report a watchpoint hit
1307          to the user when the old value and the new value may actually
1308          be completely different objects.  */
1309       value_free (b->val);
1310       b->val = NULL;
1311       b->val_valid = 0;
1312
1313       /* Note that unlike with breakpoints, the watchpoint's condition
1314          expression is stored in the breakpoint object, not in the
1315          locations (re)created below.  */
1316       if (b->cond_string != NULL)
1317         {
1318           if (b->cond_exp != NULL)
1319             {
1320               xfree (b->cond_exp);
1321               b->cond_exp = NULL;
1322             }
1323
1324           s = b->cond_string;
1325           b->cond_exp = parse_exp_1 (&s, b->cond_exp_valid_block, 0);
1326         }
1327     }
1328
1329   /* If we failed to parse the expression, for example because
1330      it refers to a global variable in a not-yet-loaded shared library,
1331      don't try to insert watchpoint.  We don't automatically delete
1332      such watchpoint, though, since failure to parse expression
1333      is different from out-of-scope watchpoint.  */
1334   if ( !target_has_execution)
1335     {
1336       /* Without execution, memory can't change.  No use to try and
1337          set watchpoint locations.  The watchpoint will be reset when
1338          the target gains execution, through breakpoint_re_set.  */
1339     }
1340   else if (within_current_scope && b->exp)
1341     {
1342       int pc = 0;
1343       struct value *val_chain, *v, *result, *next;
1344       struct program_space *frame_pspace;
1345
1346       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1347
1348       /* Avoid setting b->val if it's already set.  The meaning of
1349          b->val is 'the last value' user saw, and we should update
1350          it only if we reported that last value to user.  As it
1351          happens, the code that reports it updates b->val directly.
1352          We don't keep track of the memory value for masked
1353          watchpoints.  */
1354       if (!b->val_valid && !is_masked_watchpoint (b))
1355         {
1356           b->val = v;
1357           b->val_valid = 1;
1358         }
1359
1360       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1361
1362       /* Look at each value on the value chain.  */
1363       for (v = val_chain; v; v = value_next (v))
1364         {
1365           /* If it's a memory location, and GDB actually needed
1366              its contents to evaluate the expression, then we
1367              must watch it.  If the first value returned is
1368              still lazy, that means an error occurred reading it;
1369              watch it anyway in case it becomes readable.  */
1370           if (VALUE_LVAL (v) == lval_memory
1371               && (v == val_chain || ! value_lazy (v)))
1372             {
1373               struct type *vtype = check_typedef (value_type (v));
1374
1375               /* We only watch structs and arrays if user asked
1376                  for it explicitly, never if they just happen to
1377                  appear in the middle of some value chain.  */
1378               if (v == result
1379                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1380                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1381                 {
1382                   CORE_ADDR addr;
1383                   int len, type;
1384                   struct bp_location *loc, **tmp;
1385
1386                   addr = value_address (v);
1387                   len = TYPE_LENGTH (value_type (v));
1388                   type = hw_write;
1389                   if (b->type == bp_read_watchpoint)
1390                     type = hw_read;
1391                   else if (b->type == bp_access_watchpoint)
1392                     type = hw_access;
1393                   
1394                   loc = allocate_bp_location (b);
1395                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1396                     ;
1397                   *tmp = loc;
1398                   loc->gdbarch = get_type_arch (value_type (v));
1399
1400                   loc->pspace = frame_pspace;
1401                   loc->address = addr;
1402                   loc->length = len;
1403                   loc->watchpoint_type = type;
1404                 }
1405             }
1406         }
1407
1408       /* Change the type of breakpoint between hardware assisted or
1409          an ordinary watchpoint depending on the hardware support
1410          and free hardware slots.  REPARSE is set when the inferior
1411          is started.  */
1412       if (reparse)
1413         {
1414           int reg_cnt;
1415           enum bp_loc_type loc_type;
1416           struct bp_location *bl;
1417
1418           reg_cnt = can_use_hardware_watchpoint (val_chain);
1419
1420           if (reg_cnt)
1421             {
1422               int i, target_resources_ok, other_type_used;
1423
1424               /* Use an exact watchpoint when there's only one memory region to be
1425                  watched, and only one debug register is needed to watch it.  */
1426               b->exact = target_exact_watchpoints && reg_cnt == 1;
1427
1428               /* We need to determine how many resources are already
1429                  used for all other hardware watchpoints plus this one
1430                  to see if we still have enough resources to also fit
1431                  this watchpoint in as well.  To guarantee the
1432                  hw_watchpoint_used_count call below counts this
1433                  watchpoint, make sure that it is marked as a hardware
1434                  watchpoint.  */
1435               if (b->type == bp_watchpoint)
1436                 b->type = bp_hardware_watchpoint;
1437
1438               i = hw_watchpoint_used_count (b->type, &other_type_used);
1439               target_resources_ok = target_can_use_hardware_watchpoint
1440                     (b->type, i, other_type_used);
1441               if (target_resources_ok <= 0)
1442                 {
1443                   /* If there's no works_in_software_mode method, we
1444                      assume that the watchpoint works in software mode.  */
1445                   int sw_mode = (!b->ops || !b->ops->works_in_software_mode
1446                                  || b->ops->works_in_software_mode (b));
1447
1448                   if (target_resources_ok == 0 && !sw_mode)
1449                     error (_("Target does not support this type of "
1450                              "hardware watchpoint."));
1451                   else if (target_resources_ok < 0 && !sw_mode)
1452                     error (_("There are not enough available hardware "
1453                              "resources for this watchpoint."));
1454                   else
1455                     b->type = bp_watchpoint;
1456                 }
1457             }
1458           else if (b->ops && b->ops->works_in_software_mode
1459                    && !b->ops->works_in_software_mode (b))
1460             error (_("Expression cannot be implemented with "
1461                      "read/access watchpoint."));
1462           else
1463             b->type = bp_watchpoint;
1464
1465           loc_type = (b->type == bp_watchpoint? bp_loc_other
1466                       : bp_loc_hardware_watchpoint);
1467           for (bl = b->loc; bl; bl = bl->next)
1468             bl->loc_type = loc_type;
1469         }
1470
1471       for (v = val_chain; v; v = next)
1472         {
1473           next = value_next (v);
1474           if (v != b->val)
1475             value_free (v);
1476         }
1477
1478       /* If a software watchpoint is not watching any memory, then the
1479          above left it without any location set up.  But,
1480          bpstat_stop_status requires a location to be able to report
1481          stops, so make sure there's at least a dummy one.  */
1482       if (b->type == bp_watchpoint && b->loc == NULL)
1483         {
1484           b->loc = allocate_bp_location (b);
1485           b->loc->pspace = frame_pspace;
1486           b->loc->address = -1;
1487           b->loc->length = -1;
1488           b->loc->watchpoint_type = -1;
1489         }
1490     }
1491   else if (!within_current_scope)
1492     {
1493       printf_filtered (_("\
1494 Watchpoint %d deleted because the program has left the block\n\
1495 in which its expression is valid.\n"),
1496                        b->number);
1497       watchpoint_del_at_next_stop (b);
1498     }
1499
1500   /* Restore the selected frame.  */
1501   if (frame_saved)
1502     select_frame (frame_find_by_id (saved_frame_id));
1503 }
1504
1505
1506 /* Returns 1 iff breakpoint location should be
1507    inserted in the inferior.  */
1508 static int
1509 should_be_inserted (struct bp_location *bl)
1510 {
1511   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1512     return 0;
1513
1514   if (bl->owner->disposition == disp_del_at_next_stop)
1515     return 0;
1516
1517   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1518     return 0;
1519
1520   /* This is set for example, when we're attached to the parent of a
1521      vfork, and have detached from the child.  The child is running
1522      free, and we expect it to do an exec or exit, at which point the
1523      OS makes the parent schedulable again (and the target reports
1524      that the vfork is done).  Until the child is done with the shared
1525      memory region, do not insert breakpoints in the parent, otherwise
1526      the child could still trip on the parent's breakpoints.  Since
1527      the parent is blocked anyway, it won't miss any breakpoint.  */
1528   if (bl->pspace->breakpoints_not_allowed)
1529     return 0;
1530
1531   /* Tracepoints are inserted by the target at a time of its choosing,
1532      not by us.  */
1533   if (is_tracepoint (bl->owner))
1534     return 0;
1535
1536   return 1;
1537 }
1538
1539 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
1540    location.  Any error messages are printed to TMP_ERROR_STREAM; and
1541    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
1542
1543    NOTE drow/2003-09-09: This routine could be broken down to an
1544    object-style method for each breakpoint or catchpoint type.  */
1545 static int
1546 insert_bp_location (struct bp_location *bl,
1547                     struct ui_file *tmp_error_stream,
1548                     int *disabled_breaks,
1549                     int *hw_breakpoint_error)
1550 {
1551   int val = 0;
1552
1553   if (!should_be_inserted (bl) || bl->inserted)
1554     return 0;
1555
1556   /* Initialize the target-specific information.  */
1557   memset (&bl->target_info, 0, sizeof (bl->target_info));
1558   bl->target_info.placed_address = bl->address;
1559   bl->target_info.placed_address_space = bl->pspace->aspace;
1560   bl->target_info.length = bl->length;
1561
1562   if (bl->loc_type == bp_loc_software_breakpoint
1563       || bl->loc_type == bp_loc_hardware_breakpoint)
1564     {
1565       if (bl->owner->type != bp_hardware_breakpoint)
1566         {
1567           /* If the explicitly specified breakpoint type
1568              is not hardware breakpoint, check the memory map to see
1569              if the breakpoint address is in read only memory or not.
1570
1571              Two important cases are:
1572              - location type is not hardware breakpoint, memory
1573              is readonly.  We change the type of the location to
1574              hardware breakpoint.
1575              - location type is hardware breakpoint, memory is
1576              read-write.  This means we've previously made the
1577              location hardware one, but then the memory map changed,
1578              so we undo.
1579              
1580              When breakpoints are removed, remove_breakpoints will use
1581              location types we've just set here, the only possible
1582              problem is that memory map has changed during running
1583              program, but it's not going to work anyway with current
1584              gdb.  */
1585           struct mem_region *mr 
1586             = lookup_mem_region (bl->target_info.placed_address);
1587           
1588           if (mr)
1589             {
1590               if (automatic_hardware_breakpoints)
1591                 {
1592                   enum bp_loc_type new_type;
1593                   
1594                   if (mr->attrib.mode != MEM_RW)
1595                     new_type = bp_loc_hardware_breakpoint;
1596                   else 
1597                     new_type = bp_loc_software_breakpoint;
1598                   
1599                   if (new_type != bl->loc_type)
1600                     {
1601                       static int said = 0;
1602
1603                       bl->loc_type = new_type;
1604                       if (!said)
1605                         {
1606                           fprintf_filtered (gdb_stdout,
1607                                             _("Note: automatically using "
1608                                               "hardware breakpoints for "
1609                                               "read-only addresses.\n"));
1610                           said = 1;
1611                         }
1612                     }
1613                 }
1614               else if (bl->loc_type == bp_loc_software_breakpoint
1615                        && mr->attrib.mode != MEM_RW)        
1616                 warning (_("cannot set software breakpoint "
1617                            "at readonly address %s"),
1618                          paddress (bl->gdbarch, bl->address));
1619             }
1620         }
1621         
1622       /* First check to see if we have to handle an overlay.  */
1623       if (overlay_debugging == ovly_off
1624           || bl->section == NULL
1625           || !(section_is_overlay (bl->section)))
1626         {
1627           /* No overlay handling: just set the breakpoint.  */
1628
1629           if (bl->loc_type == bp_loc_hardware_breakpoint)
1630             val = target_insert_hw_breakpoint (bl->gdbarch,
1631                                                &bl->target_info);
1632           else
1633             val = target_insert_breakpoint (bl->gdbarch,
1634                                             &bl->target_info);
1635         }
1636       else
1637         {
1638           /* This breakpoint is in an overlay section.
1639              Shall we set a breakpoint at the LMA?  */
1640           if (!overlay_events_enabled)
1641             {
1642               /* Yes -- overlay event support is not active, 
1643                  so we must try to set a breakpoint at the LMA.
1644                  This will not work for a hardware breakpoint.  */
1645               if (bl->loc_type == bp_loc_hardware_breakpoint)
1646                 warning (_("hardware breakpoint %d not supported in overlay!"),
1647                          bl->owner->number);
1648               else
1649                 {
1650                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
1651                                                              bl->section);
1652                   /* Set a software (trap) breakpoint at the LMA.  */
1653                   bl->overlay_target_info = bl->target_info;
1654                   bl->overlay_target_info.placed_address = addr;
1655                   val = target_insert_breakpoint (bl->gdbarch,
1656                                                   &bl->overlay_target_info);
1657                   if (val != 0)
1658                     fprintf_unfiltered (tmp_error_stream,
1659                                         "Overlay breakpoint %d "
1660                                         "failed: in ROM?\n",
1661                                         bl->owner->number);
1662                 }
1663             }
1664           /* Shall we set a breakpoint at the VMA? */
1665           if (section_is_mapped (bl->section))
1666             {
1667               /* Yes.  This overlay section is mapped into memory.  */
1668               if (bl->loc_type == bp_loc_hardware_breakpoint)
1669                 val = target_insert_hw_breakpoint (bl->gdbarch,
1670                                                    &bl->target_info);
1671               else
1672                 val = target_insert_breakpoint (bl->gdbarch,
1673                                                 &bl->target_info);
1674             }
1675           else
1676             {
1677               /* No.  This breakpoint will not be inserted.  
1678                  No error, but do not mark the bp as 'inserted'.  */
1679               return 0;
1680             }
1681         }
1682
1683       if (val)
1684         {
1685           /* Can't set the breakpoint.  */
1686           if (solib_name_from_address (bl->pspace, bl->address))
1687             {
1688               /* See also: disable_breakpoints_in_shlibs.  */
1689               val = 0;
1690               bl->shlib_disabled = 1;
1691               observer_notify_breakpoint_modified (bl->owner);
1692               if (!*disabled_breaks)
1693                 {
1694                   fprintf_unfiltered (tmp_error_stream, 
1695                                       "Cannot insert breakpoint %d.\n", 
1696                                       bl->owner->number);
1697                   fprintf_unfiltered (tmp_error_stream, 
1698                                       "Temporarily disabling shared "
1699                                       "library breakpoints:\n");
1700                 }
1701               *disabled_breaks = 1;
1702               fprintf_unfiltered (tmp_error_stream,
1703                                   "breakpoint #%d\n", bl->owner->number);
1704             }
1705           else
1706             {
1707               if (bl->loc_type == bp_loc_hardware_breakpoint)
1708                 {
1709                   *hw_breakpoint_error = 1;
1710                   fprintf_unfiltered (tmp_error_stream,
1711                                       "Cannot insert hardware "
1712                                       "breakpoint %d.\n",
1713                                       bl->owner->number);
1714                 }
1715               else
1716                 {
1717                   fprintf_unfiltered (tmp_error_stream, 
1718                                       "Cannot insert breakpoint %d.\n", 
1719                                       bl->owner->number);
1720                   fprintf_filtered (tmp_error_stream, 
1721                                     "Error accessing memory address ");
1722                   fputs_filtered (paddress (bl->gdbarch, bl->address),
1723                                   tmp_error_stream);
1724                   fprintf_filtered (tmp_error_stream, ": %s.\n",
1725                                     safe_strerror (val));
1726                 }
1727
1728             }
1729         }
1730       else
1731         bl->inserted = 1;
1732
1733       return val;
1734     }
1735
1736   else if (bl->loc_type == bp_loc_hardware_watchpoint
1737            /* NOTE drow/2003-09-08: This state only exists for removing
1738               watchpoints.  It's not clear that it's necessary...  */
1739            && bl->owner->disposition != disp_del_at_next_stop)
1740     {
1741       gdb_assert (bl->owner->ops != NULL
1742                   && bl->owner->ops->insert_location != NULL);
1743
1744       val = bl->owner->ops->insert_location (bl);
1745
1746       /* If trying to set a read-watchpoint, and it turns out it's not
1747          supported, try emulating one with an access watchpoint.  */
1748       if (val == 1 && bl->watchpoint_type == hw_read)
1749         {
1750           struct bp_location *loc, **loc_temp;
1751
1752           /* But don't try to insert it, if there's already another
1753              hw_access location that would be considered a duplicate
1754              of this one.  */
1755           ALL_BP_LOCATIONS (loc, loc_temp)
1756             if (loc != bl
1757                 && loc->watchpoint_type == hw_access
1758                 && watchpoint_locations_match (bl, loc))
1759               {
1760                 bl->duplicate = 1;
1761                 bl->inserted = 1;
1762                 bl->target_info = loc->target_info;
1763                 bl->watchpoint_type = hw_access;
1764                 val = 0;
1765                 break;
1766               }
1767
1768           if (val == 1)
1769             {
1770               bl->watchpoint_type = hw_access;
1771               val = bl->owner->ops->insert_location (bl);
1772
1773               if (val)
1774                 /* Back to the original value.  */
1775                 bl->watchpoint_type = hw_read;
1776             }
1777         }
1778
1779       bl->inserted = (val == 0);
1780     }
1781
1782   else if (bl->owner->type == bp_catchpoint)
1783     {
1784       gdb_assert (bl->owner->ops != NULL
1785                   && bl->owner->ops->insert_location != NULL);
1786
1787       val = bl->owner->ops->insert_location (bl);
1788       if (val)
1789         {
1790           bl->owner->enable_state = bp_disabled;
1791
1792           if (val == 1)
1793             warning (_("\
1794 Error inserting catchpoint %d: Your system does not support this type\n\
1795 of catchpoint."), bl->owner->number);
1796           else
1797             warning (_("Error inserting catchpoint %d."), bl->owner->number);
1798         }
1799
1800       bl->inserted = (val == 0);
1801
1802       /* We've already printed an error message if there was a problem
1803          inserting this catchpoint, and we've disabled the catchpoint,
1804          so just return success.  */
1805       return 0;
1806     }
1807
1808   return 0;
1809 }
1810
1811 /* This function is called when program space PSPACE is about to be
1812    deleted.  It takes care of updating breakpoints to not reference
1813    PSPACE anymore.  */
1814
1815 void
1816 breakpoint_program_space_exit (struct program_space *pspace)
1817 {
1818   struct breakpoint *b, *b_temp;
1819   struct bp_location *loc, **loc_temp;
1820
1821   /* Remove any breakpoint that was set through this program space.  */
1822   ALL_BREAKPOINTS_SAFE (b, b_temp)
1823     {
1824       if (b->pspace == pspace)
1825         delete_breakpoint (b);
1826     }
1827
1828   /* Breakpoints set through other program spaces could have locations
1829      bound to PSPACE as well.  Remove those.  */
1830   ALL_BP_LOCATIONS (loc, loc_temp)
1831     {
1832       struct bp_location *tmp;
1833
1834       if (loc->pspace == pspace)
1835         {
1836           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
1837           if (loc->owner->loc == loc)
1838             loc->owner->loc = loc->next;
1839           else
1840             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
1841               if (tmp->next == loc)
1842                 {
1843                   tmp->next = loc->next;
1844                   break;
1845                 }
1846         }
1847     }
1848
1849   /* Now update the global location list to permanently delete the
1850      removed locations above.  */
1851   update_global_location_list (0);
1852 }
1853
1854 /* Make sure all breakpoints are inserted in inferior.
1855    Throws exception on any error.
1856    A breakpoint that is already inserted won't be inserted
1857    again, so calling this function twice is safe.  */
1858 void
1859 insert_breakpoints (void)
1860 {
1861   struct breakpoint *bpt;
1862
1863   ALL_BREAKPOINTS (bpt)
1864     if (is_hardware_watchpoint (bpt))
1865       update_watchpoint (bpt, 0 /* don't reparse.  */);
1866
1867   update_global_location_list (1);
1868
1869   /* update_global_location_list does not insert breakpoints when
1870      always_inserted_mode is not enabled.  Explicitly insert them
1871      now.  */
1872   if (!breakpoints_always_inserted_mode ())
1873     insert_breakpoint_locations ();
1874 }
1875
1876 /* insert_breakpoints is used when starting or continuing the program.
1877    remove_breakpoints is used when the program stops.
1878    Both return zero if successful,
1879    or an `errno' value if could not write the inferior.  */
1880
1881 static void
1882 insert_breakpoint_locations (void)
1883 {
1884   struct breakpoint *bpt;
1885   struct bp_location *bl, **blp_tmp;
1886   int error = 0;
1887   int val = 0;
1888   int disabled_breaks = 0;
1889   int hw_breakpoint_error = 0;
1890
1891   struct ui_file *tmp_error_stream = mem_fileopen ();
1892   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
1893   
1894   /* Explicitly mark the warning -- this will only be printed if
1895      there was an error.  */
1896   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
1897
1898   save_current_space_and_thread ();
1899
1900   ALL_BP_LOCATIONS (bl, blp_tmp)
1901     {
1902       if (!should_be_inserted (bl) || bl->inserted)
1903         continue;
1904
1905       /* There is no point inserting thread-specific breakpoints if
1906          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
1907          has BL->OWNER always non-NULL.  */
1908       if (bl->owner->thread != -1
1909           && !valid_thread_id (bl->owner->thread))
1910         continue;
1911
1912       switch_to_program_space_and_thread (bl->pspace);
1913
1914       /* For targets that support global breakpoints, there's no need
1915          to select an inferior to insert breakpoint to.  In fact, even
1916          if we aren't attached to any process yet, we should still
1917          insert breakpoints.  */
1918       if (!gdbarch_has_global_breakpoints (target_gdbarch)
1919           && ptid_equal (inferior_ptid, null_ptid))
1920         continue;
1921
1922       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
1923                                     &hw_breakpoint_error);
1924       if (val)
1925         error = val;
1926     }
1927
1928   /* If we failed to insert all locations of a watchpoint, remove
1929      them, as half-inserted watchpoint is of limited use.  */
1930   ALL_BREAKPOINTS (bpt)  
1931     {
1932       int some_failed = 0;
1933       struct bp_location *loc;
1934
1935       if (!is_hardware_watchpoint (bpt))
1936         continue;
1937
1938       if (!breakpoint_enabled (bpt))
1939         continue;
1940
1941       if (bpt->disposition == disp_del_at_next_stop)
1942         continue;
1943       
1944       for (loc = bpt->loc; loc; loc = loc->next)
1945         if (!loc->inserted && should_be_inserted (loc))
1946           {
1947             some_failed = 1;
1948             break;
1949           }
1950       if (some_failed)
1951         {
1952           for (loc = bpt->loc; loc; loc = loc->next)
1953             if (loc->inserted)
1954               remove_breakpoint (loc, mark_uninserted);
1955
1956           hw_breakpoint_error = 1;
1957           fprintf_unfiltered (tmp_error_stream,
1958                               "Could not insert hardware watchpoint %d.\n", 
1959                               bpt->number);
1960           error = -1;
1961         }
1962     }
1963
1964   if (error)
1965     {
1966       /* If a hardware breakpoint or watchpoint was inserted, add a
1967          message about possibly exhausted resources.  */
1968       if (hw_breakpoint_error)
1969         {
1970           fprintf_unfiltered (tmp_error_stream, 
1971                               "Could not insert hardware breakpoints:\n\
1972 You may have requested too many hardware breakpoints/watchpoints.\n");
1973         }
1974       target_terminal_ours_for_output ();
1975       error_stream (tmp_error_stream);
1976     }
1977
1978   do_cleanups (cleanups);
1979 }
1980
1981 int
1982 remove_breakpoints (void)
1983 {
1984   struct bp_location *bl, **blp_tmp;
1985   int val = 0;
1986
1987   ALL_BP_LOCATIONS (bl, blp_tmp)
1988   {
1989     if (bl->inserted)
1990       val |= remove_breakpoint (bl, mark_uninserted);
1991   }
1992   return val;
1993 }
1994
1995 /* Remove breakpoints of process PID.  */
1996
1997 int
1998 remove_breakpoints_pid (int pid)
1999 {
2000   struct bp_location *bl, **blp_tmp;
2001   int val;
2002   struct inferior *inf = find_inferior_pid (pid);
2003
2004   ALL_BP_LOCATIONS (bl, blp_tmp)
2005   {
2006     if (bl->pspace != inf->pspace)
2007       continue;
2008
2009     if (bl->inserted)
2010       {
2011         val = remove_breakpoint (bl, mark_uninserted);
2012         if (val != 0)
2013           return val;
2014       }
2015   }
2016   return 0;
2017 }
2018
2019 int
2020 reattach_breakpoints (int pid)
2021 {
2022   struct cleanup *old_chain;
2023   struct bp_location *bl, **blp_tmp;
2024   int val;
2025   struct ui_file *tmp_error_stream;
2026   int dummy1 = 0, dummy2 = 0;
2027   struct inferior *inf;
2028   struct thread_info *tp;
2029
2030   tp = any_live_thread_of_process (pid);
2031   if (tp == NULL)
2032     return 1;
2033
2034   inf = find_inferior_pid (pid);
2035   old_chain = save_inferior_ptid ();
2036
2037   inferior_ptid = tp->ptid;
2038
2039   tmp_error_stream = mem_fileopen ();
2040   make_cleanup_ui_file_delete (tmp_error_stream);
2041
2042   ALL_BP_LOCATIONS (bl, blp_tmp)
2043   {
2044     if (bl->pspace != inf->pspace)
2045       continue;
2046
2047     if (bl->inserted)
2048       {
2049         bl->inserted = 0;
2050         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2);
2051         if (val != 0)
2052           {
2053             do_cleanups (old_chain);
2054             return val;
2055           }
2056       }
2057   }
2058   do_cleanups (old_chain);
2059   return 0;
2060 }
2061
2062 static int internal_breakpoint_number = -1;
2063
2064 /* Set the breakpoint number of B, depending on the value of INTERNAL.
2065    If INTERNAL is non-zero, the breakpoint number will be populated
2066    from internal_breakpoint_number and that variable decremented.
2067    Otherwis the breakpoint number will be populated from
2068    breakpoint_count and that value incremented.  Internal breakpoints
2069    do not set the internal var bpnum.  */
2070 static void
2071 set_breakpoint_number (int internal, struct breakpoint *b)
2072 {
2073   if (internal)
2074     b->number = internal_breakpoint_number--;
2075   else
2076     {
2077       set_breakpoint_count (breakpoint_count + 1);
2078       b->number = breakpoint_count;
2079     }
2080 }
2081
2082 static struct breakpoint *
2083 create_internal_breakpoint (struct gdbarch *gdbarch,
2084                             CORE_ADDR address, enum bptype type)
2085 {
2086   struct symtab_and_line sal;
2087   struct breakpoint *b;
2088
2089   init_sal (&sal);              /* Initialize to zeroes.  */
2090
2091   sal.pc = address;
2092   sal.section = find_pc_overlay (sal.pc);
2093   sal.pspace = current_program_space;
2094
2095   b = set_raw_breakpoint (gdbarch, sal, type);
2096   b->number = internal_breakpoint_number--;
2097   b->disposition = disp_donttouch;
2098
2099   return b;
2100 }
2101
2102 static const char *const longjmp_names[] =
2103   {
2104     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
2105   };
2106 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
2107
2108 /* Per-objfile data private to breakpoint.c.  */
2109 struct breakpoint_objfile_data
2110 {
2111   /* Minimal symbol for "_ovly_debug_event" (if any).  */
2112   struct minimal_symbol *overlay_msym;
2113
2114   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
2115   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
2116
2117   /* Minimal symbol for "std::terminate()" (if any).  */
2118   struct minimal_symbol *terminate_msym;
2119
2120   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
2121   struct minimal_symbol *exception_msym;
2122 };
2123
2124 static const struct objfile_data *breakpoint_objfile_key;
2125
2126 /* Minimal symbol not found sentinel.  */
2127 static struct minimal_symbol msym_not_found;
2128
2129 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
2130
2131 static int
2132 msym_not_found_p (const struct minimal_symbol *msym)
2133 {
2134   return msym == &msym_not_found;
2135 }
2136
2137 /* Return per-objfile data needed by breakpoint.c.
2138    Allocate the data if necessary.  */
2139
2140 static struct breakpoint_objfile_data *
2141 get_breakpoint_objfile_data (struct objfile *objfile)
2142 {
2143   struct breakpoint_objfile_data *bp_objfile_data;
2144
2145   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
2146   if (bp_objfile_data == NULL)
2147     {
2148       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
2149                                        sizeof (*bp_objfile_data));
2150
2151       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
2152       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
2153     }
2154   return bp_objfile_data;
2155 }
2156
2157 static void
2158 create_overlay_event_breakpoint (void)
2159 {
2160   struct objfile *objfile;
2161   const char *const func_name = "_ovly_debug_event";
2162
2163   ALL_OBJFILES (objfile)
2164     {
2165       struct breakpoint *b;
2166       struct breakpoint_objfile_data *bp_objfile_data;
2167       CORE_ADDR addr;
2168
2169       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2170
2171       if (msym_not_found_p (bp_objfile_data->overlay_msym))
2172         continue;
2173
2174       if (bp_objfile_data->overlay_msym == NULL)
2175         {
2176           struct minimal_symbol *m;
2177
2178           m = lookup_minimal_symbol_text (func_name, objfile);
2179           if (m == NULL)
2180             {
2181               /* Avoid future lookups in this objfile.  */
2182               bp_objfile_data->overlay_msym = &msym_not_found;
2183               continue;
2184             }
2185           bp_objfile_data->overlay_msym = m;
2186         }
2187
2188       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
2189       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2190                                       bp_overlay_event);
2191       b->addr_string = xstrdup (func_name);
2192
2193       if (overlay_debugging == ovly_auto)
2194         {
2195           b->enable_state = bp_enabled;
2196           overlay_events_enabled = 1;
2197         }
2198       else
2199        {
2200          b->enable_state = bp_disabled;
2201          overlay_events_enabled = 0;
2202        }
2203     }
2204   update_global_location_list (1);
2205 }
2206
2207 static void
2208 create_longjmp_master_breakpoint (void)
2209 {
2210   struct program_space *pspace;
2211   struct cleanup *old_chain;
2212
2213   old_chain = save_current_program_space ();
2214
2215   ALL_PSPACES (pspace)
2216   {
2217     struct objfile *objfile;
2218
2219     set_current_program_space (pspace);
2220
2221     ALL_OBJFILES (objfile)
2222     {
2223       int i;
2224       struct gdbarch *gdbarch;
2225       struct breakpoint_objfile_data *bp_objfile_data;
2226
2227       gdbarch = get_objfile_arch (objfile);
2228       if (!gdbarch_get_longjmp_target_p (gdbarch))
2229         continue;
2230
2231       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2232
2233       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
2234         {
2235           struct breakpoint *b;
2236           const char *func_name;
2237           CORE_ADDR addr;
2238
2239           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
2240             continue;
2241
2242           func_name = longjmp_names[i];
2243           if (bp_objfile_data->longjmp_msym[i] == NULL)
2244             {
2245               struct minimal_symbol *m;
2246
2247               m = lookup_minimal_symbol_text (func_name, objfile);
2248               if (m == NULL)
2249                 {
2250                   /* Prevent future lookups in this objfile.  */
2251                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
2252                   continue;
2253                 }
2254               bp_objfile_data->longjmp_msym[i] = m;
2255             }
2256
2257           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
2258           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master);
2259           b->addr_string = xstrdup (func_name);
2260           b->enable_state = bp_disabled;
2261         }
2262     }
2263   }
2264   update_global_location_list (1);
2265
2266   do_cleanups (old_chain);
2267 }
2268
2269 /* Create a master std::terminate breakpoint.  */
2270 static void
2271 create_std_terminate_master_breakpoint (void)
2272 {
2273   struct program_space *pspace;
2274   struct cleanup *old_chain;
2275   const char *const func_name = "std::terminate()";
2276
2277   old_chain = save_current_program_space ();
2278
2279   ALL_PSPACES (pspace)
2280   {
2281     struct objfile *objfile;
2282     CORE_ADDR addr;
2283
2284     set_current_program_space (pspace);
2285
2286     ALL_OBJFILES (objfile)
2287     {
2288       struct breakpoint *b;
2289       struct breakpoint_objfile_data *bp_objfile_data;
2290
2291       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2292
2293       if (msym_not_found_p (bp_objfile_data->terminate_msym))
2294         continue;
2295
2296       if (bp_objfile_data->terminate_msym == NULL)
2297         {
2298           struct minimal_symbol *m;
2299
2300           m = lookup_minimal_symbol (func_name, NULL, objfile);
2301           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
2302                             && MSYMBOL_TYPE (m) != mst_file_text))
2303             {
2304               /* Prevent future lookups in this objfile.  */
2305               bp_objfile_data->terminate_msym = &msym_not_found;
2306               continue;
2307             }
2308           bp_objfile_data->terminate_msym = m;
2309         }
2310
2311       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
2312       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2313                                       bp_std_terminate_master);
2314       b->addr_string = xstrdup (func_name);
2315       b->enable_state = bp_disabled;
2316     }
2317   }
2318
2319   update_global_location_list (1);
2320
2321   do_cleanups (old_chain);
2322 }
2323
2324 /* Install a master breakpoint on the unwinder's debug hook.  */
2325
2326 void
2327 create_exception_master_breakpoint (void)
2328 {
2329   struct objfile *objfile;
2330   const char *const func_name = "_Unwind_DebugHook";
2331
2332   ALL_OBJFILES (objfile)
2333     {
2334       struct breakpoint *b;
2335       struct gdbarch *gdbarch;
2336       struct breakpoint_objfile_data *bp_objfile_data;
2337       CORE_ADDR addr;
2338
2339       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2340
2341       if (msym_not_found_p (bp_objfile_data->exception_msym))
2342         continue;
2343
2344       gdbarch = get_objfile_arch (objfile);
2345
2346       if (bp_objfile_data->exception_msym == NULL)
2347         {
2348           struct minimal_symbol *debug_hook;
2349
2350           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
2351           if (debug_hook == NULL)
2352             {
2353               bp_objfile_data->exception_msym = &msym_not_found;
2354               continue;
2355             }
2356
2357           bp_objfile_data->exception_msym = debug_hook;
2358         }
2359
2360       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
2361       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
2362                                                  &current_target);
2363       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master);
2364       b->addr_string = xstrdup (func_name);
2365       b->enable_state = bp_disabled;
2366     }
2367
2368   update_global_location_list (1);
2369 }
2370
2371 void
2372 update_breakpoints_after_exec (void)
2373 {
2374   struct breakpoint *b, *b_tmp;
2375   struct bp_location *bploc, **bplocp_tmp;
2376
2377   /* We're about to delete breakpoints from GDB's lists.  If the
2378      INSERTED flag is true, GDB will try to lift the breakpoints by
2379      writing the breakpoints' "shadow contents" back into memory.  The
2380      "shadow contents" are NOT valid after an exec, so GDB should not
2381      do that.  Instead, the target is responsible from marking
2382      breakpoints out as soon as it detects an exec.  We don't do that
2383      here instead, because there may be other attempts to delete
2384      breakpoints after detecting an exec and before reaching here.  */
2385   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
2386     if (bploc->pspace == current_program_space)
2387       gdb_assert (!bploc->inserted);
2388
2389   ALL_BREAKPOINTS_SAFE (b, b_tmp)
2390   {
2391     if (b->pspace != current_program_space)
2392       continue;
2393
2394     /* Solib breakpoints must be explicitly reset after an exec().  */
2395     if (b->type == bp_shlib_event)
2396       {
2397         delete_breakpoint (b);
2398         continue;
2399       }
2400
2401     /* JIT breakpoints must be explicitly reset after an exec().  */
2402     if (b->type == bp_jit_event)
2403       {
2404         delete_breakpoint (b);
2405         continue;
2406       }
2407
2408     /* Thread event breakpoints must be set anew after an exec(),
2409        as must overlay event and longjmp master breakpoints.  */
2410     if (b->type == bp_thread_event || b->type == bp_overlay_event
2411         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
2412         || b->type == bp_exception_master)
2413       {
2414         delete_breakpoint (b);
2415         continue;
2416       }
2417
2418     /* Step-resume breakpoints are meaningless after an exec().  */
2419     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
2420       {
2421         delete_breakpoint (b);
2422         continue;
2423       }
2424
2425     /* Longjmp and longjmp-resume breakpoints are also meaningless
2426        after an exec.  */
2427     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
2428         || b->type == bp_exception || b->type == bp_exception_resume)
2429       {
2430         delete_breakpoint (b);
2431         continue;
2432       }
2433
2434     if (b->type == bp_catchpoint)
2435       {
2436         /* For now, none of the bp_catchpoint breakpoints need to
2437            do anything at this point.  In the future, if some of
2438            the catchpoints need to something, we will need to add
2439            a new method, and call this method from here.  */
2440         continue;
2441       }
2442
2443     /* bp_finish is a special case.  The only way we ought to be able
2444        to see one of these when an exec() has happened, is if the user
2445        caught a vfork, and then said "finish".  Ordinarily a finish just
2446        carries them to the call-site of the current callee, by setting
2447        a temporary bp there and resuming.  But in this case, the finish
2448        will carry them entirely through the vfork & exec.
2449
2450        We don't want to allow a bp_finish to remain inserted now.  But
2451        we can't safely delete it, 'cause finish_command has a handle to
2452        the bp on a bpstat, and will later want to delete it.  There's a
2453        chance (and I've seen it happen) that if we delete the bp_finish
2454        here, that its storage will get reused by the time finish_command
2455        gets 'round to deleting the "use to be a bp_finish" breakpoint.
2456        We really must allow finish_command to delete a bp_finish.
2457
2458        In the absense of a general solution for the "how do we know
2459        it's safe to delete something others may have handles to?"
2460        problem, what we'll do here is just uninsert the bp_finish, and
2461        let finish_command delete it.
2462
2463        (We know the bp_finish is "doomed" in the sense that it's
2464        momentary, and will be deleted as soon as finish_command sees
2465        the inferior stopped.  So it doesn't matter that the bp's
2466        address is probably bogus in the new a.out, unlike e.g., the
2467        solib breakpoints.)  */
2468
2469     if (b->type == bp_finish)
2470       {
2471         continue;
2472       }
2473
2474     /* Without a symbolic address, we have little hope of the
2475        pre-exec() address meaning the same thing in the post-exec()
2476        a.out.  */
2477     if (b->addr_string == NULL)
2478       {
2479         delete_breakpoint (b);
2480         continue;
2481       }
2482   }
2483   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
2484   create_overlay_event_breakpoint ();
2485   create_longjmp_master_breakpoint ();
2486   create_std_terminate_master_breakpoint ();
2487   create_exception_master_breakpoint ();
2488 }
2489
2490 int
2491 detach_breakpoints (int pid)
2492 {
2493   struct bp_location *bl, **blp_tmp;
2494   int val = 0;
2495   struct cleanup *old_chain = save_inferior_ptid ();
2496   struct inferior *inf = current_inferior ();
2497
2498   if (pid == PIDGET (inferior_ptid))
2499     error (_("Cannot detach breakpoints of inferior_ptid"));
2500
2501   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
2502   inferior_ptid = pid_to_ptid (pid);
2503   ALL_BP_LOCATIONS (bl, blp_tmp)
2504   {
2505     if (bl->pspace != inf->pspace)
2506       continue;
2507
2508     if (bl->inserted)
2509       val |= remove_breakpoint_1 (bl, mark_inserted);
2510   }
2511
2512   /* Detach single-step breakpoints as well.  */
2513   detach_single_step_breakpoints ();
2514
2515   do_cleanups (old_chain);
2516   return val;
2517 }
2518
2519 /* Remove the breakpoint location BL from the current address space.
2520    Note that this is used to detach breakpoints from a child fork.
2521    When we get here, the child isn't in the inferior list, and neither
2522    do we have objects to represent its address space --- we should
2523    *not* look at bl->pspace->aspace here.  */
2524
2525 static int
2526 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
2527 {
2528   int val;
2529
2530   /* BL is never in moribund_locations by our callers.  */
2531   gdb_assert (bl->owner != NULL);
2532
2533   if (bl->owner->enable_state == bp_permanent)
2534     /* Permanent breakpoints cannot be inserted or removed.  */
2535     return 0;
2536
2537   /* The type of none suggests that owner is actually deleted.
2538      This should not ever happen.  */
2539   gdb_assert (bl->owner->type != bp_none);
2540
2541   if (bl->loc_type == bp_loc_software_breakpoint
2542       || bl->loc_type == bp_loc_hardware_breakpoint)
2543     {
2544       /* "Normal" instruction breakpoint: either the standard
2545          trap-instruction bp (bp_breakpoint), or a
2546          bp_hardware_breakpoint.  */
2547
2548       /* First check to see if we have to handle an overlay.  */
2549       if (overlay_debugging == ovly_off
2550           || bl->section == NULL
2551           || !(section_is_overlay (bl->section)))
2552         {
2553           /* No overlay handling: just remove the breakpoint.  */
2554
2555           if (bl->loc_type == bp_loc_hardware_breakpoint)
2556             val = target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
2557           else
2558             val = target_remove_breakpoint (bl->gdbarch, &bl->target_info);
2559         }
2560       else
2561         {
2562           /* This breakpoint is in an overlay section.
2563              Did we set a breakpoint at the LMA?  */
2564           if (!overlay_events_enabled)
2565               {
2566                 /* Yes -- overlay event support is not active, so we
2567                    should have set a breakpoint at the LMA.  Remove it.  
2568                 */
2569                 /* Ignore any failures: if the LMA is in ROM, we will
2570                    have already warned when we failed to insert it.  */
2571                 if (bl->loc_type == bp_loc_hardware_breakpoint)
2572                   target_remove_hw_breakpoint (bl->gdbarch,
2573                                                &bl->overlay_target_info);
2574                 else
2575                   target_remove_breakpoint (bl->gdbarch,
2576                                             &bl->overlay_target_info);
2577               }
2578           /* Did we set a breakpoint at the VMA? 
2579              If so, we will have marked the breakpoint 'inserted'.  */
2580           if (bl->inserted)
2581             {
2582               /* Yes -- remove it.  Previously we did not bother to
2583                  remove the breakpoint if the section had been
2584                  unmapped, but let's not rely on that being safe.  We
2585                  don't know what the overlay manager might do.  */
2586               if (bl->loc_type == bp_loc_hardware_breakpoint)
2587                 val = target_remove_hw_breakpoint (bl->gdbarch,
2588                                                    &bl->target_info);
2589
2590               /* However, we should remove *software* breakpoints only
2591                  if the section is still mapped, or else we overwrite
2592                  wrong code with the saved shadow contents.  */
2593               else if (section_is_mapped (bl->section))
2594                 val = target_remove_breakpoint (bl->gdbarch,
2595                                                 &bl->target_info);
2596               else
2597                 val = 0;
2598             }
2599           else
2600             {
2601               /* No -- not inserted, so no need to remove.  No error.  */
2602               val = 0;
2603             }
2604         }
2605
2606       /* In some cases, we might not be able to remove a breakpoint
2607          in a shared library that has already been removed, but we
2608          have not yet processed the shlib unload event.  */
2609       if (val && solib_name_from_address (bl->pspace, bl->address))
2610         val = 0;
2611
2612       if (val)
2613         return val;
2614       bl->inserted = (is == mark_inserted);
2615     }
2616   else if (bl->loc_type == bp_loc_hardware_watchpoint)
2617     {
2618       gdb_assert (bl->owner->ops != NULL
2619                   && bl->owner->ops->remove_location != NULL);
2620
2621       bl->inserted = (is == mark_inserted);
2622       bl->owner->ops->remove_location (bl);
2623
2624       /* Failure to remove any of the hardware watchpoints comes here.  */
2625       if ((is == mark_uninserted) && (bl->inserted))
2626         warning (_("Could not remove hardware watchpoint %d."),
2627                  bl->owner->number);
2628     }
2629   else if (bl->owner->type == bp_catchpoint
2630            && breakpoint_enabled (bl->owner)
2631            && !bl->duplicate)
2632     {
2633       gdb_assert (bl->owner->ops != NULL
2634                   && bl->owner->ops->remove_location != NULL);
2635
2636       val = bl->owner->ops->remove_location (bl);
2637       if (val)
2638         return val;
2639
2640       bl->inserted = (is == mark_inserted);
2641     }
2642
2643   return 0;
2644 }
2645
2646 static int
2647 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
2648 {
2649   int ret;
2650   struct cleanup *old_chain;
2651
2652   /* BL is never in moribund_locations by our callers.  */
2653   gdb_assert (bl->owner != NULL);
2654
2655   if (bl->owner->enable_state == bp_permanent)
2656     /* Permanent breakpoints cannot be inserted or removed.  */
2657     return 0;
2658
2659   /* The type of none suggests that owner is actually deleted.
2660      This should not ever happen.  */
2661   gdb_assert (bl->owner->type != bp_none);
2662
2663   old_chain = save_current_space_and_thread ();
2664
2665   switch_to_program_space_and_thread (bl->pspace);
2666
2667   ret = remove_breakpoint_1 (bl, is);
2668
2669   do_cleanups (old_chain);
2670   return ret;
2671 }
2672
2673 /* Clear the "inserted" flag in all breakpoints.  */
2674
2675 void
2676 mark_breakpoints_out (void)
2677 {
2678   struct bp_location *bl, **blp_tmp;
2679
2680   ALL_BP_LOCATIONS (bl, blp_tmp)
2681     if (bl->pspace == current_program_space)
2682       bl->inserted = 0;
2683 }
2684
2685 /* Clear the "inserted" flag in all breakpoints and delete any
2686    breakpoints which should go away between runs of the program.
2687
2688    Plus other such housekeeping that has to be done for breakpoints
2689    between runs.
2690
2691    Note: this function gets called at the end of a run (by
2692    generic_mourn_inferior) and when a run begins (by
2693    init_wait_for_inferior).  */
2694
2695
2696
2697 void
2698 breakpoint_init_inferior (enum inf_context context)
2699 {
2700   struct breakpoint *b, *b_tmp;
2701   struct bp_location *bl, **blp_tmp;
2702   int ix;
2703   struct program_space *pspace = current_program_space;
2704
2705   /* If breakpoint locations are shared across processes, then there's
2706      nothing to do.  */
2707   if (gdbarch_has_global_breakpoints (target_gdbarch))
2708     return;
2709
2710   ALL_BP_LOCATIONS (bl, blp_tmp)
2711   {
2712     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
2713     if (bl->pspace == pspace
2714         && bl->owner->enable_state != bp_permanent)
2715       bl->inserted = 0;
2716   }
2717
2718   ALL_BREAKPOINTS_SAFE (b, b_tmp)
2719   {
2720     if (b->loc && b->loc->pspace != pspace)
2721       continue;
2722
2723     switch (b->type)
2724       {
2725       case bp_call_dummy:
2726
2727         /* If the call dummy breakpoint is at the entry point it will
2728            cause problems when the inferior is rerun, so we better get
2729            rid of it.  */
2730
2731       case bp_watchpoint_scope:
2732
2733         /* Also get rid of scope breakpoints.  */
2734
2735       case bp_shlib_event:
2736
2737         /* Also remove solib event breakpoints.  Their addresses may
2738            have changed since the last time we ran the program.
2739            Actually we may now be debugging against different target;
2740            and so the solib backend that installed this breakpoint may
2741            not be used in by the target.  E.g.,
2742
2743            (gdb) file prog-linux
2744            (gdb) run               # native linux target
2745            ...
2746            (gdb) kill
2747            (gdb) file prog-win.exe
2748            (gdb) tar rem :9999     # remote Windows gdbserver.
2749         */
2750
2751         delete_breakpoint (b);
2752         break;
2753
2754       case bp_watchpoint:
2755       case bp_hardware_watchpoint:
2756       case bp_read_watchpoint:
2757       case bp_access_watchpoint:
2758
2759         /* Likewise for watchpoints on local expressions.  */
2760         if (b->exp_valid_block != NULL)
2761           delete_breakpoint (b);
2762         else if (context == inf_starting) 
2763           {
2764             /* Reset val field to force reread of starting value in
2765                insert_breakpoints.  */
2766             if (b->val)
2767               value_free (b->val);
2768             b->val = NULL;
2769             b->val_valid = 0;
2770           }
2771         break;
2772       default:
2773         break;
2774       }
2775   }
2776
2777   /* Get rid of the moribund locations.  */
2778   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
2779     decref_bp_location (&bl);
2780   VEC_free (bp_location_p, moribund_locations);
2781 }
2782
2783 /* These functions concern about actual breakpoints inserted in the
2784    target --- to e.g. check if we need to do decr_pc adjustment or if
2785    we need to hop over the bkpt --- so we check for address space
2786    match, not program space.  */
2787
2788 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
2789    exists at PC.  It returns ordinary_breakpoint_here if it's an
2790    ordinary breakpoint, or permanent_breakpoint_here if it's a
2791    permanent breakpoint.
2792    - When continuing from a location with an ordinary breakpoint, we
2793      actually single step once before calling insert_breakpoints.
2794    - When continuing from a localion with a permanent breakpoint, we
2795      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
2796      the target, to advance the PC past the breakpoint.  */
2797
2798 enum breakpoint_here
2799 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
2800 {
2801   struct bp_location *bl, **blp_tmp;
2802   int any_breakpoint_here = 0;
2803
2804   ALL_BP_LOCATIONS (bl, blp_tmp)
2805     {
2806       if (bl->loc_type != bp_loc_software_breakpoint
2807           && bl->loc_type != bp_loc_hardware_breakpoint)
2808         continue;
2809
2810       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
2811       if ((breakpoint_enabled (bl->owner)
2812            || bl->owner->enable_state == bp_permanent)
2813           && breakpoint_location_address_match (bl, aspace, pc))
2814         {
2815           if (overlay_debugging 
2816               && section_is_overlay (bl->section)
2817               && !section_is_mapped (bl->section))
2818             continue;           /* unmapped overlay -- can't be a match */
2819           else if (bl->owner->enable_state == bp_permanent)
2820             return permanent_breakpoint_here;
2821           else
2822             any_breakpoint_here = 1;
2823         }
2824     }
2825
2826   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
2827 }
2828
2829 /* Return true if there's a moribund breakpoint at PC.  */
2830
2831 int
2832 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
2833 {
2834   struct bp_location *loc;
2835   int ix;
2836
2837   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
2838     if (breakpoint_location_address_match (loc, aspace, pc))
2839       return 1;
2840
2841   return 0;
2842 }
2843
2844 /* Returns non-zero if there's a breakpoint inserted at PC, which is
2845    inserted using regular breakpoint_chain / bp_location array
2846    mechanism.  This does not check for single-step breakpoints, which
2847    are inserted and removed using direct target manipulation.  */
2848
2849 int
2850 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
2851                                     CORE_ADDR pc)
2852 {
2853   struct bp_location *bl, **blp_tmp;
2854
2855   ALL_BP_LOCATIONS (bl, blp_tmp)
2856     {
2857       if (bl->loc_type != bp_loc_software_breakpoint
2858           && bl->loc_type != bp_loc_hardware_breakpoint)
2859         continue;
2860
2861       if (bl->inserted
2862           && breakpoint_location_address_match (bl, aspace, pc))
2863         {
2864           if (overlay_debugging 
2865               && section_is_overlay (bl->section)
2866               && !section_is_mapped (bl->section))
2867             continue;           /* unmapped overlay -- can't be a match */
2868           else
2869             return 1;
2870         }
2871     }
2872   return 0;
2873 }
2874
2875 /* Returns non-zero iff there's either regular breakpoint
2876    or a single step breakpoint inserted at PC.  */
2877
2878 int
2879 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
2880 {
2881   if (regular_breakpoint_inserted_here_p (aspace, pc))
2882     return 1;
2883
2884   if (single_step_breakpoint_inserted_here_p (aspace, pc))
2885     return 1;
2886
2887   return 0;
2888 }
2889
2890 /* This function returns non-zero iff there is a software breakpoint
2891    inserted at PC.  */
2892
2893 int
2894 software_breakpoint_inserted_here_p (struct address_space *aspace,
2895                                      CORE_ADDR pc)
2896 {
2897   struct bp_location *bl, **blp_tmp;
2898
2899   ALL_BP_LOCATIONS (bl, blp_tmp)
2900     {
2901       if (bl->loc_type != bp_loc_software_breakpoint)
2902         continue;
2903
2904       if (bl->inserted
2905           && breakpoint_address_match (bl->pspace->aspace, bl->address,
2906                                        aspace, pc))
2907         {
2908           if (overlay_debugging 
2909               && section_is_overlay (bl->section)
2910               && !section_is_mapped (bl->section))
2911             continue;           /* unmapped overlay -- can't be a match */
2912           else
2913             return 1;
2914         }
2915     }
2916
2917   /* Also check for software single-step breakpoints.  */
2918   if (single_step_breakpoint_inserted_here_p (aspace, pc))
2919     return 1;
2920
2921   return 0;
2922 }
2923
2924 int
2925 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
2926                                        CORE_ADDR addr, ULONGEST len)
2927 {
2928   struct breakpoint *bpt;
2929
2930   ALL_BREAKPOINTS (bpt)
2931     {
2932       struct bp_location *loc;
2933
2934       if (bpt->type != bp_hardware_watchpoint
2935           && bpt->type != bp_access_watchpoint)
2936         continue;
2937
2938       if (!breakpoint_enabled (bpt))
2939         continue;
2940
2941       for (loc = bpt->loc; loc; loc = loc->next)
2942         if (loc->pspace->aspace == aspace && loc->inserted)
2943           {
2944             CORE_ADDR l, h;
2945
2946             /* Check for intersection.  */
2947             l = max (loc->address, addr);
2948             h = min (loc->address + loc->length, addr + len);
2949             if (l < h)
2950               return 1;
2951           }
2952     }
2953   return 0;
2954 }
2955
2956 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
2957    PC is valid for process/thread PTID.  */
2958
2959 int
2960 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
2961                          ptid_t ptid)
2962 {
2963   struct bp_location *bl, **blp_tmp;
2964   /* The thread and task IDs associated to PTID, computed lazily.  */
2965   int thread = -1;
2966   int task = 0;
2967   
2968   ALL_BP_LOCATIONS (bl, blp_tmp)
2969     {
2970       if (bl->loc_type != bp_loc_software_breakpoint
2971           && bl->loc_type != bp_loc_hardware_breakpoint)
2972         continue;
2973
2974       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
2975       if (!breakpoint_enabled (bl->owner)
2976           && bl->owner->enable_state != bp_permanent)
2977         continue;
2978
2979       if (!breakpoint_location_address_match (bl, aspace, pc))
2980         continue;
2981
2982       if (bl->owner->thread != -1)
2983         {
2984           /* This is a thread-specific breakpoint.  Check that ptid
2985              matches that thread.  If thread hasn't been computed yet,
2986              it is now time to do so.  */
2987           if (thread == -1)
2988             thread = pid_to_thread_id (ptid);
2989           if (bl->owner->thread != thread)
2990             continue;
2991         }
2992
2993       if (bl->owner->task != 0)
2994         {
2995           /* This is a task-specific breakpoint.  Check that ptid
2996              matches that task.  If task hasn't been computed yet,
2997              it is now time to do so.  */
2998           if (task == 0)
2999             task = ada_get_task_number (ptid);
3000           if (bl->owner->task != task)
3001             continue;
3002         }
3003
3004       if (overlay_debugging 
3005           && section_is_overlay (bl->section)
3006           && !section_is_mapped (bl->section))
3007         continue;           /* unmapped overlay -- can't be a match */
3008
3009       return 1;
3010     }
3011
3012   return 0;
3013 }
3014 \f
3015
3016 /* bpstat stuff.  External routines' interfaces are documented
3017    in breakpoint.h.  */
3018
3019 int
3020 ep_is_catchpoint (struct breakpoint *ep)
3021 {
3022   return (ep->type == bp_catchpoint);
3023 }
3024
3025 /* Frees any storage that is part of a bpstat.  Does not walk the
3026    'next' chain.  */
3027
3028 static void
3029 bpstat_free (bpstat bs)
3030 {
3031   if (bs->old_val != NULL)
3032     value_free (bs->old_val);
3033   decref_counted_command_line (&bs->commands);
3034   decref_bp_location (&bs->bp_location_at);
3035   xfree (bs);
3036 }
3037
3038 /* Clear a bpstat so that it says we are not at any breakpoint.
3039    Also free any storage that is part of a bpstat.  */
3040
3041 void
3042 bpstat_clear (bpstat *bsp)
3043 {
3044   bpstat p;
3045   bpstat q;
3046
3047   if (bsp == 0)
3048     return;
3049   p = *bsp;
3050   while (p != NULL)
3051     {
3052       q = p->next;
3053       bpstat_free (p);
3054       p = q;
3055     }
3056   *bsp = NULL;
3057 }
3058
3059 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
3060    is part of the bpstat is copied as well.  */
3061
3062 bpstat
3063 bpstat_copy (bpstat bs)
3064 {
3065   bpstat p = NULL;
3066   bpstat tmp;
3067   bpstat retval = NULL;
3068
3069   if (bs == NULL)
3070     return bs;
3071
3072   for (; bs != NULL; bs = bs->next)
3073     {
3074       tmp = (bpstat) xmalloc (sizeof (*tmp));
3075       memcpy (tmp, bs, sizeof (*tmp));
3076       incref_counted_command_line (tmp->commands);
3077       incref_bp_location (tmp->bp_location_at);
3078       if (bs->old_val != NULL)
3079         {
3080           tmp->old_val = value_copy (bs->old_val);
3081           release_value (tmp->old_val);
3082         }
3083
3084       if (p == NULL)
3085         /* This is the first thing in the chain.  */
3086         retval = tmp;
3087       else
3088         p->next = tmp;
3089       p = tmp;
3090     }
3091   p->next = NULL;
3092   return retval;
3093 }
3094
3095 /* Find the bpstat associated with this breakpoint.  */
3096
3097 bpstat
3098 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
3099 {
3100   if (bsp == NULL)
3101     return NULL;
3102
3103   for (; bsp != NULL; bsp = bsp->next)
3104     {
3105       if (bsp->breakpoint_at == breakpoint)
3106         return bsp;
3107     }
3108   return NULL;
3109 }
3110
3111 /* Put in *NUM the breakpoint number of the first breakpoint we are
3112    stopped at.  *BSP upon return is a bpstat which points to the
3113    remaining breakpoints stopped at (but which is not guaranteed to be
3114    good for anything but further calls to bpstat_num).
3115
3116    Return 0 if passed a bpstat which does not indicate any breakpoints.
3117    Return -1 if stopped at a breakpoint that has been deleted since
3118    we set it.
3119    Return 1 otherwise.  */
3120
3121 int
3122 bpstat_num (bpstat *bsp, int *num)
3123 {
3124   struct breakpoint *b;
3125
3126   if ((*bsp) == NULL)
3127     return 0;                   /* No more breakpoint values */
3128
3129   /* We assume we'll never have several bpstats that correspond to a
3130      single breakpoint -- otherwise, this function might return the
3131      same number more than once and this will look ugly.  */
3132   b = (*bsp)->breakpoint_at;
3133   *bsp = (*bsp)->next;
3134   if (b == NULL)
3135     return -1;                  /* breakpoint that's been deleted since */
3136
3137   *num = b->number;             /* We have its number */
3138   return 1;
3139 }
3140
3141 /* Modify BS so that the actions will not be performed.  */
3142
3143 void
3144 bpstat_clear_actions (bpstat bs)
3145 {
3146   for (; bs != NULL; bs = bs->next)
3147     {
3148       decref_counted_command_line (&bs->commands);
3149       bs->commands_left = NULL;
3150       if (bs->old_val != NULL)
3151         {
3152           value_free (bs->old_val);
3153           bs->old_val = NULL;
3154         }
3155     }
3156 }
3157
3158 /* Called when a command is about to proceed the inferior.  */
3159
3160 static void
3161 breakpoint_about_to_proceed (void)
3162 {
3163   if (!ptid_equal (inferior_ptid, null_ptid))
3164     {
3165       struct thread_info *tp = inferior_thread ();
3166
3167       /* Allow inferior function calls in breakpoint commands to not
3168          interrupt the command list.  When the call finishes
3169          successfully, the inferior will be standing at the same
3170          breakpoint as if nothing happened.  */
3171       if (tp->control.in_infcall)
3172         return;
3173     }
3174
3175   breakpoint_proceeded = 1;
3176 }
3177
3178 /* Stub for cleaning up our state if we error-out of a breakpoint
3179    command.  */
3180 static void
3181 cleanup_executing_breakpoints (void *ignore)
3182 {
3183   executing_breakpoint_commands = 0;
3184 }
3185
3186 /* Execute all the commands associated with all the breakpoints at
3187    this location.  Any of these commands could cause the process to
3188    proceed beyond this point, etc.  We look out for such changes by
3189    checking the global "breakpoint_proceeded" after each command.
3190
3191    Returns true if a breakpoint command resumed the inferior.  In that
3192    case, it is the caller's responsibility to recall it again with the
3193    bpstat of the current thread.  */
3194
3195 static int
3196 bpstat_do_actions_1 (bpstat *bsp)
3197 {
3198   bpstat bs;
3199   struct cleanup *old_chain;
3200   int again = 0;
3201
3202   /* Avoid endless recursion if a `source' command is contained
3203      in bs->commands.  */
3204   if (executing_breakpoint_commands)
3205     return 0;
3206
3207   executing_breakpoint_commands = 1;
3208   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
3209
3210   prevent_dont_repeat ();
3211
3212   /* This pointer will iterate over the list of bpstat's.  */
3213   bs = *bsp;
3214
3215   breakpoint_proceeded = 0;
3216   for (; bs != NULL; bs = bs->next)
3217     {
3218       struct counted_command_line *ccmd;
3219       struct command_line *cmd;
3220       struct cleanup *this_cmd_tree_chain;
3221
3222       /* Take ownership of the BSP's command tree, if it has one.
3223
3224          The command tree could legitimately contain commands like
3225          'step' and 'next', which call clear_proceed_status, which
3226          frees stop_bpstat's command tree.  To make sure this doesn't
3227          free the tree we're executing out from under us, we need to
3228          take ownership of the tree ourselves.  Since a given bpstat's
3229          commands are only executed once, we don't need to copy it; we
3230          can clear the pointer in the bpstat, and make sure we free
3231          the tree when we're done.  */
3232       ccmd = bs->commands;
3233       bs->commands = NULL;
3234       this_cmd_tree_chain
3235         = make_cleanup_decref_counted_command_line (&ccmd);
3236       cmd = bs->commands_left;
3237       bs->commands_left = NULL;
3238
3239       while (cmd != NULL)
3240         {
3241           execute_control_command (cmd);
3242
3243           if (breakpoint_proceeded)
3244             break;
3245           else
3246             cmd = cmd->next;
3247         }
3248
3249       /* We can free this command tree now.  */
3250       do_cleanups (this_cmd_tree_chain);
3251
3252       if (breakpoint_proceeded)
3253         {
3254           if (target_can_async_p ())
3255             /* If we are in async mode, then the target might be still
3256                running, not stopped at any breakpoint, so nothing for
3257                us to do here -- just return to the event loop.  */
3258             ;
3259           else
3260             /* In sync mode, when execute_control_command returns
3261                we're already standing on the next breakpoint.
3262                Breakpoint commands for that stop were not run, since
3263                execute_command does not run breakpoint commands --
3264                only command_line_handler does, but that one is not
3265                involved in execution of breakpoint commands.  So, we
3266                can now execute breakpoint commands.  It should be
3267                noted that making execute_command do bpstat actions is
3268                not an option -- in this case we'll have recursive
3269                invocation of bpstat for each breakpoint with a
3270                command, and can easily blow up GDB stack.  Instead, we
3271                return true, which will trigger the caller to recall us
3272                with the new stop_bpstat.  */
3273             again = 1;
3274           break;
3275         }
3276     }
3277   do_cleanups (old_chain);
3278   return again;
3279 }
3280
3281 void
3282 bpstat_do_actions (void)
3283 {
3284   /* Do any commands attached to breakpoint we are stopped at.  */
3285   while (!ptid_equal (inferior_ptid, null_ptid)
3286          && target_has_execution
3287          && !is_exited (inferior_ptid)
3288          && !is_executing (inferior_ptid))
3289     /* Since in sync mode, bpstat_do_actions may resume the inferior,
3290        and only return when it is stopped at the next breakpoint, we
3291        keep doing breakpoint actions until it returns false to
3292        indicate the inferior was not resumed.  */
3293     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
3294       break;
3295 }
3296
3297 /* Print out the (old or new) value associated with a watchpoint.  */
3298
3299 static void
3300 watchpoint_value_print (struct value *val, struct ui_file *stream)
3301 {
3302   if (val == NULL)
3303     fprintf_unfiltered (stream, _("<unreadable>"));
3304   else
3305     {
3306       struct value_print_options opts;
3307       get_user_print_options (&opts);
3308       value_print (val, stream, &opts);
3309     }
3310 }
3311
3312 /* This is the normal print function for a bpstat.  In the future,
3313    much of this logic could (should?) be moved to bpstat_stop_status,
3314    by having it set different print_it values.
3315
3316    Current scheme: When we stop, bpstat_print() is called.  It loops
3317    through the bpstat list of things causing this stop, calling the
3318    print_bp_stop_message function on each one.  The behavior of the
3319    print_bp_stop_message function depends on the print_it field of
3320    bpstat.  If such field so indicates, call this function here.
3321
3322    Return values from this routine (ultimately used by bpstat_print()
3323    and normal_stop() to decide what to do): 
3324    PRINT_NOTHING: Means we already printed all we needed to print,
3325    don't print anything else.
3326    PRINT_SRC_ONLY: Means we printed something, and we do *not* desire
3327    that something to be followed by a location.
3328    PRINT_SCR_AND_LOC: Means we printed something, and we *do* desire
3329    that something to be followed by a location.
3330    PRINT_UNKNOWN: Means we printed nothing or we need to do some more
3331    analysis.  */
3332
3333 static enum print_stop_action
3334 print_it_typical (bpstat bs)
3335 {
3336   struct cleanup *old_chain;
3337   struct breakpoint *b;
3338   const struct bp_location *bl;
3339   struct ui_stream *stb;
3340   int bp_temp = 0;
3341   enum print_stop_action result;
3342
3343   gdb_assert (bs->bp_location_at != NULL);
3344
3345   bl = bs->bp_location_at;
3346   b = bs->breakpoint_at;
3347
3348   stb = ui_out_stream_new (uiout);
3349   old_chain = make_cleanup_ui_out_stream_delete (stb);
3350
3351   switch (b->type)
3352     {
3353     case bp_breakpoint:
3354     case bp_hardware_breakpoint:
3355       bp_temp = b->disposition == disp_del;
3356       if (bl->address != bl->requested_address)
3357         breakpoint_adjustment_warning (bl->requested_address,
3358                                        bl->address,
3359                                        b->number, 1);
3360       annotate_breakpoint (b->number);
3361       if (bp_temp) 
3362         ui_out_text (uiout, "\nTemporary breakpoint ");
3363       else
3364         ui_out_text (uiout, "\nBreakpoint ");
3365       if (ui_out_is_mi_like_p (uiout))
3366         {
3367           ui_out_field_string (uiout, "reason", 
3368                           async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
3369           ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
3370         }
3371       ui_out_field_int (uiout, "bkptno", b->number);
3372       ui_out_text (uiout, ", ");
3373       result = PRINT_SRC_AND_LOC;
3374       break;
3375
3376     case bp_shlib_event:
3377       /* Did we stop because the user set the stop_on_solib_events
3378          variable?  (If so, we report this as a generic, "Stopped due
3379          to shlib event" message.) */
3380       printf_filtered (_("Stopped due to shared library event\n"));
3381       result = PRINT_NOTHING;
3382       break;
3383
3384     case bp_thread_event:
3385       /* Not sure how we will get here.
3386          GDB should not stop for these breakpoints.  */
3387       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
3388       result = PRINT_NOTHING;
3389       break;
3390
3391     case bp_overlay_event:
3392       /* By analogy with the thread event, GDB should not stop for these.  */
3393       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
3394       result = PRINT_NOTHING;
3395       break;
3396
3397     case bp_longjmp_master:
3398       /* These should never be enabled.  */
3399       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
3400       result = PRINT_NOTHING;
3401       break;
3402
3403     case bp_std_terminate_master:
3404       /* These should never be enabled.  */
3405       printf_filtered (_("std::terminate Master Breakpoint: "
3406                          "gdb should not stop!\n"));
3407       result = PRINT_NOTHING;
3408       break;
3409
3410     case bp_exception_master:
3411       /* These should never be enabled.  */
3412       printf_filtered (_("Exception Master Breakpoint: "
3413                          "gdb should not stop!\n"));
3414       result = PRINT_NOTHING;
3415       break;
3416
3417     case bp_watchpoint:
3418     case bp_hardware_watchpoint:
3419       annotate_watchpoint (b->number);
3420       if (ui_out_is_mi_like_p (uiout))
3421         ui_out_field_string
3422           (uiout, "reason",
3423            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
3424       mention (b);
3425       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
3426       ui_out_text (uiout, "\nOld value = ");
3427       watchpoint_value_print (bs->old_val, stb->stream);
3428       ui_out_field_stream (uiout, "old", stb);
3429       ui_out_text (uiout, "\nNew value = ");
3430       watchpoint_value_print (b->val, stb->stream);
3431       ui_out_field_stream (uiout, "new", stb);
3432       ui_out_text (uiout, "\n");
3433       /* More than one watchpoint may have been triggered.  */
3434       result = PRINT_UNKNOWN;
3435       break;
3436
3437     case bp_read_watchpoint:
3438       if (ui_out_is_mi_like_p (uiout))
3439         ui_out_field_string
3440           (uiout, "reason",
3441            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
3442       mention (b);
3443       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
3444       ui_out_text (uiout, "\nValue = ");
3445       watchpoint_value_print (b->val, stb->stream);
3446       ui_out_field_stream (uiout, "value", stb);
3447       ui_out_text (uiout, "\n");
3448       result = PRINT_UNKNOWN;
3449       break;
3450
3451     case bp_access_watchpoint:
3452       if (bs->old_val != NULL)
3453         {
3454           annotate_watchpoint (b->number);
3455           if (ui_out_is_mi_like_p (uiout))
3456             ui_out_field_string
3457               (uiout, "reason",
3458                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
3459           mention (b);
3460           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
3461           ui_out_text (uiout, "\nOld value = ");
3462           watchpoint_value_print (bs->old_val, stb->stream);
3463           ui_out_field_stream (uiout, "old", stb);
3464           ui_out_text (uiout, "\nNew value = ");
3465         }
3466       else 
3467         {
3468           mention (b);
3469           if (ui_out_is_mi_like_p (uiout))
3470             ui_out_field_string
3471               (uiout, "reason",
3472                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
3473           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
3474           ui_out_text (uiout, "\nValue = ");
3475         }
3476       watchpoint_value_print (b->val, stb->stream);
3477       ui_out_field_stream (uiout, "new", stb);
3478       ui_out_text (uiout, "\n");
3479       result = PRINT_UNKNOWN;
3480       break;
3481
3482     /* Fall through, we don't deal with these types of breakpoints
3483        here.  */
3484
3485     case bp_finish:
3486       if (ui_out_is_mi_like_p (uiout))
3487         ui_out_field_string
3488           (uiout, "reason",
3489            async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
3490       result = PRINT_UNKNOWN;
3491       break;
3492
3493     case bp_until:
3494       if (ui_out_is_mi_like_p (uiout))
3495         ui_out_field_string
3496           (uiout, "reason",
3497            async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
3498       result = PRINT_UNKNOWN;
3499       break;
3500
3501     case bp_none:
3502     case bp_longjmp:
3503     case bp_longjmp_resume:
3504     case bp_exception:
3505     case bp_exception_resume:
3506     case bp_step_resume:
3507     case bp_hp_step_resume:
3508     case bp_watchpoint_scope:
3509     case bp_call_dummy:
3510     case bp_std_terminate:
3511     case bp_tracepoint:
3512     case bp_fast_tracepoint:
3513     case bp_jit_event:
3514     case bp_gnu_ifunc_resolver:
3515     case bp_gnu_ifunc_resolver_return:
3516     default:
3517       result = PRINT_UNKNOWN;
3518       break;
3519     }
3520
3521   do_cleanups (old_chain);
3522   return result;
3523 }
3524
3525 /* Generic routine for printing messages indicating why we
3526    stopped.  The behavior of this function depends on the value
3527    'print_it' in the bpstat structure.  Under some circumstances we
3528    may decide not to print anything here and delegate the task to
3529    normal_stop().  */
3530
3531 static enum print_stop_action
3532 print_bp_stop_message (bpstat bs)
3533 {
3534   switch (bs->print_it)
3535     {
3536     case print_it_noop:
3537       /* Nothing should be printed for this bpstat entry.  */
3538       return PRINT_UNKNOWN;
3539       break;
3540
3541     case print_it_done:
3542       /* We still want to print the frame, but we already printed the
3543          relevant messages.  */
3544       return PRINT_SRC_AND_LOC;
3545       break;
3546
3547     case print_it_normal:
3548       {
3549         struct breakpoint *b = bs->breakpoint_at;
3550
3551         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
3552            which has since been deleted.  */
3553         if (b == NULL)
3554           return PRINT_UNKNOWN;
3555
3556         /* Normal case.  Call the breakpoint's print_it method, or
3557            print_it_typical.  */
3558         if (b->ops != NULL && b->ops->print_it != NULL)
3559           return b->ops->print_it (b);
3560         else
3561           return print_it_typical (bs);
3562       }
3563         break;
3564
3565     default:
3566       internal_error (__FILE__, __LINE__,
3567                       _("print_bp_stop_message: unrecognized enum value"));
3568       break;
3569     }
3570 }
3571
3572 /* Print a message indicating what happened.  This is called from
3573    normal_stop().  The input to this routine is the head of the bpstat
3574    list - a list of the eventpoints that caused this stop.  This
3575    routine calls the generic print routine for printing a message
3576    about reasons for stopping.  This will print (for example) the
3577    "Breakpoint n," part of the output.  The return value of this
3578    routine is one of:
3579
3580    PRINT_UNKNOWN: Means we printed nothing.
3581    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
3582    code to print the location.  An example is 
3583    "Breakpoint 1, " which should be followed by
3584    the location.
3585    PRINT_SRC_ONLY: Means we printed something, but there is no need
3586    to also print the location part of the message.
3587    An example is the catch/throw messages, which
3588    don't require a location appended to the end.
3589    PRINT_NOTHING: We have done some printing and we don't need any 
3590    further info to be printed.  */
3591
3592 enum print_stop_action
3593 bpstat_print (bpstat bs)
3594 {
3595   int val;
3596
3597   /* Maybe another breakpoint in the chain caused us to stop.
3598      (Currently all watchpoints go on the bpstat whether hit or not.
3599      That probably could (should) be changed, provided care is taken
3600      with respect to bpstat_explains_signal).  */
3601   for (; bs; bs = bs->next)
3602     {
3603       val = print_bp_stop_message (bs);
3604       if (val == PRINT_SRC_ONLY 
3605           || val == PRINT_SRC_AND_LOC 
3606           || val == PRINT_NOTHING)
3607         return val;
3608     }
3609
3610   /* We reached the end of the chain, or we got a null BS to start
3611      with and nothing was printed.  */
3612   return PRINT_UNKNOWN;
3613 }
3614
3615 /* Evaluate the expression EXP and return 1 if value is zero.  This is
3616    used inside a catch_errors to evaluate the breakpoint condition.
3617    The argument is a "struct expression *" that has been cast to a
3618    "char *" to make it pass through catch_errors.  */
3619
3620 static int
3621 breakpoint_cond_eval (void *exp)
3622 {
3623   struct value *mark = value_mark ();
3624   int i = !value_true (evaluate_expression ((struct expression *) exp));
3625
3626   value_free_to_mark (mark);
3627   return i;
3628 }
3629
3630 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
3631
3632 static bpstat
3633 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
3634 {
3635   bpstat bs;
3636
3637   bs = (bpstat) xmalloc (sizeof (*bs));
3638   bs->next = NULL;
3639   **bs_link_pointer = bs;
3640   *bs_link_pointer = &bs->next;
3641   bs->breakpoint_at = bl->owner;
3642   bs->bp_location_at = bl;
3643   incref_bp_location (bl);
3644   /* If the condition is false, etc., don't do the commands.  */
3645   bs->commands = NULL;
3646   bs->commands_left = NULL;
3647   bs->old_val = NULL;
3648   bs->print_it = print_it_normal;
3649   return bs;
3650 }
3651 \f
3652 /* The target has stopped with waitstatus WS.  Check if any hardware
3653    watchpoints have triggered, according to the target.  */
3654
3655 int
3656 watchpoints_triggered (struct target_waitstatus *ws)
3657 {
3658   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
3659   CORE_ADDR addr;
3660   struct breakpoint *b;
3661
3662   if (!stopped_by_watchpoint)
3663     {
3664       /* We were not stopped by a watchpoint.  Mark all watchpoints
3665          as not triggered.  */
3666       ALL_BREAKPOINTS (b)
3667         if (is_hardware_watchpoint (b))
3668           b->watchpoint_triggered = watch_triggered_no;
3669
3670       return 0;
3671     }
3672
3673   if (!target_stopped_data_address (&current_target, &addr))
3674     {
3675       /* We were stopped by a watchpoint, but we don't know where.
3676          Mark all watchpoints as unknown.  */
3677       ALL_BREAKPOINTS (b)
3678         if (is_hardware_watchpoint (b))
3679           b->watchpoint_triggered = watch_triggered_unknown;
3680
3681       return stopped_by_watchpoint;
3682     }
3683
3684   /* The target could report the data address.  Mark watchpoints
3685      affected by this data address as triggered, and all others as not
3686      triggered.  */
3687
3688   ALL_BREAKPOINTS (b)
3689     if (is_hardware_watchpoint (b))
3690       {
3691         struct bp_location *loc;
3692
3693         b->watchpoint_triggered = watch_triggered_no;
3694         for (loc = b->loc; loc; loc = loc->next)
3695           {
3696             if (is_masked_watchpoint (loc->owner))
3697               {
3698                 CORE_ADDR newaddr = addr & loc->owner->hw_wp_mask;
3699                 CORE_ADDR start = loc->address & loc->owner->hw_wp_mask;
3700
3701                 if (newaddr == start)
3702                   {
3703                     b->watchpoint_triggered = watch_triggered_yes;
3704                     break;
3705                   }
3706               }
3707             /* Exact match not required.  Within range is sufficient.  */
3708             else if (target_watchpoint_addr_within_range (&current_target,
3709                                                          addr, loc->address,
3710                                                          loc->length))
3711               {
3712                 b->watchpoint_triggered = watch_triggered_yes;
3713                 break;
3714               }
3715           }
3716       }
3717
3718   return 1;
3719 }
3720
3721 /* Possible return values for watchpoint_check (this can't be an enum
3722    because of check_errors).  */
3723 /* The watchpoint has been deleted.  */
3724 #define WP_DELETED 1
3725 /* The value has changed.  */
3726 #define WP_VALUE_CHANGED 2
3727 /* The value has not changed.  */
3728 #define WP_VALUE_NOT_CHANGED 3
3729 /* Ignore this watchpoint, no matter if the value changed or not.  */
3730 #define WP_IGNORE 4
3731
3732 #define BP_TEMPFLAG 1
3733 #define BP_HARDWAREFLAG 2
3734
3735 /* Evaluate watchpoint condition expression and check if its value
3736    changed.
3737
3738    P should be a pointer to struct bpstat, but is defined as a void *
3739    in order for this function to be usable with catch_errors.  */
3740
3741 static int
3742 watchpoint_check (void *p)
3743 {
3744   bpstat bs = (bpstat) p;
3745   struct breakpoint *b;
3746   struct frame_info *fr;
3747   int within_current_scope;
3748
3749   /* BS is built from an existing struct breakpoint.  */
3750   gdb_assert (bs->breakpoint_at != NULL);
3751   b = bs->breakpoint_at;
3752
3753   gdb_assert (is_watchpoint (b));
3754
3755   /* If this is a local watchpoint, we only want to check if the
3756      watchpoint frame is in scope if the current thread is the thread
3757      that was used to create the watchpoint.  */
3758   if (!watchpoint_in_thread_scope (b))
3759     return WP_IGNORE;
3760
3761   if (b->exp_valid_block == NULL)
3762     within_current_scope = 1;
3763   else
3764     {
3765       struct frame_info *frame = get_current_frame ();
3766       struct gdbarch *frame_arch = get_frame_arch (frame);
3767       CORE_ADDR frame_pc = get_frame_pc (frame);
3768
3769       /* in_function_epilogue_p() returns a non-zero value if we're
3770          still in the function but the stack frame has already been
3771          invalidated.  Since we can't rely on the values of local
3772          variables after the stack has been destroyed, we are treating
3773          the watchpoint in that state as `not changed' without further
3774          checking.  Don't mark watchpoints as changed if the current
3775          frame is in an epilogue - even if they are in some other
3776          frame, our view of the stack is likely to be wrong and
3777          frame_find_by_id could error out.  */
3778       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
3779         return WP_IGNORE;
3780
3781       fr = frame_find_by_id (b->watchpoint_frame);
3782       within_current_scope = (fr != NULL);
3783
3784       /* If we've gotten confused in the unwinder, we might have
3785          returned a frame that can't describe this variable.  */
3786       if (within_current_scope)
3787         {
3788           struct symbol *function;
3789
3790           function = get_frame_function (fr);
3791           if (function == NULL
3792               || !contained_in (b->exp_valid_block,
3793                                 SYMBOL_BLOCK_VALUE (function)))
3794             within_current_scope = 0;
3795         }
3796
3797       if (within_current_scope)
3798         /* If we end up stopping, the current frame will get selected
3799            in normal_stop.  So this call to select_frame won't affect
3800            the user.  */
3801         select_frame (fr);
3802     }
3803
3804   if (within_current_scope)
3805     {
3806       /* We use value_{,free_to_}mark because it could be a *long*
3807          time before we return to the command level and call
3808          free_all_values.  We can't call free_all_values because we
3809          might be in the middle of evaluating a function call.  */
3810
3811       int pc = 0;
3812       struct value *mark;
3813       struct value *new_val;
3814
3815       if (is_masked_watchpoint (b))
3816         /* Since we don't know the exact trigger address (from
3817            stopped_data_address), just tell the user we've triggered
3818            a mask watchpoint.  */
3819         return WP_VALUE_CHANGED;
3820
3821       mark = value_mark ();
3822       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
3823
3824       /* We use value_equal_contents instead of value_equal because
3825          the latter coerces an array to a pointer, thus comparing just
3826          the address of the array instead of its contents.  This is
3827          not what we want.  */
3828       if ((b->val != NULL) != (new_val != NULL)
3829           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
3830         {
3831           if (new_val != NULL)
3832             {
3833               release_value (new_val);
3834               value_free_to_mark (mark);
3835             }
3836           bs->old_val = b->val;
3837           b->val = new_val;
3838           b->val_valid = 1;
3839           return WP_VALUE_CHANGED;
3840         }
3841       else
3842         {
3843           /* Nothing changed.  */
3844           value_free_to_mark (mark);
3845           return WP_VALUE_NOT_CHANGED;
3846         }
3847     }
3848   else
3849     {
3850       /* This seems like the only logical thing to do because
3851          if we temporarily ignored the watchpoint, then when
3852          we reenter the block in which it is valid it contains
3853          garbage (in the case of a function, it may have two
3854          garbage values, one before and one after the prologue).
3855          So we can't even detect the first assignment to it and
3856          watch after that (since the garbage may or may not equal
3857          the first value assigned).  */
3858       /* We print all the stop information in print_it_typical(), but
3859          in this case, by the time we call print_it_typical() this bp
3860          will be deleted already.  So we have no choice but print the
3861          information here.  */
3862       if (ui_out_is_mi_like_p (uiout))
3863         ui_out_field_string
3864           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
3865       ui_out_text (uiout, "\nWatchpoint ");
3866       ui_out_field_int (uiout, "wpnum", b->number);
3867       ui_out_text (uiout,
3868                    " deleted because the program has left the block in\n\
3869 which its expression is valid.\n");     
3870
3871       /* Make sure the watchpoint's commands aren't executed.  */
3872       decref_counted_command_line (&b->commands);
3873       watchpoint_del_at_next_stop (b);
3874
3875       return WP_DELETED;
3876     }
3877 }
3878
3879 /* Return true if it looks like target has stopped due to hitting
3880    breakpoint location BL.  This function does not check if we
3881    should stop, only if BL explains the stop.   */
3882 static int
3883 bpstat_check_location (const struct bp_location *bl,
3884                        struct address_space *aspace, CORE_ADDR bp_addr)
3885 {
3886   struct breakpoint *b = bl->owner;
3887
3888   /* BL is from existing struct breakpoint.  */
3889   gdb_assert (b != NULL);
3890
3891   if (b->ops && b->ops->breakpoint_hit)
3892     return b->ops->breakpoint_hit (bl, aspace, bp_addr);
3893
3894   /* By definition, the inferior does not report stops at
3895      tracepoints.  */
3896   if (is_tracepoint (b))
3897     return 0;
3898
3899   if (!is_watchpoint (b)
3900       && b->type != bp_hardware_breakpoint
3901       && b->type != bp_catchpoint)      /* a non-watchpoint bp */
3902     {
3903       if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
3904                                      aspace, bp_addr))
3905         return 0;
3906       if (overlay_debugging             /* unmapped overlay section */
3907           && section_is_overlay (bl->section)
3908           && !section_is_mapped (bl->section))
3909         return 0;
3910     }
3911
3912   /* Continuable hardware watchpoints are treated as non-existent if the
3913      reason we stopped wasn't a hardware watchpoint (we didn't stop on
3914      some data address).  Otherwise gdb won't stop on a break instruction
3915      in the code (not from a breakpoint) when a hardware watchpoint has
3916      been defined.  Also skip watchpoints which we know did not trigger
3917      (did not match the data address).  */
3918
3919   if (is_hardware_watchpoint (b)
3920       && b->watchpoint_triggered == watch_triggered_no)
3921     return 0;
3922
3923   if (b->type == bp_hardware_breakpoint)
3924     {
3925       if (bl->address != bp_addr)
3926         return 0;
3927       if (overlay_debugging             /* unmapped overlay section */
3928           && section_is_overlay (bl->section)
3929           && !section_is_mapped (bl->section))
3930         return 0;
3931     }
3932
3933   return 1;
3934 }
3935
3936 /* If BS refers to a watchpoint, determine if the watched values
3937    has actually changed, and we should stop.  If not, set BS->stop
3938    to 0.  */
3939 static void
3940 bpstat_check_watchpoint (bpstat bs)
3941 {
3942   const struct bp_location *bl;
3943   struct breakpoint *b;
3944
3945   /* BS is built for existing struct breakpoint.  */
3946   bl = bs->bp_location_at;
3947   gdb_assert (bl != NULL);
3948   b = bs->breakpoint_at;
3949   gdb_assert (b != NULL);
3950
3951   if (is_watchpoint (b))
3952     {
3953       int must_check_value = 0;
3954       
3955       if (b->type == bp_watchpoint)
3956         /* For a software watchpoint, we must always check the
3957            watched value.  */
3958         must_check_value = 1;
3959       else if (b->watchpoint_triggered == watch_triggered_yes)
3960         /* We have a hardware watchpoint (read, write, or access)
3961            and the target earlier reported an address watched by
3962            this watchpoint.  */
3963         must_check_value = 1;
3964       else if (b->watchpoint_triggered == watch_triggered_unknown
3965                && b->type == bp_hardware_watchpoint)
3966         /* We were stopped by a hardware watchpoint, but the target could
3967            not report the data address.  We must check the watchpoint's
3968            value.  Access and read watchpoints are out of luck; without
3969            a data address, we can't figure it out.  */
3970         must_check_value = 1;
3971       
3972       if (must_check_value)
3973         {
3974           char *message
3975             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
3976                           b->number);
3977           struct cleanup *cleanups = make_cleanup (xfree, message);
3978           int e = catch_errors (watchpoint_check, bs, message,
3979                                 RETURN_MASK_ALL);
3980           do_cleanups (cleanups);
3981           switch (e)
3982             {
3983             case WP_DELETED:
3984               /* We've already printed what needs to be printed.  */
3985               bs->print_it = print_it_done;
3986               /* Stop.  */
3987               break;
3988             case WP_IGNORE:
3989               bs->print_it = print_it_noop;
3990               bs->stop = 0;
3991               break;
3992             case WP_VALUE_CHANGED:
3993               if (b->type == bp_read_watchpoint)
3994                 {
3995                   /* There are two cases to consider here:
3996
3997                      1. We're watching the triggered memory for reads.
3998                      In that case, trust the target, and always report
3999                      the watchpoint hit to the user.  Even though
4000                      reads don't cause value changes, the value may
4001                      have changed since the last time it was read, and
4002                      since we're not trapping writes, we will not see
4003                      those, and as such we should ignore our notion of
4004                      old value.
4005
4006                      2. We're watching the triggered memory for both
4007                      reads and writes.  There are two ways this may
4008                      happen:
4009
4010                      2.1. This is a target that can't break on data
4011                      reads only, but can break on accesses (reads or
4012                      writes), such as e.g., x86.  We detect this case
4013                      at the time we try to insert read watchpoints.
4014
4015                      2.2. Otherwise, the target supports read
4016                      watchpoints, but, the user set an access or write
4017                      watchpoint watching the same memory as this read
4018                      watchpoint.
4019
4020                      If we're watching memory writes as well as reads,
4021                      ignore watchpoint hits when we find that the
4022                      value hasn't changed, as reads don't cause
4023                      changes.  This still gives false positives when
4024                      the program writes the same value to memory as
4025                      what there was already in memory (we will confuse
4026                      it for a read), but it's much better than
4027                      nothing.  */
4028
4029                   int other_write_watchpoint = 0;
4030
4031                   if (bl->watchpoint_type == hw_read)
4032                     {
4033                       struct breakpoint *other_b;
4034
4035                       ALL_BREAKPOINTS (other_b)
4036                         if ((other_b->type == bp_hardware_watchpoint
4037                              || other_b->type == bp_access_watchpoint)
4038                             && (other_b->watchpoint_triggered
4039                                 == watch_triggered_yes))
4040                           {
4041                             other_write_watchpoint = 1;
4042                             break;
4043                           }
4044                     }
4045
4046                   if (other_write_watchpoint
4047                       || bl->watchpoint_type == hw_access)
4048                     {
4049                       /* We're watching the same memory for writes,
4050                          and the value changed since the last time we
4051                          updated it, so this trap must be for a write.
4052                          Ignore it.  */
4053                       bs->print_it = print_it_noop;
4054                       bs->stop = 0;
4055                     }
4056                 }
4057               break;
4058             case WP_VALUE_NOT_CHANGED:
4059               if (b->type == bp_hardware_watchpoint
4060                   || b->type == bp_watchpoint)
4061                 {
4062                   /* Don't stop: write watchpoints shouldn't fire if
4063                      the value hasn't changed.  */
4064                   bs->print_it = print_it_noop;
4065                   bs->stop = 0;
4066                 }
4067               /* Stop.  */
4068               break;
4069             default:
4070               /* Can't happen.  */
4071             case 0:
4072               /* Error from catch_errors.  */
4073               printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
4074               watchpoint_del_at_next_stop (b);
4075               /* We've already printed what needs to be printed.  */
4076               bs->print_it = print_it_done;
4077               break;
4078             }
4079         }
4080       else      /* must_check_value == 0 */
4081         {
4082           /* This is a case where some watchpoint(s) triggered, but
4083              not at the address of this watchpoint, or else no
4084              watchpoint triggered after all.  So don't print
4085              anything for this watchpoint.  */
4086           bs->print_it = print_it_noop;
4087           bs->stop = 0;
4088         }
4089     }
4090 }
4091
4092
4093 /* Check conditions (condition proper, frame, thread and ignore count)
4094    of breakpoint referred to by BS.  If we should not stop for this
4095    breakpoint, set BS->stop to 0.  */
4096
4097 static void
4098 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4099 {
4100   int thread_id = pid_to_thread_id (ptid);
4101   const struct bp_location *bl;
4102   struct breakpoint *b;
4103
4104   /* BS is built for existing struct breakpoint.  */
4105   bl = bs->bp_location_at;
4106   gdb_assert (bl != NULL);
4107   b = bs->breakpoint_at;
4108   gdb_assert (b != NULL);
4109
4110   if (frame_id_p (b->frame_id)
4111       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
4112     bs->stop = 0;
4113   else if (bs->stop)
4114     {
4115       int value_is_zero = 0;
4116       struct expression *cond;
4117
4118       /* Evaluate Python breakpoints that have a "stop"
4119          method implemented.  */
4120       if (b->py_bp_object)
4121         bs->stop = gdbpy_should_stop (b->py_bp_object);
4122
4123       if (is_watchpoint (b))
4124         cond = b->cond_exp;
4125       else
4126         cond = bl->cond;
4127
4128       if (cond && b->disposition != disp_del_at_next_stop)
4129         {
4130           int within_current_scope = 1;
4131
4132           /* We use value_mark and value_free_to_mark because it could
4133              be a long time before we return to the command level and
4134              call free_all_values.  We can't call free_all_values
4135              because we might be in the middle of evaluating a
4136              function call.  */
4137           struct value *mark = value_mark ();
4138
4139           /* Need to select the frame, with all that implies so that
4140              the conditions will have the right context.  Because we
4141              use the frame, we will not see an inlined function's
4142              variables when we arrive at a breakpoint at the start
4143              of the inlined function; the current frame will be the
4144              call site.  */
4145           if (!is_watchpoint (b) || b->cond_exp_valid_block == NULL)
4146             select_frame (get_current_frame ());
4147           else
4148             {
4149               struct frame_info *frame;
4150
4151               /* For local watchpoint expressions, which particular
4152                  instance of a local is being watched matters, so we
4153                  keep track of the frame to evaluate the expression
4154                  in.  To evaluate the condition however, it doesn't
4155                  really matter which instantiation of the function
4156                  where the condition makes sense triggers the
4157                  watchpoint.  This allows an expression like "watch
4158                  global if q > 10" set in `func', catch writes to
4159                  global on all threads that call `func', or catch
4160                  writes on all recursive calls of `func' by a single
4161                  thread.  We simply always evaluate the condition in
4162                  the innermost frame that's executing where it makes
4163                  sense to evaluate the condition.  It seems
4164                  intuitive.  */
4165               frame = block_innermost_frame (b->cond_exp_valid_block);
4166               if (frame != NULL)
4167                 select_frame (frame);
4168               else
4169                 within_current_scope = 0;
4170             }
4171           if (within_current_scope)
4172             value_is_zero
4173               = catch_errors (breakpoint_cond_eval, cond,
4174                               "Error in testing breakpoint condition:\n",
4175                               RETURN_MASK_ALL);
4176           else
4177             {
4178               warning (_("Watchpoint condition cannot be tested "
4179                          "in the current scope"));
4180               /* If we failed to set the right context for this
4181                  watchpoint, unconditionally report it.  */
4182               value_is_zero = 0;
4183             }
4184           /* FIXME-someday, should give breakpoint #.  */
4185           value_free_to_mark (mark);
4186         }
4187
4188       if (cond && value_is_zero)
4189         {
4190           bs->stop = 0;
4191         }
4192       else if (b->thread != -1 && b->thread != thread_id)
4193         {
4194           bs->stop = 0;
4195         }
4196       else if (b->ignore_count > 0)
4197         {
4198           b->ignore_count--;
4199           annotate_ignore_count_change ();
4200           bs->stop = 0;
4201           /* Increase the hit count even though we don't stop.  */
4202           ++(b->hit_count);
4203           observer_notify_breakpoint_modified (b);
4204         }       
4205     }
4206 }
4207
4208
4209 /* Get a bpstat associated with having just stopped at address
4210    BP_ADDR in thread PTID.
4211
4212    Determine whether we stopped at a breakpoint, etc, or whether we
4213    don't understand this stop.  Result is a chain of bpstat's such
4214    that:
4215
4216    if we don't understand the stop, the result is a null pointer.
4217
4218    if we understand why we stopped, the result is not null.
4219
4220    Each element of the chain refers to a particular breakpoint or
4221    watchpoint at which we have stopped.  (We may have stopped for
4222    several reasons concurrently.)
4223
4224    Each element of the chain has valid next, breakpoint_at,
4225    commands, FIXME??? fields.  */
4226
4227 bpstat
4228 bpstat_stop_status (struct address_space *aspace,
4229                     CORE_ADDR bp_addr, ptid_t ptid)
4230 {
4231   struct breakpoint *b = NULL;
4232   struct bp_location *bl;
4233   struct bp_location *loc;
4234   /* First item of allocated bpstat's.  */
4235   bpstat bs_head = NULL, *bs_link = &bs_head;
4236   /* Pointer to the last thing in the chain currently.  */
4237   bpstat bs;
4238   int ix;
4239   int need_remove_insert;
4240   int removed_any;
4241
4242   /* First, build the bpstat chain with locations that explain a
4243      target stop, while being careful to not set the target running,
4244      as that may invalidate locations (in particular watchpoint
4245      locations are recreated).  Resuming will happen here with
4246      breakpoint conditions or watchpoint expressions that include
4247      inferior function calls.  */
4248
4249   ALL_BREAKPOINTS (b)
4250     {
4251       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
4252         continue;
4253
4254       for (bl = b->loc; bl != NULL; bl = bl->next)
4255         {
4256           /* For hardware watchpoints, we look only at the first
4257              location.  The watchpoint_check function will work on the
4258              entire expression, not the individual locations.  For
4259              read watchpoints, the watchpoints_triggered function has
4260              checked all locations already.  */
4261           if (b->type == bp_hardware_watchpoint && bl != b->loc)
4262             break;
4263
4264           if (bl->shlib_disabled)
4265             continue;
4266
4267           if (!bpstat_check_location (bl, aspace, bp_addr))
4268             continue;
4269
4270           /* Come here if it's a watchpoint, or if the break address
4271              matches.  */
4272
4273           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
4274                                                    explain stop.  */
4275
4276           /* Assume we stop.  Should we find a watchpoint that is not
4277              actually triggered, or if the condition of the breakpoint
4278              evaluates as false, we'll reset 'stop' to 0.  */
4279           bs->stop = 1;
4280           bs->print = 1;
4281
4282           /* If this is a scope breakpoint, mark the associated
4283              watchpoint as triggered so that we will handle the
4284              out-of-scope event.  We'll get to the watchpoint next
4285              iteration.  */
4286           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
4287             b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
4288         }
4289     }
4290
4291   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4292     {
4293       if (breakpoint_location_address_match (loc, aspace, bp_addr))
4294         {
4295           bs = bpstat_alloc (loc, &bs_link);
4296           /* For hits of moribund locations, we should just proceed.  */
4297           bs->stop = 0;
4298           bs->print = 0;
4299           bs->print_it = print_it_noop;
4300         }
4301     }
4302
4303   /* Now go through the locations that caused the target to stop, and
4304      check whether we're interested in reporting this stop to higher
4305      layers, or whether we should resume the target transparently.  */
4306
4307   removed_any = 0;
4308
4309   for (bs = bs_head; bs != NULL; bs = bs->next)
4310     {
4311       if (!bs->stop)
4312         continue;
4313
4314       bpstat_check_watchpoint (bs);
4315       if (!bs->stop)
4316         continue;
4317
4318       b = bs->breakpoint_at;
4319
4320           if (b->type == bp_thread_event || b->type == bp_overlay_event
4321               || b->type == bp_longjmp_master
4322               || b->type == bp_std_terminate_master
4323               || b->type == bp_exception_master)
4324             /* We do not stop for these.  */
4325             bs->stop = 0;
4326           else
4327             bpstat_check_breakpoint_conditions (bs, ptid);
4328
4329           if (bs->stop)
4330             {
4331               ++(b->hit_count);
4332               observer_notify_breakpoint_modified (b);
4333
4334               /* We will stop here.  */
4335               if (b->disposition == disp_disable)
4336                 {
4337                   if (b->enable_state != bp_permanent)
4338                     b->enable_state = bp_disabled;
4339                   removed_any = 1;
4340                 }
4341               if (b->silent)
4342                 bs->print = 0;
4343               bs->commands = b->commands;
4344               incref_counted_command_line (bs->commands);
4345               bs->commands_left = bs->commands ? bs->commands->commands : NULL;
4346               if (bs->commands_left
4347                   && (strcmp ("silent", bs->commands_left->line) == 0
4348                       || (xdb_commands
4349                           && strcmp ("Q",
4350                                      bs->commands_left->line) == 0)))
4351                 {
4352                   bs->commands_left = bs->commands_left->next;
4353                   bs->print = 0;
4354                 }
4355             }
4356
4357           /* Print nothing for this entry if we dont stop or dont print.  */
4358           if (bs->stop == 0 || bs->print == 0)
4359             bs->print_it = print_it_noop;
4360     }
4361
4362   /* If we aren't stopping, the value of some hardware watchpoint may
4363      not have changed, but the intermediate memory locations we are
4364      watching may have.  Don't bother if we're stopping; this will get
4365      done later.  */
4366   need_remove_insert = 0;
4367   if (! bpstat_causes_stop (bs_head))
4368     for (bs = bs_head; bs != NULL; bs = bs->next)
4369       if (!bs->stop
4370           && bs->breakpoint_at
4371           && is_hardware_watchpoint (bs->breakpoint_at))
4372         {
4373           update_watchpoint (bs->breakpoint_at, 0 /* don't reparse.  */);
4374           need_remove_insert = 1;
4375         }
4376
4377   if (need_remove_insert)
4378     update_global_location_list (1);
4379   else if (removed_any)
4380     update_global_location_list (0);
4381
4382   return bs_head;
4383 }
4384
4385 static void
4386 handle_jit_event (void)
4387 {
4388   struct frame_info *frame;
4389   struct gdbarch *gdbarch;
4390
4391   /* Switch terminal for any messages produced by
4392      breakpoint_re_set.  */
4393   target_terminal_ours_for_output ();
4394
4395   frame = get_current_frame ();
4396   gdbarch = get_frame_arch (frame);
4397
4398   jit_event_handler (gdbarch);
4399
4400   target_terminal_inferior ();
4401 }
4402
4403 /* Prepare WHAT final decision for infrun.  */
4404
4405 /* Decide what infrun needs to do with this bpstat.  */
4406
4407 struct bpstat_what
4408 bpstat_what (bpstat bs_head)
4409 {
4410   struct bpstat_what retval;
4411   /* We need to defer calling `solib_add', as adding new symbols
4412      resets breakpoints, which in turn deletes breakpoint locations,
4413      and hence may clear unprocessed entries in the BS chain.  */
4414   int shlib_event = 0;
4415   int jit_event = 0;
4416   bpstat bs;
4417
4418   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
4419   retval.call_dummy = STOP_NONE;
4420   retval.is_longjmp = 0;
4421
4422   for (bs = bs_head; bs != NULL; bs = bs->next)
4423     {
4424       /* Extract this BS's action.  After processing each BS, we check
4425          if its action overrides all we've seem so far.  */
4426       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
4427       enum bptype bptype;
4428
4429       if (bs->breakpoint_at == NULL)
4430         {
4431           /* I suspect this can happen if it was a momentary
4432              breakpoint which has since been deleted.  */
4433           bptype = bp_none;
4434         }
4435       else if (bs->breakpoint_at == NULL)
4436         bptype = bp_none;
4437       else
4438         bptype = bs->breakpoint_at->type;
4439
4440       switch (bptype)
4441         {
4442         case bp_none:
4443           break;
4444         case bp_breakpoint:
4445         case bp_hardware_breakpoint:
4446         case bp_until:
4447         case bp_finish:
4448           if (bs->stop)
4449             {
4450               if (bs->print)
4451                 this_action = BPSTAT_WHAT_STOP_NOISY;
4452               else
4453                 this_action = BPSTAT_WHAT_STOP_SILENT;
4454             }
4455           else
4456             this_action = BPSTAT_WHAT_SINGLE;
4457           break;
4458         case bp_watchpoint:
4459         case bp_hardware_watchpoint:
4460         case bp_read_watchpoint:
4461         case bp_access_watchpoint:
4462           if (bs->stop)
4463             {
4464               if (bs->print)
4465                 this_action = BPSTAT_WHAT_STOP_NOISY;
4466               else
4467                 this_action = BPSTAT_WHAT_STOP_SILENT;
4468             }
4469           else
4470             {
4471               /* There was a watchpoint, but we're not stopping.
4472                  This requires no further action.  */
4473             }
4474           break;
4475         case bp_longjmp:
4476         case bp_exception:
4477           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
4478           retval.is_longjmp = bptype == bp_longjmp;
4479           break;
4480         case bp_longjmp_resume:
4481         case bp_exception_resume:
4482           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
4483           retval.is_longjmp = bptype == bp_longjmp_resume;
4484           break;
4485         case bp_step_resume:
4486           if (bs->stop)
4487             this_action = BPSTAT_WHAT_STEP_RESUME;
4488           else
4489             {
4490               /* It is for the wrong frame.  */
4491               this_action = BPSTAT_WHAT_SINGLE;
4492             }
4493           break;
4494         case bp_hp_step_resume:
4495           if (bs->stop)
4496             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
4497           else
4498             {
4499               /* It is for the wrong frame.  */
4500               this_action = BPSTAT_WHAT_SINGLE;
4501             }
4502           break;
4503         case bp_watchpoint_scope:
4504         case bp_thread_event:
4505         case bp_overlay_event:
4506         case bp_longjmp_master:
4507         case bp_std_terminate_master:
4508         case bp_exception_master:
4509           this_action = BPSTAT_WHAT_SINGLE;
4510           break;
4511         case bp_catchpoint:
4512           if (bs->stop)
4513             {
4514               if (bs->print)
4515                 this_action = BPSTAT_WHAT_STOP_NOISY;
4516               else
4517                 this_action = BPSTAT_WHAT_STOP_SILENT;
4518             }
4519           else
4520             {
4521               /* There was a catchpoint, but we're not stopping.
4522                  This requires no further action.  */
4523             }
4524           break;
4525         case bp_shlib_event:
4526           shlib_event = 1;
4527
4528           /* If requested, stop when the dynamic linker notifies GDB
4529              of events.  This allows the user to get control and place
4530              breakpoints in initializer routines for dynamically
4531              loaded objects (among other things).  */
4532           if (stop_on_solib_events)
4533             this_action = BPSTAT_WHAT_STOP_NOISY;
4534           else
4535             this_action = BPSTAT_WHAT_SINGLE;
4536           break;
4537         case bp_jit_event:
4538           jit_event = 1;
4539           this_action = BPSTAT_WHAT_SINGLE;
4540           break;
4541         case bp_call_dummy:
4542           /* Make sure the action is stop (silent or noisy),
4543              so infrun.c pops the dummy frame.  */
4544           retval.call_dummy = STOP_STACK_DUMMY;
4545           this_action = BPSTAT_WHAT_STOP_SILENT;
4546           break;
4547         case bp_std_terminate:
4548           /* Make sure the action is stop (silent or noisy),
4549              so infrun.c pops the dummy frame.  */
4550           retval.call_dummy = STOP_STD_TERMINATE;
4551           this_action = BPSTAT_WHAT_STOP_SILENT;
4552           break;
4553         case bp_tracepoint:
4554         case bp_fast_tracepoint:
4555         case bp_static_tracepoint:
4556           /* Tracepoint hits should not be reported back to GDB, and
4557              if one got through somehow, it should have been filtered
4558              out already.  */
4559           internal_error (__FILE__, __LINE__,
4560                           _("bpstat_what: tracepoint encountered"));
4561           break;
4562         case bp_gnu_ifunc_resolver:
4563           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
4564           this_action = BPSTAT_WHAT_SINGLE;
4565           break;
4566         case bp_gnu_ifunc_resolver_return:
4567           /* The breakpoint will be removed, execution will restart from the
4568              PC of the former breakpoint.  */
4569           this_action = BPSTAT_WHAT_KEEP_CHECKING;
4570           break;
4571         default:
4572           internal_error (__FILE__, __LINE__,
4573                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
4574         }
4575
4576       retval.main_action = max (retval.main_action, this_action);
4577     }
4578
4579   /* These operations may affect the bs->breakpoint_at state so they are
4580      delayed after MAIN_ACTION is decided above.  */
4581
4582   if (shlib_event)
4583     {
4584       if (debug_infrun)
4585         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_shlib_event\n");
4586
4587       /* Check for any newly added shared libraries if we're supposed
4588          to be adding them automatically.  */
4589
4590       /* Switch terminal for any messages produced by
4591          breakpoint_re_set.  */
4592       target_terminal_ours_for_output ();
4593
4594 #ifdef SOLIB_ADD
4595       SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
4596 #else
4597       solib_add (NULL, 0, &current_target, auto_solib_add);
4598 #endif
4599
4600       target_terminal_inferior ();
4601     }
4602
4603   if (jit_event)
4604     {
4605       if (debug_infrun)
4606         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
4607
4608       handle_jit_event ();
4609     }
4610
4611   for (bs = bs_head; bs != NULL; bs = bs->next)
4612     {
4613       struct breakpoint *b = bs->breakpoint_at;
4614
4615       if (b == NULL)
4616         continue;
4617       switch (b->type)
4618         {
4619         case bp_gnu_ifunc_resolver:
4620           gnu_ifunc_resolver_stop (b);
4621           break;
4622         case bp_gnu_ifunc_resolver_return:
4623           gnu_ifunc_resolver_return_stop (b);
4624           break;
4625         }
4626     }
4627
4628   return retval;
4629 }
4630
4631 /* Nonzero if we should step constantly (e.g. watchpoints on machines
4632    without hardware support).  This isn't related to a specific bpstat,
4633    just to things like whether watchpoints are set.  */
4634
4635 int
4636 bpstat_should_step (void)
4637 {
4638   struct breakpoint *b;
4639
4640   ALL_BREAKPOINTS (b)
4641     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
4642       return 1;
4643   return 0;
4644 }
4645
4646 int
4647 bpstat_causes_stop (bpstat bs)
4648 {
4649   for (; bs != NULL; bs = bs->next)
4650     if (bs->stop)
4651       return 1;
4652
4653   return 0;
4654 }
4655
4656 \f
4657
4658 /* Compute a string of spaces suitable to indent the next line
4659    so it starts at the position corresponding to the table column
4660    named COL_NAME in the currently active table of UIOUT.  */
4661
4662 static char *
4663 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
4664 {
4665   static char wrap_indent[80];
4666   int i, total_width, width, align;
4667   char *text;
4668
4669   total_width = 0;
4670   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
4671     {
4672       if (strcmp (text, col_name) == 0)
4673         {
4674           gdb_assert (total_width < sizeof wrap_indent);
4675           memset (wrap_indent, ' ', total_width);
4676           wrap_indent[total_width] = 0;
4677
4678           return wrap_indent;
4679         }
4680
4681       total_width += width + 1;
4682     }
4683
4684   return NULL;
4685 }
4686
4687 /* Print the LOC location out of the list of B->LOC locations.  */
4688
4689 static void
4690 print_breakpoint_location (struct breakpoint *b,
4691                            struct bp_location *loc)
4692 {
4693   struct cleanup *old_chain = save_current_program_space ();
4694
4695   if (loc != NULL && loc->shlib_disabled)
4696     loc = NULL;
4697
4698   if (loc != NULL)
4699     set_current_program_space (loc->pspace);
4700
4701   if (b->display_canonical)
4702     ui_out_field_string (uiout, "what", b->addr_string);
4703   else if (b->source_file && loc)
4704     {
4705       struct symbol *sym 
4706         = find_pc_sect_function (loc->address, loc->section);
4707       if (sym)
4708         {
4709           ui_out_text (uiout, "in ");
4710           ui_out_field_string (uiout, "func",
4711                                SYMBOL_PRINT_NAME (sym));
4712           ui_out_text (uiout, " ");
4713           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
4714           ui_out_text (uiout, "at ");
4715         }
4716       ui_out_field_string (uiout, "file", b->source_file);
4717       ui_out_text (uiout, ":");
4718       
4719       if (ui_out_is_mi_like_p (uiout))
4720         {
4721           struct symtab_and_line sal = find_pc_line (loc->address, 0);
4722           char *fullname = symtab_to_fullname (sal.symtab);
4723           
4724           if (fullname)
4725             ui_out_field_string (uiout, "fullname", fullname);
4726         }
4727       
4728       ui_out_field_int (uiout, "line", b->line_number);
4729     }
4730   else if (loc)
4731     {
4732       struct ui_stream *stb = ui_out_stream_new (uiout);
4733       struct cleanup *stb_chain = make_cleanup_ui_out_stream_delete (stb);
4734
4735       print_address_symbolic (loc->gdbarch, loc->address, stb->stream,
4736                               demangle, "");
4737       ui_out_field_stream (uiout, "at", stb);
4738
4739       do_cleanups (stb_chain);
4740     }
4741   else
4742     ui_out_field_string (uiout, "pending", b->addr_string);
4743
4744   do_cleanups (old_chain);
4745 }
4746
4747 static const char *
4748 bptype_string (enum bptype type)
4749 {
4750   struct ep_type_description
4751     {
4752       enum bptype type;
4753       char *description;
4754     };
4755   static struct ep_type_description bptypes[] =
4756   {
4757     {bp_none, "?deleted?"},
4758     {bp_breakpoint, "breakpoint"},
4759     {bp_hardware_breakpoint, "hw breakpoint"},
4760     {bp_until, "until"},
4761     {bp_finish, "finish"},
4762     {bp_watchpoint, "watchpoint"},
4763     {bp_hardware_watchpoint, "hw watchpoint"},
4764     {bp_read_watchpoint, "read watchpoint"},
4765     {bp_access_watchpoint, "acc watchpoint"},
4766     {bp_longjmp, "longjmp"},
4767     {bp_longjmp_resume, "longjmp resume"},
4768     {bp_exception, "exception"},
4769     {bp_exception_resume, "exception resume"},
4770     {bp_step_resume, "step resume"},
4771     {bp_hp_step_resume, "high-priority step resume"},
4772     {bp_watchpoint_scope, "watchpoint scope"},
4773     {bp_call_dummy, "call dummy"},
4774     {bp_std_terminate, "std::terminate"},
4775     {bp_shlib_event, "shlib events"},
4776     {bp_thread_event, "thread events"},
4777     {bp_overlay_event, "overlay events"},
4778     {bp_longjmp_master, "longjmp master"},
4779     {bp_std_terminate_master, "std::terminate master"},
4780     {bp_exception_master, "exception master"},
4781     {bp_catchpoint, "catchpoint"},
4782     {bp_tracepoint, "tracepoint"},
4783     {bp_fast_tracepoint, "fast tracepoint"},
4784     {bp_static_tracepoint, "static tracepoint"},
4785     {bp_jit_event, "jit events"},
4786     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
4787     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
4788   };
4789
4790   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
4791       || ((int) type != bptypes[(int) type].type))
4792     internal_error (__FILE__, __LINE__,
4793                     _("bptypes table does not describe type #%d."),
4794                     (int) type);
4795
4796   return bptypes[(int) type].description;
4797 }
4798
4799 /* Print B to gdb_stdout.  */
4800
4801 static void
4802 print_one_breakpoint_location (struct breakpoint *b,
4803                                struct bp_location *loc,
4804                                int loc_number,
4805                                struct bp_location **last_loc,
4806                                int allflag)
4807 {
4808   struct command_line *l;
4809   static char bpenables[] = "nynny";
4810
4811   int header_of_multiple = 0;
4812   int part_of_multiple = (loc != NULL);
4813   struct value_print_options opts;
4814
4815   get_user_print_options (&opts);
4816
4817   gdb_assert (!loc || loc_number != 0);
4818   /* See comment in print_one_breakpoint concerning treatment of
4819      breakpoints with single disabled location.  */
4820   if (loc == NULL 
4821       && (b->loc != NULL 
4822           && (b->loc->next != NULL || !b->loc->enabled)))
4823     header_of_multiple = 1;
4824   if (loc == NULL)
4825     loc = b->loc;
4826
4827   annotate_record ();
4828
4829   /* 1 */
4830   annotate_field (0);
4831   if (part_of_multiple)
4832     {
4833       char *formatted;
4834       formatted = xstrprintf ("%d.%d", b->number, loc_number);
4835       ui_out_field_string (uiout, "number", formatted);
4836       xfree (formatted);
4837     }
4838   else
4839     {
4840       ui_out_field_int (uiout, "number", b->number);
4841     }
4842
4843   /* 2 */
4844   annotate_field (1);
4845   if (part_of_multiple)
4846     ui_out_field_skip (uiout, "type");
4847   else
4848     ui_out_field_string (uiout, "type", bptype_string (b->type));
4849
4850   /* 3 */
4851   annotate_field (2);
4852   if (part_of_multiple)
4853     ui_out_field_skip (uiout, "disp");
4854   else
4855     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
4856
4857
4858   /* 4 */
4859   annotate_field (3);
4860   if (part_of_multiple)
4861     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
4862   else
4863     ui_out_field_fmt (uiout, "enabled", "%c", 
4864                       bpenables[(int) b->enable_state]);
4865   ui_out_spaces (uiout, 2);
4866
4867   
4868   /* 5 and 6 */
4869   if (b->ops != NULL && b->ops->print_one != NULL)
4870     {
4871       /* Although the print_one can possibly print all locations,
4872          calling it here is not likely to get any nice result.  So,
4873          make sure there's just one location.  */
4874       gdb_assert (b->loc == NULL || b->loc->next == NULL);
4875       b->ops->print_one (b, last_loc);
4876     }
4877   else
4878     switch (b->type)
4879       {
4880       case bp_none:
4881         internal_error (__FILE__, __LINE__,
4882                         _("print_one_breakpoint: bp_none encountered\n"));
4883         break;
4884
4885       case bp_watchpoint:
4886       case bp_hardware_watchpoint:
4887       case bp_read_watchpoint:
4888       case bp_access_watchpoint:
4889         /* Field 4, the address, is omitted (which makes the columns
4890            not line up too nicely with the headers, but the effect
4891            is relatively readable).  */
4892         if (opts.addressprint)
4893           ui_out_field_skip (uiout, "addr");
4894         annotate_field (5);
4895         ui_out_field_string (uiout, "what", b->exp_string);
4896         break;
4897
4898       case bp_breakpoint:
4899       case bp_hardware_breakpoint:
4900       case bp_until:
4901       case bp_finish:
4902       case bp_longjmp:
4903       case bp_longjmp_resume:
4904       case bp_exception:
4905       case bp_exception_resume:
4906       case bp_step_resume:
4907       case bp_hp_step_resume:
4908       case bp_watchpoint_scope:
4909       case bp_call_dummy:
4910       case bp_std_terminate:
4911       case bp_shlib_event:
4912       case bp_thread_event:
4913       case bp_overlay_event:
4914       case bp_longjmp_master:
4915       case bp_std_terminate_master:
4916       case bp_exception_master:
4917       case bp_tracepoint:
4918       case bp_fast_tracepoint:
4919       case bp_static_tracepoint:
4920       case bp_jit_event:
4921       case bp_gnu_ifunc_resolver:
4922       case bp_gnu_ifunc_resolver_return:
4923         if (opts.addressprint)
4924           {
4925             annotate_field (4);
4926             if (header_of_multiple)
4927               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
4928             else if (b->loc == NULL || loc->shlib_disabled)
4929               ui_out_field_string (uiout, "addr", "<PENDING>");
4930             else
4931               ui_out_field_core_addr (uiout, "addr",
4932                                       loc->gdbarch, loc->address);
4933           }
4934         annotate_field (5);
4935         if (!header_of_multiple)
4936           print_breakpoint_location (b, loc);
4937         if (b->loc)
4938           *last_loc = b->loc;
4939         break;
4940       }
4941
4942
4943   /* For backward compatibility, don't display inferiors unless there
4944      are several.  */
4945   if (loc != NULL
4946       && !header_of_multiple
4947       && (allflag
4948           || (!gdbarch_has_global_breakpoints (target_gdbarch)
4949               && (number_of_program_spaces () > 1
4950                   || number_of_inferiors () > 1)
4951               /* LOC is for existing B, it cannot be in
4952                  moribund_locations and thus having NULL OWNER.  */
4953               && loc->owner->type != bp_catchpoint)))
4954     {
4955       struct inferior *inf;
4956       int first = 1;
4957
4958       for (inf = inferior_list; inf != NULL; inf = inf->next)
4959         {
4960           if (inf->pspace == loc->pspace)
4961             {
4962               if (first)
4963                 {
4964                   first = 0;
4965                   ui_out_text (uiout, " inf ");
4966                 }
4967               else
4968                 ui_out_text (uiout, ", ");
4969               ui_out_text (uiout, plongest (inf->num));
4970             }
4971         }
4972     }
4973
4974   if (!part_of_multiple)
4975     {
4976       if (b->thread != -1)
4977         {
4978           /* FIXME: This seems to be redundant and lost here; see the
4979              "stop only in" line a little further down.  */
4980           ui_out_text (uiout, " thread ");
4981           ui_out_field_int (uiout, "thread", b->thread);
4982         }
4983       else if (b->task != 0)
4984         {
4985           ui_out_text (uiout, " task ");
4986           ui_out_field_int (uiout, "task", b->task);
4987         }
4988     }
4989
4990   ui_out_text (uiout, "\n");
4991
4992   if (!part_of_multiple && b->ops && b->ops->print_one_detail)
4993     b->ops->print_one_detail (b, uiout);
4994
4995   if (!part_of_multiple && b->static_trace_marker_id)
4996     {
4997       gdb_assert (b->type == bp_static_tracepoint);
4998
4999       ui_out_text (uiout, "\tmarker id is ");
5000       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
5001                            b->static_trace_marker_id);
5002       ui_out_text (uiout, "\n");
5003     }
5004
5005   if (part_of_multiple && frame_id_p (b->frame_id))
5006     {
5007       annotate_field (6);
5008       ui_out_text (uiout, "\tstop only in stack frame at ");
5009       /* FIXME: cagney/2002-12-01: Shouldn't be poeking around inside
5010          the frame ID.  */
5011       ui_out_field_core_addr (uiout, "frame",
5012                               b->gdbarch, b->frame_id.stack_addr);
5013       ui_out_text (uiout, "\n");
5014     }
5015   
5016   if (!part_of_multiple && b->cond_string && !ada_exception_catchpoint_p (b))
5017     {
5018       /* We do not print the condition for Ada exception catchpoints
5019          because the condition is an internal implementation detail
5020          that we do not want to expose to the user.  */
5021       annotate_field (7);
5022       if (is_tracepoint (b))
5023         ui_out_text (uiout, "\ttrace only if ");
5024       else
5025         ui_out_text (uiout, "\tstop only if ");
5026       ui_out_field_string (uiout, "cond", b->cond_string);
5027       ui_out_text (uiout, "\n");
5028     }
5029
5030   if (!part_of_multiple && b->thread != -1)
5031     {
5032       /* FIXME should make an annotation for this.  */
5033       ui_out_text (uiout, "\tstop only in thread ");
5034       ui_out_field_int (uiout, "thread", b->thread);
5035       ui_out_text (uiout, "\n");
5036     }
5037   
5038   if (!part_of_multiple && b->hit_count)
5039     {
5040       /* FIXME should make an annotation for this.  */
5041       if (ep_is_catchpoint (b))
5042         ui_out_text (uiout, "\tcatchpoint");
5043       else
5044         ui_out_text (uiout, "\tbreakpoint");
5045       ui_out_text (uiout, " already hit ");
5046       ui_out_field_int (uiout, "times", b->hit_count);
5047       if (b->hit_count == 1)
5048         ui_out_text (uiout, " time\n");
5049       else
5050         ui_out_text (uiout, " times\n");
5051     }
5052   
5053   /* Output the count also if it is zero, but only if this is mi.
5054      FIXME: Should have a better test for this.  */
5055   if (ui_out_is_mi_like_p (uiout))
5056     if (!part_of_multiple && b->hit_count == 0)
5057       ui_out_field_int (uiout, "times", b->hit_count);
5058
5059   if (!part_of_multiple && b->ignore_count)
5060     {
5061       annotate_field (8);
5062       ui_out_text (uiout, "\tignore next ");
5063       ui_out_field_int (uiout, "ignore", b->ignore_count);
5064       ui_out_text (uiout, " hits\n");
5065     }
5066
5067   l = b->commands ? b->commands->commands : NULL;
5068   if (!part_of_multiple && l)
5069     {
5070       struct cleanup *script_chain;
5071
5072       annotate_field (9);
5073       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
5074       print_command_lines (uiout, l, 4);
5075       do_cleanups (script_chain);
5076     }
5077
5078   if (!part_of_multiple && b->pass_count)
5079     {
5080       annotate_field (10);
5081       ui_out_text (uiout, "\tpass count ");
5082       ui_out_field_int (uiout, "pass", b->pass_count);
5083       ui_out_text (uiout, " \n");
5084     }
5085
5086   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
5087     {
5088       if (b->addr_string)
5089         ui_out_field_string (uiout, "original-location", b->addr_string);
5090       else if (b->exp_string)
5091         ui_out_field_string (uiout, "original-location", b->exp_string);
5092     }
5093 }
5094
5095 static void
5096 print_one_breakpoint (struct breakpoint *b,
5097                       struct bp_location **last_loc, 
5098                       int allflag)
5099 {
5100   struct cleanup *bkpt_chain;
5101
5102   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
5103
5104   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
5105   do_cleanups (bkpt_chain);
5106
5107   /* If this breakpoint has custom print function,
5108      it's already printed.  Otherwise, print individual
5109      locations, if any.  */
5110   if (b->ops == NULL || b->ops->print_one == NULL)
5111     {
5112       /* If breakpoint has a single location that is disabled, we
5113          print it as if it had several locations, since otherwise it's
5114          hard to represent "breakpoint enabled, location disabled"
5115          situation.
5116
5117          Note that while hardware watchpoints have several locations
5118          internally, that's not a property exposed to user.  */
5119       if (b->loc 
5120           && !is_hardware_watchpoint (b)
5121           && (b->loc->next || !b->loc->enabled))
5122         {
5123           struct bp_location *loc;
5124           int n = 1;
5125
5126           for (loc = b->loc; loc; loc = loc->next, ++n)
5127             {
5128               struct cleanup *inner2 =
5129                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
5130               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
5131               do_cleanups (inner2);
5132             }
5133         }
5134     }
5135 }
5136
5137 static int
5138 breakpoint_address_bits (struct breakpoint *b)
5139 {
5140   int print_address_bits = 0;
5141   struct bp_location *loc;
5142
5143   for (loc = b->loc; loc; loc = loc->next)
5144     {
5145       int addr_bit;
5146
5147       /* Software watchpoints that aren't watching memory don't have
5148          an address to print.  */
5149       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
5150         continue;
5151
5152       addr_bit = gdbarch_addr_bit (loc->gdbarch);
5153       if (addr_bit > print_address_bits)
5154         print_address_bits = addr_bit;
5155     }
5156
5157   return print_address_bits;
5158 }
5159
5160 struct captured_breakpoint_query_args
5161   {
5162     int bnum;
5163   };
5164
5165 static int
5166 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
5167 {
5168   struct captured_breakpoint_query_args *args = data;
5169   struct breakpoint *b;
5170   struct bp_location *dummy_loc = NULL;
5171
5172   ALL_BREAKPOINTS (b)
5173     {
5174       if (args->bnum == b->number)
5175         {
5176           print_one_breakpoint (b, &dummy_loc, 0);
5177           return GDB_RC_OK;
5178         }
5179     }
5180   return GDB_RC_NONE;
5181 }
5182
5183 enum gdb_rc
5184 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
5185                       char **error_message)
5186 {
5187   struct captured_breakpoint_query_args args;
5188
5189   args.bnum = bnum;
5190   /* For the moment we don't trust print_one_breakpoint() to not throw
5191      an error.  */
5192   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
5193                                  error_message, RETURN_MASK_ALL) < 0)
5194     return GDB_RC_FAIL;
5195   else
5196     return GDB_RC_OK;
5197 }
5198
5199 /* Return true if this breakpoint was set by the user, false if it is
5200    internal or momentary.  */
5201
5202 int
5203 user_breakpoint_p (struct breakpoint *b)
5204 {
5205   return b->number > 0;
5206 }
5207
5208 /* Print information on user settable breakpoint (watchpoint, etc)
5209    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
5210    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
5211    FILTER is non-NULL, call it on each breakpoint and only include the
5212    ones for which it returns non-zero.  Return the total number of
5213    breakpoints listed.  */
5214
5215 static int
5216 breakpoint_1 (char *args, int allflag, 
5217               int (*filter) (const struct breakpoint *))
5218 {
5219   struct breakpoint *b;
5220   struct bp_location *last_loc = NULL;
5221   int nr_printable_breakpoints;
5222   struct cleanup *bkpttbl_chain;
5223   struct value_print_options opts;
5224   int print_address_bits = 0;
5225   int print_type_col_width = 14;
5226
5227   get_user_print_options (&opts);
5228
5229   /* Compute the number of rows in the table, as well as the size
5230      required for address fields.  */
5231   nr_printable_breakpoints = 0;
5232   ALL_BREAKPOINTS (b)
5233     {
5234       /* If we have a filter, only list the breakpoints it accepts.  */
5235       if (filter && !filter (b))
5236         continue;
5237
5238       /* If we have an "args" string, it is a list of breakpoints to 
5239          accept.  Skip the others.  */
5240       if (args != NULL && *args != '\0')
5241         {
5242           if (allflag && parse_and_eval_long (args) != b->number)
5243             continue;
5244           if (!allflag && !number_is_in_list (args, b->number))
5245             continue;
5246         }
5247
5248       if (allflag || user_breakpoint_p (b))
5249         {
5250           int addr_bit, type_len;
5251
5252           addr_bit = breakpoint_address_bits (b);
5253           if (addr_bit > print_address_bits)
5254             print_address_bits = addr_bit;
5255
5256           type_len = strlen (bptype_string (b->type));
5257           if (type_len > print_type_col_width)
5258             print_type_col_width = type_len;
5259
5260           nr_printable_breakpoints++;
5261         }
5262     }
5263
5264   if (opts.addressprint)
5265     bkpttbl_chain 
5266       = make_cleanup_ui_out_table_begin_end (uiout, 6,
5267                                              nr_printable_breakpoints,
5268                                              "BreakpointTable");
5269   else
5270     bkpttbl_chain 
5271       = make_cleanup_ui_out_table_begin_end (uiout, 5,
5272                                              nr_printable_breakpoints,
5273                                              "BreakpointTable");
5274
5275   if (nr_printable_breakpoints > 0)
5276     annotate_breakpoints_headers ();
5277   if (nr_printable_breakpoints > 0)
5278     annotate_field (0);
5279   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
5280   if (nr_printable_breakpoints > 0)
5281     annotate_field (1);
5282   ui_out_table_header (uiout, print_type_col_width, ui_left,
5283                        "type", "Type");                         /* 2 */
5284   if (nr_printable_breakpoints > 0)
5285     annotate_field (2);
5286   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
5287   if (nr_printable_breakpoints > 0)
5288     annotate_field (3);
5289   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
5290   if (opts.addressprint)
5291     {
5292       if (nr_printable_breakpoints > 0)
5293         annotate_field (4);
5294       if (print_address_bits <= 32)
5295         ui_out_table_header (uiout, 10, ui_left, 
5296                              "addr", "Address");                /* 5 */
5297       else
5298         ui_out_table_header (uiout, 18, ui_left, 
5299                              "addr", "Address");                /* 5 */
5300     }
5301   if (nr_printable_breakpoints > 0)
5302     annotate_field (5);
5303   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
5304   ui_out_table_body (uiout);
5305   if (nr_printable_breakpoints > 0)
5306     annotate_breakpoints_table ();
5307
5308   ALL_BREAKPOINTS (b)
5309     {
5310       QUIT;
5311       /* If we have a filter, only list the breakpoints it accepts.  */
5312       if (filter && !filter (b))
5313         continue;
5314
5315       /* If we have an "args" string, it is a list of breakpoints to 
5316          accept.  Skip the others.  */
5317
5318       if (args != NULL && *args != '\0')
5319         {
5320           if (allflag)  /* maintenance info breakpoint */
5321             {
5322               if (parse_and_eval_long (args) != b->number)
5323                 continue;
5324             }
5325           else          /* all others */
5326             {
5327               if (!number_is_in_list (args, b->number))
5328                 continue;
5329             }
5330         }
5331       /* We only print out user settable breakpoints unless the
5332          allflag is set.  */
5333       if (allflag || user_breakpoint_p (b))
5334         print_one_breakpoint (b, &last_loc, allflag);
5335     }
5336
5337   do_cleanups (bkpttbl_chain);
5338
5339   if (nr_printable_breakpoints == 0)
5340     {
5341       /* If there's a filter, let the caller decide how to report
5342          empty list.  */
5343       if (!filter)
5344         {
5345           if (args == NULL || *args == '\0')
5346             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
5347           else
5348             ui_out_message (uiout, 0, 
5349                             "No breakpoint or watchpoint matching '%s'.\n",
5350                             args);
5351         }
5352     }
5353   else
5354     {
5355       if (last_loc && !server_command)
5356         set_next_address (last_loc->gdbarch, last_loc->address);
5357     }
5358
5359   /* FIXME?  Should this be moved up so that it is only called when
5360      there have been breakpoints? */
5361   annotate_breakpoints_table_end ();
5362
5363   return nr_printable_breakpoints;
5364 }
5365
5366 /* Display the value of default-collect in a way that is generally
5367    compatible with the breakpoint list.  */
5368
5369 static void
5370 default_collect_info (void)
5371 {
5372   /* If it has no value (which is frequently the case), say nothing; a
5373      message like "No default-collect." gets in user's face when it's
5374      not wanted.  */
5375   if (!*default_collect)
5376     return;
5377
5378   /* The following phrase lines up nicely with per-tracepoint collect
5379      actions.  */
5380   ui_out_text (uiout, "default collect ");
5381   ui_out_field_string (uiout, "default-collect", default_collect);
5382   ui_out_text (uiout, " \n");
5383 }
5384   
5385 static void
5386 breakpoints_info (char *args, int from_tty)
5387 {
5388   breakpoint_1 (args, 0, NULL);
5389
5390   default_collect_info ();
5391 }
5392
5393 static void
5394 watchpoints_info (char *args, int from_tty)
5395 {
5396   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
5397
5398   if (num_printed == 0)
5399     {
5400       if (args == NULL || *args == '\0')
5401         ui_out_message (uiout, 0, "No watchpoints.\n");
5402       else
5403         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
5404     }
5405 }
5406
5407 static void
5408 maintenance_info_breakpoints (char *args, int from_tty)
5409 {
5410   breakpoint_1 (args, 1, NULL);
5411
5412   default_collect_info ();
5413 }
5414
5415 static int
5416 breakpoint_has_pc (struct breakpoint *b,
5417                    struct program_space *pspace,
5418                    CORE_ADDR pc, struct obj_section *section)
5419 {
5420   struct bp_location *bl = b->loc;
5421
5422   for (; bl; bl = bl->next)
5423     {
5424       if (bl->pspace == pspace
5425           && bl->address == pc
5426           && (!overlay_debugging || bl->section == section))
5427         return 1;         
5428     }
5429   return 0;
5430 }
5431
5432 /* Print a message describing any breakpoints set at PC.  This
5433    concerns with logical breakpoints, so we match program spaces, not
5434    address spaces.  */
5435
5436 static void
5437 describe_other_breakpoints (struct gdbarch *gdbarch,
5438                             struct program_space *pspace, CORE_ADDR pc,
5439                             struct obj_section *section, int thread)
5440 {
5441   int others = 0;
5442   struct breakpoint *b;
5443
5444   ALL_BREAKPOINTS (b)
5445     others += breakpoint_has_pc (b, pspace, pc, section);
5446   if (others > 0)
5447     {
5448       if (others == 1)
5449         printf_filtered (_("Note: breakpoint "));
5450       else /* if (others == ???) */
5451         printf_filtered (_("Note: breakpoints "));
5452       ALL_BREAKPOINTS (b)
5453         if (breakpoint_has_pc (b, pspace, pc, section))
5454           {
5455             others--;
5456             printf_filtered ("%d", b->number);
5457             if (b->thread == -1 && thread != -1)
5458               printf_filtered (" (all threads)");
5459             else if (b->thread != -1)
5460               printf_filtered (" (thread %d)", b->thread);
5461             printf_filtered ("%s%s ",
5462                              ((b->enable_state == bp_disabled
5463                                || b->enable_state == bp_call_disabled
5464                                || b->enable_state == bp_startup_disabled)
5465                               ? " (disabled)"
5466                               : b->enable_state == bp_permanent 
5467                               ? " (permanent)"
5468                               : ""),
5469                              (others > 1) ? "," 
5470                              : ((others == 1) ? " and" : ""));
5471           }
5472       printf_filtered (_("also set at pc "));
5473       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
5474       printf_filtered (".\n");
5475     }
5476 }
5477 \f
5478 /* Set the default place to put a breakpoint
5479    for the `break' command with no arguments.  */
5480
5481 void
5482 set_default_breakpoint (int valid, struct program_space *pspace,
5483                         CORE_ADDR addr, struct symtab *symtab,
5484                         int line)
5485 {
5486   default_breakpoint_valid = valid;
5487   default_breakpoint_pspace = pspace;
5488   default_breakpoint_address = addr;
5489   default_breakpoint_symtab = symtab;
5490   default_breakpoint_line = line;
5491 }
5492
5493 /* Return true iff it is meaningful to use the address member of
5494    BPT.  For some breakpoint types, the address member is irrelevant
5495    and it makes no sense to attempt to compare it to other addresses
5496    (or use it for any other purpose either).
5497
5498    More specifically, each of the following breakpoint types will
5499    always have a zero valued address and we don't want to mark
5500    breakpoints of any of these types to be a duplicate of an actual
5501    breakpoint at address zero:
5502
5503       bp_watchpoint
5504       bp_catchpoint
5505
5506 */
5507
5508 static int
5509 breakpoint_address_is_meaningful (struct breakpoint *bpt)
5510 {
5511   enum bptype type = bpt->type;
5512
5513   return (type != bp_watchpoint && type != bp_catchpoint);
5514 }
5515
5516 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
5517    true if LOC1 and LOC2 represent the same watchpoint location.  */
5518
5519 static int
5520 watchpoint_locations_match (struct bp_location *loc1, 
5521                             struct bp_location *loc2)
5522 {
5523   /* Both of them must not be in moribund_locations.  */
5524   gdb_assert (loc1->owner != NULL);
5525   gdb_assert (loc2->owner != NULL);
5526
5527   /* If the target can evaluate the condition expression in hardware,
5528      then we we need to insert both watchpoints even if they are at
5529      the same place.  Otherwise the watchpoint will only trigger when
5530      the condition of whichever watchpoint was inserted evaluates to
5531      true, not giving a chance for GDB to check the condition of the
5532      other watchpoint.  */
5533   if ((loc1->owner->cond_exp
5534        && target_can_accel_watchpoint_condition (loc1->address, 
5535                                                  loc1->length,
5536                                                  loc1->watchpoint_type,
5537                                                  loc1->owner->cond_exp))
5538       || (loc2->owner->cond_exp
5539           && target_can_accel_watchpoint_condition (loc2->address, 
5540                                                     loc2->length,
5541                                                     loc2->watchpoint_type,
5542                                                     loc2->owner->cond_exp)))
5543     return 0;
5544
5545   /* Note that this checks the owner's type, not the location's.  In
5546      case the target does not support read watchpoints, but does
5547      support access watchpoints, we'll have bp_read_watchpoint
5548      watchpoints with hw_access locations.  Those should be considered
5549      duplicates of hw_read locations.  The hw_read locations will
5550      become hw_access locations later.  */
5551   return (loc1->owner->type == loc2->owner->type
5552           && loc1->pspace->aspace == loc2->pspace->aspace
5553           && loc1->address == loc2->address
5554           && loc1->length == loc2->length);
5555 }
5556
5557 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
5558    same breakpoint location.  In most targets, this can only be true
5559    if ASPACE1 matches ASPACE2.  On targets that have global
5560    breakpoints, the address space doesn't really matter.  */
5561
5562 static int
5563 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
5564                           struct address_space *aspace2, CORE_ADDR addr2)
5565 {
5566   return ((gdbarch_has_global_breakpoints (target_gdbarch)
5567            || aspace1 == aspace2)
5568           && addr1 == addr2);
5569 }
5570
5571 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
5572    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
5573    matches ASPACE2.  On targets that have global breakpoints, the address
5574    space doesn't really matter.  */
5575
5576 static int
5577 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
5578                                 int len1, struct address_space *aspace2,
5579                                 CORE_ADDR addr2)
5580 {
5581   return ((gdbarch_has_global_breakpoints (target_gdbarch)
5582            || aspace1 == aspace2)
5583           && addr2 >= addr1 && addr2 < addr1 + len1);
5584 }
5585
5586 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
5587    a ranged breakpoint.  In most targets, a match happens only if ASPACE
5588    matches the breakpoint's address space.  On targets that have global
5589    breakpoints, the address space doesn't really matter.  */
5590
5591 static int
5592 breakpoint_location_address_match (struct bp_location *bl,
5593                                    struct address_space *aspace,
5594                                    CORE_ADDR addr)
5595 {
5596   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
5597                                     aspace, addr)
5598           || (bl->length
5599               && breakpoint_address_match_range (bl->pspace->aspace,
5600                                                  bl->address, bl->length,
5601                                                  aspace, addr)));
5602 }
5603
5604 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
5605    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
5606    represent the same location.  */
5607
5608 static int
5609 breakpoint_locations_match (struct bp_location *loc1, 
5610                             struct bp_location *loc2)
5611 {
5612   int hw_point1, hw_point2;
5613
5614   /* Both of them must not be in moribund_locations.  */
5615   gdb_assert (loc1->owner != NULL);
5616   gdb_assert (loc2->owner != NULL);
5617
5618   hw_point1 = is_hardware_watchpoint (loc1->owner);
5619   hw_point2 = is_hardware_watchpoint (loc2->owner);
5620
5621   if (hw_point1 != hw_point2)
5622     return 0;
5623   else if (hw_point1)
5624     return watchpoint_locations_match (loc1, loc2);
5625   else
5626     /* We compare bp_location.length in order to cover ranged breakpoints.  */
5627     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
5628                                      loc2->pspace->aspace, loc2->address)
5629             && loc1->length == loc2->length);
5630 }
5631
5632 static void
5633 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
5634                                int bnum, int have_bnum)
5635 {
5636   /* The longest string possibly returned by hex_string_custom
5637      is 50 chars.  These must be at least that big for safety.  */
5638   char astr1[64];
5639   char astr2[64];
5640
5641   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
5642   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
5643   if (have_bnum)
5644     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
5645              bnum, astr1, astr2);
5646   else
5647     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
5648 }
5649
5650 /* Adjust a breakpoint's address to account for architectural
5651    constraints on breakpoint placement.  Return the adjusted address.
5652    Note: Very few targets require this kind of adjustment.  For most
5653    targets, this function is simply the identity function.  */
5654
5655 static CORE_ADDR
5656 adjust_breakpoint_address (struct gdbarch *gdbarch,
5657                            CORE_ADDR bpaddr, enum bptype bptype)
5658 {
5659   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
5660     {
5661       /* Very few targets need any kind of breakpoint adjustment.  */
5662       return bpaddr;
5663     }
5664   else if (bptype == bp_watchpoint
5665            || bptype == bp_hardware_watchpoint
5666            || bptype == bp_read_watchpoint
5667            || bptype == bp_access_watchpoint
5668            || bptype == bp_catchpoint)
5669     {
5670       /* Watchpoints and the various bp_catch_* eventpoints should not
5671          have their addresses modified.  */
5672       return bpaddr;
5673     }
5674   else
5675     {
5676       CORE_ADDR adjusted_bpaddr;
5677
5678       /* Some targets have architectural constraints on the placement
5679          of breakpoint instructions.  Obtain the adjusted address.  */
5680       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
5681
5682       /* An adjusted breakpoint address can significantly alter
5683          a user's expectations.  Print a warning if an adjustment
5684          is required.  */
5685       if (adjusted_bpaddr != bpaddr)
5686         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
5687
5688       return adjusted_bpaddr;
5689     }
5690 }
5691
5692 /* Allocate a struct bp_location.  */
5693
5694 static struct bp_location *
5695 allocate_bp_location (struct breakpoint *bpt)
5696 {
5697   struct bp_location *loc;
5698
5699   loc = xmalloc (sizeof (struct bp_location));
5700   memset (loc, 0, sizeof (*loc));
5701
5702   loc->owner = bpt;
5703   loc->cond = NULL;
5704   loc->shlib_disabled = 0;
5705   loc->enabled = 1;
5706
5707   switch (bpt->type)
5708     {
5709     case bp_breakpoint:
5710     case bp_until:
5711     case bp_finish:
5712     case bp_longjmp:
5713     case bp_longjmp_resume:
5714     case bp_exception:
5715     case bp_exception_resume:
5716     case bp_step_resume:
5717     case bp_hp_step_resume:
5718     case bp_watchpoint_scope:
5719     case bp_call_dummy:
5720     case bp_std_terminate:
5721     case bp_shlib_event:
5722     case bp_thread_event:
5723     case bp_overlay_event:
5724     case bp_jit_event:
5725     case bp_longjmp_master:
5726     case bp_std_terminate_master:
5727     case bp_exception_master:
5728     case bp_gnu_ifunc_resolver:
5729     case bp_gnu_ifunc_resolver_return:
5730       loc->loc_type = bp_loc_software_breakpoint;
5731       break;
5732     case bp_hardware_breakpoint:
5733       loc->loc_type = bp_loc_hardware_breakpoint;
5734       break;
5735     case bp_hardware_watchpoint:
5736     case bp_read_watchpoint:
5737     case bp_access_watchpoint:
5738       loc->loc_type = bp_loc_hardware_watchpoint;
5739       break;
5740     case bp_watchpoint:
5741     case bp_catchpoint:
5742     case bp_tracepoint:
5743     case bp_fast_tracepoint:
5744     case bp_static_tracepoint:
5745       loc->loc_type = bp_loc_other;
5746       break;
5747     default:
5748       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
5749     }
5750
5751   loc->refc = 1;
5752   return loc;
5753 }
5754
5755 static void
5756 free_bp_location (struct bp_location *loc)
5757 {
5758   if (loc->cond)
5759     xfree (loc->cond);
5760
5761   if (loc->function_name)
5762     xfree (loc->function_name);
5763
5764   xfree (loc);
5765 }
5766
5767 /* Increment reference count.  */
5768
5769 static void
5770 incref_bp_location (struct bp_location *bl)
5771 {
5772   ++bl->refc;
5773 }
5774
5775 /* Decrement reference count.  If the reference count reaches 0,
5776    destroy the bp_location.  Sets *BLP to NULL.  */
5777
5778 static void
5779 decref_bp_location (struct bp_location **blp)
5780 {
5781   gdb_assert ((*blp)->refc > 0);
5782
5783   if (--(*blp)->refc == 0)
5784     free_bp_location (*blp);
5785   *blp = NULL;
5786 }
5787
5788 /* Helper to set_raw_breakpoint below.  Creates a breakpoint that has
5789    type BPTYPE and has no locations as yet.  */
5790 /* This function is used in gdbtk sources and thus can not be made
5791    static.  */
5792
5793 static struct breakpoint *
5794 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
5795                                      enum bptype bptype)
5796 {
5797   struct breakpoint *b, *b1;
5798
5799   b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
5800   memset (b, 0, sizeof (*b));
5801
5802   b->type = bptype;
5803   b->gdbarch = gdbarch;
5804   b->language = current_language->la_language;
5805   b->input_radix = input_radix;
5806   b->thread = -1;
5807   b->enable_state = bp_enabled;
5808   b->next = 0;
5809   b->silent = 0;
5810   b->ignore_count = 0;
5811   b->commands = NULL;
5812   b->frame_id = null_frame_id;
5813   b->forked_inferior_pid = null_ptid;
5814   b->exec_pathname = NULL;
5815   b->syscalls_to_be_caught = NULL;
5816   b->ops = NULL;
5817   b->condition_not_parsed = 0;
5818   b->py_bp_object = NULL;
5819   b->related_breakpoint = b;
5820
5821   /* Add this breakpoint to the end of the chain so that a list of
5822      breakpoints will come out in order of increasing numbers.  */
5823
5824   b1 = breakpoint_chain;
5825   if (b1 == 0)
5826     breakpoint_chain = b;
5827   else
5828     {
5829       while (b1->next)
5830         b1 = b1->next;
5831       b1->next = b;
5832     }
5833   return b;
5834 }
5835
5836 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
5837    resolutions should be made as the user specified the location explicitly
5838    enough.  */
5839
5840 static void
5841 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
5842 {
5843   gdb_assert (loc->owner != NULL);
5844
5845   if (loc->owner->type == bp_breakpoint
5846       || loc->owner->type == bp_hardware_breakpoint
5847       || is_tracepoint (loc->owner))
5848     {
5849       int is_gnu_ifunc;
5850
5851       find_pc_partial_function_gnu_ifunc (loc->address, &loc->function_name,
5852                                           NULL, NULL, &is_gnu_ifunc);
5853
5854       if (is_gnu_ifunc && !explicit_loc)
5855         {
5856           struct breakpoint *b = loc->owner;
5857
5858           gdb_assert (loc->pspace == current_program_space);
5859           if (gnu_ifunc_resolve_name (loc->function_name,
5860                                       &loc->requested_address))
5861             {
5862               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
5863               loc->address = adjust_breakpoint_address (loc->gdbarch,
5864                                                         loc->requested_address,
5865                                                         b->type);
5866             }
5867           else if (b->type == bp_breakpoint && b->loc == loc
5868                    && loc->next == NULL && b->related_breakpoint == b)
5869             {
5870               /* Create only the whole new breakpoint of this type but do not
5871                  mess more complicated breakpoints with multiple locations.  */
5872               b->type = bp_gnu_ifunc_resolver;
5873             }
5874         }
5875
5876       if (loc->function_name)
5877         loc->function_name = xstrdup (loc->function_name);
5878     }
5879 }
5880
5881 /* Attempt to determine architecture of location identified by SAL.  */
5882 static struct gdbarch *
5883 get_sal_arch (struct symtab_and_line sal)
5884 {
5885   if (sal.section)
5886     return get_objfile_arch (sal.section->objfile);
5887   if (sal.symtab)
5888     return get_objfile_arch (sal.symtab->objfile);
5889
5890   return NULL;
5891 }
5892
5893 /* set_raw_breakpoint is a low level routine for allocating and
5894    partially initializing a breakpoint of type BPTYPE.  The newly
5895    created breakpoint's address, section, source file name, and line
5896    number are provided by SAL.  The newly created and partially
5897    initialized breakpoint is added to the breakpoint chain and
5898    is also returned as the value of this function.
5899
5900    It is expected that the caller will complete the initialization of
5901    the newly created breakpoint struct as well as output any status
5902    information regarding the creation of a new breakpoint.  In
5903    particular, set_raw_breakpoint does NOT set the breakpoint
5904    number!  Care should be taken to not allow an error to occur
5905    prior to completing the initialization of the breakpoint.  If this
5906    should happen, a bogus breakpoint will be left on the chain.  */
5907
5908 struct breakpoint *
5909 set_raw_breakpoint (struct gdbarch *gdbarch,
5910                     struct symtab_and_line sal, enum bptype bptype)
5911 {
5912   struct breakpoint *b = set_raw_breakpoint_without_location (gdbarch, 
5913                                                               bptype);
5914   CORE_ADDR adjusted_address;
5915   struct gdbarch *loc_gdbarch;
5916
5917   loc_gdbarch = get_sal_arch (sal);
5918   if (!loc_gdbarch)
5919     loc_gdbarch = b->gdbarch;
5920
5921   if (bptype != bp_catchpoint)
5922     gdb_assert (sal.pspace != NULL);
5923
5924   /* Adjust the breakpoint's address prior to allocating a location.
5925      Once we call allocate_bp_location(), that mostly uninitialized
5926      location will be placed on the location chain.  Adjustment of the
5927      breakpoint may cause target_read_memory() to be called and we do
5928      not want its scan of the location chain to find a breakpoint and
5929      location that's only been partially initialized.  */
5930   adjusted_address = adjust_breakpoint_address (loc_gdbarch, 
5931                                                 sal.pc, b->type);
5932
5933   b->loc = allocate_bp_location (b);
5934   b->loc->gdbarch = loc_gdbarch;
5935   b->loc->requested_address = sal.pc;
5936   b->loc->address = adjusted_address;
5937   b->loc->pspace = sal.pspace;
5938
5939   /* Store the program space that was used to set the breakpoint, for
5940      breakpoint resetting.  */
5941   b->pspace = sal.pspace;
5942
5943   if (sal.symtab == NULL)
5944     b->source_file = NULL;
5945   else
5946     b->source_file = xstrdup (sal.symtab->filename);
5947   b->loc->section = sal.section;
5948   b->line_number = sal.line;
5949
5950   set_breakpoint_location_function (b->loc,
5951                                     sal.explicit_pc || sal.explicit_line);
5952
5953   breakpoints_changed ();
5954
5955   return b;
5956 }
5957
5958
5959 /* Note that the breakpoint object B describes a permanent breakpoint
5960    instruction, hard-wired into the inferior's code.  */
5961 void
5962 make_breakpoint_permanent (struct breakpoint *b)
5963 {
5964   struct bp_location *bl;
5965
5966   b->enable_state = bp_permanent;
5967
5968   /* By definition, permanent breakpoints are already present in the
5969      code.  Mark all locations as inserted.  For now,
5970      make_breakpoint_permanent is called in just one place, so it's
5971      hard to say if it's reasonable to have permanent breakpoint with
5972      multiple locations or not, but it's easy to implmement.  */
5973   for (bl = b->loc; bl; bl = bl->next)
5974     bl->inserted = 1;
5975 }
5976
5977 /* Call this routine when stepping and nexting to enable a breakpoint
5978    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
5979    initiated the operation.  */
5980
5981 void
5982 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
5983 {
5984   struct breakpoint *b, *b_tmp;
5985   int thread = tp->num;
5986
5987   /* To avoid having to rescan all objfile symbols at every step,
5988      we maintain a list of continually-inserted but always disabled
5989      longjmp "master" breakpoints.  Here, we simply create momentary
5990      clones of those and enable them for the requested thread.  */
5991   ALL_BREAKPOINTS_SAFE (b, b_tmp)
5992     if (b->pspace == current_program_space
5993         && (b->type == bp_longjmp_master
5994             || b->type == bp_exception_master))
5995       {
5996         struct breakpoint *clone = clone_momentary_breakpoint (b);
5997
5998         clone->type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
5999         clone->thread = thread;
6000       }
6001
6002   tp->initiating_frame = frame;
6003 }
6004
6005 /* Delete all longjmp breakpoints from THREAD.  */
6006 void
6007 delete_longjmp_breakpoint (int thread)
6008 {
6009   struct breakpoint *b, *b_tmp;
6010
6011   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6012     if (b->type == bp_longjmp || b->type == bp_exception)
6013       {
6014         if (b->thread == thread)
6015           delete_breakpoint (b);
6016       }
6017 }
6018
6019 void
6020 enable_overlay_breakpoints (void)
6021 {
6022   struct breakpoint *b;
6023
6024   ALL_BREAKPOINTS (b)
6025     if (b->type == bp_overlay_event)
6026     {
6027       b->enable_state = bp_enabled;
6028       update_global_location_list (1);
6029       overlay_events_enabled = 1;
6030     }
6031 }
6032
6033 void
6034 disable_overlay_breakpoints (void)
6035 {
6036   struct breakpoint *b;
6037
6038   ALL_BREAKPOINTS (b)
6039     if (b->type == bp_overlay_event)
6040     {
6041       b->enable_state = bp_disabled;
6042       update_global_location_list (0);
6043       overlay_events_enabled = 0;
6044     }
6045 }
6046
6047 /* Set an active std::terminate breakpoint for each std::terminate
6048    master breakpoint.  */
6049 void
6050 set_std_terminate_breakpoint (void)
6051 {
6052   struct breakpoint *b, *b_tmp;
6053
6054   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6055     if (b->pspace == current_program_space
6056         && b->type == bp_std_terminate_master)
6057       {
6058         struct breakpoint *clone = clone_momentary_breakpoint (b);
6059         clone->type = bp_std_terminate;
6060       }
6061 }
6062
6063 /* Delete all the std::terminate breakpoints.  */
6064 void
6065 delete_std_terminate_breakpoint (void)
6066 {
6067   struct breakpoint *b, *b_tmp;
6068
6069   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6070     if (b->type == bp_std_terminate)
6071       delete_breakpoint (b);
6072 }
6073
6074 struct breakpoint *
6075 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6076 {
6077   struct breakpoint *b;
6078
6079   b = create_internal_breakpoint (gdbarch, address, bp_thread_event);
6080   
6081   b->enable_state = bp_enabled;
6082   /* addr_string has to be used or breakpoint_re_set will delete me.  */
6083   b->addr_string
6084     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
6085
6086   update_global_location_list_nothrow (1);
6087
6088   return b;
6089 }
6090
6091 void
6092 remove_thread_event_breakpoints (void)
6093 {
6094   struct breakpoint *b, *b_tmp;
6095
6096   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6097     if (b->type == bp_thread_event
6098         && b->loc->pspace == current_program_space)
6099       delete_breakpoint (b);
6100 }
6101
6102 struct lang_and_radix
6103   {
6104     enum language lang;
6105     int radix;
6106   };
6107
6108 /* Create a breakpoint for JIT code registration and unregistration.  */
6109
6110 struct breakpoint *
6111 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6112 {
6113   struct breakpoint *b;
6114
6115   b = create_internal_breakpoint (gdbarch, address, bp_jit_event);
6116   update_global_location_list_nothrow (1);
6117   return b;
6118 }
6119
6120 /* Remove JIT code registration and unregistration breakpoint(s).  */
6121
6122 void
6123 remove_jit_event_breakpoints (void)
6124 {
6125   struct breakpoint *b, *b_tmp;
6126
6127   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6128     if (b->type == bp_jit_event
6129         && b->loc->pspace == current_program_space)
6130       delete_breakpoint (b);
6131 }
6132
6133 void
6134 remove_solib_event_breakpoints (void)
6135 {
6136   struct breakpoint *b, *b_tmp;
6137
6138   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6139     if (b->type == bp_shlib_event
6140         && b->loc->pspace == current_program_space)
6141       delete_breakpoint (b);
6142 }
6143
6144 struct breakpoint *
6145 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6146 {
6147   struct breakpoint *b;
6148
6149   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event);
6150   update_global_location_list_nothrow (1);
6151   return b;
6152 }
6153
6154 /* Disable any breakpoints that are on code in shared libraries.  Only
6155    apply to enabled breakpoints, disabled ones can just stay disabled.  */
6156
6157 void
6158 disable_breakpoints_in_shlibs (void)
6159 {
6160   struct bp_location *loc, **locp_tmp;
6161
6162   ALL_BP_LOCATIONS (loc, locp_tmp)
6163   {
6164     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6165     struct breakpoint *b = loc->owner;
6166
6167     /* We apply the check to all breakpoints, including disabled for
6168        those with loc->duplicate set.  This is so that when breakpoint
6169        becomes enabled, or the duplicate is removed, gdb will try to
6170        insert all breakpoints.  If we don't set shlib_disabled here,
6171        we'll try to insert those breakpoints and fail.  */
6172     if (((b->type == bp_breakpoint)
6173          || (b->type == bp_jit_event)
6174          || (b->type == bp_hardware_breakpoint)
6175          || (is_tracepoint (b)))
6176         && loc->pspace == current_program_space
6177         && !loc->shlib_disabled
6178 #ifdef PC_SOLIB
6179         && PC_SOLIB (loc->address)
6180 #else
6181         && solib_name_from_address (loc->pspace, loc->address)
6182 #endif
6183         )
6184       {
6185         loc->shlib_disabled = 1;
6186       }
6187   }
6188 }
6189
6190 /* Disable any breakpoints that are in an unloaded shared library.
6191    Only apply to enabled breakpoints, disabled ones can just stay
6192    disabled.  */
6193
6194 static void
6195 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
6196 {
6197   struct bp_location *loc, **locp_tmp;
6198   int disabled_shlib_breaks = 0;
6199
6200   /* SunOS a.out shared libraries are always mapped, so do not
6201      disable breakpoints; they will only be reported as unloaded
6202      through clear_solib when GDB discards its shared library
6203      list.  See clear_solib for more information.  */
6204   if (exec_bfd != NULL
6205       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
6206     return;
6207
6208   ALL_BP_LOCATIONS (loc, locp_tmp)
6209   {
6210     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6211     struct breakpoint *b = loc->owner;
6212
6213     if ((loc->loc_type == bp_loc_hardware_breakpoint
6214          || loc->loc_type == bp_loc_software_breakpoint)
6215         && solib->pspace == loc->pspace
6216         && !loc->shlib_disabled
6217         && (b->type == bp_breakpoint
6218             || b->type == bp_jit_event
6219             || b->type == bp_hardware_breakpoint)
6220         && solib_contains_address_p (solib, loc->address))
6221       {
6222         loc->shlib_disabled = 1;
6223         /* At this point, we cannot rely on remove_breakpoint
6224            succeeding so we must mark the breakpoint as not inserted
6225            to prevent future errors occurring in remove_breakpoints.  */
6226         loc->inserted = 0;
6227
6228         /* This may cause duplicate notifications for the same breakpoint.  */
6229         observer_notify_breakpoint_modified (b);
6230
6231         if (!disabled_shlib_breaks)
6232           {
6233             target_terminal_ours_for_output ();
6234             warning (_("Temporarily disabling breakpoints "
6235                        "for unloaded shared library \"%s\""),
6236                      solib->so_name);
6237           }
6238         disabled_shlib_breaks = 1;
6239       }
6240   }
6241 }
6242
6243 /* FORK & VFORK catchpoints.  */
6244
6245 /* Implement the "insert" breakpoint_ops method for fork
6246    catchpoints.  */
6247
6248 static int
6249 insert_catch_fork (struct bp_location *bl)
6250 {
6251   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
6252 }
6253
6254 /* Implement the "remove" breakpoint_ops method for fork
6255    catchpoints.  */
6256
6257 static int
6258 remove_catch_fork (struct bp_location *bl)
6259 {
6260   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
6261 }
6262
6263 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
6264    catchpoints.  */
6265
6266 static int
6267 breakpoint_hit_catch_fork (const struct bp_location *bl,
6268                            struct address_space *aspace, CORE_ADDR bp_addr)
6269 {
6270   return inferior_has_forked (inferior_ptid, &bl->owner->forked_inferior_pid);
6271 }
6272
6273 /* Implement the "print_it" breakpoint_ops method for fork
6274    catchpoints.  */
6275
6276 static enum print_stop_action
6277 print_it_catch_fork (struct breakpoint *b)
6278 {
6279   annotate_catchpoint (b->number);
6280   printf_filtered (_("\nCatchpoint %d (forked process %d), "),
6281                    b->number, ptid_get_pid (b->forked_inferior_pid));
6282   return PRINT_SRC_AND_LOC;
6283 }
6284
6285 /* Implement the "print_one" breakpoint_ops method for fork
6286    catchpoints.  */
6287
6288 static void
6289 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
6290 {
6291   struct value_print_options opts;
6292
6293   get_user_print_options (&opts);
6294
6295   /* Field 4, the address, is omitted (which makes the columns not
6296      line up too nicely with the headers, but the effect is relatively
6297      readable).  */
6298   if (opts.addressprint)
6299     ui_out_field_skip (uiout, "addr");
6300   annotate_field (5);
6301   ui_out_text (uiout, "fork");
6302   if (!ptid_equal (b->forked_inferior_pid, null_ptid))
6303     {
6304       ui_out_text (uiout, ", process ");
6305       ui_out_field_int (uiout, "what",
6306                         ptid_get_pid (b->forked_inferior_pid));
6307       ui_out_spaces (uiout, 1);
6308     }
6309 }
6310
6311 /* Implement the "print_mention" breakpoint_ops method for fork
6312    catchpoints.  */
6313
6314 static void
6315 print_mention_catch_fork (struct breakpoint *b)
6316 {
6317   printf_filtered (_("Catchpoint %d (fork)"), b->number);
6318 }
6319
6320 /* Implement the "print_recreate" breakpoint_ops method for fork
6321    catchpoints.  */
6322
6323 static void
6324 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
6325 {
6326   fprintf_unfiltered (fp, "catch fork");
6327 }
6328
6329 /* The breakpoint_ops structure to be used in fork catchpoints.  */
6330
6331 static struct breakpoint_ops catch_fork_breakpoint_ops =
6332 {
6333   insert_catch_fork,
6334   remove_catch_fork,
6335   breakpoint_hit_catch_fork,
6336   NULL, /* resources_needed */
6337   NULL, /* works_in_software_mode */
6338   print_it_catch_fork,
6339   print_one_catch_fork,
6340   NULL, /* print_one_detail */
6341   print_mention_catch_fork,
6342   print_recreate_catch_fork
6343 };
6344
6345 /* Implement the "insert" breakpoint_ops method for vfork
6346    catchpoints.  */
6347
6348 static int
6349 insert_catch_vfork (struct bp_location *bl)
6350 {
6351   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
6352 }
6353
6354 /* Implement the "remove" breakpoint_ops method for vfork
6355    catchpoints.  */
6356
6357 static int
6358 remove_catch_vfork (struct bp_location *bl)
6359 {
6360   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
6361 }
6362
6363 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
6364    catchpoints.  */
6365
6366 static int
6367 breakpoint_hit_catch_vfork (const struct bp_location *bl,
6368                             struct address_space *aspace, CORE_ADDR bp_addr)
6369 {
6370   return inferior_has_vforked (inferior_ptid, &bl->owner->forked_inferior_pid);
6371 }
6372
6373 /* Implement the "print_it" breakpoint_ops method for vfork
6374    catchpoints.  */
6375
6376 static enum print_stop_action
6377 print_it_catch_vfork (struct breakpoint *b)
6378 {
6379   annotate_catchpoint (b->number);
6380   printf_filtered (_("\nCatchpoint %d (vforked process %d), "),
6381                    b->number, ptid_get_pid (b->forked_inferior_pid));
6382   return PRINT_SRC_AND_LOC;
6383 }
6384
6385 /* Implement the "print_one" breakpoint_ops method for vfork
6386    catchpoints.  */
6387
6388 static void
6389 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
6390 {
6391   struct value_print_options opts;
6392
6393   get_user_print_options (&opts);
6394   /* Field 4, the address, is omitted (which makes the columns not
6395      line up too nicely with the headers, but the effect is relatively
6396      readable).  */
6397   if (opts.addressprint)
6398     ui_out_field_skip (uiout, "addr");
6399   annotate_field (5);
6400   ui_out_text (uiout, "vfork");
6401   if (!ptid_equal (b->forked_inferior_pid, null_ptid))
6402     {
6403       ui_out_text (uiout, ", process ");
6404       ui_out_field_int (uiout, "what",
6405                         ptid_get_pid (b->forked_inferior_pid));
6406       ui_out_spaces (uiout, 1);
6407     }
6408 }
6409
6410 /* Implement the "print_mention" breakpoint_ops method for vfork
6411    catchpoints.  */
6412
6413 static void
6414 print_mention_catch_vfork (struct breakpoint *b)
6415 {
6416   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
6417 }
6418
6419 /* Implement the "print_recreate" breakpoint_ops method for vfork
6420    catchpoints.  */
6421
6422 static void
6423 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
6424 {
6425   fprintf_unfiltered (fp, "catch vfork");
6426 }
6427
6428 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
6429
6430 static struct breakpoint_ops catch_vfork_breakpoint_ops =
6431 {
6432   insert_catch_vfork,
6433   remove_catch_vfork,
6434   breakpoint_hit_catch_vfork,
6435   NULL, /* resources_needed */
6436   NULL, /* works_in_software_mode */
6437   print_it_catch_vfork,
6438   print_one_catch_vfork,
6439   NULL, /* print_one_detail */
6440   print_mention_catch_vfork,
6441   print_recreate_catch_vfork
6442 };
6443
6444 /* Implement the "insert" breakpoint_ops method for syscall
6445    catchpoints.  */
6446
6447 static int
6448 insert_catch_syscall (struct bp_location *bl)
6449 {
6450   struct inferior *inf = current_inferior ();
6451
6452   ++inf->total_syscalls_count;
6453   if (!bl->owner->syscalls_to_be_caught)
6454     ++inf->any_syscall_count;
6455   else
6456     {
6457       int i, iter;
6458
6459       for (i = 0;
6460            VEC_iterate (int, bl->owner->syscalls_to_be_caught, i, iter);
6461            i++)
6462         {
6463           int elem;
6464
6465           if (iter >= VEC_length (int, inf->syscalls_counts))
6466             {
6467               int old_size = VEC_length (int, inf->syscalls_counts);
6468               uintptr_t vec_addr_offset
6469                 = old_size * ((uintptr_t) sizeof (int));
6470               uintptr_t vec_addr;
6471               VEC_safe_grow (int, inf->syscalls_counts, iter + 1);
6472               vec_addr = (uintptr_t) VEC_address (int, inf->syscalls_counts) +
6473                 vec_addr_offset;
6474               memset ((void *) vec_addr, 0,
6475                       (iter + 1 - old_size) * sizeof (int));
6476             }
6477           elem = VEC_index (int, inf->syscalls_counts, iter);
6478           VEC_replace (int, inf->syscalls_counts, iter, ++elem);
6479         }
6480     }
6481
6482   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
6483                                         inf->total_syscalls_count != 0,
6484                                         inf->any_syscall_count,
6485                                         VEC_length (int, inf->syscalls_counts),
6486                                         VEC_address (int, inf->syscalls_counts));
6487 }
6488
6489 /* Implement the "remove" breakpoint_ops method for syscall
6490    catchpoints.  */
6491
6492 static int
6493 remove_catch_syscall (struct bp_location *bl)
6494 {
6495   struct inferior *inf = current_inferior ();
6496
6497   --inf->total_syscalls_count;
6498   if (!bl->owner->syscalls_to_be_caught)
6499     --inf->any_syscall_count;
6500   else
6501     {
6502       int i, iter;
6503
6504       for (i = 0;
6505            VEC_iterate (int, bl->owner->syscalls_to_be_caught, i, iter);
6506            i++)
6507         {
6508           int elem;
6509           if (iter >= VEC_length (int, inf->syscalls_counts))
6510             /* Shouldn't happen.  */
6511             continue;
6512           elem = VEC_index (int, inf->syscalls_counts, iter);
6513           VEC_replace (int, inf->syscalls_counts, iter, --elem);
6514         }
6515     }
6516
6517   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
6518                                         inf->total_syscalls_count != 0,
6519                                         inf->any_syscall_count,
6520                                         VEC_length (int, inf->syscalls_counts),
6521                                         VEC_address (int,
6522                                                      inf->syscalls_counts));
6523 }
6524
6525 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
6526    catchpoints.  */
6527
6528 static int
6529 breakpoint_hit_catch_syscall (const struct bp_location *bl,
6530                               struct address_space *aspace, CORE_ADDR bp_addr)
6531 {
6532   /* We must check if we are catching specific syscalls in this
6533      breakpoint.  If we are, then we must guarantee that the called
6534      syscall is the same syscall we are catching.  */
6535   int syscall_number = 0;
6536   const struct breakpoint *b = bl->owner;
6537
6538   if (!inferior_has_called_syscall (inferior_ptid, &syscall_number))
6539     return 0;
6540
6541   /* Now, checking if the syscall is the same.  */
6542   if (b->syscalls_to_be_caught)
6543     {
6544       int i, iter;
6545
6546       for (i = 0;
6547            VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6548            i++)
6549         if (syscall_number == iter)
6550           break;
6551       /* Not the same.  */
6552       if (!iter)
6553         return 0;
6554     }
6555
6556   return 1;
6557 }
6558
6559 /* Implement the "print_it" breakpoint_ops method for syscall
6560    catchpoints.  */
6561
6562 static enum print_stop_action
6563 print_it_catch_syscall (struct breakpoint *b)
6564 {
6565   /* These are needed because we want to know in which state a
6566      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
6567      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
6568      must print "called syscall" or "returned from syscall".  */
6569   ptid_t ptid;
6570   struct target_waitstatus last;
6571   struct syscall s;
6572   struct cleanup *old_chain;
6573   char *syscall_id;
6574
6575   get_last_target_status (&ptid, &last);
6576
6577   get_syscall_by_number (last.value.syscall_number, &s);
6578
6579   annotate_catchpoint (b->number);
6580
6581   if (s.name == NULL)
6582     syscall_id = xstrprintf ("%d", last.value.syscall_number);
6583   else
6584     syscall_id = xstrprintf ("'%s'", s.name);
6585
6586   old_chain = make_cleanup (xfree, syscall_id);
6587
6588   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
6589     printf_filtered (_("\nCatchpoint %d (call to syscall %s), "),
6590                      b->number, syscall_id);
6591   else if (last.kind == TARGET_WAITKIND_SYSCALL_RETURN)
6592     printf_filtered (_("\nCatchpoint %d (returned from syscall %s), "),
6593                      b->number, syscall_id);
6594
6595   do_cleanups (old_chain);
6596
6597   return PRINT_SRC_AND_LOC;
6598 }
6599
6600 /* Implement the "print_one" breakpoint_ops method for syscall
6601    catchpoints.  */
6602
6603 static void
6604 print_one_catch_syscall (struct breakpoint *b,
6605                          struct bp_location **last_loc)
6606 {
6607   struct value_print_options opts;
6608
6609   get_user_print_options (&opts);
6610   /* Field 4, the address, is omitted (which makes the columns not
6611      line up too nicely with the headers, but the effect is relatively
6612      readable).  */
6613   if (opts.addressprint)
6614     ui_out_field_skip (uiout, "addr");
6615   annotate_field (5);
6616
6617   if (b->syscalls_to_be_caught
6618       && VEC_length (int, b->syscalls_to_be_caught) > 1)
6619     ui_out_text (uiout, "syscalls \"");
6620   else
6621     ui_out_text (uiout, "syscall \"");
6622
6623   if (b->syscalls_to_be_caught)
6624     {
6625       int i, iter;
6626       char *text = xstrprintf ("%s", "");
6627
6628       for (i = 0;
6629            VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6630            i++)
6631         {
6632           char *x = text;
6633           struct syscall s;
6634           get_syscall_by_number (iter, &s);
6635
6636           if (s.name != NULL)
6637             text = xstrprintf ("%s%s, ", text, s.name);
6638           else
6639             text = xstrprintf ("%s%d, ", text, iter);
6640
6641           /* We have to xfree the last 'text' (now stored at 'x')
6642              because xstrprintf dinamically allocates new space for it
6643              on every call.  */
6644           xfree (x);
6645         }
6646       /* Remove the last comma.  */
6647       text[strlen (text) - 2] = '\0';
6648       ui_out_field_string (uiout, "what", text);
6649     }
6650   else
6651     ui_out_field_string (uiout, "what", "<any syscall>");
6652   ui_out_text (uiout, "\" ");
6653 }
6654
6655 /* Implement the "print_mention" breakpoint_ops method for syscall
6656    catchpoints.  */
6657
6658 static void
6659 print_mention_catch_syscall (struct breakpoint *b)
6660 {
6661   if (b->syscalls_to_be_caught)
6662     {
6663       int i, iter;
6664
6665       if (VEC_length (int, b->syscalls_to_be_caught) > 1)
6666         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
6667       else
6668         printf_filtered (_("Catchpoint %d (syscall"), b->number);
6669
6670       for (i = 0;
6671            VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6672            i++)
6673         {
6674           struct syscall s;
6675           get_syscall_by_number (iter, &s);
6676
6677           if (s.name)
6678             printf_filtered (" '%s' [%d]", s.name, s.number);
6679           else
6680             printf_filtered (" %d", s.number);
6681         }
6682       printf_filtered (")");
6683     }
6684   else
6685     printf_filtered (_("Catchpoint %d (any syscall)"),
6686                      b->number);
6687 }
6688
6689 /* Implement the "print_recreate" breakpoint_ops method for syscall
6690    catchpoints.  */
6691
6692 static void
6693 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
6694 {
6695   fprintf_unfiltered (fp, "catch syscall");
6696
6697   if (b->syscalls_to_be_caught)
6698     {
6699       int i, iter;
6700
6701       for (i = 0;
6702            VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6703            i++)
6704         {
6705           struct syscall s;
6706
6707           get_syscall_by_number (iter, &s);
6708           if (s.name)
6709             fprintf_unfiltered (fp, " %s", s.name);
6710           else
6711             fprintf_unfiltered (fp, " %d", s.number);
6712         }
6713     }
6714 }
6715
6716 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
6717
6718 static struct breakpoint_ops catch_syscall_breakpoint_ops =
6719 {
6720   insert_catch_syscall,
6721   remove_catch_syscall,
6722   breakpoint_hit_catch_syscall,
6723   NULL, /* resources_needed */
6724   NULL, /* works_in_software_mode */
6725   print_it_catch_syscall,
6726   print_one_catch_syscall,
6727   NULL, /* print_one_detail */
6728   print_mention_catch_syscall,
6729   print_recreate_catch_syscall
6730 };
6731
6732 /* Returns non-zero if 'b' is a syscall catchpoint.  */
6733
6734 static int
6735 syscall_catchpoint_p (struct breakpoint *b)
6736 {
6737   return (b->ops == &catch_syscall_breakpoint_ops);
6738 }
6739
6740 /* Create a new breakpoint of the bp_catchpoint kind and return it,
6741    but does NOT mention it nor update the global location list.
6742    This is useful if you need to fill more fields in the
6743    struct breakpoint before calling mention.
6744  
6745    If TEMPFLAG is non-zero, then make the breakpoint temporary.
6746    If COND_STRING is not NULL, then store it in the breakpoint.
6747    OPS, if not NULL, is the breakpoint_ops structure associated
6748    to the catchpoint.  */
6749
6750 static struct breakpoint *
6751 create_catchpoint_without_mention (struct gdbarch *gdbarch, int tempflag,
6752                                    char *cond_string,
6753                                    struct breakpoint_ops *ops)
6754 {
6755   struct symtab_and_line sal;
6756   struct breakpoint *b;
6757
6758   init_sal (&sal);
6759   sal.pspace = current_program_space;
6760
6761   b = set_raw_breakpoint (gdbarch, sal, bp_catchpoint);
6762   set_breakpoint_count (breakpoint_count + 1);
6763   b->number = breakpoint_count;
6764
6765   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
6766   b->thread = -1;
6767   b->addr_string = NULL;
6768   b->enable_state = bp_enabled;
6769   b->disposition = tempflag ? disp_del : disp_donttouch;
6770   b->ops = ops;
6771
6772   return b;
6773 }
6774
6775 /* Create a new breakpoint of the bp_catchpoint kind and return it.
6776  
6777    If TEMPFLAG is non-zero, then make the breakpoint temporary.
6778    If COND_STRING is not NULL, then store it in the breakpoint.
6779    OPS, if not NULL, is the breakpoint_ops structure associated
6780    to the catchpoint.  */
6781
6782 static struct breakpoint *
6783 create_catchpoint (struct gdbarch *gdbarch, int tempflag,
6784                    char *cond_string, struct breakpoint_ops *ops)
6785 {
6786   struct breakpoint *b =
6787     create_catchpoint_without_mention (gdbarch, tempflag, cond_string, ops);
6788
6789   mention (b);
6790   observer_notify_breakpoint_created (b);
6791   update_global_location_list (1);
6792
6793   return b;
6794 }
6795
6796 static void
6797 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
6798                                     int tempflag, char *cond_string,
6799                                     struct breakpoint_ops *ops)
6800 {
6801   struct breakpoint *b
6802     = create_catchpoint (gdbarch, tempflag, cond_string, ops);
6803
6804   /* FIXME: We should put this information in a breakpoint private data
6805      area.  */
6806   b->forked_inferior_pid = null_ptid;
6807 }
6808
6809 /* Exec catchpoints.  */
6810
6811 static int
6812 insert_catch_exec (struct bp_location *bl)
6813 {
6814   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
6815 }
6816
6817 static int
6818 remove_catch_exec (struct bp_location *bl)
6819 {
6820   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
6821 }
6822
6823 static int
6824 breakpoint_hit_catch_exec (const struct bp_location *bl,
6825                            struct address_space *aspace, CORE_ADDR bp_addr)
6826 {
6827   return inferior_has_execd (inferior_ptid, &bl->owner->exec_pathname);
6828 }
6829
6830 static enum print_stop_action
6831 print_it_catch_exec (struct breakpoint *b)
6832 {
6833   annotate_catchpoint (b->number);
6834   printf_filtered (_("\nCatchpoint %d (exec'd %s), "), b->number,
6835                    b->exec_pathname);
6836   return PRINT_SRC_AND_LOC;
6837 }
6838
6839 static void
6840 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
6841 {
6842   struct value_print_options opts;
6843
6844   get_user_print_options (&opts);
6845
6846   /* Field 4, the address, is omitted (which makes the columns
6847      not line up too nicely with the headers, but the effect
6848      is relatively readable).  */
6849   if (opts.addressprint)
6850     ui_out_field_skip (uiout, "addr");
6851   annotate_field (5);
6852   ui_out_text (uiout, "exec");
6853   if (b->exec_pathname != NULL)
6854     {
6855       ui_out_text (uiout, ", program \"");
6856       ui_out_field_string (uiout, "what", b->exec_pathname);
6857       ui_out_text (uiout, "\" ");
6858     }
6859 }
6860
6861 static void
6862 print_mention_catch_exec (struct breakpoint *b)
6863 {
6864   printf_filtered (_("Catchpoint %d (exec)"), b->number);
6865 }
6866
6867 /* Implement the "print_recreate" breakpoint_ops method for exec
6868    catchpoints.  */
6869
6870 static void
6871 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
6872 {
6873   fprintf_unfiltered (fp, "catch exec");
6874 }
6875
6876 static struct breakpoint_ops catch_exec_breakpoint_ops =
6877 {
6878   insert_catch_exec,
6879   remove_catch_exec,
6880   breakpoint_hit_catch_exec,
6881   NULL, /* resources_needed */
6882   NULL, /* works_in_software_mode */
6883   print_it_catch_exec,
6884   print_one_catch_exec,
6885   NULL, /* print_one_detail */
6886   print_mention_catch_exec,
6887   print_recreate_catch_exec
6888 };
6889
6890 static void
6891 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
6892                                  struct breakpoint_ops *ops)
6893 {
6894   struct gdbarch *gdbarch = get_current_arch ();
6895   struct breakpoint *b =
6896     create_catchpoint_without_mention (gdbarch, tempflag, NULL, ops);
6897
6898   b->syscalls_to_be_caught = filter;
6899
6900   /* Now, we have to mention the breakpoint and update the global
6901      location list.  */
6902   mention (b);
6903   observer_notify_breakpoint_created (b);
6904   update_global_location_list (1);
6905 }
6906
6907 static int
6908 hw_breakpoint_used_count (void)
6909 {
6910   int i = 0;
6911   struct breakpoint *b;
6912   struct bp_location *bl;
6913
6914   ALL_BREAKPOINTS (b)
6915   {
6916     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
6917       for (bl = b->loc; bl; bl = bl->next)
6918         {
6919           /* Special types of hardware breakpoints may use more than
6920              one register.  */
6921           if (b->ops && b->ops->resources_needed)
6922             i += b->ops->resources_needed (bl);
6923           else
6924             i++;
6925         }
6926   }
6927
6928   return i;
6929 }
6930
6931 static int
6932 hw_watchpoint_used_count (enum bptype type, int *other_type_used)
6933 {
6934   int i = 0;
6935   struct breakpoint *b;
6936   struct bp_location *bl;
6937
6938   *other_type_used = 0;
6939   ALL_BREAKPOINTS (b)
6940     {
6941       if (!breakpoint_enabled (b))
6942         continue;
6943
6944         if (b->type == type)
6945           for (bl = b->loc; bl; bl = bl->next)
6946             {
6947               /* Special types of hardware watchpoints may use more than
6948                  one register.  */
6949               if (b->ops && b->ops->resources_needed)
6950                 i += b->ops->resources_needed (bl);
6951               else
6952                 i++;
6953             }
6954         else if (is_hardware_watchpoint (b))
6955           *other_type_used = 1;
6956     }
6957
6958   return i;
6959 }
6960
6961 void
6962 disable_watchpoints_before_interactive_call_start (void)
6963 {
6964   struct breakpoint *b;
6965
6966   ALL_BREAKPOINTS (b)
6967   {
6968     if (is_watchpoint (b) && breakpoint_enabled (b))
6969       {
6970         b->enable_state = bp_call_disabled;
6971         update_global_location_list (0);
6972       }
6973   }
6974 }
6975
6976 void
6977 enable_watchpoints_after_interactive_call_stop (void)
6978 {
6979   struct breakpoint *b;
6980
6981   ALL_BREAKPOINTS (b)
6982   {
6983     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
6984       {
6985         b->enable_state = bp_enabled;
6986         update_global_location_list (1);
6987       }
6988   }
6989 }
6990
6991 void
6992 disable_breakpoints_before_startup (void)
6993 {
6994   struct breakpoint *b;
6995   int found = 0;
6996
6997   ALL_BREAKPOINTS (b)
6998     {
6999       if (b->pspace != current_program_space)
7000         continue;
7001
7002       if ((b->type == bp_breakpoint
7003            || b->type == bp_hardware_breakpoint)
7004           && breakpoint_enabled (b))
7005         {
7006           b->enable_state = bp_startup_disabled;
7007           found = 1;
7008         }
7009     }
7010
7011   if (found)
7012     update_global_location_list (0);
7013
7014   current_program_space->executing_startup = 1;
7015 }
7016
7017 void
7018 enable_breakpoints_after_startup (void)
7019 {
7020   struct breakpoint *b;
7021   int found = 0;
7022
7023   current_program_space->executing_startup = 0;
7024
7025   ALL_BREAKPOINTS (b)
7026     {
7027       if (b->pspace != current_program_space)
7028         continue;
7029
7030       if ((b->type == bp_breakpoint
7031            || b->type == bp_hardware_breakpoint)
7032           && b->enable_state == bp_startup_disabled)
7033         {
7034           b->enable_state = bp_enabled;
7035           found = 1;
7036         }
7037     }
7038
7039   if (found)
7040     breakpoint_re_set ();
7041 }
7042
7043
7044 /* Set a breakpoint that will evaporate an end of command
7045    at address specified by SAL.
7046    Restrict it to frame FRAME if FRAME is nonzero.  */
7047
7048 struct breakpoint *
7049 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
7050                           struct frame_id frame_id, enum bptype type)
7051 {
7052   struct breakpoint *b;
7053
7054   /* If FRAME_ID is valid, it should be a real frame, not an inlined
7055      one.  */
7056   gdb_assert (!frame_id_inlined_p (frame_id));
7057
7058   b = set_raw_breakpoint (gdbarch, sal, type);
7059   b->enable_state = bp_enabled;
7060   b->disposition = disp_donttouch;
7061   b->frame_id = frame_id;
7062
7063   /* If we're debugging a multi-threaded program, then we want
7064      momentary breakpoints to be active in only a single thread of
7065      control.  */
7066   if (in_thread_list (inferior_ptid))
7067     b->thread = pid_to_thread_id (inferior_ptid);
7068
7069   update_global_location_list_nothrow (1);
7070
7071   return b;
7072 }
7073
7074 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
7075    ORIG is NULL.  */
7076
7077 struct breakpoint *
7078 clone_momentary_breakpoint (struct breakpoint *orig)
7079 {
7080   struct breakpoint *copy;
7081
7082   /* If there's nothing to clone, then return nothing.  */
7083   if (orig == NULL)
7084     return NULL;
7085
7086   copy = set_raw_breakpoint_without_location (orig->gdbarch, orig->type);
7087   copy->loc = allocate_bp_location (copy);
7088   set_breakpoint_location_function (copy->loc, 1);
7089
7090   copy->loc->gdbarch = orig->loc->gdbarch;
7091   copy->loc->requested_address = orig->loc->requested_address;
7092   copy->loc->address = orig->loc->address;
7093   copy->loc->section = orig->loc->section;
7094   copy->loc->pspace = orig->loc->pspace;
7095
7096   if (orig->source_file == NULL)
7097     copy->source_file = NULL;
7098   else
7099     copy->source_file = xstrdup (orig->source_file);
7100
7101   copy->line_number = orig->line_number;
7102   copy->frame_id = orig->frame_id;
7103   copy->thread = orig->thread;
7104   copy->pspace = orig->pspace;
7105
7106   copy->enable_state = bp_enabled;
7107   copy->disposition = disp_donttouch;
7108   copy->number = internal_breakpoint_number--;
7109
7110   update_global_location_list_nothrow (0);
7111   return copy;
7112 }
7113
7114 struct breakpoint *
7115 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
7116                                 enum bptype type)
7117 {
7118   struct symtab_and_line sal;
7119
7120   sal = find_pc_line (pc, 0);
7121   sal.pc = pc;
7122   sal.section = find_pc_overlay (pc);
7123   sal.explicit_pc = 1;
7124
7125   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
7126 }
7127 \f
7128
7129 /* Tell the user we have just set a breakpoint B.  */
7130
7131 static void
7132 mention (struct breakpoint *b)
7133 {
7134   int say_where = 0;
7135   struct cleanup *ui_out_chain;
7136   struct value_print_options opts;
7137
7138   get_user_print_options (&opts);
7139
7140   if (b->ops != NULL && b->ops->print_mention != NULL)
7141     b->ops->print_mention (b);
7142   else
7143     switch (b->type)
7144       {
7145       case bp_none:
7146         printf_filtered (_("(apparently deleted?) Eventpoint %d: "),
7147                          b->number);
7148         break;
7149       case bp_watchpoint:
7150         ui_out_text (uiout, "Watchpoint ");
7151         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
7152         ui_out_field_int (uiout, "number", b->number);
7153         ui_out_text (uiout, ": ");
7154         ui_out_field_string (uiout, "exp", b->exp_string);
7155         do_cleanups (ui_out_chain);
7156         break;
7157       case bp_hardware_watchpoint:
7158         ui_out_text (uiout, "Hardware watchpoint ");
7159         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
7160         ui_out_field_int (uiout, "number", b->number);
7161         ui_out_text (uiout, ": ");
7162         ui_out_field_string (uiout, "exp", b->exp_string);
7163         do_cleanups (ui_out_chain);
7164         break;
7165       case bp_read_watchpoint:
7166         ui_out_text (uiout, "Hardware read watchpoint ");
7167         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
7168         ui_out_field_int (uiout, "number", b->number);
7169         ui_out_text (uiout, ": ");
7170         ui_out_field_string (uiout, "exp", b->exp_string);
7171         do_cleanups (ui_out_chain);
7172         break;
7173       case bp_access_watchpoint:
7174         ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
7175         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
7176         ui_out_field_int (uiout, "number", b->number);
7177         ui_out_text (uiout, ": ");
7178         ui_out_field_string (uiout, "exp", b->exp_string);
7179         do_cleanups (ui_out_chain);
7180         break;
7181       case bp_breakpoint:
7182       case bp_gnu_ifunc_resolver:
7183         if (ui_out_is_mi_like_p (uiout))
7184           {
7185             say_where = 0;
7186             break;
7187           }
7188         if (b->disposition == disp_del)
7189           printf_filtered (_("Temporary breakpoint"));
7190         else
7191           printf_filtered (_("Breakpoint"));
7192         printf_filtered (_(" %d"), b->number);
7193         if (b->type == bp_gnu_ifunc_resolver)
7194           printf_filtered (_(" at gnu-indirect-function resolver"));
7195         say_where = 1;
7196         break;
7197       case bp_hardware_breakpoint:
7198         if (ui_out_is_mi_like_p (uiout))
7199           {
7200             say_where = 0;
7201             break;
7202           }
7203         printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
7204         say_where = 1;
7205         break;
7206       case bp_tracepoint:
7207         if (ui_out_is_mi_like_p (uiout))
7208           {
7209             say_where = 0;
7210             break;
7211           }
7212         printf_filtered (_("Tracepoint"));
7213         printf_filtered (_(" %d"), b->number);
7214         say_where = 1;
7215         break;
7216       case bp_fast_tracepoint:
7217         if (ui_out_is_mi_like_p (uiout))
7218           {
7219             say_where = 0;
7220             break;
7221           }
7222         printf_filtered (_("Fast tracepoint"));
7223         printf_filtered (_(" %d"), b->number);
7224         say_where = 1;
7225         break;
7226       case bp_static_tracepoint:
7227         if (ui_out_is_mi_like_p (uiout))
7228           {
7229             say_where = 0;
7230             break;
7231           }
7232         printf_filtered (_("Static tracepoint"));
7233         printf_filtered (_(" %d"), b->number);
7234         say_where = 1;
7235         break;
7236
7237       case bp_until:
7238       case bp_finish:
7239       case bp_longjmp:
7240       case bp_longjmp_resume:
7241       case bp_exception:
7242       case bp_exception_resume:
7243       case bp_step_resume:
7244       case bp_hp_step_resume:
7245       case bp_call_dummy:
7246       case bp_std_terminate:
7247       case bp_watchpoint_scope:
7248       case bp_shlib_event:
7249       case bp_thread_event:
7250       case bp_overlay_event:
7251       case bp_jit_event:
7252       case bp_longjmp_master:
7253       case bp_std_terminate_master:
7254       case bp_exception_master:
7255       case bp_gnu_ifunc_resolver_return:
7256         break;
7257       }
7258
7259   if (say_where)
7260     {
7261       /* i18n: cagney/2005-02-11: Below needs to be merged into a
7262          single string.  */
7263       if (b->loc == NULL)
7264         {
7265           printf_filtered (_(" (%s) pending."), b->addr_string);
7266         }
7267       else
7268         {
7269           if (opts.addressprint || b->source_file == NULL)
7270             {
7271               printf_filtered (" at ");
7272               fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
7273                               gdb_stdout);
7274             }
7275           if (b->source_file)
7276             printf_filtered (": file %s, line %d.",
7277                              b->source_file, b->line_number);
7278           
7279           if (b->loc->next)
7280             {
7281               struct bp_location *loc = b->loc;
7282               int n = 0;
7283               for (; loc; loc = loc->next)
7284                 ++n;
7285               printf_filtered (" (%d locations)", n);           
7286             }
7287
7288         }
7289     }
7290   if (ui_out_is_mi_like_p (uiout))
7291     return;
7292   printf_filtered ("\n");
7293 }
7294 \f
7295
7296 static struct bp_location *
7297 add_location_to_breakpoint (struct breakpoint *b,
7298                             const struct symtab_and_line *sal)
7299 {
7300   struct bp_location *loc, **tmp;
7301
7302   loc = allocate_bp_location (b);
7303   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
7304     ;
7305   *tmp = loc;
7306   loc->gdbarch = get_sal_arch (*sal);
7307   if (!loc->gdbarch)
7308     loc->gdbarch = b->gdbarch;
7309   loc->requested_address = sal->pc;
7310   loc->address = adjust_breakpoint_address (loc->gdbarch,
7311                                             loc->requested_address, b->type);
7312   loc->pspace = sal->pspace;
7313   gdb_assert (loc->pspace != NULL);
7314   loc->section = sal->section;
7315
7316   set_breakpoint_location_function (loc,
7317                                     sal->explicit_pc || sal->explicit_line);
7318   return loc;
7319 }
7320 \f
7321
7322 /* Return 1 if LOC is pointing to a permanent breakpoint, 
7323    return 0 otherwise.  */
7324
7325 static int
7326 bp_loc_is_permanent (struct bp_location *loc)
7327 {
7328   int len;
7329   CORE_ADDR addr;
7330   const gdb_byte *brk;
7331   gdb_byte *target_mem;
7332   struct cleanup *cleanup;
7333   int retval = 0;
7334
7335   gdb_assert (loc != NULL);
7336
7337   addr = loc->address;
7338   brk = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
7339
7340   /* Software breakpoints unsupported?  */
7341   if (brk == NULL)
7342     return 0;
7343
7344   target_mem = alloca (len);
7345
7346   /* Enable the automatic memory restoration from breakpoints while
7347      we read the memory.  Otherwise we could say about our temporary
7348      breakpoints they are permanent.  */
7349   cleanup = save_current_space_and_thread ();
7350
7351   switch_to_program_space_and_thread (loc->pspace);
7352   make_show_memory_breakpoints_cleanup (0);
7353
7354   if (target_read_memory (loc->address, target_mem, len) == 0
7355       && memcmp (target_mem, brk, len) == 0)
7356     retval = 1;
7357
7358   do_cleanups (cleanup);
7359
7360   return retval;
7361 }
7362
7363
7364
7365 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
7366    as textual description of the location, and COND_STRING
7367    as condition expression.  */
7368
7369 static void
7370 create_breakpoint_sal (struct gdbarch *gdbarch,
7371                        struct symtabs_and_lines sals, char *addr_string,
7372                        char *cond_string,
7373                        enum bptype type, enum bpdisp disposition,
7374                        int thread, int task, int ignore_count,
7375                        struct breakpoint_ops *ops, int from_tty,
7376                        int enabled, int internal, int display_canonical)
7377 {
7378   struct breakpoint *b = NULL;
7379   int i;
7380
7381   if (type == bp_hardware_breakpoint)
7382     {
7383       int i = hw_breakpoint_used_count ();
7384       int target_resources_ok = 
7385         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
7386                                             i + 1, 0);
7387       if (target_resources_ok == 0)
7388         error (_("No hardware breakpoint support in the target."));
7389       else if (target_resources_ok < 0)
7390         error (_("Hardware breakpoints used exceeds limit."));
7391     }
7392
7393   gdb_assert (sals.nelts > 0);
7394
7395   for (i = 0; i < sals.nelts; ++i)
7396     {
7397       struct symtab_and_line sal = sals.sals[i];
7398       struct bp_location *loc;
7399
7400       if (from_tty)
7401         {
7402           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
7403           if (!loc_gdbarch)
7404             loc_gdbarch = gdbarch;
7405
7406           describe_other_breakpoints (loc_gdbarch,
7407                                       sal.pspace, sal.pc, sal.section, thread);
7408         }
7409
7410       if (i == 0)
7411         {
7412           b = set_raw_breakpoint (gdbarch, sal, type);
7413           set_breakpoint_number (internal, b);
7414           b->thread = thread;
7415           b->task = task;
7416   
7417           b->cond_string = cond_string;
7418           b->ignore_count = ignore_count;
7419           b->enable_state = enabled ? bp_enabled : bp_disabled;
7420           b->disposition = disposition;
7421           b->pspace = sals.sals[0].pspace;
7422
7423           if (type == bp_static_tracepoint)
7424             {
7425               struct static_tracepoint_marker marker;
7426
7427               if (is_marker_spec (addr_string))
7428                 {
7429                   /* We already know the marker exists, otherwise, we
7430                      wouldn't see a sal for it.  */
7431                   char *p = &addr_string[3];
7432                   char *endp;
7433                   char *marker_str;
7434                   int i;
7435
7436                   p = skip_spaces (p);
7437
7438                   endp = skip_to_space (p);
7439
7440                   marker_str = savestring (p, endp - p);
7441                   b->static_trace_marker_id = marker_str;
7442
7443                   printf_filtered (_("Probed static tracepoint "
7444                                      "marker \"%s\"\n"),
7445                                    b->static_trace_marker_id);
7446                 }
7447               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
7448                 {
7449                   b->static_trace_marker_id = xstrdup (marker.str_id);
7450                   release_static_tracepoint_marker (&marker);
7451
7452                   printf_filtered (_("Probed static tracepoint "
7453                                      "marker \"%s\"\n"),
7454                                    b->static_trace_marker_id);
7455                 }
7456               else
7457                 warning (_("Couldn't determine the static "
7458                            "tracepoint marker to probe"));
7459             }
7460
7461           if (enabled && b->pspace->executing_startup
7462               && (b->type == bp_breakpoint
7463                   || b->type == bp_hardware_breakpoint))
7464             b->enable_state = bp_startup_disabled;
7465
7466           loc = b->loc;
7467         }
7468       else
7469         {
7470           loc = add_location_to_breakpoint (b, &sal);
7471         }
7472
7473       if (bp_loc_is_permanent (loc))
7474         make_breakpoint_permanent (b);
7475
7476       if (b->cond_string)
7477         {
7478           char *arg = b->cond_string;
7479           loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
7480           if (*arg)
7481               error (_("Garbage %s follows condition"), arg);
7482         }
7483     }   
7484
7485   b->display_canonical = display_canonical;
7486   if (addr_string)
7487     b->addr_string = addr_string;
7488   else
7489     /* addr_string has to be used or breakpoint_re_set will delete
7490        me.  */
7491     b->addr_string
7492       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7493
7494   b->ops = ops;
7495   /* Do not mention breakpoints with a negative number, but do
7496      notify observers.  */
7497   if (!internal)
7498     mention (b);
7499   observer_notify_breakpoint_created (b);
7500 }
7501
7502 /* Remove element at INDEX_TO_REMOVE from SAL, shifting other
7503    elements to fill the void space.  */
7504 static void
7505 remove_sal (struct symtabs_and_lines *sal, int index_to_remove)
7506 {
7507   int i = index_to_remove+1;
7508   int last_index = sal->nelts-1;
7509
7510   for (;i <= last_index; ++i)
7511     sal->sals[i-1] = sal->sals[i];
7512
7513   --(sal->nelts);
7514 }
7515
7516 /* If appropriate, obtains all sals that correspond to the same file
7517    and line as SAL, in all program spaces.  Users debugging with IDEs,
7518    will want to set a breakpoint at foo.c:line, and not really care
7519    about program spaces.  This is done only if SAL does not have
7520    explicit PC and has line and file information.  If we got just a
7521    single expanded sal, return the original.
7522
7523    Otherwise, if SAL.explicit_line is not set, filter out all sals for
7524    which the name of enclosing function is different from SAL.  This
7525    makes sure that if we have breakpoint originally set in template
7526    instantiation, say foo<int>(), we won't expand SAL to locations at
7527    the same line in all existing instantiations of 'foo'.  */
7528
7529 static struct symtabs_and_lines
7530 expand_line_sal_maybe (struct symtab_and_line sal)
7531 {
7532   struct symtabs_and_lines expanded;
7533   CORE_ADDR original_pc = sal.pc;
7534   char *original_function = NULL;
7535   int found;
7536   int i;
7537   struct cleanup *old_chain;
7538
7539   /* If we have explicit pc, don't expand.
7540      If we have no line number, we can't expand.  */
7541   if (sal.explicit_pc || sal.line == 0 || sal.symtab == NULL)
7542     {
7543       expanded.nelts = 1;
7544       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
7545       expanded.sals[0] = sal;
7546       return expanded;
7547     }
7548
7549   sal.pc = 0;
7550
7551   old_chain = save_current_space_and_thread ();
7552
7553   switch_to_program_space_and_thread (sal.pspace);
7554
7555   find_pc_partial_function (original_pc, &original_function, NULL, NULL);
7556
7557   /* Note that expand_line_sal visits *all* program spaces.  */
7558   expanded = expand_line_sal (sal);
7559
7560   if (expanded.nelts == 1)
7561     {
7562       /* We had one sal, we got one sal.  Return that sal, adjusting it
7563          past the function prologue if necessary.  */
7564       xfree (expanded.sals);
7565       expanded.nelts = 1;
7566       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
7567       sal.pc = original_pc;
7568       expanded.sals[0] = sal;
7569       skip_prologue_sal (&expanded.sals[0]);
7570       do_cleanups (old_chain);
7571       return expanded;      
7572     }
7573
7574   if (!sal.explicit_line)
7575     {
7576       CORE_ADDR func_addr, func_end;
7577       for (i = 0; i < expanded.nelts; ++i)
7578         {
7579           CORE_ADDR pc = expanded.sals[i].pc;
7580           char *this_function;
7581
7582           /* We need to switch threads as well since we're about to
7583              read memory.  */
7584           switch_to_program_space_and_thread (expanded.sals[i].pspace);
7585
7586           if (find_pc_partial_function (pc, &this_function, 
7587                                         &func_addr, &func_end))
7588             {
7589               if (this_function
7590                   && strcmp (this_function, original_function) != 0)
7591                 {
7592                   remove_sal (&expanded, i);
7593                   --i;
7594                 }
7595             }
7596         }
7597     }
7598
7599   /* Skip the function prologue if necessary.  */
7600   for (i = 0; i < expanded.nelts; ++i)
7601     skip_prologue_sal (&expanded.sals[i]);
7602
7603   do_cleanups (old_chain);
7604
7605   if (expanded.nelts <= 1)
7606     {
7607       /* This is un ugly workaround.  If we get zero expanded sals
7608          then something is really wrong.  Fix that by returning the
7609          original sal.  */
7610
7611       xfree (expanded.sals);
7612       expanded.nelts = 1;
7613       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
7614       sal.pc = original_pc;
7615       expanded.sals[0] = sal;
7616       return expanded;      
7617     }
7618
7619   if (original_pc)
7620     {
7621       found = 0;
7622       for (i = 0; i < expanded.nelts; ++i)
7623         if (expanded.sals[i].pc == original_pc)
7624           {
7625             found = 1;
7626             break;
7627           }
7628       gdb_assert (found);
7629     }
7630
7631   return expanded;
7632 }
7633
7634 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
7635    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
7636    value.  COND_STRING, if not NULL, specified the condition to be
7637    used for all breakpoints.  Essentially the only case where
7638    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
7639    function.  In that case, it's still not possible to specify
7640    separate conditions for different overloaded functions, so
7641    we take just a single condition string.
7642    
7643    NOTE: If the function succeeds, the caller is expected to cleanup
7644    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
7645    array contents).  If the function fails (error() is called), the
7646    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
7647    COND and SALS arrays and each of those arrays contents.  */
7648
7649 static void
7650 create_breakpoints_sal (struct gdbarch *gdbarch,
7651                         struct symtabs_and_lines sals,
7652                         struct linespec_result *canonical,
7653                         char *cond_string,
7654                         enum bptype type, enum bpdisp disposition,
7655                         int thread, int task, int ignore_count,
7656                         struct breakpoint_ops *ops, int from_tty,
7657                         int enabled, int internal)
7658 {
7659   int i;
7660
7661   for (i = 0; i < sals.nelts; ++i)
7662     {
7663       struct symtabs_and_lines expanded = 
7664         expand_line_sal_maybe (sals.sals[i]);
7665
7666       create_breakpoint_sal (gdbarch, expanded, canonical->canonical[i],
7667                              cond_string, type, disposition,
7668                              thread, task, ignore_count, ops,
7669                              from_tty, enabled, internal,
7670                              canonical->special_display);
7671     }
7672 }
7673
7674 /* Parse ADDRESS which is assumed to be a SAL specification possibly
7675    followed by conditionals.  On return, SALS contains an array of SAL
7676    addresses found.  ADDR_STRING contains a vector of (canonical)
7677    address strings.  ADDRESS points to the end of the SAL.
7678
7679    The array and the line spec strings are allocated on the heap, it is
7680    the caller's responsibility to free them.  */
7681
7682 static void
7683 parse_breakpoint_sals (char **address,
7684                        struct symtabs_and_lines *sals,
7685                        struct linespec_result *canonical)
7686 {
7687   char *addr_start = *address;
7688
7689   /* If no arg given, or if first arg is 'if ', use the default
7690      breakpoint.  */
7691   if ((*address) == NULL
7692       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
7693     {
7694       if (default_breakpoint_valid)
7695         {
7696           struct symtab_and_line sal;
7697
7698           init_sal (&sal);              /* Initialize to zeroes.  */
7699           sals->sals = (struct symtab_and_line *)
7700             xmalloc (sizeof (struct symtab_and_line));
7701           sal.pc = default_breakpoint_address;
7702           sal.line = default_breakpoint_line;
7703           sal.symtab = default_breakpoint_symtab;
7704           sal.pspace = default_breakpoint_pspace;
7705           sal.section = find_pc_overlay (sal.pc);
7706
7707           /* "break" without arguments is equivalent to "break *PC"
7708              where PC is the default_breakpoint_address.  So make sure
7709              to set sal.explicit_pc to prevent GDB from trying to
7710              expand the list of sals to include all other instances
7711              with the same symtab and line.  */
7712           sal.explicit_pc = 1;
7713
7714           sals->sals[0] = sal;
7715           sals->nelts = 1;
7716         }
7717       else
7718         error (_("No default breakpoint address now."));
7719     }
7720   else
7721     {
7722       /* Force almost all breakpoints to be in terms of the
7723          current_source_symtab (which is decode_line_1's default).
7724          This should produce the results we want almost all of the
7725          time while leaving default_breakpoint_* alone.
7726
7727          ObjC: However, don't match an Objective-C method name which
7728          may have a '+' or '-' succeeded by a '[' */
7729          
7730       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
7731                         
7732       if (default_breakpoint_valid
7733           && (!cursal.symtab
7734               || ((strchr ("+-", (*address)[0]) != NULL)
7735                   && ((*address)[1] != '['))))
7736         *sals = decode_line_1 (address, 1, default_breakpoint_symtab,
7737                                default_breakpoint_line, canonical);
7738       else
7739         *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0,
7740                                canonical);
7741     }
7742   /* For any SAL that didn't have a canonical string, fill one in.  */
7743   if (sals->nelts > 0 && canonical->canonical == NULL)
7744     canonical->canonical = xcalloc (sals->nelts, sizeof (char *));
7745   if (addr_start != (*address))
7746     {
7747       int i;
7748
7749       for (i = 0; i < sals->nelts; i++)
7750         {
7751           /* Add the string if not present.  */
7752           if (canonical->canonical[i] == NULL)
7753             canonical->canonical[i] = savestring (addr_start, 
7754                                                   (*address) - addr_start);
7755         }
7756     }
7757 }
7758
7759
7760 /* Convert each SAL into a real PC.  Verify that the PC can be
7761    inserted as a breakpoint.  If it can't throw an error.  */
7762
7763 static void
7764 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
7765 {    
7766   int i;
7767
7768   for (i = 0; i < sals->nelts; i++)
7769     resolve_sal_pc (&sals->sals[i]);
7770 }
7771
7772 /* Fast tracepoints may have restrictions on valid locations.  For
7773    instance, a fast tracepoint using a jump instead of a trap will
7774    likely have to overwrite more bytes than a trap would, and so can
7775    only be placed where the instruction is longer than the jump, or a
7776    multi-instruction sequence does not have a jump into the middle of
7777    it, etc.  */
7778
7779 static void
7780 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
7781                             struct symtabs_and_lines *sals)
7782 {
7783   int i, rslt;
7784   struct symtab_and_line *sal;
7785   char *msg;
7786   struct cleanup *old_chain;
7787
7788   for (i = 0; i < sals->nelts; i++)
7789     {
7790       sal = &sals->sals[i];
7791
7792       rslt = gdbarch_fast_tracepoint_valid_at (gdbarch, sal->pc,
7793                                                NULL, &msg);
7794       old_chain = make_cleanup (xfree, msg);
7795
7796       if (!rslt)
7797         error (_("May not have a fast tracepoint at 0x%s%s"),
7798                paddress (gdbarch, sal->pc), (msg ? msg : ""));
7799
7800       do_cleanups (old_chain);
7801     }
7802 }
7803
7804 /* Given TOK, a string specification of condition and thread, as
7805    accepted by the 'break' command, extract the condition
7806    string and thread number and set *COND_STRING and *THREAD.
7807    PC identifies the context at which the condition should be parsed.
7808    If no condition is found, *COND_STRING is set to NULL.
7809    If no thread is found, *THREAD is set to -1.  */
7810 static void 
7811 find_condition_and_thread (char *tok, CORE_ADDR pc, 
7812                            char **cond_string, int *thread, int *task)
7813 {
7814   *cond_string = NULL;
7815   *thread = -1;
7816   while (tok && *tok)
7817     {
7818       char *end_tok;
7819       int toklen;
7820       char *cond_start = NULL;
7821       char *cond_end = NULL;
7822
7823       tok = skip_spaces (tok);
7824       
7825       end_tok = skip_to_space (tok);
7826       
7827       toklen = end_tok - tok;
7828       
7829       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
7830         {
7831           struct expression *expr;
7832
7833           tok = cond_start = end_tok + 1;
7834           expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
7835           xfree (expr);
7836           cond_end = tok;
7837           *cond_string = savestring (cond_start, 
7838                                      cond_end - cond_start);
7839         }
7840       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
7841         {
7842           char *tmptok;
7843           
7844           tok = end_tok + 1;
7845           tmptok = tok;
7846           *thread = strtol (tok, &tok, 0);
7847           if (tok == tmptok)
7848             error (_("Junk after thread keyword."));
7849           if (!valid_thread_id (*thread))
7850             error (_("Unknown thread %d."), *thread);
7851         }
7852       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
7853         {
7854           char *tmptok;
7855
7856           tok = end_tok + 1;
7857           tmptok = tok;
7858           *task = strtol (tok, &tok, 0);
7859           if (tok == tmptok)
7860             error (_("Junk after task keyword."));
7861           if (!valid_task_id (*task))
7862             error (_("Unknown task %d."), *task);
7863         }
7864       else
7865         error (_("Junk at end of arguments."));
7866     }
7867 }
7868
7869 /* Decode a static tracepoint marker spec.  */
7870
7871 static struct symtabs_and_lines
7872 decode_static_tracepoint_spec (char **arg_p)
7873 {
7874   VEC(static_tracepoint_marker_p) *markers = NULL;
7875   struct symtabs_and_lines sals;
7876   struct symtab_and_line sal;
7877   struct symbol *sym;
7878   struct cleanup *old_chain;
7879   char *p = &(*arg_p)[3];
7880   char *endp;
7881   char *marker_str;
7882   int i;
7883
7884   p = skip_spaces (p);
7885
7886   endp = skip_to_space (p);
7887
7888   marker_str = savestring (p, endp - p);
7889   old_chain = make_cleanup (xfree, marker_str);
7890
7891   markers = target_static_tracepoint_markers_by_strid (marker_str);
7892   if (VEC_empty(static_tracepoint_marker_p, markers))
7893     error (_("No known static tracepoint marker named %s"), marker_str);
7894
7895   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
7896   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
7897
7898   for (i = 0; i < sals.nelts; i++)
7899     {
7900       struct static_tracepoint_marker *marker;
7901
7902       marker = VEC_index (static_tracepoint_marker_p, markers, i);
7903
7904       init_sal (&sals.sals[i]);
7905
7906       sals.sals[i] = find_pc_line (marker->address, 0);
7907       sals.sals[i].pc = marker->address;
7908
7909       release_static_tracepoint_marker (marker);
7910     }
7911
7912   do_cleanups (old_chain);
7913
7914   *arg_p = endp;
7915   return sals;
7916 }
7917
7918 /* Set a breakpoint.  This function is shared between CLI and MI
7919    functions for setting a breakpoint.  This function has two major
7920    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
7921    parameter.  If non-zero, the function will parse arg, extracting
7922    breakpoint location, address and thread.  Otherwise, ARG is just
7923    the location of breakpoint, with condition and thread specified by
7924    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
7925    the breakpoint number will be allocated from the internal
7926    breakpoint count.  Returns true if any breakpoint was created;
7927    false otherwise.  */
7928
7929 int
7930 create_breakpoint (struct gdbarch *gdbarch,
7931                    char *arg, char *cond_string, int thread,
7932                    int parse_condition_and_thread,
7933                    int tempflag, enum bptype type_wanted,
7934                    int ignore_count,
7935                    enum auto_boolean pending_break_support,
7936                    struct breakpoint_ops *ops,
7937                    int from_tty, int enabled, int internal)
7938 {
7939   volatile struct gdb_exception e;
7940   struct symtabs_and_lines sals;
7941   struct symtab_and_line pending_sal;
7942   char *copy_arg;
7943   char *addr_start = arg;
7944   struct linespec_result canonical;
7945   struct cleanup *old_chain;
7946   struct cleanup *bkpt_chain = NULL;
7947   int i;
7948   int pending = 0;
7949   int task = 0;
7950   int prev_bkpt_count = breakpoint_count;
7951
7952   sals.sals = NULL;
7953   sals.nelts = 0;
7954   init_linespec_result (&canonical);
7955
7956   if (type_wanted == bp_static_tracepoint && is_marker_spec (arg))
7957     {
7958       int i;
7959
7960       sals = decode_static_tracepoint_spec (&arg);
7961
7962       copy_arg = savestring (addr_start, arg - addr_start);
7963       canonical.canonical = xcalloc (sals.nelts, sizeof (char *));
7964       for (i = 0; i < sals.nelts; i++)
7965         canonical.canonical[i] = xstrdup (copy_arg);
7966       goto done;
7967     }
7968
7969   TRY_CATCH (e, RETURN_MASK_ALL)
7970     {
7971       parse_breakpoint_sals (&arg, &sals, &canonical);
7972     }
7973
7974   /* If caller is interested in rc value from parse, set value.  */
7975   switch (e.reason)
7976     {
7977     case RETURN_QUIT:
7978       throw_exception (e);
7979     case RETURN_ERROR:
7980       switch (e.error)
7981         {
7982         case NOT_FOUND_ERROR:
7983
7984           /* If pending breakpoint support is turned off, throw
7985              error.  */
7986
7987           if (pending_break_support == AUTO_BOOLEAN_FALSE)
7988             throw_exception (e);
7989
7990           exception_print (gdb_stderr, e);
7991
7992           /* If pending breakpoint support is auto query and the user
7993              selects no, then simply return the error code.  */
7994           if (pending_break_support == AUTO_BOOLEAN_AUTO
7995               && !nquery (_("Make breakpoint pending on "
7996                             "future shared library load? ")))
7997             return 0;
7998
7999           /* At this point, either the user was queried about setting
8000              a pending breakpoint and selected yes, or pending
8001              breakpoint behavior is on and thus a pending breakpoint
8002              is defaulted on behalf of the user.  */
8003           copy_arg = xstrdup (addr_start);
8004           canonical.canonical = &copy_arg;
8005           sals.nelts = 1;
8006           sals.sals = &pending_sal;
8007           pending_sal.pc = 0;
8008           pending = 1;
8009           break;
8010         default:
8011           throw_exception (e);
8012         }
8013       break;
8014     default:
8015       if (!sals.nelts)
8016         return 0;
8017     }
8018
8019   done:
8020
8021   /* Create a chain of things that always need to be cleaned up.  */
8022   old_chain = make_cleanup (null_cleanup, 0);
8023
8024   if (!pending)
8025     {
8026       /* Make sure that all storage allocated to SALS gets freed.  */
8027       make_cleanup (xfree, sals.sals);
8028       
8029       /* Cleanup the canonical array but not its contents.  */
8030       make_cleanup (xfree, canonical.canonical);
8031     }
8032
8033   /* ----------------------------- SNIP -----------------------------
8034      Anything added to the cleanup chain beyond this point is assumed
8035      to be part of a breakpoint.  If the breakpoint create succeeds
8036      then the memory is not reclaimed.  */
8037   bkpt_chain = make_cleanup (null_cleanup, 0);
8038
8039   /* Mark the contents of the canonical for cleanup.  These go on
8040      the bkpt_chain and only occur if the breakpoint create fails.  */
8041   for (i = 0; i < sals.nelts; i++)
8042     {
8043       if (canonical.canonical[i] != NULL)
8044         make_cleanup (xfree, canonical.canonical[i]);
8045     }
8046
8047   /* Resolve all line numbers to PC's and verify that the addresses
8048      are ok for the target.  */
8049   if (!pending)
8050     breakpoint_sals_to_pc (&sals);
8051
8052   /* Fast tracepoints may have additional restrictions on location.  */
8053   if (type_wanted == bp_fast_tracepoint)
8054     check_fast_tracepoint_sals (gdbarch, &sals);
8055
8056   /* Verify that condition can be parsed, before setting any
8057      breakpoints.  Allocate a separate condition expression for each
8058      breakpoint.  */
8059   if (!pending)
8060     {
8061       if (parse_condition_and_thread)
8062         {
8063             /* Here we only parse 'arg' to separate condition
8064                from thread number, so parsing in context of first
8065                sal is OK.  When setting the breakpoint we'll 
8066                re-parse it in context of each sal.  */
8067             cond_string = NULL;
8068             thread = -1;
8069             find_condition_and_thread (arg, sals.sals[0].pc, &cond_string,
8070                                        &thread, &task);
8071             if (cond_string)
8072                 make_cleanup (xfree, cond_string);
8073         }
8074       else
8075         {
8076             /* Create a private copy of condition string.  */
8077             if (cond_string)
8078             {
8079                 cond_string = xstrdup (cond_string);
8080                 make_cleanup (xfree, cond_string);
8081             }
8082         }
8083
8084       /* If the user is creating a static tracepoint by marker id
8085          (strace -m MARKER_ID), then store the sals index, so that
8086          breakpoint_re_set can try to match up which of the newly
8087          found markers corresponds to this one, and, don't try to
8088          expand multiple locations for each sal, given than SALS
8089          already should contain all sals for MARKER_ID.  */
8090       if (type_wanted == bp_static_tracepoint
8091           && is_marker_spec (canonical.canonical[0]))
8092         {
8093           int i;
8094
8095           for (i = 0; i < sals.nelts; ++i)
8096             {
8097               struct symtabs_and_lines expanded;
8098               struct breakpoint *tp;
8099               struct cleanup *old_chain;
8100
8101               expanded.nelts = 1;
8102               expanded.sals = xmalloc (sizeof (struct symtab_and_line));
8103               expanded.sals[0] = sals.sals[i];
8104               old_chain = make_cleanup (xfree, expanded.sals);
8105
8106               create_breakpoint_sal (gdbarch, expanded, canonical.canonical[i],
8107                                      cond_string, type_wanted,
8108                                      tempflag ? disp_del : disp_donttouch,
8109                                      thread, task, ignore_count, ops,
8110                                      from_tty, enabled, internal,
8111                                      canonical.special_display);
8112
8113               do_cleanups (old_chain);
8114
8115               /* Get the tracepoint we just created.  */
8116               if (internal)
8117                 tp = get_breakpoint (internal_breakpoint_number);
8118               else
8119                 tp = get_breakpoint (breakpoint_count);
8120               gdb_assert (tp != NULL);
8121
8122               /* Given that its possible to have multiple markers with
8123                  the same string id, if the user is creating a static
8124                  tracepoint by marker id ("strace -m MARKER_ID"), then
8125                  store the sals index, so that breakpoint_re_set can
8126                  try to match up which of the newly found markers
8127                  corresponds to this one  */
8128               tp->static_trace_marker_id_idx = i;
8129             }
8130         }
8131       else
8132         create_breakpoints_sal (gdbarch, sals, &canonical, cond_string,
8133                                 type_wanted,
8134                                 tempflag ? disp_del : disp_donttouch,
8135                                 thread, task, ignore_count, ops, from_tty,
8136                                 enabled, internal);
8137     }
8138   else
8139     {
8140       struct breakpoint *b;
8141
8142       make_cleanup (xfree, copy_arg);
8143
8144       b = set_raw_breakpoint_without_location (gdbarch, type_wanted);
8145       set_breakpoint_number (internal, b);
8146       b->thread = -1;
8147       b->addr_string = canonical.canonical[0];
8148       b->cond_string = NULL;
8149       b->ignore_count = ignore_count;
8150       b->disposition = tempflag ? disp_del : disp_donttouch;
8151       b->condition_not_parsed = 1;
8152       b->ops = ops;
8153       b->enable_state = enabled ? bp_enabled : bp_disabled;
8154       b->pspace = current_program_space;
8155       b->py_bp_object = NULL;
8156
8157       if (enabled && b->pspace->executing_startup
8158           && (b->type == bp_breakpoint
8159               || b->type == bp_hardware_breakpoint))
8160         b->enable_state = bp_startup_disabled;
8161
8162       if (!internal)
8163         /* Do not mention breakpoints with a negative number, 
8164            but do notify observers.  */
8165         mention (b);
8166       observer_notify_breakpoint_created (b);
8167     }
8168   
8169   if (sals.nelts > 1)
8170     {
8171       warning (_("Multiple breakpoints were set.\nUse the "
8172                  "\"delete\" command to delete unwanted breakpoints."));
8173       prev_breakpoint_count = prev_bkpt_count;
8174     }
8175
8176   /* That's it.  Discard the cleanups for data inserted into the
8177      breakpoint.  */
8178   discard_cleanups (bkpt_chain);
8179   /* But cleanup everything else.  */
8180   do_cleanups (old_chain);
8181
8182   /* error call may happen here - have BKPT_CHAIN already discarded.  */
8183   update_global_location_list (1);
8184
8185   return 1;
8186 }
8187
8188 /* Set a breakpoint. 
8189    ARG is a string describing breakpoint address,
8190    condition, and thread.
8191    FLAG specifies if a breakpoint is hardware on,
8192    and if breakpoint is temporary, using BP_HARDWARE_FLAG
8193    and BP_TEMPFLAG.  */
8194    
8195 static void
8196 break_command_1 (char *arg, int flag, int from_tty)
8197 {
8198   int tempflag = flag & BP_TEMPFLAG;
8199   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
8200                              ? bp_hardware_breakpoint
8201                              : bp_breakpoint);
8202
8203   create_breakpoint (get_current_arch (),
8204                      arg,
8205                      NULL, 0, 1 /* parse arg */,
8206                      tempflag, type_wanted,
8207                      0 /* Ignore count */,
8208                      pending_break_support,
8209                      NULL /* breakpoint_ops */,
8210                      from_tty,
8211                      1 /* enabled */,
8212                      0 /* internal */);
8213 }
8214
8215
8216 /* Helper function for break_command_1 and disassemble_command.  */
8217
8218 void
8219 resolve_sal_pc (struct symtab_and_line *sal)
8220 {
8221   CORE_ADDR pc;
8222
8223   if (sal->pc == 0 && sal->symtab != NULL)
8224     {
8225       if (!find_line_pc (sal->symtab, sal->line, &pc))
8226         error (_("No line %d in file \"%s\"."),
8227                sal->line, sal->symtab->filename);
8228       sal->pc = pc;
8229
8230       /* If this SAL corresponds to a breakpoint inserted using a line
8231          number, then skip the function prologue if necessary.  */
8232       if (sal->explicit_line)
8233         skip_prologue_sal (sal);
8234     }
8235
8236   if (sal->section == 0 && sal->symtab != NULL)
8237     {
8238       struct blockvector *bv;
8239       struct block *b;
8240       struct symbol *sym;
8241
8242       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
8243       if (bv != NULL)
8244         {
8245           sym = block_linkage_function (b);
8246           if (sym != NULL)
8247             {
8248               fixup_symbol_section (sym, sal->symtab->objfile);
8249               sal->section = SYMBOL_OBJ_SECTION (sym);
8250             }
8251           else
8252             {
8253               /* It really is worthwhile to have the section, so we'll
8254                  just have to look harder. This case can be executed
8255                  if we have line numbers but no functions (as can
8256                  happen in assembly source).  */
8257
8258               struct minimal_symbol *msym;
8259               struct cleanup *old_chain = save_current_space_and_thread ();
8260
8261               switch_to_program_space_and_thread (sal->pspace);
8262
8263               msym = lookup_minimal_symbol_by_pc (sal->pc);
8264               if (msym)
8265                 sal->section = SYMBOL_OBJ_SECTION (msym);
8266
8267               do_cleanups (old_chain);
8268             }
8269         }
8270     }
8271 }
8272
8273 void
8274 break_command (char *arg, int from_tty)
8275 {
8276   break_command_1 (arg, 0, from_tty);
8277 }
8278
8279 void
8280 tbreak_command (char *arg, int from_tty)
8281 {
8282   break_command_1 (arg, BP_TEMPFLAG, from_tty);
8283 }
8284
8285 static void
8286 hbreak_command (char *arg, int from_tty)
8287 {
8288   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
8289 }
8290
8291 static void
8292 thbreak_command (char *arg, int from_tty)
8293 {
8294   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
8295 }
8296
8297 static void
8298 stop_command (char *arg, int from_tty)
8299 {
8300   printf_filtered (_("Specify the type of breakpoint to set.\n\
8301 Usage: stop in <function | address>\n\
8302        stop at <line>\n"));
8303 }
8304
8305 static void
8306 stopin_command (char *arg, int from_tty)
8307 {
8308   int badInput = 0;
8309
8310   if (arg == (char *) NULL)
8311     badInput = 1;
8312   else if (*arg != '*')
8313     {
8314       char *argptr = arg;
8315       int hasColon = 0;
8316
8317       /* Look for a ':'.  If this is a line number specification, then
8318          say it is bad, otherwise, it should be an address or
8319          function/method name.  */
8320       while (*argptr && !hasColon)
8321         {
8322           hasColon = (*argptr == ':');
8323           argptr++;
8324         }
8325
8326       if (hasColon)
8327         badInput = (*argptr != ':');    /* Not a class::method */
8328       else
8329         badInput = isdigit (*arg);      /* a simple line number */
8330     }
8331
8332   if (badInput)
8333     printf_filtered (_("Usage: stop in <function | address>\n"));
8334   else
8335     break_command_1 (arg, 0, from_tty);
8336 }
8337
8338 static void
8339 stopat_command (char *arg, int from_tty)
8340 {
8341   int badInput = 0;
8342
8343   if (arg == (char *) NULL || *arg == '*')      /* no line number */
8344     badInput = 1;
8345   else
8346     {
8347       char *argptr = arg;
8348       int hasColon = 0;
8349
8350       /* Look for a ':'.  If there is a '::' then get out, otherwise
8351          it is probably a line number.  */
8352       while (*argptr && !hasColon)
8353         {
8354           hasColon = (*argptr == ':');
8355           argptr++;
8356         }
8357
8358       if (hasColon)
8359         badInput = (*argptr == ':');    /* we have class::method */
8360       else
8361         badInput = !isdigit (*arg);     /* not a line number */
8362     }
8363
8364   if (badInput)
8365     printf_filtered (_("Usage: stop at <line>\n"));
8366   else
8367     break_command_1 (arg, 0, from_tty);
8368 }
8369
8370 /* Implement the "breakpoint_hit" breakpoint_ops method for
8371    ranged breakpoints.  */
8372
8373 static int
8374 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
8375                                   struct address_space *aspace,
8376                                   CORE_ADDR bp_addr)
8377 {
8378   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
8379                                          bl->length, aspace, bp_addr);
8380 }
8381
8382 /* Implement the "resources_needed" breakpoint_ops method for
8383    ranged breakpoints.  */
8384
8385 static int
8386 resources_needed_ranged_breakpoint (const struct bp_location *bl)
8387 {
8388   return target_ranged_break_num_registers ();
8389 }
8390
8391 /* Implement the "print_it" breakpoint_ops method for
8392    ranged breakpoints.  */
8393
8394 static enum print_stop_action
8395 print_it_ranged_breakpoint (struct breakpoint *b)
8396 {
8397   struct bp_location *bl = b->loc;
8398
8399   gdb_assert (b->type == bp_hardware_breakpoint);
8400
8401   /* Ranged breakpoints have only one location.  */
8402   gdb_assert (bl && bl->next == NULL);
8403
8404   annotate_breakpoint (b->number);
8405   if (b->disposition == disp_del)
8406     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
8407   else
8408     ui_out_text (uiout, "\nRanged breakpoint ");
8409   if (ui_out_is_mi_like_p (uiout))
8410     {
8411       ui_out_field_string (uiout, "reason",
8412                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
8413       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8414     }
8415   ui_out_field_int (uiout, "bkptno", b->number);
8416   ui_out_text (uiout, ", ");
8417
8418   return PRINT_SRC_AND_LOC;
8419 }
8420
8421 /* Implement the "print_one" breakpoint_ops method for
8422    ranged breakpoints.  */
8423
8424 static void
8425 print_one_ranged_breakpoint (struct breakpoint *b,
8426                              struct bp_location **last_loc)
8427 {
8428   struct bp_location *bl = b->loc;
8429   struct value_print_options opts;
8430
8431   /* Ranged breakpoints have only one location.  */
8432   gdb_assert (bl && bl->next == NULL);
8433
8434   get_user_print_options (&opts);
8435
8436   if (opts.addressprint)
8437     /* We don't print the address range here, it will be printed later
8438        by print_one_detail_ranged_breakpoint.  */
8439     ui_out_field_skip (uiout, "addr");
8440   annotate_field (5);
8441   print_breakpoint_location (b, bl);
8442   *last_loc = bl;
8443 }
8444
8445 /* Implement the "print_one_detail" breakpoint_ops method for
8446    ranged breakpoints.  */
8447
8448 static void
8449 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
8450                                     struct ui_out *uiout)
8451 {
8452   CORE_ADDR address_start, address_end;
8453   struct bp_location *bl = b->loc;
8454   struct ui_stream *stb = ui_out_stream_new (uiout);
8455   struct cleanup *cleanup = make_cleanup_ui_out_stream_delete (stb);
8456
8457   gdb_assert (bl);
8458
8459   address_start = bl->address;
8460   address_end = address_start + bl->length - 1;
8461
8462   ui_out_text (uiout, "\taddress range: ");
8463   fprintf_unfiltered (stb->stream, "[%s, %s]",
8464                       print_core_address (bl->gdbarch, address_start),
8465                       print_core_address (bl->gdbarch, address_end));
8466   ui_out_field_stream (uiout, "addr", stb);
8467   ui_out_text (uiout, "\n");
8468
8469   do_cleanups (cleanup);
8470 }
8471
8472 /* Implement the "print_mention" breakpoint_ops method for
8473    ranged breakpoints.  */
8474
8475 static void
8476 print_mention_ranged_breakpoint (struct breakpoint *b)
8477 {
8478   struct bp_location *bl = b->loc;
8479
8480   gdb_assert (bl);
8481   gdb_assert (b->type == bp_hardware_breakpoint);
8482
8483   if (ui_out_is_mi_like_p (uiout))
8484     return;
8485
8486   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
8487                    b->number, paddress (bl->gdbarch, bl->address),
8488                    paddress (bl->gdbarch, bl->address + bl->length - 1));
8489 }
8490
8491 /* Implement the "print_recreate" breakpoint_ops method for
8492    ranged breakpoints.  */
8493
8494 static void
8495 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
8496 {
8497   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
8498                       b->addr_string_range_end);
8499 }
8500
8501 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
8502
8503 static struct breakpoint_ops ranged_breakpoint_ops =
8504 {
8505   NULL, /* insert */
8506   NULL, /* remove */
8507   breakpoint_hit_ranged_breakpoint,
8508   resources_needed_ranged_breakpoint,
8509   NULL, /* works_in_software_mode */
8510   print_it_ranged_breakpoint,
8511   print_one_ranged_breakpoint,
8512   print_one_detail_ranged_breakpoint,
8513   print_mention_ranged_breakpoint,
8514   print_recreate_ranged_breakpoint
8515 };
8516
8517 /* Find the address where the end of the breakpoint range should be
8518    placed, given the SAL of the end of the range.  This is so that if
8519    the user provides a line number, the end of the range is set to the
8520    last instruction of the given line.  */
8521
8522 static CORE_ADDR
8523 find_breakpoint_range_end (struct symtab_and_line sal)
8524 {
8525   CORE_ADDR end;
8526
8527   /* If the user provided a PC value, use it.  Otherwise,
8528      find the address of the end of the given location.  */
8529   if (sal.explicit_pc)
8530     end = sal.pc;
8531   else
8532     {
8533       int ret;
8534       CORE_ADDR start;
8535
8536       ret = find_line_pc_range (sal, &start, &end);
8537       if (!ret)
8538         error (_("Could not find location of the end of the range."));
8539
8540       /* find_line_pc_range returns the start of the next line.  */
8541       end--;
8542     }
8543
8544   return end;
8545 }
8546
8547 /* Implement the "break-range" CLI command.  */
8548
8549 static void
8550 break_range_command (char *arg, int from_tty)
8551 {
8552   char *arg_start, *addr_string_start, *addr_string_end;
8553   struct linespec_result canonical_start, canonical_end;
8554   int bp_count, can_use_bp, length;
8555   CORE_ADDR end;
8556   struct breakpoint *b;
8557   struct symtab_and_line sal_start, sal_end;
8558   struct symtabs_and_lines sals_start, sals_end;
8559   struct cleanup *cleanup_bkpt;
8560
8561   /* We don't support software ranged breakpoints.  */
8562   if (target_ranged_break_num_registers () < 0)
8563     error (_("This target does not support hardware ranged breakpoints."));
8564
8565   bp_count = hw_breakpoint_used_count ();
8566   bp_count += target_ranged_break_num_registers ();
8567   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8568                                                    bp_count, 0);
8569   if (can_use_bp < 0)
8570     error (_("Hardware breakpoints used exceeds limit."));
8571
8572   if (arg == NULL || arg[0] == '\0')
8573     error(_("No address range specified."));
8574
8575   sals_start.sals = NULL;
8576   sals_start.nelts = 0;
8577   init_linespec_result (&canonical_start);
8578
8579   while (*arg == ' ' || *arg == '\t')
8580     arg++;
8581
8582   parse_breakpoint_sals (&arg, &sals_start, &canonical_start);
8583
8584   sal_start = sals_start.sals[0];
8585   addr_string_start = canonical_start.canonical[0];
8586   cleanup_bkpt = make_cleanup (xfree, addr_string_start);
8587   xfree (sals_start.sals);
8588   xfree (canonical_start.canonical);
8589
8590   if (arg[0] != ',')
8591     error (_("Too few arguments."));
8592   else if (sals_start.nelts == 0)
8593     error (_("Could not find location of the beginning of the range."));
8594   else if (sals_start.nelts != 1)
8595     error (_("Cannot create a ranged breakpoint with multiple locations."));
8596
8597   resolve_sal_pc (&sal_start);
8598
8599   arg++;        /* Skip the comma.  */
8600   while (*arg == ' ' || *arg == '\t')
8601     arg++;
8602
8603   /* Parse the end location.  */
8604
8605   sals_end.sals = NULL;
8606   sals_end.nelts = 0;
8607   init_linespec_result (&canonical_end);
8608   arg_start = arg;
8609
8610   /* We call decode_line_1 directly here instead of using
8611      parse_breakpoint_sals because we need to specify the start location's
8612      symtab and line as the default symtab and line for the end of the
8613      range.  This makes it possible to have ranges like "foo.c:27, +14",
8614      where +14 means 14 lines from the start location.  */
8615   sals_end = decode_line_1 (&arg, 1, sal_start.symtab, sal_start.line,
8616                             &canonical_end);
8617
8618   /* canonical_end can be NULL if it was of the form "*0xdeadbeef".  */
8619   if (canonical_end.canonical == NULL)
8620     canonical_end.canonical = xcalloc (1, sizeof (char *));
8621   /* Add the string if not present.  */
8622   if (arg_start != arg && canonical_end.canonical[0] == NULL)
8623     canonical_end.canonical[0] = savestring (arg_start, arg - arg_start);
8624
8625   sal_end = sals_end.sals[0];
8626   addr_string_end = canonical_end.canonical[0];
8627   make_cleanup (xfree, addr_string_end);
8628   xfree (sals_end.sals);
8629   xfree (canonical_end.canonical);
8630
8631   if (sals_end.nelts == 0)
8632     error (_("Could not find location of the end of the range."));
8633   else if (sals_end.nelts != 1)
8634     error (_("Cannot create a ranged breakpoint with multiple locations."));
8635
8636   resolve_sal_pc (&sal_end);
8637
8638   end = find_breakpoint_range_end (sal_end);
8639   if (sal_start.pc > end)
8640     error (_("Invalid address range, end preceeds start."));
8641
8642   length = end - sal_start.pc + 1;
8643   if (length < 0)
8644     /* Length overflowed.  */
8645     error (_("Address range too large."));
8646   else if (length == 1)
8647     {
8648       /* This range is simple enough to be handled by
8649          the `hbreak' command.  */
8650       hbreak_command (addr_string_start, 1);
8651
8652       do_cleanups (cleanup_bkpt);
8653
8654       return;
8655     }
8656
8657   /* Now set up the breakpoint.  */
8658   b = set_raw_breakpoint (get_current_arch (), sal_start,
8659                           bp_hardware_breakpoint);
8660   set_breakpoint_count (breakpoint_count + 1);
8661   b->number = breakpoint_count;
8662   b->disposition = disp_donttouch;
8663   b->addr_string = addr_string_start;
8664   b->addr_string_range_end = addr_string_end;
8665   b->ops = &ranged_breakpoint_ops;
8666   b->loc->length = length;
8667
8668   discard_cleanups (cleanup_bkpt);
8669
8670   mention (b);
8671   observer_notify_breakpoint_created (b);
8672   update_global_location_list (1);
8673 }
8674
8675 /*  Return non-zero if EXP is verified as constant.  Returned zero
8676     means EXP is variable.  Also the constant detection may fail for
8677     some constant expressions and in such case still falsely return
8678     zero.  */
8679 static int
8680 watchpoint_exp_is_const (const struct expression *exp)
8681 {
8682   int i = exp->nelts;
8683
8684   while (i > 0)
8685     {
8686       int oplenp, argsp;
8687
8688       /* We are only interested in the descriptor of each element.  */
8689       operator_length (exp, i, &oplenp, &argsp);
8690       i -= oplenp;
8691
8692       switch (exp->elts[i].opcode)
8693         {
8694         case BINOP_ADD:
8695         case BINOP_SUB:
8696         case BINOP_MUL:
8697         case BINOP_DIV:
8698         case BINOP_REM:
8699         case BINOP_MOD:
8700         case BINOP_LSH:
8701         case BINOP_RSH:
8702         case BINOP_LOGICAL_AND:
8703         case BINOP_LOGICAL_OR:
8704         case BINOP_BITWISE_AND:
8705         case BINOP_BITWISE_IOR:
8706         case BINOP_BITWISE_XOR:
8707         case BINOP_EQUAL:
8708         case BINOP_NOTEQUAL:
8709         case BINOP_LESS:
8710         case BINOP_GTR:
8711         case BINOP_LEQ:
8712         case BINOP_GEQ:
8713         case BINOP_REPEAT:
8714         case BINOP_COMMA:
8715         case BINOP_EXP:
8716         case BINOP_MIN:
8717         case BINOP_MAX:
8718         case BINOP_INTDIV:
8719         case BINOP_CONCAT:
8720         case BINOP_IN:
8721         case BINOP_RANGE:
8722         case TERNOP_COND:
8723         case TERNOP_SLICE:
8724         case TERNOP_SLICE_COUNT:
8725
8726         case OP_LONG:
8727         case OP_DOUBLE:
8728         case OP_DECFLOAT:
8729         case OP_LAST:
8730         case OP_COMPLEX:
8731         case OP_STRING:
8732         case OP_BITSTRING:
8733         case OP_ARRAY:
8734         case OP_TYPE:
8735         case OP_NAME:
8736         case OP_OBJC_NSSTRING:
8737
8738         case UNOP_NEG:
8739         case UNOP_LOGICAL_NOT:
8740         case UNOP_COMPLEMENT:
8741         case UNOP_ADDR:
8742         case UNOP_HIGH:
8743           /* Unary, binary and ternary operators: We have to check
8744              their operands.  If they are constant, then so is the
8745              result of that operation.  For instance, if A and B are
8746              determined to be constants, then so is "A + B".
8747
8748              UNOP_IND is one exception to the rule above, because the
8749              value of *ADDR is not necessarily a constant, even when
8750              ADDR is.  */
8751           break;
8752
8753         case OP_VAR_VALUE:
8754           /* Check whether the associated symbol is a constant.
8755
8756              We use SYMBOL_CLASS rather than TYPE_CONST because it's
8757              possible that a buggy compiler could mark a variable as
8758              constant even when it is not, and TYPE_CONST would return
8759              true in this case, while SYMBOL_CLASS wouldn't.
8760
8761              We also have to check for function symbols because they
8762              are always constant.  */
8763           {
8764             struct symbol *s = exp->elts[i + 2].symbol;
8765
8766             if (SYMBOL_CLASS (s) != LOC_BLOCK
8767                 && SYMBOL_CLASS (s) != LOC_CONST
8768                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
8769               return 0;
8770             break;
8771           }
8772
8773         /* The default action is to return 0 because we are using
8774            the optimistic approach here: If we don't know something,
8775            then it is not a constant.  */
8776         default:
8777           return 0;
8778         }
8779     }
8780
8781   return 1;
8782 }
8783
8784 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
8785
8786 static int
8787 insert_watchpoint (struct bp_location *bl)
8788 {
8789   int length = bl->owner->exact? 1 : bl->length;
8790
8791   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
8792                                    bl->owner->cond_exp);
8793 }
8794
8795 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
8796
8797 static int
8798 remove_watchpoint (struct bp_location *bl)
8799 {
8800   int length = bl->owner->exact? 1 : bl->length;
8801
8802   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
8803                                    bl->owner->cond_exp);
8804 }
8805
8806 /* Implement the "resources_needed" breakpoint_ops method for
8807    hardware watchpoints.  */
8808
8809 static int
8810 resources_needed_watchpoint (const struct bp_location *bl)
8811 {
8812   int length = bl->owner->exact? 1 : bl->length;
8813
8814   return target_region_ok_for_hw_watchpoint (bl->address, length);
8815 }
8816
8817 /* Implement the "works_in_software_mode" breakpoint_ops method for
8818    hardware watchpoints.  */
8819
8820 int
8821 works_in_software_mode_watchpoint (const struct breakpoint *b)
8822 {
8823   return b->type == bp_hardware_watchpoint;
8824 }
8825
8826 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
8827
8828 static struct breakpoint_ops watchpoint_breakpoint_ops =
8829 {
8830   insert_watchpoint,
8831   remove_watchpoint,
8832   NULL, /* breakpoint_hit */
8833   resources_needed_watchpoint,
8834   works_in_software_mode_watchpoint,
8835   NULL, /* print_it */
8836   NULL, /* print_one */
8837   NULL, /* print_one_detail */
8838   NULL, /* print_mention */
8839   NULL  /* print_recreate */
8840 };
8841
8842 /* Implement the "insert" breakpoint_ops method for
8843    masked hardware watchpoints.  */
8844
8845 static int
8846 insert_masked_watchpoint (struct bp_location *bl)
8847 {
8848   return target_insert_mask_watchpoint (bl->address, bl->owner->hw_wp_mask,
8849                                         bl->watchpoint_type);
8850 }
8851
8852 /* Implement the "remove" breakpoint_ops method for
8853    masked hardware watchpoints.  */
8854
8855 static int
8856 remove_masked_watchpoint (struct bp_location *bl)
8857 {
8858   return target_remove_mask_watchpoint (bl->address, bl->owner->hw_wp_mask,
8859                                         bl->watchpoint_type);
8860 }
8861
8862 /* Implement the "resources_needed" breakpoint_ops method for
8863    masked hardware watchpoints.  */
8864
8865 static int
8866 resources_needed_masked_watchpoint (const struct bp_location *bl)
8867 {
8868   return target_masked_watch_num_registers (bl->address,
8869                                             bl->owner->hw_wp_mask);
8870 }
8871
8872 /* Implement the "works_in_software_mode" breakpoint_ops method for
8873    masked hardware watchpoints.  */
8874
8875 static int
8876 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
8877 {
8878   return 0;
8879 }
8880
8881 /* Implement the "print_it" breakpoint_ops method for
8882    masked hardware watchpoints.  */
8883
8884 static enum print_stop_action
8885 print_it_masked_watchpoint (struct breakpoint *b)
8886 {
8887   /* Masked watchpoints have only one location.  */
8888   gdb_assert (b->loc && b->loc->next == NULL);
8889
8890   switch (b->type)
8891     {
8892     case bp_hardware_watchpoint:
8893       annotate_watchpoint (b->number);
8894       if (ui_out_is_mi_like_p (uiout))
8895         ui_out_field_string
8896           (uiout, "reason",
8897            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
8898       break;
8899
8900     case bp_read_watchpoint:
8901       if (ui_out_is_mi_like_p (uiout))
8902         ui_out_field_string
8903           (uiout, "reason",
8904            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
8905       break;
8906
8907     case bp_access_watchpoint:
8908       if (ui_out_is_mi_like_p (uiout))
8909         ui_out_field_string
8910           (uiout, "reason",
8911            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
8912       break;
8913     default:
8914       internal_error (__FILE__, __LINE__,
8915                       _("Invalid hardware watchpoint type."));
8916     }
8917
8918   mention (b);
8919   ui_out_text (uiout, _("\n\
8920 Check the underlying instruction at PC for the memory\n\
8921 address and value which triggered this watchpoint.\n"));
8922   ui_out_text (uiout, "\n");
8923
8924   /* More than one watchpoint may have been triggered.  */
8925   return PRINT_UNKNOWN;
8926 }
8927
8928 /* Implement the "print_one_detail" breakpoint_ops method for
8929    masked hardware watchpoints.  */
8930
8931 static void
8932 print_one_detail_masked_watchpoint (const struct breakpoint *b,
8933                                     struct ui_out *uiout)
8934 {
8935   /* Masked watchpoints have only one location.  */
8936   gdb_assert (b->loc && b->loc->next == NULL);
8937
8938   ui_out_text (uiout, "\tmask ");
8939   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, b->hw_wp_mask);
8940   ui_out_text (uiout, "\n");
8941 }
8942
8943 /* Implement the "print_mention" breakpoint_ops method for
8944    masked hardware watchpoints.  */
8945
8946 static void
8947 print_mention_masked_watchpoint (struct breakpoint *b)
8948 {
8949   struct cleanup *ui_out_chain;
8950
8951   switch (b->type)
8952     {
8953     case bp_hardware_watchpoint:
8954       ui_out_text (uiout, "Masked hardware watchpoint ");
8955       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
8956       break;
8957     case bp_read_watchpoint:
8958       ui_out_text (uiout, "Masked hardware read watchpoint ");
8959       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
8960       break;
8961     case bp_access_watchpoint:
8962       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
8963       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
8964       break;
8965     default:
8966       internal_error (__FILE__, __LINE__,
8967                       _("Invalid hardware watchpoint type."));
8968     }
8969
8970   ui_out_field_int (uiout, "number", b->number);
8971   ui_out_text (uiout, ": ");
8972   ui_out_field_string (uiout, "exp", b->exp_string);
8973   do_cleanups (ui_out_chain);
8974 }
8975
8976 /* Implement the "print_recreate" breakpoint_ops method for
8977    masked hardware watchpoints.  */
8978
8979 static void
8980 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
8981 {
8982   char tmp[40];
8983
8984   switch (b->type)
8985     {
8986     case bp_hardware_watchpoint:
8987       fprintf_unfiltered (fp, "watch");
8988       break;
8989     case bp_read_watchpoint:
8990       fprintf_unfiltered (fp, "rwatch");
8991       break;
8992     case bp_access_watchpoint:
8993       fprintf_unfiltered (fp, "awatch");
8994       break;
8995     default:
8996       internal_error (__FILE__, __LINE__,
8997                       _("Invalid hardware watchpoint type."));
8998     }
8999
9000   sprintf_vma (tmp, b->hw_wp_mask);
9001   fprintf_unfiltered (fp, " %s mask 0x%s", b->exp_string, tmp);
9002 }
9003
9004 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
9005
9006 static struct breakpoint_ops masked_watchpoint_breakpoint_ops =
9007 {
9008   insert_masked_watchpoint,
9009   remove_masked_watchpoint,
9010   NULL, /* breakpoint_hit */
9011   resources_needed_masked_watchpoint,
9012   works_in_software_mode_masked_watchpoint,
9013   print_it_masked_watchpoint,
9014   NULL, /* print_one */
9015   print_one_detail_masked_watchpoint,
9016   print_mention_masked_watchpoint,
9017   print_recreate_masked_watchpoint
9018 };
9019
9020 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
9021
9022 static int
9023 is_masked_watchpoint (const struct breakpoint *b)
9024 {
9025   return b->ops == &masked_watchpoint_breakpoint_ops;
9026 }
9027
9028 /* accessflag:  hw_write:  watch write, 
9029                 hw_read:   watch read, 
9030                 hw_access: watch access (read or write) */
9031 static void
9032 watch_command_1 (char *arg, int accessflag, int from_tty,
9033                  int just_location, int internal)
9034 {
9035   volatile struct gdb_exception e;
9036   struct breakpoint *b, *scope_breakpoint = NULL;
9037   struct expression *exp;
9038   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
9039   struct value *val, *mark, *result;
9040   struct frame_info *frame;
9041   char *exp_start = NULL;
9042   char *exp_end = NULL;
9043   char *tok, *end_tok;
9044   int toklen = -1;
9045   char *cond_start = NULL;
9046   char *cond_end = NULL;
9047   enum bptype bp_type;
9048   int thread = -1;
9049   int pc = 0;
9050   /* Flag to indicate whether we are going to use masks for
9051      the hardware watchpoint.  */
9052   int use_mask = 0;
9053   CORE_ADDR mask = 0;
9054
9055   /* Make sure that we actually have parameters to parse.  */
9056   if (arg != NULL && arg[0] != '\0')
9057     {
9058       char *value_start;
9059
9060       /* Look for "parameter value" pairs at the end
9061          of the arguments string.  */
9062       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
9063         {
9064           /* Skip whitespace at the end of the argument list.  */
9065           while (tok > arg && (*tok == ' ' || *tok == '\t'))
9066             tok--;
9067
9068           /* Find the beginning of the last token.
9069              This is the value of the parameter.  */
9070           while (tok > arg && (*tok != ' ' && *tok != '\t'))
9071             tok--;
9072           value_start = tok + 1;
9073
9074           /* Skip whitespace.  */
9075           while (tok > arg && (*tok == ' ' || *tok == '\t'))
9076             tok--;
9077
9078           end_tok = tok;
9079
9080           /* Find the beginning of the second to last token.
9081              This is the parameter itself.  */
9082           while (tok > arg && (*tok != ' ' && *tok != '\t'))
9083             tok--;
9084           tok++;
9085           toklen = end_tok - tok + 1;
9086
9087           if (toklen == 6 && !strncmp (tok, "thread", 6))
9088             {
9089               /* At this point we've found a "thread" token, which means
9090                  the user is trying to set a watchpoint that triggers
9091                  only in a specific thread.  */
9092               char *endp;
9093
9094               if (thread != -1)
9095                 error(_("You can specify only one thread."));
9096
9097               /* Extract the thread ID from the next token.  */
9098               thread = strtol (value_start, &endp, 0);
9099
9100               /* Check if the user provided a valid numeric value for the
9101                  thread ID.  */
9102               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
9103                 error (_("Invalid thread ID specification %s."), value_start);
9104
9105               /* Check if the thread actually exists.  */
9106               if (!valid_thread_id (thread))
9107                 error (_("Unknown thread %d."), thread);
9108             }
9109           else if (toklen == 4 && !strncmp (tok, "mask", 4))
9110             {
9111               /* We've found a "mask" token, which means the user wants to
9112                  create a hardware watchpoint that is going to have the mask
9113                  facility.  */
9114               struct value *mask_value, *mark;
9115
9116               if (use_mask)
9117                 error(_("You can specify only one mask."));
9118
9119               use_mask = just_location = 1;
9120
9121               mark = value_mark ();
9122               mask_value = parse_to_comma_and_eval (&value_start);
9123               mask = value_as_address (mask_value);
9124               value_free_to_mark (mark);
9125             }
9126           else
9127             /* We didn't recognize what we found.  We should stop here.  */
9128             break;
9129
9130           /* Truncate the string and get rid of the "parameter value" pair before
9131              the arguments string is parsed by the parse_exp_1 function.  */
9132           *tok = '\0';
9133         }
9134     }
9135
9136   /* Parse the rest of the arguments.  */
9137   innermost_block = NULL;
9138   exp_start = arg;
9139   exp = parse_exp_1 (&arg, 0, 0);
9140   exp_end = arg;
9141   /* Remove trailing whitespace from the expression before saving it.
9142      This makes the eventual display of the expression string a bit
9143      prettier.  */
9144   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
9145     --exp_end;
9146
9147   /* Checking if the expression is not constant.  */
9148   if (watchpoint_exp_is_const (exp))
9149     {
9150       int len;
9151
9152       len = exp_end - exp_start;
9153       while (len > 0 && isspace (exp_start[len - 1]))
9154         len--;
9155       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
9156     }
9157
9158   exp_valid_block = innermost_block;
9159   mark = value_mark ();
9160   fetch_subexp_value (exp, &pc, &val, &result, NULL);
9161
9162   if (just_location)
9163     {
9164       int ret;
9165
9166       exp_valid_block = NULL;
9167       val = value_addr (result);
9168       release_value (val);
9169       value_free_to_mark (mark);
9170
9171       if (use_mask)
9172         {
9173           ret = target_masked_watch_num_registers (value_as_address (val),
9174                                                    mask);
9175           if (ret == -1)
9176             error (_("This target does not support masked watchpoints."));
9177           else if (ret == -2)
9178             error (_("Invalid mask or memory region."));
9179         }
9180     }
9181   else if (val != NULL)
9182     release_value (val);
9183
9184   tok = skip_spaces (arg);
9185   end_tok = skip_to_space (tok);
9186
9187   toklen = end_tok - tok;
9188   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9189     {
9190       struct expression *cond;
9191
9192       innermost_block = NULL;
9193       tok = cond_start = end_tok + 1;
9194       cond = parse_exp_1 (&tok, 0, 0);
9195
9196       /* The watchpoint expression may not be local, but the condition
9197          may still be.  E.g.: `watch global if local > 0'.  */
9198       cond_exp_valid_block = innermost_block;
9199
9200       xfree (cond);
9201       cond_end = tok;
9202     }
9203   if (*tok)
9204     error (_("Junk at end of command."));
9205
9206   if (accessflag == hw_read)
9207     bp_type = bp_read_watchpoint;
9208   else if (accessflag == hw_access)
9209     bp_type = bp_access_watchpoint;
9210   else
9211     bp_type = bp_hardware_watchpoint;
9212
9213   frame = block_innermost_frame (exp_valid_block);
9214
9215   /* If the expression is "local", then set up a "watchpoint scope"
9216      breakpoint at the point where we've left the scope of the watchpoint
9217      expression.  Create the scope breakpoint before the watchpoint, so
9218      that we will encounter it first in bpstat_stop_status.  */
9219   if (exp_valid_block && frame)
9220     {
9221       if (frame_id_p (frame_unwind_caller_id (frame)))
9222         {
9223           scope_breakpoint
9224             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
9225                                           frame_unwind_caller_pc (frame),
9226                                           bp_watchpoint_scope);
9227
9228           scope_breakpoint->enable_state = bp_enabled;
9229
9230           /* Automatically delete the breakpoint when it hits.  */
9231           scope_breakpoint->disposition = disp_del;
9232
9233           /* Only break in the proper frame (help with recursion).  */
9234           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
9235
9236           /* Set the address at which we will stop.  */
9237           scope_breakpoint->loc->gdbarch
9238             = frame_unwind_caller_arch (frame);
9239           scope_breakpoint->loc->requested_address
9240             = frame_unwind_caller_pc (frame);
9241           scope_breakpoint->loc->address
9242             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
9243                                          scope_breakpoint->loc->requested_address,
9244                                          scope_breakpoint->type);
9245         }
9246     }
9247
9248   /* Now set up the breakpoint.  */
9249   b = set_raw_breakpoint_without_location (NULL, bp_type);
9250   b->thread = thread;
9251   b->disposition = disp_donttouch;
9252   b->exp = exp;
9253   b->exp_valid_block = exp_valid_block;
9254   b->cond_exp_valid_block = cond_exp_valid_block;
9255   if (just_location)
9256     {
9257       struct type *t = value_type (val);
9258       CORE_ADDR addr = value_as_address (val);
9259       char *name;
9260
9261       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
9262       name = type_to_string (t);
9263
9264       b->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
9265                                           core_addr_to_string (addr));
9266       xfree (name);
9267
9268       b->exp_string = xstrprintf ("-location %.*s",
9269                                   (int) (exp_end - exp_start), exp_start);
9270
9271       /* The above expression is in C.  */
9272       b->language = language_c;
9273     }
9274   else
9275     b->exp_string = savestring (exp_start, exp_end - exp_start);
9276
9277   if (use_mask)
9278     {
9279       b->hw_wp_mask = mask;
9280       b->ops = &masked_watchpoint_breakpoint_ops;
9281     }
9282   else
9283     {
9284       b->val = val;
9285       b->val_valid = 1;
9286       b->ops = &watchpoint_breakpoint_ops;
9287     }
9288
9289   if (cond_start)
9290     b->cond_string = savestring (cond_start, cond_end - cond_start);
9291   else
9292     b->cond_string = 0;
9293
9294   if (frame)
9295     {
9296       b->watchpoint_frame = get_frame_id (frame);
9297       b->watchpoint_thread = inferior_ptid;
9298     }
9299   else
9300     {
9301       b->watchpoint_frame = null_frame_id;
9302       b->watchpoint_thread = null_ptid;
9303     }
9304
9305   if (scope_breakpoint != NULL)
9306     {
9307       /* The scope breakpoint is related to the watchpoint.  We will
9308          need to act on them together.  */
9309       b->related_breakpoint = scope_breakpoint;
9310       scope_breakpoint->related_breakpoint = b;
9311     }
9312
9313   if (!just_location)
9314     value_free_to_mark (mark);
9315
9316   TRY_CATCH (e, RETURN_MASK_ALL)
9317     {
9318       /* Finally update the new watchpoint.  This creates the locations
9319          that should be inserted.  */
9320       update_watchpoint (b, 1);
9321     }
9322   if (e.reason < 0)
9323     {
9324       delete_breakpoint (b);
9325       throw_exception (e);
9326     }
9327
9328   set_breakpoint_number (internal, b);
9329
9330   /* Do not mention breakpoints with a negative number, but do
9331      notify observers.  */
9332   if (!internal)
9333     mention (b);
9334   observer_notify_breakpoint_created (b);
9335
9336   update_global_location_list (1);
9337 }
9338
9339 /* Return count of debug registers needed to watch the given expression.
9340    If the watchpoint cannot be handled in hardware return zero.  */
9341
9342 static int
9343 can_use_hardware_watchpoint (struct value *v)
9344 {
9345   int found_memory_cnt = 0;
9346   struct value *head = v;
9347
9348   /* Did the user specifically forbid us to use hardware watchpoints? */
9349   if (!can_use_hw_watchpoints)
9350     return 0;
9351
9352   /* Make sure that the value of the expression depends only upon
9353      memory contents, and values computed from them within GDB.  If we
9354      find any register references or function calls, we can't use a
9355      hardware watchpoint.
9356
9357      The idea here is that evaluating an expression generates a series
9358      of values, one holding the value of every subexpression.  (The
9359      expression a*b+c has five subexpressions: a, b, a*b, c, and
9360      a*b+c.)  GDB's values hold almost enough information to establish
9361      the criteria given above --- they identify memory lvalues,
9362      register lvalues, computed values, etcetera.  So we can evaluate
9363      the expression, and then scan the chain of values that leaves
9364      behind to decide whether we can detect any possible change to the
9365      expression's final value using only hardware watchpoints.
9366
9367      However, I don't think that the values returned by inferior
9368      function calls are special in any way.  So this function may not
9369      notice that an expression involving an inferior function call
9370      can't be watched with hardware watchpoints.  FIXME.  */
9371   for (; v; v = value_next (v))
9372     {
9373       if (VALUE_LVAL (v) == lval_memory)
9374         {
9375           if (v != head && value_lazy (v))
9376             /* A lazy memory lvalue in the chain is one that GDB never
9377                needed to fetch; we either just used its address (e.g.,
9378                `a' in `a.b') or we never needed it at all (e.g., `a'
9379                in `a,b').  This doesn't apply to HEAD; if that is
9380                lazy then it was not readable, but watch it anyway.  */
9381             ;
9382           else
9383             {
9384               /* Ahh, memory we actually used!  Check if we can cover
9385                  it with hardware watchpoints.  */
9386               struct type *vtype = check_typedef (value_type (v));
9387
9388               /* We only watch structs and arrays if user asked for it
9389                  explicitly, never if they just happen to appear in a
9390                  middle of some value chain.  */
9391               if (v == head
9392                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
9393                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
9394                 {
9395                   CORE_ADDR vaddr = value_address (v);
9396                   int len;
9397                   int num_regs;
9398
9399                   len = (target_exact_watchpoints
9400                          && is_scalar_type_recursive (vtype))?
9401                     1 : TYPE_LENGTH (value_type (v));
9402
9403                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
9404                   if (!num_regs)
9405                     return 0;
9406                   else
9407                     found_memory_cnt += num_regs;
9408                 }
9409             }
9410         }
9411       else if (VALUE_LVAL (v) != not_lval
9412                && deprecated_value_modifiable (v) == 0)
9413         return 0;       /* These are values from the history (e.g., $1).  */
9414       else if (VALUE_LVAL (v) == lval_register)
9415         return 0;       /* Cannot watch a register with a HW watchpoint.  */
9416     }
9417
9418   /* The expression itself looks suitable for using a hardware
9419      watchpoint, but give the target machine a chance to reject it.  */
9420   return found_memory_cnt;
9421 }
9422
9423 void
9424 watch_command_wrapper (char *arg, int from_tty, int internal)
9425 {
9426   watch_command_1 (arg, hw_write, from_tty, 0, internal);
9427 }
9428
9429 /* A helper function that looks for an argument at the start of a
9430    string.  The argument must also either be at the end of the string,
9431    or be followed by whitespace.  Returns 1 if it finds the argument,
9432    0 otherwise.  If the argument is found, it updates *STR.  */
9433
9434 static int
9435 check_for_argument (char **str, char *arg, int arg_len)
9436 {
9437   if (strncmp (*str, arg, arg_len) == 0
9438       && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len])))
9439     {
9440       *str += arg_len;
9441       return 1;
9442     }
9443   return 0;
9444 }
9445
9446 /* A helper function that looks for the "-location" argument and then
9447    calls watch_command_1.  */
9448
9449 static void
9450 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
9451 {
9452   int just_location = 0;
9453
9454   if (arg
9455       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
9456           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
9457     {
9458       arg = skip_spaces (arg);
9459       just_location = 1;
9460     }
9461
9462   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
9463 }
9464
9465 static void
9466 watch_command (char *arg, int from_tty)
9467 {
9468   watch_maybe_just_location (arg, hw_write, from_tty);
9469 }
9470
9471 void
9472 rwatch_command_wrapper (char *arg, int from_tty, int internal)
9473 {
9474   watch_command_1 (arg, hw_read, from_tty, 0, internal);
9475 }
9476
9477 static void
9478 rwatch_command (char *arg, int from_tty)
9479 {
9480   watch_maybe_just_location (arg, hw_read, from_tty);
9481 }
9482
9483 void
9484 awatch_command_wrapper (char *arg, int from_tty, int internal)
9485 {
9486   watch_command_1 (arg, hw_access, from_tty, 0, internal);
9487 }
9488
9489 static void
9490 awatch_command (char *arg, int from_tty)
9491 {
9492   watch_maybe_just_location (arg, hw_access, from_tty);
9493 }
9494 \f
9495
9496 /* Helper routines for the until_command routine in infcmd.c.  Here
9497    because it uses the mechanisms of breakpoints.  */
9498
9499 struct until_break_command_continuation_args
9500 {
9501   struct breakpoint *breakpoint;
9502   struct breakpoint *breakpoint2;
9503   int thread_num;
9504 };
9505
9506 /* This function is called by fetch_inferior_event via the
9507    cmd_continuation pointer, to complete the until command.  It takes
9508    care of cleaning up the temporary breakpoints set up by the until
9509    command.  */
9510 static void
9511 until_break_command_continuation (void *arg)
9512 {
9513   struct until_break_command_continuation_args *a = arg;
9514
9515   delete_breakpoint (a->breakpoint);
9516   if (a->breakpoint2)
9517     delete_breakpoint (a->breakpoint2);
9518   delete_longjmp_breakpoint (a->thread_num);
9519 }
9520
9521 void
9522 until_break_command (char *arg, int from_tty, int anywhere)
9523 {
9524   struct symtabs_and_lines sals;
9525   struct symtab_and_line sal;
9526   struct frame_info *frame = get_selected_frame (NULL);
9527   struct breakpoint *breakpoint;
9528   struct breakpoint *breakpoint2 = NULL;
9529   struct cleanup *old_chain;
9530   int thread;
9531   struct thread_info *tp;
9532
9533   clear_proceed_status ();
9534
9535   /* Set a breakpoint where the user wants it and at return from
9536      this function.  */
9537
9538   if (default_breakpoint_valid)
9539     sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
9540                           default_breakpoint_line, NULL);
9541   else
9542     sals = decode_line_1 (&arg, 1, (struct symtab *) NULL, 0, NULL);
9543
9544   if (sals.nelts != 1)
9545     error (_("Couldn't get information on specified line."));
9546
9547   sal = sals.sals[0];
9548   xfree (sals.sals);    /* malloc'd, so freed.  */
9549
9550   if (*arg)
9551     error (_("Junk at end of arguments."));
9552
9553   resolve_sal_pc (&sal);
9554
9555   if (anywhere)
9556     /* If the user told us to continue until a specified location,
9557        we don't specify a frame at which we need to stop.  */
9558     breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
9559                                            null_frame_id, bp_until);
9560   else
9561     /* Otherwise, specify the selected frame, because we want to stop
9562        only at the very same frame.  */
9563     breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
9564                                            get_stack_frame_id (frame),
9565                                            bp_until);
9566
9567   old_chain = make_cleanup_delete_breakpoint (breakpoint);
9568
9569   tp = inferior_thread ();
9570   thread = tp->num;
9571
9572   /* Keep within the current frame, or in frames called by the current
9573      one.  */
9574
9575   if (frame_id_p (frame_unwind_caller_id (frame)))
9576     {
9577       sal = find_pc_line (frame_unwind_caller_pc (frame), 0);
9578       sal.pc = frame_unwind_caller_pc (frame);
9579       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
9580                                               sal,
9581                                               frame_unwind_caller_id (frame),
9582                                               bp_until);
9583       make_cleanup_delete_breakpoint (breakpoint2);
9584
9585       set_longjmp_breakpoint (tp, frame_unwind_caller_id (frame));
9586       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
9587     }
9588
9589   proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
9590
9591   /* If we are running asynchronously, and proceed call above has
9592      actually managed to start the target, arrange for breakpoints to
9593      be deleted when the target stops.  Otherwise, we're already
9594      stopped and delete breakpoints via cleanup chain.  */
9595
9596   if (target_can_async_p () && is_running (inferior_ptid))
9597     {
9598       struct until_break_command_continuation_args *args;
9599       args = xmalloc (sizeof (*args));
9600
9601       args->breakpoint = breakpoint;
9602       args->breakpoint2 = breakpoint2;
9603       args->thread_num = thread;
9604
9605       discard_cleanups (old_chain);
9606       add_continuation (inferior_thread (),
9607                         until_break_command_continuation, args,
9608                         xfree);
9609     }
9610   else
9611     do_cleanups (old_chain);
9612 }
9613
9614 /* This function attempts to parse an optional "if <cond>" clause
9615    from the arg string.  If one is not found, it returns NULL.
9616
9617    Else, it returns a pointer to the condition string.  (It does not
9618    attempt to evaluate the string against a particular block.)  And,
9619    it updates arg to point to the first character following the parsed
9620    if clause in the arg string.  */
9621
9622 static char *
9623 ep_parse_optional_if_clause (char **arg)
9624 {
9625   char *cond_string;
9626
9627   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
9628     return NULL;
9629
9630   /* Skip the "if" keyword.  */
9631   (*arg) += 2;
9632
9633   /* Skip any extra leading whitespace, and record the start of the
9634      condition string.  */
9635   *arg = skip_spaces (*arg);
9636   cond_string = *arg;
9637
9638   /* Assume that the condition occupies the remainder of the arg
9639      string.  */
9640   (*arg) += strlen (cond_string);
9641
9642   return cond_string;
9643 }
9644
9645 /* Commands to deal with catching events, such as signals, exceptions,
9646    process start/exit, etc.  */
9647
9648 typedef enum
9649 {
9650   catch_fork_temporary, catch_vfork_temporary,
9651   catch_fork_permanent, catch_vfork_permanent
9652 }
9653 catch_fork_kind;
9654
9655 static void
9656 catch_fork_command_1 (char *arg, int from_tty, 
9657                       struct cmd_list_element *command)
9658 {
9659   struct gdbarch *gdbarch = get_current_arch ();
9660   char *cond_string = NULL;
9661   catch_fork_kind fork_kind;
9662   int tempflag;
9663
9664   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
9665   tempflag = (fork_kind == catch_fork_temporary
9666               || fork_kind == catch_vfork_temporary);
9667
9668   if (!arg)
9669     arg = "";
9670   arg = skip_spaces (arg);
9671
9672   /* The allowed syntax is:
9673      catch [v]fork
9674      catch [v]fork if <cond>
9675
9676      First, check if there's an if clause.  */
9677   cond_string = ep_parse_optional_if_clause (&arg);
9678
9679   if ((*arg != '\0') && !isspace (*arg))
9680     error (_("Junk at end of arguments."));
9681
9682   /* If this target supports it, create a fork or vfork catchpoint
9683      and enable reporting of such events.  */
9684   switch (fork_kind)
9685     {
9686     case catch_fork_temporary:
9687     case catch_fork_permanent:
9688       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
9689                                           &catch_fork_breakpoint_ops);
9690       break;
9691     case catch_vfork_temporary:
9692     case catch_vfork_permanent:
9693       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
9694                                           &catch_vfork_breakpoint_ops);
9695       break;
9696     default:
9697       error (_("unsupported or unknown fork kind; cannot catch it"));
9698       break;
9699     }
9700 }
9701
9702 static void
9703 catch_exec_command_1 (char *arg, int from_tty, 
9704                       struct cmd_list_element *command)
9705 {
9706   struct gdbarch *gdbarch = get_current_arch ();
9707   int tempflag;
9708   char *cond_string = NULL;
9709
9710   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9711
9712   if (!arg)
9713     arg = "";
9714   arg = skip_spaces (arg);
9715
9716   /* The allowed syntax is:
9717      catch exec
9718      catch exec if <cond>
9719
9720      First, check if there's an if clause.  */
9721   cond_string = ep_parse_optional_if_clause (&arg);
9722
9723   if ((*arg != '\0') && !isspace (*arg))
9724     error (_("Junk at end of arguments."));
9725
9726   /* If this target supports it, create an exec catchpoint
9727      and enable reporting of such events.  */
9728   create_catchpoint (gdbarch, tempflag, cond_string,
9729                      &catch_exec_breakpoint_ops);
9730 }
9731
9732 static enum print_stop_action
9733 print_it_exception_catchpoint (struct breakpoint *b)
9734 {
9735   int bp_temp, bp_throw;
9736
9737   annotate_catchpoint (b->number);
9738
9739   bp_throw = strstr (b->addr_string, "throw") != NULL;
9740   if (b->loc->address != b->loc->requested_address)
9741     breakpoint_adjustment_warning (b->loc->requested_address,
9742                                    b->loc->address,
9743                                    b->number, 1);
9744   bp_temp = b->disposition == disp_del;
9745   ui_out_text (uiout, 
9746                bp_temp ? "Temporary catchpoint "
9747                        : "Catchpoint ");
9748   if (!ui_out_is_mi_like_p (uiout))
9749     ui_out_field_int (uiout, "bkptno", b->number);
9750   ui_out_text (uiout,
9751                bp_throw ? " (exception thrown), "
9752                         : " (exception caught), ");
9753   if (ui_out_is_mi_like_p (uiout))
9754     {
9755       ui_out_field_string (uiout, "reason", 
9756                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9757       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9758       ui_out_field_int (uiout, "bkptno", b->number);
9759     }
9760   return PRINT_SRC_AND_LOC;
9761 }
9762
9763 static void
9764 print_one_exception_catchpoint (struct breakpoint *b, 
9765                                 struct bp_location **last_loc)
9766 {
9767   struct value_print_options opts;
9768
9769   get_user_print_options (&opts);
9770   if (opts.addressprint)
9771     {
9772       annotate_field (4);
9773       if (b->loc == NULL || b->loc->shlib_disabled)
9774         ui_out_field_string (uiout, "addr", "<PENDING>");
9775       else
9776         ui_out_field_core_addr (uiout, "addr",
9777                                 b->loc->gdbarch, b->loc->address);
9778     }
9779   annotate_field (5);
9780   if (b->loc)
9781     *last_loc = b->loc;
9782   if (strstr (b->addr_string, "throw") != NULL)
9783     ui_out_field_string (uiout, "what", "exception throw");
9784   else
9785     ui_out_field_string (uiout, "what", "exception catch");
9786 }
9787
9788 static void
9789 print_mention_exception_catchpoint (struct breakpoint *b)
9790 {
9791   int bp_temp;
9792   int bp_throw;
9793
9794   bp_temp = b->disposition == disp_del;
9795   bp_throw = strstr (b->addr_string, "throw") != NULL;
9796   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
9797                               : _("Catchpoint "));
9798   ui_out_field_int (uiout, "bkptno", b->number);
9799   ui_out_text (uiout, bp_throw ? _(" (throw)")
9800                                : _(" (catch)"));
9801 }
9802
9803 /* Implement the "print_recreate" breakpoint_ops method for throw and
9804    catch catchpoints.  */
9805
9806 static void
9807 print_recreate_exception_catchpoint (struct breakpoint *b, 
9808                                      struct ui_file *fp)
9809 {
9810   int bp_temp;
9811   int bp_throw;
9812
9813   bp_temp = b->disposition == disp_del;
9814   bp_throw = strstr (b->addr_string, "throw") != NULL;
9815   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
9816   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
9817 }
9818
9819 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = {
9820   NULL, /* insert */
9821   NULL, /* remove */
9822   NULL, /* breakpoint_hit */
9823   NULL, /* resources_needed */
9824   NULL, /* works_in_software_mode */
9825   print_it_exception_catchpoint,
9826   print_one_exception_catchpoint,
9827   NULL, /* print_one_detail */
9828   print_mention_exception_catchpoint,
9829   print_recreate_exception_catchpoint
9830 };
9831
9832 static int
9833 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
9834                           enum exception_event_kind ex_event, int from_tty)
9835 {
9836   char *trigger_func_name;
9837  
9838   if (ex_event == EX_EVENT_CATCH)
9839     trigger_func_name = "__cxa_begin_catch";
9840   else
9841     trigger_func_name = "__cxa_throw";
9842
9843   create_breakpoint (get_current_arch (),
9844                      trigger_func_name, cond_string, -1,
9845                      0 /* condition and thread are valid.  */,
9846                      tempflag, bp_breakpoint,
9847                      0,
9848                      AUTO_BOOLEAN_TRUE /* pending */,
9849                      &gnu_v3_exception_catchpoint_ops, from_tty,
9850                      1 /* enabled */,
9851                      0 /* internal */);
9852
9853   return 1;
9854 }
9855
9856 /* Deal with "catch catch" and "catch throw" commands.  */
9857
9858 static void
9859 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
9860                            int tempflag, int from_tty)
9861 {
9862   char *cond_string = NULL;
9863
9864   if (!arg)
9865     arg = "";
9866   arg = skip_spaces (arg);
9867
9868   cond_string = ep_parse_optional_if_clause (&arg);
9869
9870   if ((*arg != '\0') && !isspace (*arg))
9871     error (_("Junk at end of arguments."));
9872
9873   if (ex_event != EX_EVENT_THROW
9874       && ex_event != EX_EVENT_CATCH)
9875     error (_("Unsupported or unknown exception event; cannot catch it"));
9876
9877   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
9878     return;
9879
9880   warning (_("Unsupported with this platform/compiler combination."));
9881 }
9882
9883 /* Implementation of "catch catch" command.  */
9884
9885 static void
9886 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
9887 {
9888   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9889
9890   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
9891 }
9892
9893 /* Implementation of "catch throw" command.  */
9894
9895 static void
9896 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
9897 {
9898   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9899
9900   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
9901 }
9902
9903 /* Create a breakpoint struct for Ada exception catchpoints.  */
9904
9905 static void
9906 create_ada_exception_breakpoint (struct gdbarch *gdbarch,
9907                                  struct symtab_and_line sal,
9908                                  char *addr_string,
9909                                  char *exp_string,
9910                                  char *cond_string,
9911                                  struct expression *cond,
9912                                  struct breakpoint_ops *ops,
9913                                  int tempflag,
9914                                  int from_tty)
9915 {
9916   struct breakpoint *b;
9917
9918   if (from_tty)
9919     {
9920       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9921       if (!loc_gdbarch)
9922         loc_gdbarch = gdbarch;
9923
9924       describe_other_breakpoints (loc_gdbarch,
9925                                   sal.pspace, sal.pc, sal.section, -1);
9926       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
9927          version for exception catchpoints, because two catchpoints
9928          used for different exception names will use the same address.
9929          In this case, a "breakpoint ... also set at..." warning is
9930          unproductive.  Besides, the warning phrasing is also a bit
9931          inapropriate, we should use the word catchpoint, and tell
9932          the user what type of catchpoint it is.  The above is good
9933          enough for now, though.  */
9934     }
9935
9936   b = set_raw_breakpoint (gdbarch, sal, bp_breakpoint);
9937   set_breakpoint_count (breakpoint_count + 1);
9938
9939   b->enable_state = bp_enabled;
9940   b->disposition = tempflag ? disp_del : disp_donttouch;
9941   b->number = breakpoint_count;
9942   b->ignore_count = 0;
9943   b->loc->cond = cond;
9944   b->addr_string = addr_string;
9945   b->language = language_ada;
9946   b->cond_string = cond_string;
9947   b->exp_string = exp_string;
9948   b->thread = -1;
9949   b->ops = ops;
9950
9951   mention (b);
9952   observer_notify_breakpoint_created (b);
9953   update_global_location_list (1);
9954 }
9955
9956 /* Implement the "catch exception" command.  */
9957
9958 static void
9959 catch_ada_exception_command (char *arg, int from_tty,
9960                              struct cmd_list_element *command)
9961 {
9962   struct gdbarch *gdbarch = get_current_arch ();
9963   int tempflag;
9964   struct symtab_and_line sal;
9965   char *addr_string = NULL;
9966   char *exp_string = NULL;
9967   char *cond_string = NULL;
9968   struct expression *cond = NULL;
9969   struct breakpoint_ops *ops = NULL;
9970
9971   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9972
9973   if (!arg)
9974     arg = "";
9975   sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
9976                                        &cond_string, &cond, &ops);
9977   create_ada_exception_breakpoint (gdbarch, sal, addr_string, exp_string,
9978                                    cond_string, cond, ops, tempflag,
9979                                    from_tty);
9980 }
9981
9982 /* Cleanup function for a syscall filter list.  */
9983 static void
9984 clean_up_filters (void *arg)
9985 {
9986   VEC(int) *iter = *(VEC(int) **) arg;
9987   VEC_free (int, iter);
9988 }
9989
9990 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
9991    filter list, or NULL if no filtering is required.  */
9992 static VEC(int) *
9993 catch_syscall_split_args (char *arg)
9994 {
9995   VEC(int) *result = NULL;
9996   struct cleanup *cleanup = make_cleanup (clean_up_filters, &result);
9997
9998   while (*arg != '\0')
9999     {
10000       int i, syscall_number;
10001       char *endptr;
10002       char cur_name[128];
10003       struct syscall s;
10004
10005       /* Skip whitespace.  */
10006       while (isspace (*arg))
10007         arg++;
10008
10009       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
10010         cur_name[i] = arg[i];
10011       cur_name[i] = '\0';
10012       arg += i;
10013
10014       /* Check if the user provided a syscall name or a number.  */
10015       syscall_number = (int) strtol (cur_name, &endptr, 0);
10016       if (*endptr == '\0')
10017         get_syscall_by_number (syscall_number, &s);
10018       else
10019         {
10020           /* We have a name.  Let's check if it's valid and convert it
10021              to a number.  */
10022           get_syscall_by_name (cur_name, &s);
10023
10024           if (s.number == UNKNOWN_SYSCALL)
10025             /* Here we have to issue an error instead of a warning,
10026                because GDB cannot do anything useful if there's no
10027                syscall number to be caught.  */
10028             error (_("Unknown syscall name '%s'."), cur_name);
10029         }
10030
10031       /* Ok, it's valid.  */
10032       VEC_safe_push (int, result, s.number);
10033     }
10034
10035   discard_cleanups (cleanup);
10036   return result;
10037 }
10038
10039 /* Implement the "catch syscall" command.  */
10040
10041 static void
10042 catch_syscall_command_1 (char *arg, int from_tty, 
10043                          struct cmd_list_element *command)
10044 {
10045   int tempflag;
10046   VEC(int) *filter;
10047   struct syscall s;
10048   struct gdbarch *gdbarch = get_current_arch ();
10049
10050   /* Checking if the feature if supported.  */
10051   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
10052     error (_("The feature 'catch syscall' is not supported on \
10053 this architecture yet."));
10054
10055   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10056
10057   arg = skip_spaces (arg);
10058
10059   /* We need to do this first "dummy" translation in order
10060      to get the syscall XML file loaded or, most important,
10061      to display a warning to the user if there's no XML file
10062      for his/her architecture.  */
10063   get_syscall_by_number (0, &s);
10064
10065   /* The allowed syntax is:
10066      catch syscall
10067      catch syscall <name | number> [<name | number> ... <name | number>]
10068
10069      Let's check if there's a syscall name.  */
10070
10071   if (arg != NULL)
10072     filter = catch_syscall_split_args (arg);
10073   else
10074     filter = NULL;
10075
10076   create_syscall_event_catchpoint (tempflag, filter,
10077                                    &catch_syscall_breakpoint_ops);
10078 }
10079
10080 /* Implement the "catch assert" command.  */
10081
10082 static void
10083 catch_assert_command (char *arg, int from_tty,
10084                       struct cmd_list_element *command)
10085 {
10086   struct gdbarch *gdbarch = get_current_arch ();
10087   int tempflag;
10088   struct symtab_and_line sal;
10089   char *addr_string = NULL;
10090   struct breakpoint_ops *ops = NULL;
10091
10092   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10093
10094   if (!arg)
10095     arg = "";
10096   sal = ada_decode_assert_location (arg, &addr_string, &ops);
10097   create_ada_exception_breakpoint (gdbarch, sal, addr_string, NULL, NULL, NULL,
10098                                    ops, tempflag, from_tty);
10099 }
10100
10101 static void
10102 catch_command (char *arg, int from_tty)
10103 {
10104   error (_("Catch requires an event name."));
10105 }
10106 \f
10107
10108 static void
10109 tcatch_command (char *arg, int from_tty)
10110 {
10111   error (_("Catch requires an event name."));
10112 }
10113
10114 /* Delete breakpoints by address or line.  */
10115
10116 static void
10117 clear_command (char *arg, int from_tty)
10118 {
10119   struct breakpoint *b;
10120   VEC(breakpoint_p) *found = 0;
10121   int ix;
10122   int default_match;
10123   struct symtabs_and_lines sals;
10124   struct symtab_and_line sal;
10125   int i;
10126
10127   if (arg)
10128     {
10129       sals = decode_line_spec (arg, 1);
10130       default_match = 0;
10131     }
10132   else
10133     {
10134       sals.sals = (struct symtab_and_line *)
10135         xmalloc (sizeof (struct symtab_and_line));
10136       make_cleanup (xfree, sals.sals);
10137       init_sal (&sal);          /* Initialize to zeroes.  */
10138       sal.line = default_breakpoint_line;
10139       sal.symtab = default_breakpoint_symtab;
10140       sal.pc = default_breakpoint_address;
10141       sal.pspace = default_breakpoint_pspace;
10142       if (sal.symtab == 0)
10143         error (_("No source file specified."));
10144
10145       sals.sals[0] = sal;
10146       sals.nelts = 1;
10147
10148       default_match = 1;
10149     }
10150
10151   /* We don't call resolve_sal_pc here.  That's not as bad as it
10152      seems, because all existing breakpoints typically have both
10153      file/line and pc set.  So, if clear is given file/line, we can
10154      match this to existing breakpoint without obtaining pc at all.
10155
10156      We only support clearing given the address explicitly 
10157      present in breakpoint table.  Say, we've set breakpoint 
10158      at file:line.  There were several PC values for that file:line,
10159      due to optimization, all in one block.
10160
10161      We've picked one PC value.  If "clear" is issued with another
10162      PC corresponding to the same file:line, the breakpoint won't
10163      be cleared.  We probably can still clear the breakpoint, but 
10164      since the other PC value is never presented to user, user
10165      can only find it by guessing, and it does not seem important
10166      to support that.  */
10167
10168   /* For each line spec given, delete bps which correspond to it.  Do
10169      it in two passes, solely to preserve the current behavior that
10170      from_tty is forced true if we delete more than one
10171      breakpoint.  */
10172
10173   found = NULL;
10174   for (i = 0; i < sals.nelts; i++)
10175     {
10176       /* If exact pc given, clear bpts at that pc.
10177          If line given (pc == 0), clear all bpts on specified line.
10178          If defaulting, clear all bpts on default line
10179          or at default pc.
10180
10181          defaulting    sal.pc != 0    tests to do
10182
10183          0              1             pc
10184          1              1             pc _and_ line
10185          0              0             line
10186          1              0             <can't happen> */
10187
10188       sal = sals.sals[i];
10189
10190       /* Find all matching breakpoints and add them to 'found'.  */
10191       ALL_BREAKPOINTS (b)
10192         {
10193           int match = 0;
10194           /* Are we going to delete b?  */
10195           if (b->type != bp_none && !is_watchpoint (b))
10196             {
10197               struct bp_location *loc = b->loc;
10198               for (; loc; loc = loc->next)
10199                 {
10200                   int pc_match = sal.pc
10201                     && (loc->pspace == sal.pspace)
10202                     && (loc->address == sal.pc)
10203                     && (!section_is_overlay (loc->section)
10204                         || loc->section == sal.section);
10205                   int line_match = ((default_match || (0 == sal.pc))
10206                                     && b->source_file != NULL
10207                                     && sal.symtab != NULL
10208                                     && sal.pspace == loc->pspace
10209                                     && filename_cmp (b->source_file,
10210                                                      sal.symtab->filename) == 0
10211                                     && b->line_number == sal.line);
10212                   if (pc_match || line_match)
10213                     {
10214                       match = 1;
10215                       break;
10216                     }
10217                 }
10218             }
10219
10220           if (match)
10221             VEC_safe_push(breakpoint_p, found, b);
10222         }
10223     }
10224   /* Now go thru the 'found' chain and delete them.  */
10225   if (VEC_empty(breakpoint_p, found))
10226     {
10227       if (arg)
10228         error (_("No breakpoint at %s."), arg);
10229       else
10230         error (_("No breakpoint at this line."));
10231     }
10232
10233   if (VEC_length(breakpoint_p, found) > 1)
10234     from_tty = 1;       /* Always report if deleted more than one.  */
10235   if (from_tty)
10236     {
10237       if (VEC_length(breakpoint_p, found) == 1)
10238         printf_unfiltered (_("Deleted breakpoint "));
10239       else
10240         printf_unfiltered (_("Deleted breakpoints "));
10241     }
10242   breakpoints_changed ();
10243
10244   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
10245     {
10246       if (from_tty)
10247         printf_unfiltered ("%d ", b->number);
10248       delete_breakpoint (b);
10249     }
10250   if (from_tty)
10251     putchar_unfiltered ('\n');
10252 }
10253 \f
10254 /* Delete breakpoint in BS if they are `delete' breakpoints and
10255    all breakpoints that are marked for deletion, whether hit or not.
10256    This is called after any breakpoint is hit, or after errors.  */
10257
10258 void
10259 breakpoint_auto_delete (bpstat bs)
10260 {
10261   struct breakpoint *b, *b_tmp;
10262
10263   for (; bs; bs = bs->next)
10264     if (bs->breakpoint_at
10265         && bs->breakpoint_at->disposition == disp_del
10266         && bs->stop)
10267       delete_breakpoint (bs->breakpoint_at);
10268
10269   ALL_BREAKPOINTS_SAFE (b, b_tmp)
10270   {
10271     if (b->disposition == disp_del_at_next_stop)
10272       delete_breakpoint (b);
10273   }
10274 }
10275
10276 /* A comparison function for bp_location AP and BP being interfaced to
10277    qsort.  Sort elements primarily by their ADDRESS (no matter what
10278    does breakpoint_address_is_meaningful say for its OWNER),
10279    secondarily by ordering first bp_permanent OWNERed elements and
10280    terciarily just ensuring the array is sorted stable way despite
10281    qsort being an instable algorithm.  */
10282
10283 static int
10284 bp_location_compare (const void *ap, const void *bp)
10285 {
10286   struct bp_location *a = *(void **) ap;
10287   struct bp_location *b = *(void **) bp;
10288   /* A and B come from existing breakpoints having non-NULL OWNER.  */
10289   int a_perm = a->owner->enable_state == bp_permanent;
10290   int b_perm = b->owner->enable_state == bp_permanent;
10291
10292   if (a->address != b->address)
10293     return (a->address > b->address) - (a->address < b->address);
10294
10295   /* Sort permanent breakpoints first.  */
10296   if (a_perm != b_perm)
10297     return (a_perm < b_perm) - (a_perm > b_perm);
10298
10299   /* Make the user-visible order stable across GDB runs.  Locations of
10300      the same breakpoint can be sorted in arbitrary order.  */
10301
10302   if (a->owner->number != b->owner->number)
10303     return (a->owner->number > b->owner->number)
10304            - (a->owner->number < b->owner->number);
10305
10306   return (a > b) - (a < b);
10307 }
10308
10309 /* Set bp_location_placed_address_before_address_max and
10310    bp_location_shadow_len_after_address_max according to the current
10311    content of the bp_location array.  */
10312
10313 static void
10314 bp_location_target_extensions_update (void)
10315 {
10316   struct bp_location *bl, **blp_tmp;
10317
10318   bp_location_placed_address_before_address_max = 0;
10319   bp_location_shadow_len_after_address_max = 0;
10320
10321   ALL_BP_LOCATIONS (bl, blp_tmp)
10322     {
10323       CORE_ADDR start, end, addr;
10324
10325       if (!bp_location_has_shadow (bl))
10326         continue;
10327
10328       start = bl->target_info.placed_address;
10329       end = start + bl->target_info.shadow_len;
10330
10331       gdb_assert (bl->address >= start);
10332       addr = bl->address - start;
10333       if (addr > bp_location_placed_address_before_address_max)
10334         bp_location_placed_address_before_address_max = addr;
10335
10336       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
10337
10338       gdb_assert (bl->address < end);
10339       addr = end - bl->address;
10340       if (addr > bp_location_shadow_len_after_address_max)
10341         bp_location_shadow_len_after_address_max = addr;
10342     }
10343 }
10344
10345 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
10346    into the inferior, only remove already-inserted locations that no
10347    longer should be inserted.  Functions that delete a breakpoint or
10348    breakpoints should pass false, so that deleting a breakpoint
10349    doesn't have the side effect of inserting the locations of other
10350    breakpoints that are marked not-inserted, but should_be_inserted
10351    returns true on them.
10352
10353    This behaviour is useful is situations close to tear-down -- e.g.,
10354    after an exec, while the target still has execution, but breakpoint
10355    shadows of the previous executable image should *NOT* be restored
10356    to the new image; or before detaching, where the target still has
10357    execution and wants to delete breakpoints from GDB's lists, and all
10358    breakpoints had already been removed from the inferior.  */
10359
10360 static void
10361 update_global_location_list (int should_insert)
10362 {
10363   struct breakpoint *b;
10364   struct bp_location **locp, *loc;
10365   struct cleanup *cleanups;
10366
10367   /* Used in the duplicates detection below.  When iterating over all
10368      bp_locations, points to the first bp_location of a given address.
10369      Breakpoints and watchpoints of different types are never
10370      duplicates of each other.  Keep one pointer for each type of
10371      breakpoint/watchpoint, so we only need to loop over all locations
10372      once.  */
10373   struct bp_location *bp_loc_first;  /* breakpoint */
10374   struct bp_location *wp_loc_first;  /* hardware watchpoint */
10375   struct bp_location *awp_loc_first; /* access watchpoint */
10376   struct bp_location *rwp_loc_first; /* read watchpoint */
10377
10378   /* Saved former bp_location array which we compare against the newly
10379      built bp_location from the current state of ALL_BREAKPOINTS.  */
10380   struct bp_location **old_location, **old_locp;
10381   unsigned old_location_count;
10382
10383   old_location = bp_location;
10384   old_location_count = bp_location_count;
10385   bp_location = NULL;
10386   bp_location_count = 0;
10387   cleanups = make_cleanup (xfree, old_location);
10388
10389   ALL_BREAKPOINTS (b)
10390     for (loc = b->loc; loc; loc = loc->next)
10391       bp_location_count++;
10392
10393   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
10394   locp = bp_location;
10395   ALL_BREAKPOINTS (b)
10396     for (loc = b->loc; loc; loc = loc->next)
10397       *locp++ = loc;
10398   qsort (bp_location, bp_location_count, sizeof (*bp_location),
10399          bp_location_compare);
10400
10401   bp_location_target_extensions_update ();
10402
10403   /* Identify bp_location instances that are no longer present in the
10404      new list, and therefore should be freed.  Note that it's not
10405      necessary that those locations should be removed from inferior --
10406      if there's another location at the same address (previously
10407      marked as duplicate), we don't need to remove/insert the
10408      location.
10409      
10410      LOCP is kept in sync with OLD_LOCP, each pointing to the current
10411      and former bp_location array state respectively.  */
10412
10413   locp = bp_location;
10414   for (old_locp = old_location; old_locp < old_location + old_location_count;
10415        old_locp++)
10416     {
10417       struct bp_location *old_loc = *old_locp;
10418       struct bp_location **loc2p;
10419
10420       /* Tells if 'old_loc' is found amoung the new locations.  If
10421          not, we have to free it.  */
10422       int found_object = 0;
10423       /* Tells if the location should remain inserted in the target.  */
10424       int keep_in_target = 0;
10425       int removed = 0;
10426
10427       /* Skip LOCP entries which will definitely never be needed.
10428          Stop either at or being the one matching OLD_LOC.  */
10429       while (locp < bp_location + bp_location_count
10430              && (*locp)->address < old_loc->address)
10431         locp++;
10432
10433       for (loc2p = locp;
10434            (loc2p < bp_location + bp_location_count
10435             && (*loc2p)->address == old_loc->address);
10436            loc2p++)
10437         {
10438           if (*loc2p == old_loc)
10439             {
10440               found_object = 1;
10441               break;
10442             }
10443         }
10444
10445       /* If this location is no longer present, and inserted, look if
10446          there's maybe a new location at the same address.  If so,
10447          mark that one inserted, and don't remove this one.  This is
10448          needed so that we don't have a time window where a breakpoint
10449          at certain location is not inserted.  */
10450
10451       if (old_loc->inserted)
10452         {
10453           /* If the location is inserted now, we might have to remove
10454              it.  */
10455
10456           if (found_object && should_be_inserted (old_loc))
10457             {
10458               /* The location is still present in the location list,
10459                  and still should be inserted.  Don't do anything.  */
10460               keep_in_target = 1;
10461             }
10462           else
10463             {
10464               /* The location is either no longer present, or got
10465                  disabled.  See if there's another location at the
10466                  same address, in which case we don't need to remove
10467                  this one from the target.  */
10468
10469               /* OLD_LOC comes from existing struct breakpoint.  */
10470               if (breakpoint_address_is_meaningful (old_loc->owner))
10471                 {
10472                   for (loc2p = locp;
10473                        (loc2p < bp_location + bp_location_count
10474                         && (*loc2p)->address == old_loc->address);
10475                        loc2p++)
10476                     {
10477                       struct bp_location *loc2 = *loc2p;
10478
10479                       if (breakpoint_locations_match (loc2, old_loc))
10480                         {
10481                           /* For the sake of should_be_inserted.
10482                              Duplicates check below will fix up this
10483                              later.  */
10484                           loc2->duplicate = 0;
10485
10486                           /* Read watchpoint locations are switched to
10487                              access watchpoints, if the former are not
10488                              supported, but the latter are.  */
10489                           if (is_hardware_watchpoint (old_loc->owner))
10490                             {
10491                               gdb_assert (is_hardware_watchpoint (loc2->owner));
10492                               loc2->watchpoint_type = old_loc->watchpoint_type;
10493                             }
10494
10495                           if (loc2 != old_loc && should_be_inserted (loc2))
10496                             {
10497                               loc2->inserted = 1;
10498                               loc2->target_info = old_loc->target_info;
10499                               keep_in_target = 1;
10500                               break;
10501                             }
10502                         }
10503                     }
10504                 }
10505             }
10506
10507           if (!keep_in_target)
10508             {
10509               if (remove_breakpoint (old_loc, mark_uninserted))
10510                 {
10511                   /* This is just about all we can do.  We could keep
10512                      this location on the global list, and try to
10513                      remove it next time, but there's no particular
10514                      reason why we will succeed next time.
10515                      
10516                      Note that at this point, old_loc->owner is still
10517                      valid, as delete_breakpoint frees the breakpoint
10518                      only after calling us.  */
10519                   printf_filtered (_("warning: Error removing "
10520                                      "breakpoint %d\n"), 
10521                                    old_loc->owner->number);
10522                 }
10523               removed = 1;
10524             }
10525         }
10526
10527       if (!found_object)
10528         {
10529           if (removed && non_stop
10530               && breakpoint_address_is_meaningful (old_loc->owner)
10531               && !is_hardware_watchpoint (old_loc->owner))
10532             {
10533               /* This location was removed from the target.  In
10534                  non-stop mode, a race condition is possible where
10535                  we've removed a breakpoint, but stop events for that
10536                  breakpoint are already queued and will arrive later.
10537                  We apply an heuristic to be able to distinguish such
10538                  SIGTRAPs from other random SIGTRAPs: we keep this
10539                  breakpoint location for a bit, and will retire it
10540                  after we see some number of events.  The theory here
10541                  is that reporting of events should, "on the average",
10542                  be fair, so after a while we'll see events from all
10543                  threads that have anything of interest, and no longer
10544                  need to keep this breakpoint location around.  We
10545                  don't hold locations forever so to reduce chances of
10546                  mistaking a non-breakpoint SIGTRAP for a breakpoint
10547                  SIGTRAP.
10548
10549                  The heuristic failing can be disastrous on
10550                  decr_pc_after_break targets.
10551
10552                  On decr_pc_after_break targets, like e.g., x86-linux,
10553                  if we fail to recognize a late breakpoint SIGTRAP,
10554                  because events_till_retirement has reached 0 too
10555                  soon, we'll fail to do the PC adjustment, and report
10556                  a random SIGTRAP to the user.  When the user resumes
10557                  the inferior, it will most likely immediately crash
10558                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
10559                  corrupted, because of being resumed e.g., in the
10560                  middle of a multi-byte instruction, or skipped a
10561                  one-byte instruction.  This was actually seen happen
10562                  on native x86-linux, and should be less rare on
10563                  targets that do not support new thread events, like
10564                  remote, due to the heuristic depending on
10565                  thread_count.
10566
10567                  Mistaking a random SIGTRAP for a breakpoint trap
10568                  causes similar symptoms (PC adjustment applied when
10569                  it shouldn't), but then again, playing with SIGTRAPs
10570                  behind the debugger's back is asking for trouble.
10571
10572                  Since hardware watchpoint traps are always
10573                  distinguishable from other traps, so we don't need to
10574                  apply keep hardware watchpoint moribund locations
10575                  around.  We simply always ignore hardware watchpoint
10576                  traps we can no longer explain.  */
10577
10578               old_loc->events_till_retirement = 3 * (thread_count () + 1);
10579               old_loc->owner = NULL;
10580
10581               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
10582             }
10583           else
10584             {
10585               old_loc->owner = NULL;
10586               decref_bp_location (&old_loc);
10587             }
10588         }
10589     }
10590
10591   /* Rescan breakpoints at the same address and section, marking the
10592      first one as "first" and any others as "duplicates".  This is so
10593      that the bpt instruction is only inserted once.  If we have a
10594      permanent breakpoint at the same place as BPT, make that one the
10595      official one, and the rest as duplicates.  Permanent breakpoints
10596      are sorted first for the same address.
10597
10598      Do the same for hardware watchpoints, but also considering the
10599      watchpoint's type (regular/access/read) and length.  */
10600
10601   bp_loc_first = NULL;
10602   wp_loc_first = NULL;
10603   awp_loc_first = NULL;
10604   rwp_loc_first = NULL;
10605   ALL_BP_LOCATIONS (loc, locp)
10606     {
10607       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
10608          non-NULL.  */
10609       struct breakpoint *b = loc->owner;
10610       struct bp_location **loc_first_p;
10611
10612       if (b->enable_state == bp_disabled
10613           || b->enable_state == bp_call_disabled
10614           || b->enable_state == bp_startup_disabled
10615           || !loc->enabled
10616           || loc->shlib_disabled
10617           || !breakpoint_address_is_meaningful (b)
10618           || is_tracepoint (b))
10619         continue;
10620
10621       /* Permanent breakpoint should always be inserted.  */
10622       if (b->enable_state == bp_permanent && ! loc->inserted)
10623         internal_error (__FILE__, __LINE__,
10624                         _("allegedly permanent breakpoint is not "
10625                         "actually inserted"));
10626
10627       if (b->type == bp_hardware_watchpoint)
10628         loc_first_p = &wp_loc_first;
10629       else if (b->type == bp_read_watchpoint)
10630         loc_first_p = &rwp_loc_first;
10631       else if (b->type == bp_access_watchpoint)
10632         loc_first_p = &awp_loc_first;
10633       else
10634         loc_first_p = &bp_loc_first;
10635
10636       if (*loc_first_p == NULL
10637           || (overlay_debugging && loc->section != (*loc_first_p)->section)
10638           || !breakpoint_locations_match (loc, *loc_first_p))
10639         {
10640           *loc_first_p = loc;
10641           loc->duplicate = 0;
10642           continue;
10643         }
10644
10645       loc->duplicate = 1;
10646
10647       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
10648           && b->enable_state != bp_permanent)
10649         internal_error (__FILE__, __LINE__,
10650                         _("another breakpoint was inserted on top of "
10651                         "a permanent breakpoint"));
10652     }
10653
10654   if (breakpoints_always_inserted_mode () && should_insert
10655       && (have_live_inferiors ()
10656           || (gdbarch_has_global_breakpoints (target_gdbarch))))
10657     insert_breakpoint_locations ();
10658
10659   do_cleanups (cleanups);
10660 }
10661
10662 void
10663 breakpoint_retire_moribund (void)
10664 {
10665   struct bp_location *loc;
10666   int ix;
10667
10668   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
10669     if (--(loc->events_till_retirement) == 0)
10670       {
10671         decref_bp_location (&loc);
10672         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
10673         --ix;
10674       }
10675 }
10676
10677 static void
10678 update_global_location_list_nothrow (int inserting)
10679 {
10680   struct gdb_exception e;
10681
10682   TRY_CATCH (e, RETURN_MASK_ERROR)
10683     update_global_location_list (inserting);
10684 }
10685
10686 /* Clear BKP from a BPS.  */
10687
10688 static void
10689 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
10690 {
10691   bpstat bs;
10692
10693   for (bs = bps; bs; bs = bs->next)
10694     if (bs->breakpoint_at == bpt)
10695       {
10696         bs->breakpoint_at = NULL;
10697         bs->old_val = NULL;
10698         /* bs->commands will be freed later.  */
10699       }
10700 }
10701
10702 /* Callback for iterate_over_threads.  */
10703 static int
10704 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
10705 {
10706   struct breakpoint *bpt = data;
10707
10708   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
10709   return 0;
10710 }
10711
10712 /* Delete a breakpoint and clean up all traces of it in the data
10713    structures.  */
10714
10715 void
10716 delete_breakpoint (struct breakpoint *bpt)
10717 {
10718   struct breakpoint *b;
10719
10720   gdb_assert (bpt != NULL);
10721
10722   /* Has this bp already been deleted?  This can happen because
10723      multiple lists can hold pointers to bp's.  bpstat lists are
10724      especial culprits.
10725
10726      One example of this happening is a watchpoint's scope bp.  When
10727      the scope bp triggers, we notice that the watchpoint is out of
10728      scope, and delete it.  We also delete its scope bp.  But the
10729      scope bp is marked "auto-deleting", and is already on a bpstat.
10730      That bpstat is then checked for auto-deleting bp's, which are
10731      deleted.
10732
10733      A real solution to this problem might involve reference counts in
10734      bp's, and/or giving them pointers back to their referencing
10735      bpstat's, and teaching delete_breakpoint to only free a bp's
10736      storage when no more references were extent.  A cheaper bandaid
10737      was chosen.  */
10738   if (bpt->type == bp_none)
10739     return;
10740
10741   /* At least avoid this stale reference until the reference counting
10742      of breakpoints gets resolved.  */
10743   if (bpt->related_breakpoint != bpt)
10744     {
10745       struct breakpoint *related;
10746
10747       if (bpt->type == bp_watchpoint_scope)
10748         watchpoint_del_at_next_stop (bpt->related_breakpoint);
10749       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
10750         watchpoint_del_at_next_stop (bpt);
10751
10752       /* Unlink bpt from the bpt->related_breakpoint ring.  */
10753       for (related = bpt; related->related_breakpoint != bpt;
10754            related = related->related_breakpoint);
10755       related->related_breakpoint = bpt->related_breakpoint;
10756       bpt->related_breakpoint = bpt;
10757     }
10758
10759   /* watch_command_1 creates a watchpoint but only sets its number if
10760      update_watchpoint succeeds in creating its bp_locations.  If there's
10761      a problem in that process, we'll be asked to delete the half-created
10762      watchpoint.  In that case, don't announce the deletion.  */
10763   if (bpt->number)
10764     observer_notify_breakpoint_deleted (bpt);
10765
10766   if (breakpoint_chain == bpt)
10767     breakpoint_chain = bpt->next;
10768
10769   ALL_BREAKPOINTS (b)
10770     if (b->next == bpt)
10771     {
10772       b->next = bpt->next;
10773       break;
10774     }
10775
10776   decref_counted_command_line (&bpt->commands);
10777   xfree (bpt->cond_string);
10778   xfree (bpt->cond_exp);
10779   xfree (bpt->addr_string);
10780   xfree (bpt->addr_string_range_end);
10781   xfree (bpt->exp);
10782   xfree (bpt->exp_string);
10783   xfree (bpt->exp_string_reparse);
10784   value_free (bpt->val);
10785   xfree (bpt->source_file);
10786   xfree (bpt->exec_pathname);
10787   clean_up_filters (&bpt->syscalls_to_be_caught);
10788
10789
10790   /* Be sure no bpstat's are pointing at the breakpoint after it's
10791      been freed.  */
10792   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
10793      in all threeds for now.  Note that we cannot just remove bpstats
10794      pointing at bpt from the stop_bpstat list entirely, as breakpoint
10795      commands are associated with the bpstat; if we remove it here,
10796      then the later call to bpstat_do_actions (&stop_bpstat); in
10797      event-top.c won't do anything, and temporary breakpoints with
10798      commands won't work.  */
10799
10800   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
10801
10802   /* Now that breakpoint is removed from breakpoint list, update the
10803      global location list.  This will remove locations that used to
10804      belong to this breakpoint.  Do this before freeing the breakpoint
10805      itself, since remove_breakpoint looks at location's owner.  It
10806      might be better design to have location completely
10807      self-contained, but it's not the case now.  */
10808   update_global_location_list (0);
10809
10810
10811   /* On the chance that someone will soon try again to delete this
10812      same bp, we mark it as deleted before freeing its storage.  */
10813   bpt->type = bp_none;
10814
10815   xfree (bpt);
10816 }
10817
10818 static void
10819 do_delete_breakpoint_cleanup (void *b)
10820 {
10821   delete_breakpoint (b);
10822 }
10823
10824 struct cleanup *
10825 make_cleanup_delete_breakpoint (struct breakpoint *b)
10826 {
10827   return make_cleanup (do_delete_breakpoint_cleanup, b);
10828 }
10829
10830 /* Iterator function to call a user-provided callback function once
10831    for each of B and its related breakpoints.  */
10832
10833 static void
10834 iterate_over_related_breakpoints (struct breakpoint *b,
10835                                   void (*function) (struct breakpoint *,
10836                                                     void *),
10837                                   void *data)
10838 {
10839   struct breakpoint *related;
10840
10841   related = b;
10842   do
10843     {
10844       struct breakpoint *next;
10845
10846       /* FUNCTION may delete RELATED.  */
10847       next = related->related_breakpoint;
10848
10849       if (next == related)
10850         {
10851           /* RELATED is the last ring entry.  */
10852           function (related, data);
10853
10854           /* FUNCTION may have deleted it, so we'd never reach back to
10855              B.  There's nothing left to do anyway, so just break
10856              out.  */
10857           break;
10858         }
10859       else
10860         function (related, data);
10861
10862       related = next;
10863     }
10864   while (related != b);
10865 }
10866
10867 static void
10868 do_delete_breakpoint (struct breakpoint *b, void *ignore)
10869 {
10870   delete_breakpoint (b);
10871 }
10872
10873 /* A callback for map_breakpoint_numbers that calls
10874    delete_breakpoint.  */
10875
10876 static void
10877 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
10878 {
10879   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
10880 }
10881
10882 void
10883 delete_command (char *arg, int from_tty)
10884 {
10885   struct breakpoint *b, *b_tmp;
10886
10887   dont_repeat ();
10888
10889   if (arg == 0)
10890     {
10891       int breaks_to_delete = 0;
10892
10893       /* Delete all breakpoints if no argument.  Do not delete
10894          internal breakpoints, these have to be deleted with an
10895          explicit breakpoint number argument.  */
10896       ALL_BREAKPOINTS (b)
10897         if (user_breakpoint_p (b))
10898           {
10899             breaks_to_delete = 1;
10900             break;
10901           }
10902
10903       /* Ask user only if there are some breakpoints to delete.  */
10904       if (!from_tty
10905           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
10906         {
10907           ALL_BREAKPOINTS_SAFE (b, b_tmp)
10908             if (user_breakpoint_p (b))
10909               delete_breakpoint (b);
10910         }
10911     }
10912   else
10913     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
10914 }
10915
10916 static int
10917 all_locations_are_pending (struct bp_location *loc)
10918 {
10919   for (; loc; loc = loc->next)
10920     if (!loc->shlib_disabled)
10921       return 0;
10922   return 1;
10923 }
10924
10925 /* Subroutine of update_breakpoint_locations to simplify it.
10926    Return non-zero if multiple fns in list LOC have the same name.
10927    Null names are ignored.  */
10928
10929 static int
10930 ambiguous_names_p (struct bp_location *loc)
10931 {
10932   struct bp_location *l;
10933   htab_t htab = htab_create_alloc (13, htab_hash_string,
10934                                    (int (*) (const void *, 
10935                                              const void *)) streq,
10936                                    NULL, xcalloc, xfree);
10937
10938   for (l = loc; l != NULL; l = l->next)
10939     {
10940       const char **slot;
10941       const char *name = l->function_name;
10942
10943       /* Allow for some names to be NULL, ignore them.  */
10944       if (name == NULL)
10945         continue;
10946
10947       slot = (const char **) htab_find_slot (htab, (const void *) name,
10948                                              INSERT);
10949       /* NOTE: We can assume slot != NULL here because xcalloc never
10950          returns NULL.  */
10951       if (*slot != NULL)
10952         {
10953           htab_delete (htab);
10954           return 1;
10955         }
10956       *slot = name;
10957     }
10958
10959   htab_delete (htab);
10960   return 0;
10961 }
10962
10963 /* When symbols change, it probably means the sources changed as well,
10964    and it might mean the static tracepoint markers are no longer at
10965    the same address or line numbers they used to be at last we
10966    checked.  Losing your static tracepoints whenever you rebuild is
10967    undesirable.  This function tries to resync/rematch gdb static
10968    tracepoints with the markers on the target, for static tracepoints
10969    that have not been set by marker id.  Static tracepoint that have
10970    been set by marker id are reset by marker id in breakpoint_re_set.
10971    The heuristic is:
10972
10973    1) For a tracepoint set at a specific address, look for a marker at
10974    the old PC.  If one is found there, assume to be the same marker.
10975    If the name / string id of the marker found is different from the
10976    previous known name, assume that means the user renamed the marker
10977    in the sources, and output a warning.
10978
10979    2) For a tracepoint set at a given line number, look for a marker
10980    at the new address of the old line number.  If one is found there,
10981    assume to be the same marker.  If the name / string id of the
10982    marker found is different from the previous known name, assume that
10983    means the user renamed the marker in the sources, and output a
10984    warning.
10985
10986    3) If a marker is no longer found at the same address or line, it
10987    may mean the marker no longer exists.  But it may also just mean
10988    the code changed a bit.  Maybe the user added a few lines of code
10989    that made the marker move up or down (in line number terms).  Ask
10990    the target for info about the marker with the string id as we knew
10991    it.  If found, update line number and address in the matching
10992    static tracepoint.  This will get confused if there's more than one
10993    marker with the same ID (possible in UST, although unadvised
10994    precisely because it confuses tools).  */
10995
10996 static struct symtab_and_line
10997 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
10998 {
10999   struct static_tracepoint_marker marker;
11000   CORE_ADDR pc;
11001   int i;
11002
11003   pc = sal.pc;
11004   if (sal.line)
11005     find_line_pc (sal.symtab, sal.line, &pc);
11006
11007   if (target_static_tracepoint_marker_at (pc, &marker))
11008     {
11009       if (strcmp (b->static_trace_marker_id, marker.str_id) != 0)
11010         warning (_("static tracepoint %d changed probed marker from %s to %s"),
11011                  b->number,
11012                  b->static_trace_marker_id, marker.str_id);
11013
11014       xfree (b->static_trace_marker_id);
11015       b->static_trace_marker_id = xstrdup (marker.str_id);
11016       release_static_tracepoint_marker (&marker);
11017
11018       return sal;
11019     }
11020
11021   /* Old marker wasn't found on target at lineno.  Try looking it up
11022      by string ID.  */
11023   if (!sal.explicit_pc
11024       && sal.line != 0
11025       && sal.symtab != NULL
11026       && b->static_trace_marker_id != NULL)
11027     {
11028       VEC(static_tracepoint_marker_p) *markers;
11029
11030       markers
11031         = target_static_tracepoint_markers_by_strid (b->static_trace_marker_id);
11032
11033       if (!VEC_empty(static_tracepoint_marker_p, markers))
11034         {
11035           struct symtab_and_line sal;
11036           struct symbol *sym;
11037           struct static_tracepoint_marker *marker;
11038
11039           marker = VEC_index (static_tracepoint_marker_p, markers, 0);
11040
11041           xfree (b->static_trace_marker_id);
11042           b->static_trace_marker_id = xstrdup (marker->str_id);
11043
11044           warning (_("marker for static tracepoint %d (%s) not "
11045                      "found at previous line number"),
11046                    b->number, b->static_trace_marker_id);
11047
11048           init_sal (&sal);
11049
11050           sal.pc = marker->address;
11051
11052           sal = find_pc_line (marker->address, 0);
11053           sym = find_pc_sect_function (marker->address, NULL);
11054           ui_out_text (uiout, "Now in ");
11055           if (sym)
11056             {
11057               ui_out_field_string (uiout, "func",
11058                                    SYMBOL_PRINT_NAME (sym));
11059               ui_out_text (uiout, " at ");
11060             }
11061           ui_out_field_string (uiout, "file", sal.symtab->filename);
11062           ui_out_text (uiout, ":");
11063
11064           if (ui_out_is_mi_like_p (uiout))
11065             {
11066               char *fullname = symtab_to_fullname (sal.symtab);
11067
11068               if (fullname)
11069                 ui_out_field_string (uiout, "fullname", fullname);
11070             }
11071
11072           ui_out_field_int (uiout, "line", sal.line);
11073           ui_out_text (uiout, "\n");
11074
11075           b->line_number = sal.line;
11076
11077           xfree (b->source_file);
11078           if (sym)
11079             b->source_file = xstrdup (sal.symtab->filename);
11080           else
11081             b->source_file = NULL;
11082
11083           xfree (b->addr_string);
11084           b->addr_string = xstrprintf ("%s:%d",
11085                                        sal.symtab->filename, b->line_number);
11086
11087           /* Might be nice to check if function changed, and warn if
11088              so.  */
11089
11090           release_static_tracepoint_marker (marker);
11091         }
11092     }
11093   return sal;
11094 }
11095
11096 /* Returns 1 iff locations A and B are sufficiently same that
11097    we don't need to report breakpoint as changed.  */
11098
11099 static int
11100 locations_are_equal (struct bp_location *a, struct bp_location *b)
11101 {
11102   while (a && b)
11103     {
11104       if (a->address != b->address)
11105         return 0;
11106
11107       if (a->shlib_disabled != b->shlib_disabled)
11108         return 0;
11109
11110       if (a->enabled != b->enabled)
11111         return 0;
11112
11113       a = a->next;
11114       b = b->next;
11115     }
11116
11117   if ((a == NULL) != (b == NULL))
11118     return 0;
11119
11120   return 1;
11121 }
11122
11123 /* Create new breakpoint locations for B (a hardware or software breakpoint)
11124    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
11125    a ranged breakpoint.  */
11126
11127 void
11128 update_breakpoint_locations (struct breakpoint *b,
11129                              struct symtabs_and_lines sals,
11130                              struct symtabs_and_lines sals_end)
11131 {
11132   int i;
11133   struct bp_location *existing_locations = b->loc;
11134
11135   /* Ranged breakpoints have only one start location and one end location.  */
11136   gdb_assert (sals_end.nelts == 0 || (sals.nelts == 1 && sals_end.nelts == 1));
11137
11138   /* If there's no new locations, and all existing locations are
11139      pending, don't do anything.  This optimizes the common case where
11140      all locations are in the same shared library, that was unloaded.
11141      We'd like to retain the location, so that when the library is
11142      loaded again, we don't loose the enabled/disabled status of the
11143      individual locations.  */
11144   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
11145     return;
11146
11147   b->loc = NULL;
11148
11149   for (i = 0; i < sals.nelts; ++i)
11150     {
11151       struct bp_location *new_loc = 
11152         add_location_to_breakpoint (b, &(sals.sals[i]));
11153
11154       /* Reparse conditions, they might contain references to the
11155          old symtab.  */
11156       if (b->cond_string != NULL)
11157         {
11158           char *s;
11159           struct gdb_exception e;
11160
11161           s = b->cond_string;
11162           TRY_CATCH (e, RETURN_MASK_ERROR)
11163             {
11164               new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 
11165                                            0);
11166             }
11167           if (e.reason < 0)
11168             {
11169               warning (_("failed to reevaluate condition "
11170                          "for breakpoint %d: %s"), 
11171                        b->number, e.message);
11172               new_loc->enabled = 0;
11173             }
11174         }
11175
11176       if (b->source_file != NULL)
11177         xfree (b->source_file);
11178       if (sals.sals[i].symtab == NULL)
11179         b->source_file = NULL;
11180       else
11181         b->source_file = xstrdup (sals.sals[i].symtab->filename);
11182
11183       if (b->line_number == 0)
11184         b->line_number = sals.sals[i].line;
11185
11186       if (sals_end.nelts)
11187         {
11188           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
11189
11190           new_loc->length = end - sals.sals[0].pc + 1;
11191         }
11192     }
11193
11194   /* Update locations of permanent breakpoints.  */
11195   if (b->enable_state == bp_permanent)
11196     make_breakpoint_permanent (b);
11197
11198   /* If possible, carry over 'disable' status from existing
11199      breakpoints.  */
11200   {
11201     struct bp_location *e = existing_locations;
11202     /* If there are multiple breakpoints with the same function name,
11203        e.g. for inline functions, comparing function names won't work.
11204        Instead compare pc addresses; this is just a heuristic as things
11205        may have moved, but in practice it gives the correct answer
11206        often enough until a better solution is found.  */
11207     int have_ambiguous_names = ambiguous_names_p (b->loc);
11208
11209     for (; e; e = e->next)
11210       {
11211         if (!e->enabled && e->function_name)
11212           {
11213             struct bp_location *l = b->loc;
11214             if (have_ambiguous_names)
11215               {
11216                 for (; l; l = l->next)
11217                   if (breakpoint_locations_match (e, l))
11218                     {
11219                       l->enabled = 0;
11220                       break;
11221                     }
11222               }
11223             else
11224               {
11225                 for (; l; l = l->next)
11226                   if (l->function_name
11227                       && strcmp (e->function_name, l->function_name) == 0)
11228                     {
11229                       l->enabled = 0;
11230                       break;
11231                     }
11232               }
11233           }
11234       }
11235   }
11236
11237   if (!locations_are_equal (existing_locations, b->loc))
11238     observer_notify_breakpoint_modified (b);
11239
11240   update_global_location_list (1);
11241 }
11242
11243 /* Find the SaL locations corresponding to the given ADDR_STRING.
11244    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
11245
11246 static struct symtabs_and_lines
11247 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
11248 {
11249   char *s;
11250   int marker_spec;
11251   struct symtabs_and_lines sals = {0};
11252   struct gdb_exception e;
11253
11254   s = addr_string;
11255   marker_spec = b->type == bp_static_tracepoint && is_marker_spec (s);
11256
11257   TRY_CATCH (e, RETURN_MASK_ERROR)
11258     {
11259       if (marker_spec)
11260         {
11261           sals = decode_static_tracepoint_spec (&s);
11262           if (sals.nelts > b->static_trace_marker_id_idx)
11263             {
11264               sals.sals[0] = sals.sals[b->static_trace_marker_id_idx];
11265               sals.nelts = 1;
11266             }
11267           else
11268             error (_("marker %s not found"), b->static_trace_marker_id);
11269         }
11270       else
11271         sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, NULL);
11272     }
11273   if (e.reason < 0)
11274     {
11275       int not_found_and_ok = 0;
11276       /* For pending breakpoints, it's expected that parsing will
11277          fail until the right shared library is loaded.  User has
11278          already told to create pending breakpoints and don't need
11279          extra messages.  If breakpoint is in bp_shlib_disabled
11280          state, then user already saw the message about that
11281          breakpoint being disabled, and don't want to see more
11282          errors.  */
11283       if (e.error == NOT_FOUND_ERROR
11284           && (b->condition_not_parsed 
11285               || (b->loc && b->loc->shlib_disabled)
11286               || b->enable_state == bp_disabled))
11287         not_found_and_ok = 1;
11288
11289       if (!not_found_and_ok)
11290         {
11291           /* We surely don't want to warn about the same breakpoint
11292              10 times.  One solution, implemented here, is disable
11293              the breakpoint on error.  Another solution would be to
11294              have separate 'warning emitted' flag.  Since this
11295              happens only when a binary has changed, I don't know
11296              which approach is better.  */
11297           b->enable_state = bp_disabled;
11298           throw_exception (e);
11299         }
11300     }
11301
11302   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
11303     {
11304       gdb_assert (sals.nelts == 1);
11305
11306       resolve_sal_pc (&sals.sals[0]);
11307       if (b->condition_not_parsed && s && s[0])
11308         {
11309           char *cond_string = 0;
11310           int thread = -1;
11311           int task = 0;
11312
11313           find_condition_and_thread (s, sals.sals[0].pc,
11314                                      &cond_string, &thread, &task);
11315           if (cond_string)
11316             b->cond_string = cond_string;
11317           b->thread = thread;
11318           b->task = task;
11319           b->condition_not_parsed = 0;
11320         }
11321
11322       if (b->type == bp_static_tracepoint && !marker_spec)
11323         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
11324
11325       *found = 1;
11326     }
11327   else
11328     *found = 0;
11329
11330   return sals;
11331 }
11332
11333 /* Reevaluate a hardware or software breakpoint and recreate its locations.
11334    This is necessary after symbols are read (e.g., an executable or DSO
11335    was loaded, or the inferior just started).  */
11336
11337 static void
11338 re_set_breakpoint (struct breakpoint *b)
11339 {
11340   int found;
11341   struct symtabs_and_lines sals, sals_end;
11342   struct symtabs_and_lines expanded = {0};
11343   struct symtabs_and_lines expanded_end = {0};
11344   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11345
11346   input_radix = b->input_radix;
11347   save_current_space_and_thread ();
11348   switch_to_program_space_and_thread (b->pspace);
11349   set_language (b->language);
11350
11351   sals = addr_string_to_sals (b, b->addr_string, &found);
11352   if (found)
11353     {
11354       make_cleanup (xfree, sals.sals);
11355       expanded = expand_line_sal_maybe (sals.sals[0]);
11356     }
11357
11358   if (b->addr_string_range_end)
11359     {
11360       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
11361       if (found)
11362         {
11363           make_cleanup (xfree, sals_end.sals);
11364           expanded_end = expand_line_sal_maybe (sals_end.sals[0]);
11365         }
11366     }
11367
11368   update_breakpoint_locations (b, expanded, expanded_end);
11369   do_cleanups (cleanups);
11370 }
11371
11372 /* Reset a breakpoint given it's struct breakpoint * BINT.
11373    The value we return ends up being the return value from catch_errors.
11374    Unused in this case.  */
11375
11376 static int
11377 breakpoint_re_set_one (void *bint)
11378 {
11379   /* Get past catch_errs.  */
11380   struct breakpoint *b = (struct breakpoint *) bint;
11381
11382   switch (b->type)
11383     {
11384     case bp_none:
11385       warning (_("attempted to reset apparently deleted breakpoint #%d?"),
11386                b->number);
11387       return 0;
11388     case bp_breakpoint:
11389     case bp_hardware_breakpoint:
11390     case bp_tracepoint:
11391     case bp_fast_tracepoint:
11392     case bp_static_tracepoint:
11393     case bp_gnu_ifunc_resolver:
11394       /* Do not attempt to re-set breakpoints disabled during startup.  */
11395       if (b->enable_state == bp_startup_disabled)
11396         return 0;
11397
11398       if (b->addr_string == NULL)
11399         {
11400           /* Anything without a string can't be re-set.  */
11401           delete_breakpoint (b);
11402           return 0;
11403         }
11404
11405       re_set_breakpoint (b);
11406       break;
11407
11408     case bp_watchpoint:
11409     case bp_hardware_watchpoint:
11410     case bp_read_watchpoint:
11411     case bp_access_watchpoint:
11412       /* Watchpoint can be either on expression using entirely global
11413          variables, or it can be on local variables.
11414
11415          Watchpoints of the first kind are never auto-deleted, and
11416          even persist across program restarts. Since they can use
11417          variables from shared libraries, we need to reparse
11418          expression as libraries are loaded and unloaded.
11419
11420          Watchpoints on local variables can also change meaning as
11421          result of solib event.  For example, if a watchpoint uses
11422          both a local and a global variables in expression, it's a
11423          local watchpoint, but unloading of a shared library will make
11424          the expression invalid.  This is not a very common use case,
11425          but we still re-evaluate expression, to avoid surprises to
11426          the user.
11427
11428          Note that for local watchpoints, we re-evaluate it only if
11429          watchpoints frame id is still valid.  If it's not, it means
11430          the watchpoint is out of scope and will be deleted soon.  In
11431          fact, I'm not sure we'll ever be called in this case.
11432
11433          If a local watchpoint's frame id is still valid, then
11434          b->exp_valid_block is likewise valid, and we can safely use it.
11435          
11436          Don't do anything about disabled watchpoints, since they will
11437          be reevaluated again when enabled.  */
11438       update_watchpoint (b, 1 /* reparse */);
11439       break;
11440       /* We needn't really do anything to reset these, since the mask
11441          that requests them is unaffected by e.g., new libraries being
11442          loaded.  */
11443     case bp_catchpoint:
11444       break;
11445
11446     default:
11447       printf_filtered (_("Deleting unknown breakpoint type %d\n"), b->type);
11448       /* fall through */
11449       /* Delete overlay event and longjmp master breakpoints; they will be
11450          reset later by breakpoint_re_set.  */
11451     case bp_overlay_event:
11452     case bp_longjmp_master:
11453     case bp_std_terminate_master:
11454     case bp_exception_master:
11455       delete_breakpoint (b);
11456       break;
11457
11458       /* This breakpoint is special, it's set up when the inferior
11459          starts and we really don't want to touch it.  */
11460     case bp_shlib_event:
11461
11462       /* Like bp_shlib_event, this breakpoint type is special.
11463          Once it is set up, we do not want to touch it.  */
11464     case bp_thread_event:
11465
11466       /* Keep temporary breakpoints, which can be encountered when we
11467          step over a dlopen call and SOLIB_ADD is resetting the
11468          breakpoints.  Otherwise these should have been blown away via
11469          the cleanup chain or by breakpoint_init_inferior when we
11470          rerun the executable.  */
11471     case bp_until:
11472     case bp_finish:
11473     case bp_watchpoint_scope:
11474     case bp_call_dummy:
11475     case bp_std_terminate:
11476     case bp_step_resume:
11477     case bp_hp_step_resume:
11478     case bp_longjmp:
11479     case bp_longjmp_resume:
11480     case bp_exception:
11481     case bp_exception_resume:
11482     case bp_jit_event:
11483     case bp_gnu_ifunc_resolver_return:
11484       break;
11485     }
11486
11487   return 0;
11488 }
11489
11490 /* Re-set all breakpoints after symbols have been re-loaded.  */
11491 void
11492 breakpoint_re_set (void)
11493 {
11494   struct breakpoint *b, *b_tmp;
11495   enum language save_language;
11496   int save_input_radix;
11497   struct cleanup *old_chain;
11498
11499   save_language = current_language->la_language;
11500   save_input_radix = input_radix;
11501   old_chain = save_current_program_space ();
11502
11503   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11504   {
11505     /* Format possible error msg.  */
11506     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
11507                                 b->number);
11508     struct cleanup *cleanups = make_cleanup (xfree, message);
11509     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
11510     do_cleanups (cleanups);
11511   }
11512   set_language (save_language);
11513   input_radix = save_input_radix;
11514
11515   jit_breakpoint_re_set ();
11516
11517   do_cleanups (old_chain);
11518
11519   create_overlay_event_breakpoint ();
11520   create_longjmp_master_breakpoint ();
11521   create_std_terminate_master_breakpoint ();
11522   create_exception_master_breakpoint ();
11523 }
11524 \f
11525 /* Reset the thread number of this breakpoint:
11526
11527    - If the breakpoint is for all threads, leave it as-is.
11528    - Else, reset it to the current thread for inferior_ptid.  */
11529 void
11530 breakpoint_re_set_thread (struct breakpoint *b)
11531 {
11532   if (b->thread != -1)
11533     {
11534       if (in_thread_list (inferior_ptid))
11535         b->thread = pid_to_thread_id (inferior_ptid);
11536
11537       /* We're being called after following a fork.  The new fork is
11538          selected as current, and unless this was a vfork will have a
11539          different program space from the original thread.  Reset that
11540          as well.  */
11541       b->loc->pspace = current_program_space;
11542     }
11543 }
11544
11545 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
11546    If from_tty is nonzero, it prints a message to that effect,
11547    which ends with a period (no newline).  */
11548
11549 void
11550 set_ignore_count (int bptnum, int count, int from_tty)
11551 {
11552   struct breakpoint *b;
11553
11554   if (count < 0)
11555     count = 0;
11556
11557   ALL_BREAKPOINTS (b)
11558     if (b->number == bptnum)
11559     {
11560       if (is_tracepoint (b))
11561         {
11562           if (from_tty && count != 0)
11563             printf_filtered (_("Ignore count ignored for tracepoint %d."),
11564                              bptnum);
11565           return;
11566         }
11567       
11568       b->ignore_count = count;
11569       if (from_tty)
11570         {
11571           if (count == 0)
11572             printf_filtered (_("Will stop next time "
11573                                "breakpoint %d is reached."),
11574                              bptnum);
11575           else if (count == 1)
11576             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
11577                              bptnum);
11578           else
11579             printf_filtered (_("Will ignore next %d "
11580                                "crossings of breakpoint %d."),
11581                              count, bptnum);
11582         }
11583       breakpoints_changed ();
11584       observer_notify_breakpoint_modified (b);
11585       return;
11586     }
11587
11588   error (_("No breakpoint number %d."), bptnum);
11589 }
11590
11591 /* Command to set ignore-count of breakpoint N to COUNT.  */
11592
11593 static void
11594 ignore_command (char *args, int from_tty)
11595 {
11596   char *p = args;
11597   int num;
11598
11599   if (p == 0)
11600     error_no_arg (_("a breakpoint number"));
11601
11602   num = get_number (&p);
11603   if (num == 0)
11604     error (_("bad breakpoint number: '%s'"), args);
11605   if (*p == 0)
11606     error (_("Second argument (specified ignore-count) is missing."));
11607
11608   set_ignore_count (num,
11609                     longest_to_int (value_as_long (parse_and_eval (p))),
11610                     from_tty);
11611   if (from_tty)
11612     printf_filtered ("\n");
11613 }
11614 \f
11615 /* Call FUNCTION on each of the breakpoints
11616    whose numbers are given in ARGS.  */
11617
11618 static void
11619 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
11620                                                       void *),
11621                         void *data)
11622 {
11623   int num;
11624   struct breakpoint *b, *tmp;
11625   int match;
11626   struct get_number_or_range_state state;
11627
11628   if (args == 0)
11629     error_no_arg (_("one or more breakpoint numbers"));
11630
11631   init_number_or_range (&state, args);
11632
11633   while (!state.finished)
11634     {
11635       char *p = state.string;
11636
11637       match = 0;
11638
11639       num = get_number_or_range (&state);
11640       if (num == 0)
11641         {
11642           warning (_("bad breakpoint number at or near '%s'"), p);
11643         }
11644       else
11645         {
11646           ALL_BREAKPOINTS_SAFE (b, tmp)
11647             if (b->number == num)
11648               {
11649                 match = 1;
11650                 function (b, data);
11651                 break;
11652               }
11653           if (match == 0)
11654             printf_unfiltered (_("No breakpoint number %d.\n"), num);
11655         }
11656     }
11657 }
11658
11659 static struct bp_location *
11660 find_location_by_number (char *number)
11661 {
11662   char *dot = strchr (number, '.');
11663   char *p1;
11664   int bp_num;
11665   int loc_num;
11666   struct breakpoint *b;
11667   struct bp_location *loc;  
11668
11669   *dot = '\0';
11670
11671   p1 = number;
11672   bp_num = get_number (&p1);
11673   if (bp_num == 0)
11674     error (_("Bad breakpoint number '%s'"), number);
11675
11676   ALL_BREAKPOINTS (b)
11677     if (b->number == bp_num)
11678       {
11679         break;
11680       }
11681
11682   if (!b || b->number != bp_num)
11683     error (_("Bad breakpoint number '%s'"), number);
11684   
11685   p1 = dot+1;
11686   loc_num = get_number (&p1);
11687   if (loc_num == 0)
11688     error (_("Bad breakpoint location number '%s'"), number);
11689
11690   --loc_num;
11691   loc = b->loc;
11692   for (;loc_num && loc; --loc_num, loc = loc->next)
11693     ;
11694   if (!loc)
11695     error (_("Bad breakpoint location number '%s'"), dot+1);
11696     
11697   return loc;  
11698 }
11699
11700
11701 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
11702    If from_tty is nonzero, it prints a message to that effect,
11703    which ends with a period (no newline).  */
11704
11705 void
11706 disable_breakpoint (struct breakpoint *bpt)
11707 {
11708   /* Never disable a watchpoint scope breakpoint; we want to
11709      hit them when we leave scope so we can delete both the
11710      watchpoint and its scope breakpoint at that time.  */
11711   if (bpt->type == bp_watchpoint_scope)
11712     return;
11713
11714   /* You can't disable permanent breakpoints.  */
11715   if (bpt->enable_state == bp_permanent)
11716     return;
11717
11718   bpt->enable_state = bp_disabled;
11719
11720   if (target_supports_enable_disable_tracepoint ()
11721       && current_trace_status ()->running && is_tracepoint (bpt))
11722     {
11723       struct bp_location *location;
11724      
11725       for (location = bpt->loc; location; location = location->next)
11726         target_disable_tracepoint (location);
11727     }
11728
11729   update_global_location_list (0);
11730
11731   observer_notify_breakpoint_modified (bpt);
11732 }
11733
11734 /* A callback for iterate_over_related_breakpoints.  */
11735
11736 static void
11737 do_disable_breakpoint (struct breakpoint *b, void *ignore)
11738 {
11739   disable_breakpoint (b);
11740 }
11741
11742 /* A callback for map_breakpoint_numbers that calls
11743    disable_breakpoint.  */
11744
11745 static void
11746 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
11747 {
11748   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
11749 }
11750
11751 static void
11752 disable_command (char *args, int from_tty)
11753 {
11754   if (args == 0)
11755     {
11756       struct breakpoint *bpt;
11757
11758       ALL_BREAKPOINTS (bpt)
11759         if (user_breakpoint_p (bpt))
11760           disable_breakpoint (bpt);
11761     }
11762   else if (strchr (args, '.'))
11763     {
11764       struct bp_location *loc = find_location_by_number (args);
11765       if (loc)
11766         {
11767           loc->enabled = 0;
11768           if (target_supports_enable_disable_tracepoint ()
11769               && current_trace_status ()->running && loc->owner
11770               && is_tracepoint (loc->owner))
11771             target_disable_tracepoint (loc);
11772         }
11773       update_global_location_list (0);
11774     }
11775   else
11776     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
11777 }
11778
11779 static void
11780 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition)
11781 {
11782   int target_resources_ok;
11783
11784   if (bpt->type == bp_hardware_breakpoint)
11785     {
11786       int i;
11787       i = hw_breakpoint_used_count ();
11788       target_resources_ok = 
11789         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
11790                                             i + 1, 0);
11791       if (target_resources_ok == 0)
11792         error (_("No hardware breakpoint support in the target."));
11793       else if (target_resources_ok < 0)
11794         error (_("Hardware breakpoints used exceeds limit."));
11795     }
11796
11797   if (is_watchpoint (bpt))
11798     {
11799       /* Initialize it just to avoid a GCC false warning.  */
11800       enum enable_state orig_enable_state = 0;
11801       struct gdb_exception e;
11802
11803       TRY_CATCH (e, RETURN_MASK_ALL)
11804         {
11805           orig_enable_state = bpt->enable_state;
11806           bpt->enable_state = bp_enabled;
11807           update_watchpoint (bpt, 1 /* reparse */);
11808         }
11809       if (e.reason < 0)
11810         {
11811           bpt->enable_state = orig_enable_state;
11812           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
11813                              bpt->number);
11814           return;
11815         }
11816     }
11817
11818   if (bpt->enable_state != bp_permanent)
11819     bpt->enable_state = bp_enabled;
11820
11821   if (target_supports_enable_disable_tracepoint ()
11822       && current_trace_status ()->running && is_tracepoint (bpt))
11823     {
11824       struct bp_location *location;
11825
11826       for (location = bpt->loc; location; location = location->next)
11827         target_enable_tracepoint (location);
11828     }
11829
11830   bpt->disposition = disposition;
11831   update_global_location_list (1);
11832   breakpoints_changed ();
11833   
11834   observer_notify_breakpoint_modified (bpt);
11835 }
11836
11837
11838 void
11839 enable_breakpoint (struct breakpoint *bpt)
11840 {
11841   enable_breakpoint_disp (bpt, bpt->disposition);
11842 }
11843
11844 static void
11845 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
11846 {
11847   enable_breakpoint (bpt);
11848 }
11849
11850 /* A callback for map_breakpoint_numbers that calls
11851    enable_breakpoint.  */
11852
11853 static void
11854 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
11855 {
11856   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
11857 }
11858
11859 /* The enable command enables the specified breakpoints (or all defined
11860    breakpoints) so they once again become (or continue to be) effective
11861    in stopping the inferior.  */
11862
11863 static void
11864 enable_command (char *args, int from_tty)
11865 {
11866   if (args == 0)
11867     {
11868       struct breakpoint *bpt;
11869
11870       ALL_BREAKPOINTS (bpt)
11871         if (user_breakpoint_p (bpt))
11872           enable_breakpoint (bpt);
11873     }
11874   else if (strchr (args, '.'))
11875     {
11876       struct bp_location *loc = find_location_by_number (args);
11877       if (loc)
11878         {
11879           loc->enabled = 1;
11880           if (target_supports_enable_disable_tracepoint ()
11881               && current_trace_status ()->running && loc->owner
11882               && is_tracepoint (loc->owner))
11883             target_enable_tracepoint (loc);
11884         }
11885       update_global_location_list (1);
11886     }
11887   else
11888     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
11889 }
11890
11891 static void
11892 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
11893 {
11894   enum bpdisp disp = *(enum bpdisp *) arg;
11895
11896   enable_breakpoint_disp (bpt, disp);
11897 }
11898
11899 static void
11900 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
11901 {
11902   enum bpdisp disp = disp_disable;
11903
11904   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
11905 }
11906
11907 static void
11908 enable_once_command (char *args, int from_tty)
11909 {
11910   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
11911 }
11912
11913 static void
11914 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
11915 {
11916   enum bpdisp disp = disp_del;
11917
11918   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
11919 }
11920
11921 static void
11922 enable_delete_command (char *args, int from_tty)
11923 {
11924   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
11925 }
11926 \f
11927 static void
11928 set_breakpoint_cmd (char *args, int from_tty)
11929 {
11930 }
11931
11932 static void
11933 show_breakpoint_cmd (char *args, int from_tty)
11934 {
11935 }
11936
11937 /* Invalidate last known value of any hardware watchpoint if
11938    the memory which that value represents has been written to by
11939    GDB itself.  */
11940
11941 static void
11942 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
11943                                       const bfd_byte *data)
11944 {
11945   struct breakpoint *bp;
11946
11947   ALL_BREAKPOINTS (bp)
11948     if (bp->enable_state == bp_enabled
11949         && bp->type == bp_hardware_watchpoint
11950         && bp->val_valid && bp->val)
11951       {
11952         struct bp_location *loc;
11953
11954         for (loc = bp->loc; loc != NULL; loc = loc->next)
11955           if (loc->loc_type == bp_loc_hardware_watchpoint
11956               && loc->address + loc->length > addr
11957               && addr + len > loc->address)
11958             {
11959               value_free (bp->val);
11960               bp->val = NULL;
11961               bp->val_valid = 0;
11962             }
11963       }
11964 }
11965
11966 /* Use default_breakpoint_'s, or nothing if they aren't valid.  */
11967
11968 struct symtabs_and_lines
11969 decode_line_spec_1 (char *string, int funfirstline)
11970 {
11971   struct symtabs_and_lines sals;
11972
11973   if (string == 0)
11974     error (_("Empty line specification."));
11975   if (default_breakpoint_valid)
11976     sals = decode_line_1 (&string, funfirstline,
11977                           default_breakpoint_symtab,
11978                           default_breakpoint_line,
11979                           NULL);
11980   else
11981     sals = decode_line_1 (&string, funfirstline,
11982                           (struct symtab *) NULL, 0, NULL);
11983   if (*string)
11984     error (_("Junk at end of line specification: %s"), string);
11985   return sals;
11986 }
11987
11988 /* Create and insert a raw software breakpoint at PC.  Return an
11989    identifier, which should be used to remove the breakpoint later.
11990    In general, places which call this should be using something on the
11991    breakpoint chain instead; this function should be eliminated
11992    someday.  */
11993
11994 void *
11995 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
11996                                   struct address_space *aspace, CORE_ADDR pc)
11997 {
11998   struct bp_target_info *bp_tgt;
11999
12000   bp_tgt = XZALLOC (struct bp_target_info);
12001
12002   bp_tgt->placed_address_space = aspace;
12003   bp_tgt->placed_address = pc;
12004
12005   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
12006     {
12007       /* Could not insert the breakpoint.  */
12008       xfree (bp_tgt);
12009       return NULL;
12010     }
12011
12012   return bp_tgt;
12013 }
12014
12015 /* Remove a breakpoint BP inserted by
12016    deprecated_insert_raw_breakpoint.  */
12017
12018 int
12019 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
12020 {
12021   struct bp_target_info *bp_tgt = bp;
12022   int ret;
12023
12024   ret = target_remove_breakpoint (gdbarch, bp_tgt);
12025   xfree (bp_tgt);
12026
12027   return ret;
12028 }
12029
12030 /* One (or perhaps two) breakpoints used for software single
12031    stepping.  */
12032
12033 static void *single_step_breakpoints[2];
12034 static struct gdbarch *single_step_gdbarch[2];
12035
12036 /* Create and insert a breakpoint for software single step.  */
12037
12038 void
12039 insert_single_step_breakpoint (struct gdbarch *gdbarch,
12040                                struct address_space *aspace, 
12041                                CORE_ADDR next_pc)
12042 {
12043   void **bpt_p;
12044
12045   if (single_step_breakpoints[0] == NULL)
12046     {
12047       bpt_p = &single_step_breakpoints[0];
12048       single_step_gdbarch[0] = gdbarch;
12049     }
12050   else
12051     {
12052       gdb_assert (single_step_breakpoints[1] == NULL);
12053       bpt_p = &single_step_breakpoints[1];
12054       single_step_gdbarch[1] = gdbarch;
12055     }
12056
12057   /* NOTE drow/2006-04-11: A future improvement to this function would
12058      be to only create the breakpoints once, and actually put them on
12059      the breakpoint chain.  That would let us use set_raw_breakpoint.
12060      We could adjust the addresses each time they were needed.  Doing
12061      this requires corresponding changes elsewhere where single step
12062      breakpoints are handled, however.  So, for now, we use this.  */
12063
12064   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
12065   if (*bpt_p == NULL)
12066     error (_("Could not insert single-step breakpoint at %s"),
12067              paddress (gdbarch, next_pc));
12068 }
12069
12070 /* Check if the breakpoints used for software single stepping
12071    were inserted or not.  */
12072
12073 int
12074 single_step_breakpoints_inserted (void)
12075 {
12076   return (single_step_breakpoints[0] != NULL
12077           || single_step_breakpoints[1] != NULL);
12078 }
12079
12080 /* Remove and delete any breakpoints used for software single step.  */
12081
12082 void
12083 remove_single_step_breakpoints (void)
12084 {
12085   gdb_assert (single_step_breakpoints[0] != NULL);
12086
12087   /* See insert_single_step_breakpoint for more about this deprecated
12088      call.  */
12089   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
12090                                     single_step_breakpoints[0]);
12091   single_step_gdbarch[0] = NULL;
12092   single_step_breakpoints[0] = NULL;
12093
12094   if (single_step_breakpoints[1] != NULL)
12095     {
12096       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
12097                                         single_step_breakpoints[1]);
12098       single_step_gdbarch[1] = NULL;
12099       single_step_breakpoints[1] = NULL;
12100     }
12101 }
12102
12103 /* Delete software single step breakpoints without removing them from
12104    the inferior.  This is intended to be used if the inferior's address
12105    space where they were inserted is already gone, e.g. after exit or
12106    exec.  */
12107
12108 void
12109 cancel_single_step_breakpoints (void)
12110 {
12111   int i;
12112
12113   for (i = 0; i < 2; i++)
12114     if (single_step_breakpoints[i])
12115       {
12116         xfree (single_step_breakpoints[i]);
12117         single_step_breakpoints[i] = NULL;
12118         single_step_gdbarch[i] = NULL;
12119       }
12120 }
12121
12122 /* Detach software single-step breakpoints from INFERIOR_PTID without
12123    removing them.  */
12124
12125 static void
12126 detach_single_step_breakpoints (void)
12127 {
12128   int i;
12129
12130   for (i = 0; i < 2; i++)
12131     if (single_step_breakpoints[i])
12132       target_remove_breakpoint (single_step_gdbarch[i],
12133                                 single_step_breakpoints[i]);
12134 }
12135
12136 /* Check whether a software single-step breakpoint is inserted at
12137    PC.  */
12138
12139 static int
12140 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
12141                                         CORE_ADDR pc)
12142 {
12143   int i;
12144
12145   for (i = 0; i < 2; i++)
12146     {
12147       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
12148       if (bp_tgt
12149           && breakpoint_address_match (bp_tgt->placed_address_space,
12150                                        bp_tgt->placed_address,
12151                                        aspace, pc))
12152         return 1;
12153     }
12154
12155   return 0;
12156 }
12157
12158 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
12159    non-zero otherwise.  */
12160 static int
12161 is_syscall_catchpoint_enabled (struct breakpoint *bp)
12162 {
12163   if (syscall_catchpoint_p (bp)
12164       && bp->enable_state != bp_disabled
12165       && bp->enable_state != bp_call_disabled)
12166     return 1;
12167   else
12168     return 0;
12169 }
12170
12171 int
12172 catch_syscall_enabled (void)
12173 {
12174   struct inferior *inf = current_inferior ();
12175
12176   return inf->total_syscalls_count != 0;
12177 }
12178
12179 int
12180 catching_syscall_number (int syscall_number)
12181 {
12182   struct breakpoint *bp;
12183
12184   ALL_BREAKPOINTS (bp)
12185     if (is_syscall_catchpoint_enabled (bp))
12186       {
12187         if (bp->syscalls_to_be_caught)
12188           {
12189             int i, iter;
12190             for (i = 0;
12191                  VEC_iterate (int, bp->syscalls_to_be_caught, i, iter);
12192                  i++)
12193               if (syscall_number == iter)
12194                 return 1;
12195           }
12196         else
12197           return 1;
12198       }
12199
12200   return 0;
12201 }
12202
12203 /* Complete syscall names.  Used by "catch syscall".  */
12204 static char **
12205 catch_syscall_completer (struct cmd_list_element *cmd,
12206                          char *text, char *word)
12207 {
12208   const char **list = get_syscall_names ();
12209   char **retlist
12210     = (list == NULL) ? NULL : complete_on_enum (list, text, word);
12211
12212   xfree (list);
12213   return retlist;
12214 }
12215
12216 /* Tracepoint-specific operations.  */
12217
12218 /* Set tracepoint count to NUM.  */
12219 static void
12220 set_tracepoint_count (int num)
12221 {
12222   tracepoint_count = num;
12223   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
12224 }
12225
12226 void
12227 trace_command (char *arg, int from_tty)
12228 {
12229   if (create_breakpoint (get_current_arch (),
12230                          arg,
12231                          NULL, 0, 1 /* parse arg */,
12232                          0 /* tempflag */,
12233                          bp_tracepoint /* type_wanted */,
12234                          0 /* Ignore count */,
12235                          pending_break_support,
12236                          NULL,
12237                          from_tty,
12238                          1 /* enabled */,
12239                          0 /* internal */))
12240     set_tracepoint_count (breakpoint_count);
12241 }
12242
12243 void
12244 ftrace_command (char *arg, int from_tty)
12245 {
12246   if (create_breakpoint (get_current_arch (),
12247                          arg,
12248                          NULL, 0, 1 /* parse arg */,
12249                          0 /* tempflag */,
12250                          bp_fast_tracepoint /* type_wanted */,
12251                          0 /* Ignore count */,
12252                          pending_break_support,
12253                          NULL,
12254                          from_tty,
12255                          1 /* enabled */,
12256                          0 /* internal */))
12257     set_tracepoint_count (breakpoint_count);
12258 }
12259
12260 /* strace command implementation.  Creates a static tracepoint.  */
12261
12262 void
12263 strace_command (char *arg, int from_tty)
12264 {
12265   if (create_breakpoint (get_current_arch (),
12266                          arg,
12267                          NULL, 0, 1 /* parse arg */,
12268                          0 /* tempflag */,
12269                          bp_static_tracepoint /* type_wanted */,
12270                          0 /* Ignore count */,
12271                          pending_break_support,
12272                          NULL,
12273                          from_tty,
12274                          1 /* enabled */,
12275                          0 /* internal */))
12276     set_tracepoint_count (breakpoint_count);
12277 }
12278
12279 /* Set up a fake reader function that gets command lines from a linked
12280    list that was acquired during tracepoint uploading.  */
12281
12282 static struct uploaded_tp *this_utp;
12283 static int next_cmd;
12284
12285 static char *
12286 read_uploaded_action (void)
12287 {
12288   char *rslt;
12289
12290   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
12291
12292   next_cmd++;
12293
12294   return rslt;
12295 }
12296
12297 /* Given information about a tracepoint as recorded on a target (which
12298    can be either a live system or a trace file), attempt to create an
12299    equivalent GDB tracepoint.  This is not a reliable process, since
12300    the target does not necessarily have all the information used when
12301    the tracepoint was originally defined.  */
12302   
12303 struct breakpoint *
12304 create_tracepoint_from_upload (struct uploaded_tp *utp)
12305 {
12306   char *addr_str, small_buf[100];
12307   struct breakpoint *tp;
12308
12309   if (utp->at_string)
12310     addr_str = utp->at_string;
12311   else
12312     {
12313       /* In the absence of a source location, fall back to raw
12314          address.  Since there is no way to confirm that the address
12315          means the same thing as when the trace was started, warn the
12316          user.  */
12317       warning (_("Uploaded tracepoint %d has no "
12318                  "source location, using raw address"),
12319                utp->number);
12320       sprintf (small_buf, "*%s", hex_string (utp->addr));
12321       addr_str = small_buf;
12322     }
12323
12324   /* There's not much we can do with a sequence of bytecodes.  */
12325   if (utp->cond && !utp->cond_string)
12326     warning (_("Uploaded tracepoint %d condition "
12327                "has no source form, ignoring it"),
12328              utp->number);
12329
12330   if (!create_breakpoint (get_current_arch (),
12331                           addr_str,
12332                           utp->cond_string, -1, 0 /* parse cond/thread */,
12333                           0 /* tempflag */,
12334                           utp->type /* type_wanted */,
12335                           0 /* Ignore count */,
12336                           pending_break_support,
12337                           NULL,
12338                           0 /* from_tty */,
12339                           utp->enabled /* enabled */,
12340                           0 /* internal */))
12341     return NULL;
12342
12343   set_tracepoint_count (breakpoint_count);
12344   
12345   /* Get the tracepoint we just created.  */
12346   tp = get_tracepoint (tracepoint_count);
12347   gdb_assert (tp != NULL);
12348
12349   if (utp->pass > 0)
12350     {
12351       sprintf (small_buf, "%d %d", utp->pass, tp->number);
12352
12353       trace_pass_command (small_buf, 0);
12354     }
12355
12356   /* If we have uploaded versions of the original commands, set up a
12357      special-purpose "reader" function and call the usual command line
12358      reader, then pass the result to the breakpoint command-setting
12359      function.  */
12360   if (!VEC_empty (char_ptr, utp->cmd_strings))
12361     {
12362       struct command_line *cmd_list;
12363
12364       this_utp = utp;
12365       next_cmd = 0;
12366
12367       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
12368
12369       breakpoint_set_commands (tp, cmd_list);
12370     }
12371   else if (!VEC_empty (char_ptr, utp->actions)
12372            || !VEC_empty (char_ptr, utp->step_actions))
12373     warning (_("Uploaded tracepoint %d actions "
12374                "have no source form, ignoring them"),
12375              utp->number);
12376
12377   return tp;
12378   }
12379   
12380 /* Print information on tracepoint number TPNUM_EXP, or all if
12381    omitted.  */
12382
12383 static void
12384 tracepoints_info (char *args, int from_tty)
12385 {
12386   int num_printed;
12387
12388   num_printed = breakpoint_1 (args, 0, is_tracepoint);
12389
12390   if (num_printed == 0)
12391     {
12392       if (args == NULL || *args == '\0')
12393         ui_out_message (uiout, 0, "No tracepoints.\n");
12394       else
12395         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
12396     }
12397
12398   default_collect_info ();
12399 }
12400
12401 /* The 'enable trace' command enables tracepoints.
12402    Not supported by all targets.  */
12403 static void
12404 enable_trace_command (char *args, int from_tty)
12405 {
12406   enable_command (args, from_tty);
12407 }
12408
12409 /* The 'disable trace' command disables tracepoints.
12410    Not supported by all targets.  */
12411 static void
12412 disable_trace_command (char *args, int from_tty)
12413 {
12414   disable_command (args, from_tty);
12415 }
12416
12417 /* Remove a tracepoint (or all if no argument).  */
12418 static void
12419 delete_trace_command (char *arg, int from_tty)
12420 {
12421   struct breakpoint *b, *b_tmp;
12422
12423   dont_repeat ();
12424
12425   if (arg == 0)
12426     {
12427       int breaks_to_delete = 0;
12428
12429       /* Delete all breakpoints if no argument.
12430          Do not delete internal or call-dummy breakpoints, these
12431          have to be deleted with an explicit breakpoint number 
12432          argument.  */
12433       ALL_TRACEPOINTS (b)
12434         if (is_tracepoint (b) && user_breakpoint_p (b))
12435           {
12436             breaks_to_delete = 1;
12437             break;
12438           }
12439
12440       /* Ask user only if there are some breakpoints to delete.  */
12441       if (!from_tty
12442           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
12443         {
12444           ALL_BREAKPOINTS_SAFE (b, b_tmp)
12445             if (is_tracepoint (b) && user_breakpoint_p (b))
12446               delete_breakpoint (b);
12447         }
12448     }
12449   else
12450     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
12451 }
12452
12453 /* Helper function for trace_pass_command.  */
12454
12455 static void
12456 trace_pass_set_count (struct breakpoint *bp, int count, int from_tty)
12457 {
12458   bp->pass_count = count;
12459   observer_notify_tracepoint_modified (bp->number);
12460   if (from_tty)
12461     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
12462                      bp->number, count);
12463 }
12464
12465 /* Set passcount for tracepoint.
12466
12467    First command argument is passcount, second is tracepoint number.
12468    If tracepoint number omitted, apply to most recently defined.
12469    Also accepts special argument "all".  */
12470
12471 static void
12472 trace_pass_command (char *args, int from_tty)
12473 {
12474   struct breakpoint *t1;
12475   unsigned int count;
12476
12477   if (args == 0 || *args == 0)
12478     error (_("passcount command requires an "
12479              "argument (count + optional TP num)"));
12480
12481   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
12482
12483   while (*args && isspace ((int) *args))
12484     args++;
12485
12486   if (*args && strncasecmp (args, "all", 3) == 0)
12487     {
12488       args += 3;                        /* Skip special argument "all".  */
12489       if (*args)
12490         error (_("Junk at end of arguments."));
12491
12492       ALL_TRACEPOINTS (t1)
12493       {
12494         trace_pass_set_count (t1, count, from_tty);
12495       }
12496     }
12497   else if (*args == '\0')
12498     {
12499       t1 = get_tracepoint_by_number (&args, NULL, 1);
12500       if (t1)
12501         trace_pass_set_count (t1, count, from_tty);
12502     }
12503   else
12504     {
12505       struct get_number_or_range_state state;
12506
12507       init_number_or_range (&state, args);
12508       while (!state.finished)
12509         {
12510           t1 = get_tracepoint_by_number (&args, &state, 1);
12511           if (t1)
12512             trace_pass_set_count (t1, count, from_tty);
12513         }
12514     }
12515 }
12516
12517 struct breakpoint *
12518 get_tracepoint (int num)
12519 {
12520   struct breakpoint *t;
12521
12522   ALL_TRACEPOINTS (t)
12523     if (t->number == num)
12524       return t;
12525
12526   return NULL;
12527 }
12528
12529 /* Find the tracepoint with the given target-side number (which may be
12530    different from the tracepoint number after disconnecting and
12531    reconnecting).  */
12532
12533 struct breakpoint *
12534 get_tracepoint_by_number_on_target (int num)
12535 {
12536   struct breakpoint *t;
12537
12538   ALL_TRACEPOINTS (t)
12539     if (t->number_on_target == num)
12540       return t;
12541
12542   return NULL;
12543 }
12544
12545 /* Utility: parse a tracepoint number and look it up in the list.
12546    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
12547    If OPTIONAL_P is true, then if the argument is missing, the most
12548    recent tracepoint (tracepoint_count) is returned.  */
12549 struct breakpoint *
12550 get_tracepoint_by_number (char **arg,
12551                           struct get_number_or_range_state *state,
12552                           int optional_p)
12553 {
12554   extern int tracepoint_count;
12555   struct breakpoint *t;
12556   int tpnum;
12557   char *instring = arg == NULL ? NULL : *arg;
12558
12559   if (state)
12560     {
12561       gdb_assert (!state->finished);
12562       tpnum = get_number_or_range (state);
12563     }
12564   else if (arg == NULL || *arg == NULL || ! **arg)
12565     {
12566       if (optional_p)
12567         tpnum = tracepoint_count;
12568       else
12569         error_no_arg (_("tracepoint number"));
12570     }
12571   else
12572     tpnum = get_number (arg);
12573
12574   if (tpnum <= 0)
12575     {
12576       if (instring && *instring)
12577         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
12578                          instring);
12579       else
12580         printf_filtered (_("Tracepoint argument missing "
12581                            "and no previous tracepoint\n"));
12582       return NULL;
12583     }
12584
12585   ALL_TRACEPOINTS (t)
12586     if (t->number == tpnum)
12587     {
12588       return t;
12589     }
12590
12591   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
12592   return NULL;
12593 }
12594
12595 /* Save information on user settable breakpoints (watchpoints, etc) to
12596    a new script file named FILENAME.  If FILTER is non-NULL, call it
12597    on each breakpoint and only include the ones for which it returns
12598    non-zero.  */
12599
12600 static void
12601 save_breakpoints (char *filename, int from_tty,
12602                   int (*filter) (const struct breakpoint *))
12603 {
12604   struct breakpoint *tp;
12605   int any = 0;
12606   char *pathname;
12607   struct cleanup *cleanup;
12608   struct ui_file *fp;
12609   int extra_trace_bits = 0;
12610
12611   if (filename == 0 || *filename == 0)
12612     error (_("Argument required (file name in which to save)"));
12613
12614   /* See if we have anything to save.  */
12615   ALL_BREAKPOINTS (tp)
12616   {
12617     /* Skip internal and momentary breakpoints.  */
12618     if (!user_breakpoint_p (tp))
12619       continue;
12620
12621     /* If we have a filter, only save the breakpoints it accepts.  */
12622     if (filter && !filter (tp))
12623       continue;
12624
12625     any = 1;
12626
12627     if (is_tracepoint (tp))
12628       {
12629         extra_trace_bits = 1;
12630
12631         /* We can stop searching.  */
12632         break;
12633       }
12634   }
12635
12636   if (!any)
12637     {
12638       warning (_("Nothing to save."));
12639       return;
12640     }
12641
12642   pathname = tilde_expand (filename);
12643   cleanup = make_cleanup (xfree, pathname);
12644   fp = gdb_fopen (pathname, "w");
12645   if (!fp)
12646     error (_("Unable to open file '%s' for saving (%s)"),
12647            filename, safe_strerror (errno));
12648   make_cleanup_ui_file_delete (fp);
12649
12650   if (extra_trace_bits)
12651     save_trace_state_variables (fp);
12652
12653   ALL_BREAKPOINTS (tp)
12654   {
12655     /* Skip internal and momentary breakpoints.  */
12656     if (!user_breakpoint_p (tp))
12657       continue;
12658
12659     /* If we have a filter, only save the breakpoints it accepts.  */
12660     if (filter && !filter (tp))
12661       continue;
12662
12663     if (tp->ops != NULL && tp->ops->print_recreate != NULL)
12664       (tp->ops->print_recreate) (tp, fp);
12665     else
12666       {
12667         if (tp->type == bp_fast_tracepoint)
12668           fprintf_unfiltered (fp, "ftrace");
12669         if (tp->type == bp_static_tracepoint)
12670           fprintf_unfiltered (fp, "strace");
12671         else if (tp->type == bp_tracepoint)
12672           fprintf_unfiltered (fp, "trace");
12673         else if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12674           fprintf_unfiltered (fp, "tbreak");
12675         else if (tp->type == bp_breakpoint)
12676           fprintf_unfiltered (fp, "break");
12677         else if (tp->type == bp_hardware_breakpoint
12678                  && tp->disposition == disp_del)
12679           fprintf_unfiltered (fp, "thbreak");
12680         else if (tp->type == bp_hardware_breakpoint)
12681           fprintf_unfiltered (fp, "hbreak");
12682         else if (tp->type == bp_watchpoint)
12683           fprintf_unfiltered (fp, "watch");
12684         else if (tp->type == bp_hardware_watchpoint)
12685           fprintf_unfiltered (fp, "watch");
12686         else if (tp->type == bp_read_watchpoint)
12687           fprintf_unfiltered (fp, "rwatch");
12688         else if (tp->type == bp_access_watchpoint)
12689           fprintf_unfiltered (fp, "awatch");
12690         else
12691           internal_error (__FILE__, __LINE__,
12692                           _("unhandled breakpoint type %d"), (int) tp->type);
12693
12694         if (tp->exp_string)
12695           fprintf_unfiltered (fp, " %s", tp->exp_string);
12696         else if (tp->addr_string)
12697           fprintf_unfiltered (fp, " %s", tp->addr_string);
12698         else
12699           {
12700             char tmp[40];
12701
12702             sprintf_vma (tmp, tp->loc->address);
12703             fprintf_unfiltered (fp, " *0x%s", tmp);
12704           }
12705       }
12706
12707     if (tp->thread != -1)
12708       fprintf_unfiltered (fp, " thread %d", tp->thread);
12709
12710     if (tp->task != 0)
12711       fprintf_unfiltered (fp, " task %d", tp->task);
12712
12713     fprintf_unfiltered (fp, "\n");
12714
12715     /* Note, we can't rely on tp->number for anything, as we can't
12716        assume the recreated breakpoint numbers will match.  Use $bpnum
12717        instead.  */
12718
12719     if (tp->cond_string)
12720       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
12721
12722     if (tp->ignore_count)
12723       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
12724
12725     if (tp->pass_count)
12726       fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12727
12728     if (tp->commands)
12729       {
12730         volatile struct gdb_exception ex;       
12731
12732         fprintf_unfiltered (fp, "  commands\n");
12733         
12734         ui_out_redirect (uiout, fp);
12735         TRY_CATCH (ex, RETURN_MASK_ALL)
12736           {
12737             print_command_lines (uiout, tp->commands->commands, 2);
12738           }
12739         ui_out_redirect (uiout, NULL);
12740
12741         if (ex.reason < 0)
12742           throw_exception (ex);
12743
12744         fprintf_unfiltered (fp, "  end\n");
12745       }
12746
12747     if (tp->enable_state == bp_disabled)
12748       fprintf_unfiltered (fp, "disable\n");
12749
12750     /* If this is a multi-location breakpoint, check if the locations
12751        should be individually disabled.  Watchpoint locations are
12752        special, and not user visible.  */
12753     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
12754       {
12755         struct bp_location *loc;
12756         int n = 1;
12757
12758         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
12759           if (!loc->enabled)
12760             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
12761       }
12762   }
12763
12764   if (extra_trace_bits && *default_collect)
12765     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
12766
12767   do_cleanups (cleanup);
12768   if (from_tty)
12769     printf_filtered (_("Saved to file '%s'.\n"), filename);
12770 }
12771
12772 /* The `save breakpoints' command.  */
12773
12774 static void
12775 save_breakpoints_command (char *args, int from_tty)
12776 {
12777   save_breakpoints (args, from_tty, NULL);
12778 }
12779
12780 /* The `save tracepoints' command.  */
12781
12782 static void
12783 save_tracepoints_command (char *args, int from_tty)
12784 {
12785   save_breakpoints (args, from_tty, is_tracepoint);
12786 }
12787
12788 /* Create a vector of all tracepoints.  */
12789
12790 VEC(breakpoint_p) *
12791 all_tracepoints (void)
12792 {
12793   VEC(breakpoint_p) *tp_vec = 0;
12794   struct breakpoint *tp;
12795
12796   ALL_TRACEPOINTS (tp)
12797   {
12798     VEC_safe_push (breakpoint_p, tp_vec, tp);
12799   }
12800
12801   return tp_vec;
12802 }
12803
12804 \f
12805 /* This help string is used for the break, hbreak, tbreak and thbreak
12806    commands.  It is defined as a macro to prevent duplication.
12807    COMMAND should be a string constant containing the name of the
12808    command.  */
12809 #define BREAK_ARGS_HELP(command) \
12810 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
12811 LOCATION may be a line number, function name, or \"*\" and an address.\n\
12812 If a line number is specified, break at start of code for that line.\n\
12813 If a function is specified, break at start of code for that function.\n\
12814 If an address is specified, break at that exact address.\n\
12815 With no LOCATION, uses current execution address of the selected\n\
12816 stack frame.  This is useful for breaking on return to a stack frame.\n\
12817 \n\
12818 THREADNUM is the number from \"info threads\".\n\
12819 CONDITION is a boolean expression.\n\
12820 \n\
12821 Multiple breakpoints at one place are permitted, and useful if their\n\
12822 conditions are different.\n\
12823 \n\
12824 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
12825
12826 /* List of subcommands for "catch".  */
12827 static struct cmd_list_element *catch_cmdlist;
12828
12829 /* List of subcommands for "tcatch".  */
12830 static struct cmd_list_element *tcatch_cmdlist;
12831
12832 /* Like add_cmd, but add the command to both the "catch" and "tcatch"
12833    lists, and pass some additional user data to the command function.  */
12834 static void
12835 add_catch_command (char *name, char *docstring,
12836                    void (*sfunc) (char *args, int from_tty,
12837                                   struct cmd_list_element *command),
12838                    char **(*completer) (struct cmd_list_element *cmd,
12839                                          char *text, char *word),
12840                    void *user_data_catch,
12841                    void *user_data_tcatch)
12842 {
12843   struct cmd_list_element *command;
12844
12845   command = add_cmd (name, class_breakpoint, NULL, docstring,
12846                      &catch_cmdlist);
12847   set_cmd_sfunc (command, sfunc);
12848   set_cmd_context (command, user_data_catch);
12849   set_cmd_completer (command, completer);
12850
12851   command = add_cmd (name, class_breakpoint, NULL, docstring,
12852                      &tcatch_cmdlist);
12853   set_cmd_sfunc (command, sfunc);
12854   set_cmd_context (command, user_data_tcatch);
12855   set_cmd_completer (command, completer);
12856 }
12857
12858 static void
12859 clear_syscall_counts (struct inferior *inf)
12860 {
12861   inf->total_syscalls_count = 0;
12862   inf->any_syscall_count = 0;
12863   VEC_free (int, inf->syscalls_counts);
12864 }
12865
12866 static void
12867 save_command (char *arg, int from_tty)
12868 {
12869   printf_unfiltered (_("\"save\" must be followed by "
12870                        "the name of a save subcommand.\n"));
12871   help_list (save_cmdlist, "save ", -1, gdb_stdout);
12872 }
12873
12874 struct breakpoint *
12875 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
12876                           void *data)
12877 {
12878   struct breakpoint *b, *b_tmp;
12879
12880   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12881     {
12882       if ((*callback) (b, data))
12883         return b;
12884     }
12885
12886   return NULL;
12887 }
12888
12889 void
12890 _initialize_breakpoint (void)
12891 {
12892   struct cmd_list_element *c;
12893
12894   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
12895   observer_attach_inferior_exit (clear_syscall_counts);
12896   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
12897
12898   breakpoint_objfile_key = register_objfile_data ();
12899
12900   breakpoint_chain = 0;
12901   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
12902      before a breakpoint is set.  */
12903   breakpoint_count = 0;
12904
12905   tracepoint_count = 0;
12906
12907   add_com ("ignore", class_breakpoint, ignore_command, _("\
12908 Set ignore-count of breakpoint number N to COUNT.\n\
12909 Usage is `ignore N COUNT'."));
12910   if (xdb_commands)
12911     add_com_alias ("bc", "ignore", class_breakpoint, 1);
12912
12913   add_com ("commands", class_breakpoint, commands_command, _("\
12914 Set commands to be executed when a breakpoint is hit.\n\
12915 Give breakpoint number as argument after \"commands\".\n\
12916 With no argument, the targeted breakpoint is the last one set.\n\
12917 The commands themselves follow starting on the next line.\n\
12918 Type a line containing \"end\" to indicate the end of them.\n\
12919 Give \"silent\" as the first line to make the breakpoint silent;\n\
12920 then no output is printed when it is hit, except what the commands print."));
12921
12922   add_com ("condition", class_breakpoint, condition_command, _("\
12923 Specify breakpoint number N to break only if COND is true.\n\
12924 Usage is `condition N COND', where N is an integer and COND is an\n\
12925 expression to be evaluated whenever breakpoint N is reached."));
12926
12927   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
12928 Set a temporary breakpoint.\n\
12929 Like \"break\" except the breakpoint is only temporary,\n\
12930 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
12931 by using \"enable delete\" on the breakpoint number.\n\
12932 \n"
12933 BREAK_ARGS_HELP ("tbreak")));
12934   set_cmd_completer (c, location_completer);
12935
12936   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
12937 Set a hardware assisted breakpoint.\n\
12938 Like \"break\" except the breakpoint requires hardware support,\n\
12939 some target hardware may not have this support.\n\
12940 \n"
12941 BREAK_ARGS_HELP ("hbreak")));
12942   set_cmd_completer (c, location_completer);
12943
12944   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
12945 Set a temporary hardware assisted breakpoint.\n\
12946 Like \"hbreak\" except the breakpoint is only temporary,\n\
12947 so it will be deleted when hit.\n\
12948 \n"
12949 BREAK_ARGS_HELP ("thbreak")));
12950   set_cmd_completer (c, location_completer);
12951
12952   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
12953 Enable some breakpoints.\n\
12954 Give breakpoint numbers (separated by spaces) as arguments.\n\
12955 With no subcommand, breakpoints are enabled until you command otherwise.\n\
12956 This is used to cancel the effect of the \"disable\" command.\n\
12957 With a subcommand you can enable temporarily."),
12958                   &enablelist, "enable ", 1, &cmdlist);
12959   if (xdb_commands)
12960     add_com ("ab", class_breakpoint, enable_command, _("\
12961 Enable some breakpoints.\n\
12962 Give breakpoint numbers (separated by spaces) as arguments.\n\
12963 With no subcommand, breakpoints are enabled until you command otherwise.\n\
12964 This is used to cancel the effect of the \"disable\" command.\n\
12965 With a subcommand you can enable temporarily."));
12966
12967   add_com_alias ("en", "enable", class_breakpoint, 1);
12968
12969   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
12970 Enable some breakpoints.\n\
12971 Give breakpoint numbers (separated by spaces) as arguments.\n\
12972 This is used to cancel the effect of the \"disable\" command.\n\
12973 May be abbreviated to simply \"enable\".\n"),
12974                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
12975
12976   add_cmd ("once", no_class, enable_once_command, _("\
12977 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
12978 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
12979            &enablebreaklist);
12980
12981   add_cmd ("delete", no_class, enable_delete_command, _("\
12982 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
12983 If a breakpoint is hit while enabled in this fashion, it is deleted."),
12984            &enablebreaklist);
12985
12986   add_cmd ("delete", no_class, enable_delete_command, _("\
12987 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
12988 If a breakpoint is hit while enabled in this fashion, it is deleted."),
12989            &enablelist);
12990
12991   add_cmd ("once", no_class, enable_once_command, _("\
12992 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
12993 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
12994            &enablelist);
12995
12996   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
12997 Disable some breakpoints.\n\
12998 Arguments are breakpoint numbers with spaces in between.\n\
12999 To disable all breakpoints, give no argument.\n\
13000 A disabled breakpoint is not forgotten, but has no effect until reenabled."),
13001                   &disablelist, "disable ", 1, &cmdlist);
13002   add_com_alias ("dis", "disable", class_breakpoint, 1);
13003   add_com_alias ("disa", "disable", class_breakpoint, 1);
13004   if (xdb_commands)
13005     add_com ("sb", class_breakpoint, disable_command, _("\
13006 Disable some breakpoints.\n\
13007 Arguments are breakpoint numbers with spaces in between.\n\
13008 To disable all breakpoints, give no argument.\n\
13009 A disabled breakpoint is not forgotten, but has no effect until reenabled."));
13010
13011   add_cmd ("breakpoints", class_alias, disable_command, _("\
13012 Disable some breakpoints.\n\
13013 Arguments are breakpoint numbers with spaces in between.\n\
13014 To disable all breakpoints, give no argument.\n\
13015 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
13016 This command may be abbreviated \"disable\"."),
13017            &disablelist);
13018
13019   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
13020 Delete some breakpoints or auto-display expressions.\n\
13021 Arguments are breakpoint numbers with spaces in between.\n\
13022 To delete all breakpoints, give no argument.\n\
13023 \n\
13024 Also a prefix command for deletion of other GDB objects.\n\
13025 The \"unset\" command is also an alias for \"delete\"."),
13026                   &deletelist, "delete ", 1, &cmdlist);
13027   add_com_alias ("d", "delete", class_breakpoint, 1);
13028   add_com_alias ("del", "delete", class_breakpoint, 1);
13029   if (xdb_commands)
13030     add_com ("db", class_breakpoint, delete_command, _("\
13031 Delete some breakpoints.\n\
13032 Arguments are breakpoint numbers with spaces in between.\n\
13033 To delete all breakpoints, give no argument.\n"));
13034
13035   add_cmd ("breakpoints", class_alias, delete_command, _("\
13036 Delete some breakpoints or auto-display expressions.\n\
13037 Arguments are breakpoint numbers with spaces in between.\n\
13038 To delete all breakpoints, give no argument.\n\
13039 This command may be abbreviated \"delete\"."),
13040            &deletelist);
13041
13042   add_com ("clear", class_breakpoint, clear_command, _("\
13043 Clear breakpoint at specified line or function.\n\
13044 Argument may be line number, function name, or \"*\" and an address.\n\
13045 If line number is specified, all breakpoints in that line are cleared.\n\
13046 If function is specified, breakpoints at beginning of function are cleared.\n\
13047 If an address is specified, breakpoints at that address are cleared.\n\
13048 \n\
13049 With no argument, clears all breakpoints in the line that the selected frame\n\
13050 is executing in.\n\
13051 \n\
13052 See also the \"delete\" command which clears breakpoints by number."));
13053   add_com_alias ("cl", "clear", class_breakpoint, 1);
13054
13055   c = add_com ("break", class_breakpoint, break_command, _("\
13056 Set breakpoint at specified line or function.\n"
13057 BREAK_ARGS_HELP ("break")));
13058   set_cmd_completer (c, location_completer);
13059
13060   add_com_alias ("b", "break", class_run, 1);
13061   add_com_alias ("br", "break", class_run, 1);
13062   add_com_alias ("bre", "break", class_run, 1);
13063   add_com_alias ("brea", "break", class_run, 1);
13064
13065   if (xdb_commands)
13066    add_com_alias ("ba", "break", class_breakpoint, 1);
13067
13068   if (dbx_commands)
13069     {
13070       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
13071 Break in function/address or break at a line in the current file."),
13072                              &stoplist, "stop ", 1, &cmdlist);
13073       add_cmd ("in", class_breakpoint, stopin_command,
13074                _("Break in function or address."), &stoplist);
13075       add_cmd ("at", class_breakpoint, stopat_command,
13076                _("Break at a line in the current file."), &stoplist);
13077       add_com ("status", class_info, breakpoints_info, _("\
13078 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
13079 The \"Type\" column indicates one of:\n\
13080 \tbreakpoint     - normal breakpoint\n\
13081 \twatchpoint     - watchpoint\n\
13082 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13083 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
13084 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
13085 address and file/line number respectively.\n\
13086 \n\
13087 Convenience variable \"$_\" and default examine address for \"x\"\n\
13088 are set to the address of the last breakpoint listed unless the command\n\
13089 is prefixed with \"server \".\n\n\
13090 Convenience variable \"$bpnum\" contains the number of the last\n\
13091 breakpoint set."));
13092     }
13093
13094   add_info ("breakpoints", breakpoints_info, _("\
13095 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
13096 The \"Type\" column indicates one of:\n\
13097 \tbreakpoint     - normal breakpoint\n\
13098 \twatchpoint     - watchpoint\n\
13099 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13100 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
13101 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
13102 address and file/line number respectively.\n\
13103 \n\
13104 Convenience variable \"$_\" and default examine address for \"x\"\n\
13105 are set to the address of the last breakpoint listed unless the command\n\
13106 is prefixed with \"server \".\n\n\
13107 Convenience variable \"$bpnum\" contains the number of the last\n\
13108 breakpoint set."));
13109
13110   add_info_alias ("b", "breakpoints", 1);
13111
13112   if (xdb_commands)
13113     add_com ("lb", class_breakpoint, breakpoints_info, _("\
13114 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
13115 The \"Type\" column indicates one of:\n\
13116 \tbreakpoint     - normal breakpoint\n\
13117 \twatchpoint     - watchpoint\n\
13118 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13119 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
13120 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
13121 address and file/line number respectively.\n\
13122 \n\
13123 Convenience variable \"$_\" and default examine address for \"x\"\n\
13124 are set to the address of the last breakpoint listed unless the command\n\
13125 is prefixed with \"server \".\n\n\
13126 Convenience variable \"$bpnum\" contains the number of the last\n\
13127 breakpoint set."));
13128
13129   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
13130 Status of all breakpoints, or breakpoint number NUMBER.\n\
13131 The \"Type\" column indicates one of:\n\
13132 \tbreakpoint     - normal breakpoint\n\
13133 \twatchpoint     - watchpoint\n\
13134 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
13135 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
13136 \tuntil          - internal breakpoint used by the \"until\" command\n\
13137 \tfinish         - internal breakpoint used by the \"finish\" command\n\
13138 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13139 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
13140 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
13141 address and file/line number respectively.\n\
13142 \n\
13143 Convenience variable \"$_\" and default examine address for \"x\"\n\
13144 are set to the address of the last breakpoint listed unless the command\n\
13145 is prefixed with \"server \".\n\n\
13146 Convenience variable \"$bpnum\" contains the number of the last\n\
13147 breakpoint set."),
13148            &maintenanceinfolist);
13149
13150   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
13151 Set catchpoints to catch events."),
13152                   &catch_cmdlist, "catch ",
13153                   0/*allow-unknown*/, &cmdlist);
13154
13155   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
13156 Set temporary catchpoints to catch events."),
13157                   &tcatch_cmdlist, "tcatch ",
13158                   0/*allow-unknown*/, &cmdlist);
13159
13160   /* Add catch and tcatch sub-commands.  */
13161   add_catch_command ("catch", _("\
13162 Catch an exception, when caught.\n\
13163 With an argument, catch only exceptions with the given name."),
13164                      catch_catch_command,
13165                      NULL,
13166                      CATCH_PERMANENT,
13167                      CATCH_TEMPORARY);
13168   add_catch_command ("throw", _("\
13169 Catch an exception, when thrown.\n\
13170 With an argument, catch only exceptions with the given name."),
13171                      catch_throw_command,
13172                      NULL,
13173                      CATCH_PERMANENT,
13174                      CATCH_TEMPORARY);
13175   add_catch_command ("fork", _("Catch calls to fork."),
13176                      catch_fork_command_1,
13177                      NULL,
13178                      (void *) (uintptr_t) catch_fork_permanent,
13179                      (void *) (uintptr_t) catch_fork_temporary);
13180   add_catch_command ("vfork", _("Catch calls to vfork."),
13181                      catch_fork_command_1,
13182                      NULL,
13183                      (void *) (uintptr_t) catch_vfork_permanent,
13184                      (void *) (uintptr_t) catch_vfork_temporary);
13185   add_catch_command ("exec", _("Catch calls to exec."),
13186                      catch_exec_command_1,
13187                      NULL,
13188                      CATCH_PERMANENT,
13189                      CATCH_TEMPORARY);
13190   add_catch_command ("syscall", _("\
13191 Catch system calls by their names and/or numbers.\n\
13192 Arguments say which system calls to catch.  If no arguments\n\
13193 are given, every system call will be caught.\n\
13194 Arguments, if given, should be one or more system call names\n\
13195 (if your system supports that), or system call numbers."),
13196                      catch_syscall_command_1,
13197                      catch_syscall_completer,
13198                      CATCH_PERMANENT,
13199                      CATCH_TEMPORARY);
13200   add_catch_command ("exception", _("\
13201 Catch Ada exceptions, when raised.\n\
13202 With an argument, catch only exceptions with the given name."),
13203                      catch_ada_exception_command,
13204                      NULL,
13205                      CATCH_PERMANENT,
13206                      CATCH_TEMPORARY);
13207   add_catch_command ("assert", _("\
13208 Catch failed Ada assertions, when raised.\n\
13209 With an argument, catch only exceptions with the given name."),
13210                      catch_assert_command,
13211                      NULL,
13212                      CATCH_PERMANENT,
13213                      CATCH_TEMPORARY);
13214
13215   c = add_com ("watch", class_breakpoint, watch_command, _("\
13216 Set a watchpoint for an expression.\n\
13217 Usage: watch [-l|-location] EXPRESSION\n\
13218 A watchpoint stops execution of your program whenever the value of\n\
13219 an expression changes.\n\
13220 If -l or -location is given, this evaluates EXPRESSION and watches\n\
13221 the memory to which it refers."));
13222   set_cmd_completer (c, expression_completer);
13223
13224   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
13225 Set a read watchpoint for an expression.\n\
13226 Usage: rwatch [-l|-location] EXPRESSION\n\
13227 A watchpoint stops execution of your program whenever the value of\n\
13228 an expression is read.\n\
13229 If -l or -location is given, this evaluates EXPRESSION and watches\n\
13230 the memory to which it refers."));
13231   set_cmd_completer (c, expression_completer);
13232
13233   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
13234 Set a watchpoint for an expression.\n\
13235 Usage: awatch [-l|-location] EXPRESSION\n\
13236 A watchpoint stops execution of your program whenever the value of\n\
13237 an expression is either read or written.\n\
13238 If -l or -location is given, this evaluates EXPRESSION and watches\n\
13239 the memory to which it refers."));
13240   set_cmd_completer (c, expression_completer);
13241
13242   add_info ("watchpoints", watchpoints_info, _("\
13243 Status of specified watchpoints (all watchpoints if no argument)."));
13244
13245   /* XXX: cagney/2005-02-23: This should be a boolean, and should
13246      respond to changes - contrary to the description.  */
13247   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
13248                             &can_use_hw_watchpoints, _("\
13249 Set debugger's willingness to use watchpoint hardware."), _("\
13250 Show debugger's willingness to use watchpoint hardware."), _("\
13251 If zero, gdb will not use hardware for new watchpoints, even if\n\
13252 such is available.  (However, any hardware watchpoints that were\n\
13253 created before setting this to nonzero, will continue to use watchpoint\n\
13254 hardware.)"),
13255                             NULL,
13256                             show_can_use_hw_watchpoints,
13257                             &setlist, &showlist);
13258
13259   can_use_hw_watchpoints = 1;
13260
13261   /* Tracepoint manipulation commands.  */
13262
13263   c = add_com ("trace", class_breakpoint, trace_command, _("\
13264 Set a tracepoint at specified line or function.\n\
13265 \n"
13266 BREAK_ARGS_HELP ("trace") "\n\
13267 Do \"help tracepoints\" for info on other tracepoint commands."));
13268   set_cmd_completer (c, location_completer);
13269
13270   add_com_alias ("tp", "trace", class_alias, 0);
13271   add_com_alias ("tr", "trace", class_alias, 1);
13272   add_com_alias ("tra", "trace", class_alias, 1);
13273   add_com_alias ("trac", "trace", class_alias, 1);
13274
13275   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
13276 Set a fast tracepoint at specified line or function.\n\
13277 \n"
13278 BREAK_ARGS_HELP ("ftrace") "\n\
13279 Do \"help tracepoints\" for info on other tracepoint commands."));
13280   set_cmd_completer (c, location_completer);
13281
13282   c = add_com ("strace", class_breakpoint, strace_command, _("\
13283 Set a static tracepoint at specified line, function or marker.\n\
13284 \n\
13285 strace [LOCATION] [if CONDITION]\n\
13286 LOCATION may be a line number, function name, \"*\" and an address,\n\
13287 or -m MARKER_ID.\n\
13288 If a line number is specified, probe the marker at start of code\n\
13289 for that line.  If a function is specified, probe the marker at start\n\
13290 of code for that function.  If an address is specified, probe the marker\n\
13291 at that exact address.  If a marker id is specified, probe the marker\n\
13292 with that name.  With no LOCATION, uses current execution address of\n\
13293 the selected stack frame.\n\
13294 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
13295 This collects arbitrary user data passed in the probe point call to the\n\
13296 tracing library.  You can inspect it when analyzing the trace buffer,\n\
13297 by printing the $_sdata variable like any other convenience variable.\n\
13298 \n\
13299 CONDITION is a boolean expression.\n\
13300 \n\
13301 Multiple tracepoints at one place are permitted, and useful if their\n\
13302 conditions are different.\n\
13303 \n\
13304 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
13305 Do \"help tracepoints\" for info on other tracepoint commands."));
13306   set_cmd_completer (c, location_completer);
13307
13308   add_info ("tracepoints", tracepoints_info, _("\
13309 Status of specified tracepoints (all tracepoints if no argument).\n\
13310 Convenience variable \"$tpnum\" contains the number of the\n\
13311 last tracepoint set."));
13312
13313   add_info_alias ("tp", "tracepoints", 1);
13314
13315   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
13316 Delete specified tracepoints.\n\
13317 Arguments are tracepoint numbers, separated by spaces.\n\
13318 No argument means delete all tracepoints."),
13319            &deletelist);
13320
13321   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
13322 Disable specified tracepoints.\n\
13323 Arguments are tracepoint numbers, separated by spaces.\n\
13324 No argument means disable all tracepoints."),
13325            &disablelist);
13326   deprecate_cmd (c, "disable");
13327
13328   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
13329 Enable specified tracepoints.\n\
13330 Arguments are tracepoint numbers, separated by spaces.\n\
13331 No argument means enable all tracepoints."),
13332            &enablelist);
13333   deprecate_cmd (c, "enable");
13334
13335   add_com ("passcount", class_trace, trace_pass_command, _("\
13336 Set the passcount for a tracepoint.\n\
13337 The trace will end when the tracepoint has been passed 'count' times.\n\
13338 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
13339 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
13340
13341   add_prefix_cmd ("save", class_breakpoint, save_command,
13342                   _("Save breakpoint definitions as a script."),
13343                   &save_cmdlist, "save ",
13344                   0/*allow-unknown*/, &cmdlist);
13345
13346   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
13347 Save current breakpoint definitions as a script.\n\
13348 This includes all types of breakpoints (breakpoints, watchpoints,\n\
13349 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
13350 session to restore them."),
13351                &save_cmdlist);
13352   set_cmd_completer (c, filename_completer);
13353
13354   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
13355 Save current tracepoint definitions as a script.\n\
13356 Use the 'source' command in another debug session to restore them."),
13357                &save_cmdlist);
13358   set_cmd_completer (c, filename_completer);
13359
13360   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
13361   deprecate_cmd (c, "save tracepoints");
13362
13363   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
13364 Breakpoint specific settings\n\
13365 Configure various breakpoint-specific variables such as\n\
13366 pending breakpoint behavior"),
13367                   &breakpoint_set_cmdlist, "set breakpoint ",
13368                   0/*allow-unknown*/, &setlist);
13369   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
13370 Breakpoint specific settings\n\
13371 Configure various breakpoint-specific variables such as\n\
13372 pending breakpoint behavior"),
13373                   &breakpoint_show_cmdlist, "show breakpoint ",
13374                   0/*allow-unknown*/, &showlist);
13375
13376   add_setshow_auto_boolean_cmd ("pending", no_class,
13377                                 &pending_break_support, _("\
13378 Set debugger's behavior regarding pending breakpoints."), _("\
13379 Show debugger's behavior regarding pending breakpoints."), _("\
13380 If on, an unrecognized breakpoint location will cause gdb to create a\n\
13381 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
13382 an error.  If auto, an unrecognized breakpoint location results in a\n\
13383 user-query to see if a pending breakpoint should be created."),
13384                                 NULL,
13385                                 show_pending_break_support,
13386                                 &breakpoint_set_cmdlist,
13387                                 &breakpoint_show_cmdlist);
13388
13389   pending_break_support = AUTO_BOOLEAN_AUTO;
13390
13391   add_setshow_boolean_cmd ("auto-hw", no_class,
13392                            &automatic_hardware_breakpoints, _("\
13393 Set automatic usage of hardware breakpoints."), _("\
13394 Show automatic usage of hardware breakpoints."), _("\
13395 If set, the debugger will automatically use hardware breakpoints for\n\
13396 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
13397 a warning will be emitted for such breakpoints."),
13398                            NULL,
13399                            show_automatic_hardware_breakpoints,
13400                            &breakpoint_set_cmdlist,
13401                            &breakpoint_show_cmdlist);
13402
13403   add_setshow_enum_cmd ("always-inserted", class_support,
13404                         always_inserted_enums, &always_inserted_mode, _("\
13405 Set mode for inserting breakpoints."), _("\
13406 Show mode for inserting breakpoints."), _("\
13407 When this mode is off, breakpoints are inserted in inferior when it is\n\
13408 resumed, and removed when execution stops.  When this mode is on,\n\
13409 breakpoints are inserted immediately and removed only when the user\n\
13410 deletes the breakpoint.  When this mode is auto (which is the default),\n\
13411 the behaviour depends on the non-stop setting (see help set non-stop).\n\
13412 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
13413 behaves as if always-inserted mode is on; if gdb is controlling the\n\
13414 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
13415                            NULL,
13416                            &show_always_inserted_mode,
13417                            &breakpoint_set_cmdlist,
13418                            &breakpoint_show_cmdlist);
13419
13420   add_com ("break-range", class_breakpoint, break_range_command, _("\
13421 Set a breakpoint for an address range.\n\
13422 break-range START-LOCATION, END-LOCATION\n\
13423 where START-LOCATION and END-LOCATION can be one of the following:\n\
13424   LINENUM, for that line in the current file,\n\
13425   FILE:LINENUM, for that line in that file,\n\
13426   +OFFSET, for that number of lines after the current line\n\
13427            or the start of the range\n\
13428   FUNCTION, for the first line in that function,\n\
13429   FILE:FUNCTION, to distinguish among like-named static functions.\n\
13430   *ADDRESS, for the instruction at that address.\n\
13431 \n\
13432 The breakpoint will stop execution of the inferior whenever it executes\n\
13433 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
13434 range (including START-LOCATION and END-LOCATION)."));
13435
13436   automatic_hardware_breakpoints = 1;
13437
13438   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
13439 }