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