OSDN Git Service

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