* NEWS: Mention inspecting extra signal information, $_siginfo,
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5    2008, 2009 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 <ctype.h>
24 #include "hashtab.h"
25 #include "symtab.h"
26 #include "frame.h"
27 #include "breakpoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "demangle.h"
40 #include "annotate.h"
41 #include "symfile.h"
42 #include "objfiles.h"
43 #include "source.h"
44 #include "linespec.h"
45 #include "completer.h"
46 #include "gdb.h"
47 #include "ui-out.h"
48 #include "cli/cli-script.h"
49 #include "gdb_assert.h"
50 #include "block.h"
51 #include "solib.h"
52 #include "solist.h"
53 #include "observer.h"
54 #include "exceptions.h"
55 #include "memattr.h"
56 #include "ada-lang.h"
57 #include "top.h"
58 #include "wrapper.h"
59 #include "valprint.h"
60
61 #include "mi/mi-common.h"
62
63 /* Arguments to pass as context to some catch command handlers.  */
64 #define CATCH_PERMANENT ((void *) (uintptr_t) 0)
65 #define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
66
67 /* Prototypes for local functions. */
68
69 static void enable_delete_command (char *, int);
70
71 static void enable_delete_breakpoint (struct breakpoint *);
72
73 static void enable_once_command (char *, int);
74
75 static void enable_once_breakpoint (struct breakpoint *);
76
77 static void disable_command (char *, int);
78
79 static void enable_command (char *, int);
80
81 static void map_breakpoint_numbers (char *, void (*)(struct breakpoint *));
82
83 static void ignore_command (char *, int);
84
85 static int breakpoint_re_set_one (void *);
86
87 static void clear_command (char *, int);
88
89 static void catch_command (char *, int);
90
91 static void watch_command (char *, int);
92
93 static int can_use_hardware_watchpoint (struct value *);
94
95 static void break_command_1 (char *, int, int);
96
97 static void mention (struct breakpoint *);
98
99 struct breakpoint *set_raw_breakpoint (struct symtab_and_line, enum bptype);
100
101 static void check_duplicates (struct breakpoint *);
102
103 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
104
105 static CORE_ADDR adjust_breakpoint_address (CORE_ADDR bpaddr,
106                                             enum bptype bptype);
107
108 static void describe_other_breakpoints (CORE_ADDR, struct obj_section *, int);
109
110 static void breakpoints_info (char *, int);
111
112 static void breakpoint_1 (int, int);
113
114 static bpstat bpstat_alloc (const struct bp_location *, bpstat);
115
116 static int breakpoint_cond_eval (void *);
117
118 static void cleanup_executing_breakpoints (void *);
119
120 static void commands_command (char *, int);
121
122 static void condition_command (char *, int);
123
124 static int get_number_trailer (char **, int);
125
126 void set_breakpoint_count (int);
127
128 typedef enum
129   {
130     mark_inserted,
131     mark_uninserted
132   }
133 insertion_state_t;
134
135 static int remove_breakpoint (struct bp_location *, insertion_state_t);
136
137 static enum print_stop_action print_it_typical (bpstat);
138
139 static enum print_stop_action print_bp_stop_message (bpstat bs);
140
141 static int watchpoint_check (void *);
142
143 static void maintenance_info_breakpoints (char *, int);
144
145 static void create_overlay_event_breakpoint (char *);
146
147 static int hw_breakpoint_used_count (void);
148
149 static int hw_watchpoint_used_count (enum bptype, int *);
150
151 static void hbreak_command (char *, int);
152
153 static void thbreak_command (char *, int);
154
155 static void watch_command_1 (char *, int, int);
156
157 static void rwatch_command (char *, int);
158
159 static void awatch_command (char *, int);
160
161 static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
162
163 static void stop_command (char *arg, int from_tty);
164
165 static void stopin_command (char *arg, int from_tty);
166
167 static void stopat_command (char *arg, int from_tty);
168
169 static char *ep_parse_optional_if_clause (char **arg);
170
171 static char *ep_parse_optional_filename (char **arg);
172
173 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
174                                        char *arg, int tempflag, int from_tty);
175
176 static void tcatch_command (char *arg, int from_tty);
177
178 static void ep_skip_leading_whitespace (char **s);
179
180 static int single_step_breakpoint_inserted_here_p (CORE_ADDR pc);
181
182 static void free_bp_location (struct bp_location *loc);
183
184 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
185
186 static void update_global_location_list (int);
187
188 static void update_global_location_list_nothrow (int);
189
190 static int is_hardware_watchpoint (struct breakpoint *bpt);
191
192 static void insert_breakpoint_locations (void);
193
194 static const char *
195 bpdisp_text (enum bpdisp disp)
196 {
197   /* NOTE: the following values are a part of MI protocol and represent
198      values of 'disp' field returned when inferior stops at a breakpoint.  */
199   static char *bpdisps[] = {"del", "dstp", "dis", "keep"};
200   return bpdisps[(int) disp];
201 }
202
203 /* Prototypes for exported functions. */
204 /* If FALSE, gdb will not use hardware support for watchpoints, even
205    if such is available. */
206 static int can_use_hw_watchpoints;
207
208 static void
209 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
210                              struct cmd_list_element *c,
211                              const char *value)
212 {
213   fprintf_filtered (file, _("\
214 Debugger's willingness to use watchpoint hardware is %s.\n"),
215                     value);
216 }
217
218 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
219    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
220    for unrecognized breakpoint locations.  
221    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
222 static enum auto_boolean pending_break_support;
223 static void
224 show_pending_break_support (struct ui_file *file, int from_tty,
225                             struct cmd_list_element *c,
226                             const char *value)
227 {
228   fprintf_filtered (file, _("\
229 Debugger's behavior regarding pending breakpoints is %s.\n"),
230                     value);
231 }
232
233 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
234    set with "break" but falling in read-only memory. 
235    If 0, gdb will warn about such breakpoints, but won't automatically
236    use hardware breakpoints.  */
237 static int automatic_hardware_breakpoints;
238 static void
239 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
240                                      struct cmd_list_element *c,
241                                      const char *value)
242 {
243   fprintf_filtered (file, _("\
244 Automatic usage of hardware breakpoints is %s.\n"),
245                     value);
246 }
247
248 /* If on, gdb will keep breakpoints inserted even as inferior is
249    stopped, and immediately insert any new breakpoints.  If off, gdb
250    will insert breakpoints into inferior only when resuming it, and
251    will remove breakpoints upon stop.  If auto, GDB will behave as ON
252    if in non-stop mode, and as OFF if all-stop mode.*/
253
254 static const char always_inserted_auto[] = "auto";
255 static const char always_inserted_on[] = "on";
256 static const char always_inserted_off[] = "off";
257 static const char *always_inserted_enums[] = {
258   always_inserted_auto,
259   always_inserted_off,
260   always_inserted_on,
261   NULL
262 };
263 static const char *always_inserted_mode = always_inserted_auto;
264 static void
265 show_always_inserted_mode (struct ui_file *file, int from_tty,
266                      struct cmd_list_element *c, const char *value)
267 {
268   if (always_inserted_mode == always_inserted_auto)
269     fprintf_filtered (file, _("\
270 Always inserted breakpoint mode is %s (currently %s).\n"),
271                       value,
272                       breakpoints_always_inserted_mode () ? "on" : "off");
273   else
274     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"), value);
275 }
276
277 int
278 breakpoints_always_inserted_mode (void)
279 {
280   return (always_inserted_mode == always_inserted_on
281           || (always_inserted_mode == always_inserted_auto && non_stop));
282 }
283
284 void _initialize_breakpoint (void);
285
286 /* Are we executing breakpoint commands?  */
287 static int executing_breakpoint_commands;
288
289 /* Are overlay event breakpoints enabled? */
290 static int overlay_events_enabled;
291
292 /* Walk the following statement or block through all breakpoints.
293    ALL_BREAKPOINTS_SAFE does so even if the statment deletes the current
294    breakpoint.  */
295
296 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
297
298 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
299         for (B = breakpoint_chain;      \
300              B ? (TMP=B->next, 1): 0;   \
301              B = TMP)
302
303 /* Similar iterators for the low-level breakpoints.  */
304
305 #define ALL_BP_LOCATIONS(B)  for (B = bp_location_chain; B; B = B->global_next)
306
307 #define ALL_BP_LOCATIONS_SAFE(B,TMP)    \
308         for (B = bp_location_chain;     \
309              B ? (TMP=B->global_next, 1): 0;    \
310              B = TMP)
311
312 /* Chains of all breakpoints defined.  */
313
314 struct breakpoint *breakpoint_chain;
315
316 struct bp_location *bp_location_chain;
317
318 /* The locations that no longer correspond to any breakpoint,
319    unlinked from bp_location_chain, but for which a hit
320    may still be reported by a target.  */
321 VEC(bp_location_p) *moribund_locations = NULL;
322
323 /* Number of last breakpoint made.  */
324
325 int breakpoint_count;
326
327 /* Return whether a breakpoint is an active enabled breakpoint.  */
328 static int
329 breakpoint_enabled (struct breakpoint *b)
330 {
331   return (b->enable_state == bp_enabled);
332 }
333
334 /* Set breakpoint count to NUM.  */
335
336 void
337 set_breakpoint_count (int num)
338 {
339   breakpoint_count = num;
340   set_internalvar (lookup_internalvar ("bpnum"),
341                    value_from_longest (builtin_type_int32, (LONGEST) num));
342 }
343
344 /* Used in run_command to zero the hit count when a new run starts. */
345
346 void
347 clear_breakpoint_hit_counts (void)
348 {
349   struct breakpoint *b;
350
351   ALL_BREAKPOINTS (b)
352     b->hit_count = 0;
353 }
354
355 /* Default address, symtab and line to put a breakpoint at
356    for "break" command with no arg.
357    if default_breakpoint_valid is zero, the other three are
358    not valid, and "break" with no arg is an error.
359
360    This set by print_stack_frame, which calls set_default_breakpoint.  */
361
362 int default_breakpoint_valid;
363 CORE_ADDR default_breakpoint_address;
364 struct symtab *default_breakpoint_symtab;
365 int default_breakpoint_line;
366 \f
367 /* *PP is a string denoting a breakpoint.  Get the number of the breakpoint.
368    Advance *PP after the string and any trailing whitespace.
369
370    Currently the string can either be a number or "$" followed by the name
371    of a convenience variable.  Making it an expression wouldn't work well
372    for map_breakpoint_numbers (e.g. "4 + 5 + 6").
373
374    If the string is a NULL pointer, that denotes the last breakpoint.
375    
376    TRAILER is a character which can be found after the number; most
377    commonly this is `-'.  If you don't want a trailer, use \0.  */ 
378 static int
379 get_number_trailer (char **pp, int trailer)
380 {
381   int retval = 0;       /* default */
382   char *p = *pp;
383
384   if (p == NULL)
385     /* Empty line means refer to the last breakpoint.  */
386     return breakpoint_count;
387   else if (*p == '$')
388     {
389       /* Make a copy of the name, so we can null-terminate it
390          to pass to lookup_internalvar().  */
391       char *varname;
392       char *start = ++p;
393       struct value *val;
394
395       while (isalnum (*p) || *p == '_')
396         p++;
397       varname = (char *) alloca (p - start + 1);
398       strncpy (varname, start, p - start);
399       varname[p - start] = '\0';
400       val = value_of_internalvar (lookup_internalvar (varname));
401       if (TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
402         retval = (int) value_as_long (val);
403       else
404         {
405           printf_filtered (_("Convenience variable must have integer value.\n"));
406           retval = 0;
407         }
408     }
409   else
410     {
411       if (*p == '-')
412         ++p;
413       while (*p >= '0' && *p <= '9')
414         ++p;
415       if (p == *pp)
416         /* There is no number here.  (e.g. "cond a == b").  */
417         {
418           /* Skip non-numeric token */
419           while (*p && !isspace((int) *p))
420             ++p;
421           /* Return zero, which caller must interpret as error. */
422           retval = 0;
423         }
424       else
425         retval = atoi (*pp);
426     }
427   if (!(isspace (*p) || *p == '\0' || *p == trailer))
428     {
429       /* Trailing junk: return 0 and let caller print error msg. */
430       while (!(isspace (*p) || *p == '\0' || *p == trailer))
431         ++p;
432       retval = 0;
433     }
434   while (isspace (*p))
435     p++;
436   *pp = p;
437   return retval;
438 }
439
440
441 /* Like get_number_trailer, but don't allow a trailer.  */
442 int
443 get_number (char **pp)
444 {
445   return get_number_trailer (pp, '\0');
446 }
447
448 /* Parse a number or a range.
449  * A number will be of the form handled by get_number.
450  * A range will be of the form <number1> - <number2>, and 
451  * will represent all the integers between number1 and number2,
452  * inclusive.
453  *
454  * While processing a range, this fuction is called iteratively;
455  * At each call it will return the next value in the range.
456  *
457  * At the beginning of parsing a range, the char pointer PP will
458  * be advanced past <number1> and left pointing at the '-' token.
459  * Subsequent calls will not advance the pointer until the range
460  * is completed.  The call that completes the range will advance
461  * pointer PP past <number2>.
462  */
463
464 int 
465 get_number_or_range (char **pp)
466 {
467   static int last_retval, end_value;
468   static char *end_ptr;
469   static int in_range = 0;
470
471   if (**pp != '-')
472     {
473       /* Default case: pp is pointing either to a solo number, 
474          or to the first number of a range.  */
475       last_retval = get_number_trailer (pp, '-');
476       if (**pp == '-')
477         {
478           char **temp;
479
480           /* This is the start of a range (<number1> - <number2>).
481              Skip the '-', parse and remember the second number,
482              and also remember the end of the final token.  */
483
484           temp = &end_ptr; 
485           end_ptr = *pp + 1; 
486           while (isspace ((int) *end_ptr))
487             end_ptr++;  /* skip white space */
488           end_value = get_number (temp);
489           if (end_value < last_retval) 
490             {
491               error (_("inverted range"));
492             }
493           else if (end_value == last_retval)
494             {
495               /* degenerate range (number1 == number2).  Advance the
496                  token pointer so that the range will be treated as a
497                  single number.  */ 
498               *pp = end_ptr;
499             }
500           else
501             in_range = 1;
502         }
503     }
504   else if (! in_range)
505     error (_("negative value"));
506   else
507     {
508       /* pp points to the '-' that betokens a range.  All
509          number-parsing has already been done.  Return the next
510          integer value (one greater than the saved previous value).
511          Do not advance the token pointer 'pp' until the end of range
512          is reached.  */
513
514       if (++last_retval == end_value)
515         {
516           /* End of range reached; advance token pointer.  */
517           *pp = end_ptr;
518           in_range = 0;
519         }
520     }
521   return last_retval;
522 }
523
524
525 \f
526 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
527
528 static void
529 condition_command (char *arg, int from_tty)
530 {
531   struct breakpoint *b;
532   char *p;
533   int bnum;
534
535   if (arg == 0)
536     error_no_arg (_("breakpoint number"));
537
538   p = arg;
539   bnum = get_number (&p);
540   if (bnum == 0)
541     error (_("Bad breakpoint argument: '%s'"), arg);
542
543   ALL_BREAKPOINTS (b)
544     if (b->number == bnum)
545       {
546         struct bp_location *loc = b->loc;
547         for (; loc; loc = loc->next)
548           {
549             if (loc->cond)
550               {
551                 xfree (loc->cond);
552                 loc->cond = 0;
553               }
554           }
555         if (b->cond_string != NULL)
556           xfree (b->cond_string);
557
558         if (*p == 0)
559           {
560             b->cond_string = NULL;
561             if (from_tty)
562               printf_filtered (_("Breakpoint %d now unconditional.\n"), bnum);
563           }
564         else
565           {
566             arg = p;
567             /* I don't know if it matters whether this is the string the user
568                typed in or the decompiled expression.  */
569             b->cond_string = savestring (arg, strlen (arg));
570             b->condition_not_parsed = 0;
571             for (loc = b->loc; loc; loc = loc->next)
572               {
573                 arg = p;
574                 loc->cond =
575                   parse_exp_1 (&arg, block_for_pc (loc->address), 0);
576                 if (*arg)
577                   error (_("Junk at end of expression"));
578               }
579           }
580         breakpoints_changed ();
581         observer_notify_breakpoint_modified (b->number);
582         return;
583       }
584
585   error (_("No breakpoint number %d."), bnum);
586 }
587
588 static void
589 commands_command (char *arg, int from_tty)
590 {
591   struct breakpoint *b;
592   char *p;
593   int bnum;
594   struct command_line *l;
595
596   /* If we allowed this, we would have problems with when to
597      free the storage, if we change the commands currently
598      being read from.  */
599
600   if (executing_breakpoint_commands)
601     error (_("Can't use the \"commands\" command among a breakpoint's commands."));
602
603   p = arg;
604   bnum = get_number (&p);
605
606   if (p && *p)
607     error (_("Unexpected extra arguments following breakpoint number."));
608
609   ALL_BREAKPOINTS (b)
610     if (b->number == bnum)
611       {
612         char *tmpbuf = xstrprintf ("Type commands for when breakpoint %d is hit, one per line.", 
613                                  bnum);
614         struct cleanup *cleanups = make_cleanup (xfree, tmpbuf);
615         l = read_command_lines (tmpbuf, from_tty, 1);
616         do_cleanups (cleanups);
617         free_command_lines (&b->commands);
618         b->commands = l;
619         breakpoints_changed ();
620         observer_notify_breakpoint_modified (b->number);
621         return;
622     }
623   error (_("No breakpoint number %d."), bnum);
624 }
625
626 /* Like commands_command, but instead of reading the commands from
627    input stream, takes them from an already parsed command structure.
628
629    This is used by cli-script.c to DTRT with breakpoint commands
630    that are part of if and while bodies.  */
631 enum command_control_type
632 commands_from_control_command (char *arg, struct command_line *cmd)
633 {
634   struct breakpoint *b;
635   char *p;
636   int bnum;
637
638   /* If we allowed this, we would have problems with when to
639      free the storage, if we change the commands currently
640      being read from.  */
641
642   if (executing_breakpoint_commands)
643     error (_("Can't use the \"commands\" command among a breakpoint's commands."));
644
645   /* An empty string for the breakpoint number means the last
646      breakpoint, but get_number expects a NULL pointer.  */
647   if (arg && !*arg)
648     p = NULL;
649   else
650     p = arg;
651   bnum = get_number (&p);
652
653   if (p && *p)
654     error (_("Unexpected extra arguments following breakpoint number."));
655
656   ALL_BREAKPOINTS (b)
657     if (b->number == bnum)
658       {
659         free_command_lines (&b->commands);
660         if (cmd->body_count != 1)
661           error (_("Invalid \"commands\" block structure."));
662         /* We need to copy the commands because if/while will free the
663            list after it finishes execution.  */
664         b->commands = copy_command_lines (cmd->body_list[0]);
665         breakpoints_changed ();
666         observer_notify_breakpoint_modified (b->number);
667         return simple_control;
668       }
669   error (_("No breakpoint number %d."), bnum);
670 }
671 \f
672 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
673    by replacing any memory breakpoints with their shadowed contents.  */
674
675 void
676 breakpoint_restore_shadows (gdb_byte *buf, ULONGEST memaddr, LONGEST len)
677 {
678   struct bp_location *b;
679   CORE_ADDR bp_addr = 0;
680   int bp_size = 0;
681   int bptoffset = 0;
682
683   ALL_BP_LOCATIONS (b)
684   {
685     if (b->owner->type == bp_none)
686       warning (_("reading through apparently deleted breakpoint #%d?"),
687               b->owner->number);
688
689     if (b->loc_type != bp_loc_software_breakpoint)
690       continue;
691     if (!b->inserted)
692       continue;
693     /* Addresses and length of the part of the breakpoint that
694        we need to copy.  */
695     bp_addr = b->target_info.placed_address;
696     bp_size = b->target_info.shadow_len;
697     if (bp_size == 0)
698       /* bp isn't valid, or doesn't shadow memory.  */
699       continue;
700
701     if (bp_addr + bp_size <= memaddr)
702       /* The breakpoint is entirely before the chunk of memory we
703          are reading.  */
704       continue;
705
706     if (bp_addr >= memaddr + len)
707       /* The breakpoint is entirely after the chunk of memory we are
708          reading. */
709       continue;
710
711     /* Offset within shadow_contents.  */
712     if (bp_addr < memaddr)
713       {
714         /* Only copy the second part of the breakpoint.  */
715         bp_size -= memaddr - bp_addr;
716         bptoffset = memaddr - bp_addr;
717         bp_addr = memaddr;
718       }
719
720     if (bp_addr + bp_size > memaddr + len)
721       {
722         /* Only copy the first part of the breakpoint.  */
723         bp_size -= (bp_addr + bp_size) - (memaddr + len);
724       }
725
726     memcpy (buf + bp_addr - memaddr,
727             b->target_info.shadow_contents + bptoffset, bp_size);
728   }
729 }
730 \f
731
732 /* A wrapper function for inserting catchpoints.  */
733 static void
734 insert_catchpoint (struct ui_out *uo, void *args)
735 {
736   struct breakpoint *b = (struct breakpoint *) args;
737   int val = -1;
738
739   gdb_assert (b->type == bp_catchpoint);
740   gdb_assert (b->ops != NULL && b->ops->insert != NULL);
741
742   b->ops->insert (b);
743 }
744
745 static int
746 is_hardware_watchpoint (struct breakpoint *bpt)
747 {
748   return (bpt->type == bp_hardware_watchpoint
749           || bpt->type == bp_read_watchpoint
750           || bpt->type == bp_access_watchpoint);
751 }
752
753 /* Find the current value of a watchpoint on EXP.  Return the value in
754    *VALP and *RESULTP and the chain of intermediate and final values
755    in *VAL_CHAIN.  RESULTP and VAL_CHAIN may be NULL if the caller does
756    not need them.
757
758    If a memory error occurs while evaluating the expression, *RESULTP will
759    be set to NULL.  *RESULTP may be a lazy value, if the result could
760    not be read from memory.  It is used to determine whether a value
761    is user-specified (we should watch the whole value) or intermediate
762    (we should watch only the bit used to locate the final value).
763
764    If the final value, or any intermediate value, could not be read
765    from memory, *VALP will be set to NULL.  *VAL_CHAIN will still be
766    set to any referenced values.  *VALP will never be a lazy value.
767    This is the value which we store in struct breakpoint.
768
769    If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the
770    value chain.  The caller must free the values individually.  If
771    VAL_CHAIN is NULL, all generated values will be left on the value
772    chain.  */
773
774 static void
775 fetch_watchpoint_value (struct expression *exp, struct value **valp,
776                         struct value **resultp, struct value **val_chain)
777 {
778   struct value *mark, *new_mark, *result;
779   volatile struct gdb_exception ex;
780
781   *valp = NULL;
782   if (resultp)
783     *resultp = NULL;
784   if (val_chain)
785     *val_chain = NULL;
786
787   /* Evaluate the expression.  */
788   mark = value_mark ();
789   result = NULL;
790
791   TRY_CATCH (ex, RETURN_MASK_ALL)
792     {
793       result = evaluate_expression (exp);
794     }
795   if (ex.reason < 0)
796     {
797       /* Ignore memory errors, we want watchpoints pointing at
798          inaccessible memory to still be created; otherwise, throw the
799          error to some higher catcher.  */
800       switch (ex.error)
801         {
802         case MEMORY_ERROR:
803           break;
804         default:
805           throw_exception (ex);
806           break;
807         }
808     }
809
810   new_mark = value_mark ();
811   if (mark == new_mark)
812     return;
813   if (resultp)
814     *resultp = result;
815
816   /* Make sure it's not lazy, so that after the target stops again we
817      have a non-lazy previous value to compare with.  */
818   if (result != NULL
819       && (!value_lazy (result) || gdb_value_fetch_lazy (result)))
820     *valp = result;
821
822   if (val_chain)
823     {
824       /* Return the chain of intermediate values.  We use this to
825          decide which addresses to watch.  */
826       *val_chain = new_mark;
827       value_release_to_mark (mark);
828     }
829 }
830
831 /* Assuming that B is a watchpoint:
832    - Reparse watchpoint expression, if REPARSE is non-zero
833    - Evaluate expression and store the result in B->val
834    - Evaluate the condition if there is one, and store the result
835      in b->loc->cond.
836    - Update the list of values that must be watched in B->loc.
837
838    If the watchpoint disposition is disp_del_at_next_stop, then do nothing.
839    If this is local watchpoint that is out of scope, delete it.  */
840 static void
841 update_watchpoint (struct breakpoint *b, int reparse)
842 {
843   int within_current_scope;
844   struct frame_id saved_frame_id;
845   struct bp_location *loc;
846   bpstat bs;
847
848   /* We don't free locations.  They are stored in bp_location_chain and
849      update_global_locations will eventually delete them and remove
850      breakpoints if needed.  */
851   b->loc = NULL;
852
853   if (b->disposition == disp_del_at_next_stop)
854     return;
855  
856   /* Save the current frame's ID so we can restore it after
857      evaluating the watchpoint expression on its own frame.  */
858   /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
859      took a frame parameter, so that we didn't have to change the
860      selected frame.  */
861   saved_frame_id = get_frame_id (get_selected_frame (NULL));
862
863   /* Determine if the watchpoint is within scope.  */
864   if (b->exp_valid_block == NULL)
865     within_current_scope = 1;
866   else
867     {
868       struct frame_info *fi;
869       fi = frame_find_by_id (b->watchpoint_frame);
870       within_current_scope = (fi != NULL);
871       if (within_current_scope)
872         select_frame (fi);
873     }
874
875   if (within_current_scope && reparse)
876     {
877       char *s;
878       if (b->exp)
879         {
880           xfree (b->exp);
881           b->exp = NULL;
882         }
883       s = b->exp_string;
884       b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
885       /* If the meaning of expression itself changed, the old value is
886          no longer relevant.  We don't want to report a watchpoint hit
887          to the user when the old value and the new value may actually
888          be completely different objects.  */
889       value_free (b->val);
890       b->val = NULL;
891       b->val_valid = 0;
892     }
893
894   /* If we failed to parse the expression, for example because
895      it refers to a global variable in a not-yet-loaded shared library,
896      don't try to insert watchpoint.  We don't automatically delete
897      such watchpoint, though, since failure to parse expression
898      is different from out-of-scope watchpoint.  */
899   if (within_current_scope && b->exp)
900     {
901       struct value *val_chain, *v, *result, *next;
902
903       fetch_watchpoint_value (b->exp, &v, &result, &val_chain);
904
905       /* Avoid setting b->val if it's already set.  The meaning of
906          b->val is 'the last value' user saw, and we should update
907          it only if we reported that last value to user.  As it
908          happens, the code that reports it updates b->val directly.  */
909       if (!b->val_valid)
910         {
911           b->val = v;
912           b->val_valid = 1;
913         }
914
915         /* Change the type of breakpoint between hardware assisted or an
916            ordinary watchpoint depending on the hardware support and free
917            hardware slots.  REPARSE is set when the inferior is started.  */
918         if ((b->type == bp_watchpoint || b->type == bp_hardware_watchpoint)
919             && reparse)
920           {
921             int i, mem_cnt, other_type_used;
922
923             i = hw_watchpoint_used_count (bp_hardware_watchpoint,
924                                           &other_type_used);
925             mem_cnt = can_use_hardware_watchpoint (val_chain);
926
927             if (!mem_cnt)
928               b->type = bp_watchpoint;
929             else
930               {
931                 int target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT
932                   (bp_hardware_watchpoint, i + mem_cnt, other_type_used);
933                 if (target_resources_ok <= 0)
934                   b->type = bp_watchpoint;
935                 else
936                   b->type = bp_hardware_watchpoint;
937               }
938           }
939
940       /* Look at each value on the value chain.  */
941       for (v = val_chain; v; v = next)
942         {
943           /* If it's a memory location, and GDB actually needed
944              its contents to evaluate the expression, then we
945              must watch it.  If the first value returned is
946              still lazy, that means an error occurred reading it;
947              watch it anyway in case it becomes readable.  */
948           if (VALUE_LVAL (v) == lval_memory
949               && (v == val_chain || ! value_lazy (v)))
950             {
951               struct type *vtype = check_typedef (value_type (v));
952
953               /* We only watch structs and arrays if user asked
954                  for it explicitly, never if they just happen to
955                  appear in the middle of some value chain.  */
956               if (v == result
957                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
958                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
959                 {
960                   CORE_ADDR addr;
961                   int len, type;
962                   struct bp_location *loc, **tmp;
963
964                   addr = VALUE_ADDRESS (v) + value_offset (v);
965                   len = TYPE_LENGTH (value_type (v));
966                   type = hw_write;
967                   if (b->type == bp_read_watchpoint)
968                     type = hw_read;
969                   else if (b->type == bp_access_watchpoint)
970                     type = hw_access;
971                   
972                   loc = allocate_bp_location (b);
973                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
974                     ;
975                   *tmp = loc;
976                   loc->address = addr;
977                   loc->length = len;
978                   loc->watchpoint_type = type;
979                 }
980             }
981
982           next = value_next (v);
983           if (v != b->val)
984             value_free (v);
985         }
986
987       /* We just regenerated the list of breakpoint locations.
988          The new location does not have its condition field set to anything
989          and therefore, we must always reparse the cond_string, independently
990          of the value of the reparse flag.  */
991       if (b->cond_string != NULL)
992         {
993           char *s = b->cond_string;
994           b->loc->cond = parse_exp_1 (&s, b->exp_valid_block, 0);
995         }
996     }
997   else if (!within_current_scope)
998     {
999       printf_filtered (_("\
1000 Watchpoint %d deleted because the program has left the block \n\
1001 in which its expression is valid.\n"),
1002                        b->number);
1003       if (b->related_breakpoint)
1004         b->related_breakpoint->disposition = disp_del_at_next_stop;
1005       b->disposition = disp_del_at_next_stop;
1006     }
1007
1008   /* Restore the selected frame.  */
1009   select_frame (frame_find_by_id (saved_frame_id));
1010 }
1011
1012
1013 /* Returns 1 iff breakpoint location should be
1014    inserted in the inferior.  */
1015 static int
1016 should_be_inserted (struct bp_location *bpt)
1017 {
1018   if (!breakpoint_enabled (bpt->owner))
1019     return 0;
1020
1021   if (bpt->owner->disposition == disp_del_at_next_stop)
1022     return 0;
1023
1024   if (!bpt->enabled || bpt->shlib_disabled || bpt->duplicate)
1025     return 0;
1026
1027   return 1;
1028 }
1029
1030 /* Insert a low-level "breakpoint" of some type.  BPT is the breakpoint.
1031    Any error messages are printed to TMP_ERROR_STREAM; and DISABLED_BREAKS,
1032    and HW_BREAKPOINT_ERROR are used to report problems.
1033
1034    NOTE drow/2003-09-09: This routine could be broken down to an object-style
1035    method for each breakpoint or catchpoint type.  */
1036 static int
1037 insert_bp_location (struct bp_location *bpt,
1038                     struct ui_file *tmp_error_stream,
1039                     int *disabled_breaks,
1040                     int *hw_breakpoint_error)
1041 {
1042   int val = 0;
1043
1044   if (!should_be_inserted (bpt) || bpt->inserted)
1045     return 0;
1046
1047   /* Initialize the target-specific information.  */
1048   memset (&bpt->target_info, 0, sizeof (bpt->target_info));
1049   bpt->target_info.placed_address = bpt->address;
1050
1051   if (bpt->loc_type == bp_loc_software_breakpoint
1052       || bpt->loc_type == bp_loc_hardware_breakpoint)
1053     {
1054       if (bpt->owner->type != bp_hardware_breakpoint)
1055         {
1056           /* If the explicitly specified breakpoint type
1057              is not hardware breakpoint, check the memory map to see
1058              if the breakpoint address is in read only memory or not.
1059              Two important cases are:
1060              - location type is not hardware breakpoint, memory
1061              is readonly.  We change the type of the location to
1062              hardware breakpoint.
1063              - location type is hardware breakpoint, memory is read-write.
1064              This means we've previously made the location hardware one, but
1065              then the memory map changed, so we undo.
1066              
1067              When breakpoints are removed, remove_breakpoints will
1068              use location types we've just set here, the only possible
1069              problem is that memory map has changed during running program,
1070              but it's not going to work anyway with current gdb.  */
1071           struct mem_region *mr 
1072             = lookup_mem_region (bpt->target_info.placed_address);
1073           
1074           if (mr)
1075             {
1076               if (automatic_hardware_breakpoints)
1077                 {
1078                   int changed = 0;
1079                   enum bp_loc_type new_type;
1080                   
1081                   if (mr->attrib.mode != MEM_RW)
1082                     new_type = bp_loc_hardware_breakpoint;
1083                   else 
1084                     new_type = bp_loc_software_breakpoint;
1085                   
1086                   if (new_type != bpt->loc_type)
1087                     {
1088                       static int said = 0;
1089                       bpt->loc_type = new_type;
1090                       if (!said)
1091                         {
1092                           fprintf_filtered (gdb_stdout, _("\
1093 Note: automatically using hardware breakpoints for read-only addresses.\n"));
1094                           said = 1;
1095                         }
1096                     }
1097                 }
1098               else if (bpt->loc_type == bp_loc_software_breakpoint
1099                        && mr->attrib.mode != MEM_RW)        
1100                 warning (_("cannot set software breakpoint at readonly address %s"),
1101                          paddr (bpt->address));
1102             }
1103         }
1104         
1105       /* First check to see if we have to handle an overlay.  */
1106       if (overlay_debugging == ovly_off
1107           || bpt->section == NULL
1108           || !(section_is_overlay (bpt->section)))
1109         {
1110           /* No overlay handling: just set the breakpoint.  */
1111
1112           if (bpt->loc_type == bp_loc_hardware_breakpoint)
1113             val = target_insert_hw_breakpoint (&bpt->target_info);
1114           else
1115             val = target_insert_breakpoint (&bpt->target_info);
1116         }
1117       else
1118         {
1119           /* This breakpoint is in an overlay section.  
1120              Shall we set a breakpoint at the LMA?  */
1121           if (!overlay_events_enabled)
1122             {
1123               /* Yes -- overlay event support is not active, 
1124                  so we must try to set a breakpoint at the LMA.
1125                  This will not work for a hardware breakpoint.  */
1126               if (bpt->loc_type == bp_loc_hardware_breakpoint)
1127                 warning (_("hardware breakpoint %d not supported in overlay!"),
1128                          bpt->owner->number);
1129               else
1130                 {
1131                   CORE_ADDR addr = overlay_unmapped_address (bpt->address,
1132                                                              bpt->section);
1133                   /* Set a software (trap) breakpoint at the LMA.  */
1134                   bpt->overlay_target_info = bpt->target_info;
1135                   bpt->overlay_target_info.placed_address = addr;
1136                   val = target_insert_breakpoint (&bpt->overlay_target_info);
1137                   if (val != 0)
1138                     fprintf_unfiltered (tmp_error_stream, 
1139                                         "Overlay breakpoint %d failed: in ROM?", 
1140                                         bpt->owner->number);
1141                 }
1142             }
1143           /* Shall we set a breakpoint at the VMA? */
1144           if (section_is_mapped (bpt->section))
1145             {
1146               /* Yes.  This overlay section is mapped into memory.  */
1147               if (bpt->loc_type == bp_loc_hardware_breakpoint)
1148                 val = target_insert_hw_breakpoint (&bpt->target_info);
1149               else
1150                 val = target_insert_breakpoint (&bpt->target_info);
1151             }
1152           else
1153             {
1154               /* No.  This breakpoint will not be inserted.  
1155                  No error, but do not mark the bp as 'inserted'.  */
1156               return 0;
1157             }
1158         }
1159
1160       if (val)
1161         {
1162           /* Can't set the breakpoint.  */
1163           if (solib_address (bpt->address))
1164             {
1165               /* See also: disable_breakpoints_in_shlibs. */
1166               val = 0;
1167               bpt->shlib_disabled = 1;
1168               if (!*disabled_breaks)
1169                 {
1170                   fprintf_unfiltered (tmp_error_stream, 
1171                                       "Cannot insert breakpoint %d.\n", 
1172                                       bpt->owner->number);
1173                   fprintf_unfiltered (tmp_error_stream, 
1174                                       "Temporarily disabling shared library breakpoints:\n");
1175                 }
1176               *disabled_breaks = 1;
1177               fprintf_unfiltered (tmp_error_stream,
1178                                   "breakpoint #%d\n", bpt->owner->number);
1179             }
1180           else
1181             {
1182               if (bpt->loc_type == bp_loc_hardware_breakpoint)
1183                 {
1184                   *hw_breakpoint_error = 1;
1185                   fprintf_unfiltered (tmp_error_stream, 
1186                                       "Cannot insert hardware breakpoint %d.\n",
1187                                       bpt->owner->number);
1188                 }
1189               else
1190                 {
1191                   fprintf_unfiltered (tmp_error_stream, 
1192                                       "Cannot insert breakpoint %d.\n", 
1193                                       bpt->owner->number);
1194                   fprintf_filtered (tmp_error_stream, 
1195                                     "Error accessing memory address ");
1196                   fputs_filtered (paddress (bpt->address), tmp_error_stream);
1197                   fprintf_filtered (tmp_error_stream, ": %s.\n",
1198                                     safe_strerror (val));
1199                 }
1200
1201             }
1202         }
1203       else
1204         bpt->inserted = 1;
1205
1206       return val;
1207     }
1208
1209   else if (bpt->loc_type == bp_loc_hardware_watchpoint
1210            /* NOTE drow/2003-09-08: This state only exists for removing
1211               watchpoints.  It's not clear that it's necessary... */
1212            && bpt->owner->disposition != disp_del_at_next_stop)
1213     {
1214       val = target_insert_watchpoint (bpt->address, 
1215                                       bpt->length,
1216                                       bpt->watchpoint_type);
1217       bpt->inserted = (val != -1);
1218     }
1219
1220   else if (bpt->owner->type == bp_catchpoint)
1221     {
1222       struct gdb_exception e = catch_exception (uiout, insert_catchpoint,
1223                                                 bpt->owner, RETURN_MASK_ERROR);
1224       exception_fprintf (gdb_stderr, e, "warning: inserting catchpoint %d: ",
1225                          bpt->owner->number);
1226       if (e.reason < 0)
1227         bpt->owner->enable_state = bp_disabled;
1228       else
1229         bpt->inserted = 1;
1230
1231       /* We've already printed an error message if there was a problem
1232          inserting this catchpoint, and we've disabled the catchpoint,
1233          so just return success.  */
1234       return 0;
1235     }
1236
1237   return 0;
1238 }
1239
1240 /* Make sure all breakpoints are inserted in inferior.
1241    Throws exception on any error.
1242    A breakpoint that is already inserted won't be inserted
1243    again, so calling this function twice is safe.  */
1244 void
1245 insert_breakpoints (void)
1246 {
1247   struct breakpoint *bpt;
1248
1249   ALL_BREAKPOINTS (bpt)
1250     if (is_hardware_watchpoint (bpt))
1251       update_watchpoint (bpt, 0 /* don't reparse. */);
1252
1253   update_global_location_list (1);
1254
1255   if (!breakpoints_always_inserted_mode ()
1256       && (target_has_execution
1257           || (gdbarch_has_global_solist (target_gdbarch)
1258               && target_supports_multi_process ())))
1259     /* update_global_location_list does not insert breakpoints
1260        when always_inserted_mode is not enabled.  Explicitly
1261        insert them now.  */
1262     insert_breakpoint_locations ();
1263 }
1264
1265 /* insert_breakpoints is used when starting or continuing the program.
1266    remove_breakpoints is used when the program stops.
1267    Both return zero if successful,
1268    or an `errno' value if could not write the inferior.  */
1269
1270 static void
1271 insert_breakpoint_locations (void)
1272 {
1273   struct breakpoint *bpt;
1274   struct bp_location *b, *temp;
1275   int error = 0;
1276   int val = 0;
1277   int disabled_breaks = 0;
1278   int hw_breakpoint_error = 0;
1279
1280   struct ui_file *tmp_error_stream = mem_fileopen ();
1281   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
1282   
1283   /* Explicitly mark the warning -- this will only be printed if
1284      there was an error.  */
1285   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
1286         
1287   ALL_BP_LOCATIONS_SAFE (b, temp)
1288     {
1289       if (!should_be_inserted (b) || b->inserted)
1290         continue;
1291
1292       /* There is no point inserting thread-specific breakpoints if the
1293          thread no longer exists.  */
1294       if (b->owner->thread != -1
1295           && !valid_thread_id (b->owner->thread))
1296         continue;
1297
1298       val = insert_bp_location (b, tmp_error_stream,
1299                                     &disabled_breaks,
1300                                     &hw_breakpoint_error);
1301       if (val)
1302         error = val;
1303     }
1304
1305   /* If we failed to insert all locations of a watchpoint,
1306      remove them, as half-inserted watchpoint is of limited use.  */
1307   ALL_BREAKPOINTS (bpt)  
1308     {
1309       int some_failed = 0;
1310       struct bp_location *loc;
1311
1312       if (!is_hardware_watchpoint (bpt))
1313         continue;
1314
1315       if (!breakpoint_enabled (bpt))
1316         continue;
1317
1318       if (bpt->disposition == disp_del_at_next_stop)
1319         continue;
1320       
1321       for (loc = bpt->loc; loc; loc = loc->next)
1322         if (!loc->inserted)
1323           {
1324             some_failed = 1;
1325             break;
1326           }
1327       if (some_failed)
1328         {
1329           for (loc = bpt->loc; loc; loc = loc->next)
1330             if (loc->inserted)
1331               remove_breakpoint (loc, mark_uninserted);
1332
1333           hw_breakpoint_error = 1;
1334           fprintf_unfiltered (tmp_error_stream,
1335                               "Could not insert hardware watchpoint %d.\n", 
1336                               bpt->number);
1337           error = -1;
1338         }
1339     }
1340
1341   if (error)
1342     {
1343       /* If a hardware breakpoint or watchpoint was inserted, add a
1344          message about possibly exhausted resources.  */
1345       if (hw_breakpoint_error)
1346         {
1347           fprintf_unfiltered (tmp_error_stream, 
1348                               "Could not insert hardware breakpoints:\n\
1349 You may have requested too many hardware breakpoints/watchpoints.\n");
1350         }
1351       target_terminal_ours_for_output ();
1352       error_stream (tmp_error_stream);
1353     }
1354
1355   do_cleanups (cleanups);
1356 }
1357
1358 int
1359 remove_breakpoints (void)
1360 {
1361   struct bp_location *b;
1362   int val;
1363
1364   ALL_BP_LOCATIONS (b)
1365   {
1366     if (b->inserted)
1367       {
1368         val = remove_breakpoint (b, mark_uninserted);
1369         if (val != 0)
1370           return val;
1371       }
1372   }
1373   return 0;
1374 }
1375
1376 int
1377 remove_hw_watchpoints (void)
1378 {
1379   struct bp_location *b;
1380   int val;
1381
1382   ALL_BP_LOCATIONS (b)
1383   {
1384     if (b->inserted && b->loc_type == bp_loc_hardware_watchpoint)
1385       {
1386         val = remove_breakpoint (b, mark_uninserted);
1387         if (val != 0)
1388           return val;
1389       }
1390   }
1391   return 0;
1392 }
1393
1394 int
1395 reattach_breakpoints (int pid)
1396 {
1397   struct bp_location *b;
1398   int val;
1399   struct cleanup *old_chain = save_inferior_ptid ();
1400   struct ui_file *tmp_error_stream = mem_fileopen ();
1401   int dummy1 = 0, dummy2 = 0;
1402
1403   make_cleanup_ui_file_delete (tmp_error_stream);
1404
1405   inferior_ptid = pid_to_ptid (pid);
1406   ALL_BP_LOCATIONS (b)
1407   {
1408     if (b->inserted)
1409       {
1410         b->inserted = 0;
1411         val = insert_bp_location (b, tmp_error_stream,
1412                                   &dummy1, &dummy2);
1413         if (val != 0)
1414           {
1415             do_cleanups (old_chain);
1416             return val;
1417           }
1418       }
1419   }
1420   do_cleanups (old_chain);
1421   return 0;
1422 }
1423
1424 void
1425 update_breakpoints_after_exec (void)
1426 {
1427   struct breakpoint *b;
1428   struct breakpoint *temp;
1429   struct bp_location *bploc;
1430
1431   /* We're about to delete breakpoints from GDB's lists.  If the
1432      INSERTED flag is true, GDB will try to lift the breakpoints by
1433      writing the breakpoints' "shadow contents" back into memory.  The
1434      "shadow contents" are NOT valid after an exec, so GDB should not
1435      do that.  Instead, the target is responsible from marking
1436      breakpoints out as soon as it detects an exec.  We don't do that
1437      here instead, because there may be other attempts to delete
1438      breakpoints after detecting an exec and before reaching here.  */
1439   ALL_BP_LOCATIONS (bploc)
1440     gdb_assert (!bploc->inserted);
1441
1442   ALL_BREAKPOINTS_SAFE (b, temp)
1443   {
1444     /* Solib breakpoints must be explicitly reset after an exec(). */
1445     if (b->type == bp_shlib_event)
1446       {
1447         delete_breakpoint (b);
1448         continue;
1449       }
1450
1451     /* Thread event breakpoints must be set anew after an exec(),
1452        as must overlay event breakpoints.  */
1453     if (b->type == bp_thread_event || b->type == bp_overlay_event)
1454       {
1455         delete_breakpoint (b);
1456         continue;
1457       }
1458
1459     /* Step-resume breakpoints are meaningless after an exec(). */
1460     if (b->type == bp_step_resume)
1461       {
1462         delete_breakpoint (b);
1463         continue;
1464       }
1465
1466     /* Longjmp and longjmp-resume breakpoints are also meaningless
1467        after an exec.  */
1468     if (b->type == bp_longjmp || b->type == bp_longjmp_resume)
1469       {
1470         delete_breakpoint (b);
1471         continue;
1472       }
1473
1474     if (b->type == bp_catchpoint)
1475       {
1476         /* For now, none of the bp_catchpoint breakpoints need to
1477            do anything at this point.  In the future, if some of
1478            the catchpoints need to something, we will need to add
1479            a new method, and call this method from here.  */
1480         continue;
1481       }
1482
1483     /* bp_finish is a special case.  The only way we ought to be able
1484        to see one of these when an exec() has happened, is if the user
1485        caught a vfork, and then said "finish".  Ordinarily a finish just
1486        carries them to the call-site of the current callee, by setting
1487        a temporary bp there and resuming.  But in this case, the finish
1488        will carry them entirely through the vfork & exec.
1489
1490        We don't want to allow a bp_finish to remain inserted now.  But
1491        we can't safely delete it, 'cause finish_command has a handle to
1492        the bp on a bpstat, and will later want to delete it.  There's a
1493        chance (and I've seen it happen) that if we delete the bp_finish
1494        here, that its storage will get reused by the time finish_command
1495        gets 'round to deleting the "use to be a bp_finish" breakpoint.
1496        We really must allow finish_command to delete a bp_finish.
1497
1498        In the absense of a general solution for the "how do we know
1499        it's safe to delete something others may have handles to?"
1500        problem, what we'll do here is just uninsert the bp_finish, and
1501        let finish_command delete it.
1502
1503        (We know the bp_finish is "doomed" in the sense that it's
1504        momentary, and will be deleted as soon as finish_command sees
1505        the inferior stopped.  So it doesn't matter that the bp's
1506        address is probably bogus in the new a.out, unlike e.g., the
1507        solib breakpoints.)  */
1508
1509     if (b->type == bp_finish)
1510       {
1511         continue;
1512       }
1513
1514     /* Without a symbolic address, we have little hope of the
1515        pre-exec() address meaning the same thing in the post-exec()
1516        a.out. */
1517     if (b->addr_string == NULL)
1518       {
1519         delete_breakpoint (b);
1520         continue;
1521       }
1522   }
1523   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
1524   create_overlay_event_breakpoint ("_ovly_debug_event");
1525 }
1526
1527 int
1528 detach_breakpoints (int pid)
1529 {
1530   struct bp_location *b;
1531   int val;
1532   struct cleanup *old_chain = save_inferior_ptid ();
1533
1534   if (pid == PIDGET (inferior_ptid))
1535     error (_("Cannot detach breakpoints of inferior_ptid"));
1536
1537   /* Set inferior_ptid; remove_breakpoint uses this global.  */
1538   inferior_ptid = pid_to_ptid (pid);
1539   ALL_BP_LOCATIONS (b)
1540   {
1541     if (b->inserted)
1542       {
1543         val = remove_breakpoint (b, mark_inserted);
1544         if (val != 0)
1545           {
1546             do_cleanups (old_chain);
1547             return val;
1548           }
1549       }
1550   }
1551   do_cleanups (old_chain);
1552   return 0;
1553 }
1554
1555 static int
1556 remove_breakpoint (struct bp_location *b, insertion_state_t is)
1557 {
1558   int val;
1559
1560   if (b->owner->enable_state == bp_permanent)
1561     /* Permanent breakpoints cannot be inserted or removed.  */
1562     return 0;
1563
1564   /* The type of none suggests that owner is actually deleted.
1565      This should not ever happen.  */
1566   gdb_assert (b->owner->type != bp_none);
1567
1568   if (b->loc_type == bp_loc_software_breakpoint
1569       || b->loc_type == bp_loc_hardware_breakpoint)
1570     {
1571       /* "Normal" instruction breakpoint: either the standard
1572          trap-instruction bp (bp_breakpoint), or a
1573          bp_hardware_breakpoint.  */
1574
1575       /* First check to see if we have to handle an overlay.  */
1576       if (overlay_debugging == ovly_off
1577           || b->section == NULL
1578           || !(section_is_overlay (b->section)))
1579         {
1580           /* No overlay handling: just remove the breakpoint.  */
1581
1582           if (b->loc_type == bp_loc_hardware_breakpoint)
1583             val = target_remove_hw_breakpoint (&b->target_info);
1584           else
1585             val = target_remove_breakpoint (&b->target_info);
1586         }
1587       else
1588         {
1589           /* This breakpoint is in an overlay section.  
1590              Did we set a breakpoint at the LMA?  */
1591           if (!overlay_events_enabled)
1592               {
1593                 /* Yes -- overlay event support is not active, so we
1594                    should have set a breakpoint at the LMA.  Remove it.  
1595                 */
1596                 /* Ignore any failures: if the LMA is in ROM, we will
1597                    have already warned when we failed to insert it.  */
1598                 if (b->loc_type == bp_loc_hardware_breakpoint)
1599                   target_remove_hw_breakpoint (&b->overlay_target_info);
1600                 else
1601                   target_remove_breakpoint (&b->overlay_target_info);
1602               }
1603           /* Did we set a breakpoint at the VMA? 
1604              If so, we will have marked the breakpoint 'inserted'.  */
1605           if (b->inserted)
1606             {
1607               /* Yes -- remove it.  Previously we did not bother to
1608                  remove the breakpoint if the section had been
1609                  unmapped, but let's not rely on that being safe.  We
1610                  don't know what the overlay manager might do.  */
1611               if (b->loc_type == bp_loc_hardware_breakpoint)
1612                 val = target_remove_hw_breakpoint (&b->target_info);
1613
1614               /* However, we should remove *software* breakpoints only
1615                  if the section is still mapped, or else we overwrite
1616                  wrong code with the saved shadow contents.  */
1617               else if (section_is_mapped (b->section))
1618                 val = target_remove_breakpoint (&b->target_info);
1619               else
1620                 val = 0;
1621             }
1622           else
1623             {
1624               /* No -- not inserted, so no need to remove.  No error.  */
1625               val = 0;
1626             }
1627         }
1628
1629       /* In some cases, we might not be able to remove a breakpoint
1630          in a shared library that has already been removed, but we
1631          have not yet processed the shlib unload event.  */
1632       if (val && solib_address (b->address))
1633         val = 0;
1634
1635       if (val)
1636         return val;
1637       b->inserted = (is == mark_inserted);
1638     }
1639   else if (b->loc_type == bp_loc_hardware_watchpoint)
1640     {
1641       struct value *v;
1642       struct value *n;
1643
1644       b->inserted = (is == mark_inserted);
1645       val = target_remove_watchpoint (b->address, b->length, 
1646                                       b->watchpoint_type);
1647
1648       /* Failure to remove any of the hardware watchpoints comes here.  */
1649       if ((is == mark_uninserted) && (b->inserted))
1650         warning (_("Could not remove hardware watchpoint %d."),
1651                  b->owner->number);
1652     }
1653   else if (b->owner->type == bp_catchpoint
1654            && breakpoint_enabled (b->owner)
1655            && !b->duplicate)
1656     {
1657       gdb_assert (b->owner->ops != NULL && b->owner->ops->remove != NULL);
1658
1659       val = b->owner->ops->remove (b->owner);
1660       if (val)
1661         return val;
1662       b->inserted = (is == mark_inserted);
1663     }
1664
1665   return 0;
1666 }
1667
1668 /* Clear the "inserted" flag in all breakpoints.  */
1669
1670 void
1671 mark_breakpoints_out (void)
1672 {
1673   struct bp_location *bpt;
1674
1675   ALL_BP_LOCATIONS (bpt)
1676     bpt->inserted = 0;
1677 }
1678
1679 /* Clear the "inserted" flag in all breakpoints and delete any
1680    breakpoints which should go away between runs of the program.
1681
1682    Plus other such housekeeping that has to be done for breakpoints
1683    between runs.
1684
1685    Note: this function gets called at the end of a run (by
1686    generic_mourn_inferior) and when a run begins (by
1687    init_wait_for_inferior). */
1688
1689
1690
1691 void
1692 breakpoint_init_inferior (enum inf_context context)
1693 {
1694   struct breakpoint *b, *temp;
1695   struct bp_location *bpt;
1696   int ix;
1697
1698   /* If breakpoint locations are shared across processes, then there's
1699      nothing to do.  */
1700   if (gdbarch_has_global_solist (target_gdbarch))
1701     return;
1702
1703   ALL_BP_LOCATIONS (bpt)
1704     if (bpt->owner->enable_state != bp_permanent)
1705       bpt->inserted = 0;
1706
1707   ALL_BREAKPOINTS_SAFE (b, temp)
1708   {
1709     switch (b->type)
1710       {
1711       case bp_call_dummy:
1712       case bp_watchpoint_scope:
1713
1714         /* If the call dummy breakpoint is at the entry point it will
1715            cause problems when the inferior is rerun, so we better
1716            get rid of it. 
1717
1718            Also get rid of scope breakpoints.  */
1719         delete_breakpoint (b);
1720         break;
1721
1722       case bp_watchpoint:
1723       case bp_hardware_watchpoint:
1724       case bp_read_watchpoint:
1725       case bp_access_watchpoint:
1726
1727         /* Likewise for watchpoints on local expressions.  */
1728         if (b->exp_valid_block != NULL)
1729           delete_breakpoint (b);
1730         else if (context == inf_starting) 
1731           {
1732             /* Reset val field to force reread of starting value
1733                in insert_breakpoints.  */
1734             if (b->val)
1735               value_free (b->val);
1736             b->val = NULL;
1737             b->val_valid = 0;
1738           }
1739         break;
1740       default:
1741         break;
1742       }
1743   }
1744
1745   /* Get rid of the moribund locations.  */
1746   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bpt); ++ix)
1747     free_bp_location (bpt);
1748   VEC_free (bp_location_p, moribund_locations);
1749 }
1750
1751 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
1752    exists at PC.  It returns ordinary_breakpoint_here if it's an
1753    ordinary breakpoint, or permanent_breakpoint_here if it's a
1754    permanent breakpoint.
1755    - When continuing from a location with an ordinary breakpoint, we
1756      actually single step once before calling insert_breakpoints.
1757    - When continuing from a localion with a permanent breakpoint, we
1758      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
1759      the target, to advance the PC past the breakpoint.  */
1760
1761 enum breakpoint_here
1762 breakpoint_here_p (CORE_ADDR pc)
1763 {
1764   const struct bp_location *bpt;
1765   int any_breakpoint_here = 0;
1766
1767   ALL_BP_LOCATIONS (bpt)
1768     {
1769       if (bpt->loc_type != bp_loc_software_breakpoint
1770           && bpt->loc_type != bp_loc_hardware_breakpoint)
1771         continue;
1772
1773       if ((breakpoint_enabled (bpt->owner)
1774            || bpt->owner->enable_state == bp_permanent)
1775           && bpt->address == pc)        /* bp is enabled and matches pc */
1776         {
1777           if (overlay_debugging 
1778               && section_is_overlay (bpt->section) 
1779               && !section_is_mapped (bpt->section))
1780             continue;           /* unmapped overlay -- can't be a match */
1781           else if (bpt->owner->enable_state == bp_permanent)
1782             return permanent_breakpoint_here;
1783           else
1784             any_breakpoint_here = 1;
1785         }
1786     }
1787
1788   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
1789 }
1790
1791 /* Return true if there's a moribund breakpoint at PC.  */
1792
1793 int
1794 moribund_breakpoint_here_p (CORE_ADDR pc)
1795 {
1796   struct bp_location *loc;
1797   int ix;
1798
1799   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
1800     if (loc->address == pc)
1801       return 1;
1802
1803   return 0;
1804 }
1805
1806 /* Returns non-zero if there's a breakpoint inserted at PC, which is
1807    inserted using regular breakpoint_chain/bp_location_chain mechanism.
1808    This does not check for single-step breakpoints, which are
1809    inserted and removed using direct target manipulation.  */
1810
1811 int
1812 regular_breakpoint_inserted_here_p (CORE_ADDR pc)
1813 {
1814   const struct bp_location *bpt;
1815
1816   ALL_BP_LOCATIONS (bpt)
1817     {
1818       if (bpt->loc_type != bp_loc_software_breakpoint
1819           && bpt->loc_type != bp_loc_hardware_breakpoint)
1820         continue;
1821
1822       if (bpt->inserted
1823           && bpt->address == pc)        /* bp is inserted and matches pc */
1824         {
1825           if (overlay_debugging 
1826               && section_is_overlay (bpt->section) 
1827               && !section_is_mapped (bpt->section))
1828             continue;           /* unmapped overlay -- can't be a match */
1829           else
1830             return 1;
1831         }
1832     }
1833   return 0;
1834 }
1835
1836 /* Returns non-zero iff there's either regular breakpoint
1837    or a single step breakpoint inserted at PC.  */
1838
1839 int
1840 breakpoint_inserted_here_p (CORE_ADDR pc)
1841 {
1842   if (regular_breakpoint_inserted_here_p (pc))
1843     return 1;
1844
1845   if (single_step_breakpoint_inserted_here_p (pc))
1846     return 1;
1847
1848   return 0;
1849 }
1850
1851 /* This function returns non-zero iff there is a software breakpoint
1852    inserted at PC.  */
1853
1854 int
1855 software_breakpoint_inserted_here_p (CORE_ADDR pc)
1856 {
1857   const struct bp_location *bpt;
1858   int any_breakpoint_here = 0;
1859
1860   ALL_BP_LOCATIONS (bpt)
1861     {
1862       if (bpt->loc_type != bp_loc_software_breakpoint)
1863         continue;
1864
1865       if (bpt->inserted
1866           && bpt->address == pc)        /* bp is enabled and matches pc */
1867         {
1868           if (overlay_debugging 
1869               && section_is_overlay (bpt->section) 
1870               && !section_is_mapped (bpt->section))
1871             continue;           /* unmapped overlay -- can't be a match */
1872           else
1873             return 1;
1874         }
1875     }
1876
1877   /* Also check for software single-step breakpoints.  */
1878   if (single_step_breakpoint_inserted_here_p (pc))
1879     return 1;
1880
1881   return 0;
1882 }
1883
1884 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
1885    PC is valid for process/thread PTID.  */
1886
1887 int
1888 breakpoint_thread_match (CORE_ADDR pc, ptid_t ptid)
1889 {
1890   const struct bp_location *bpt;
1891   int thread;
1892
1893   thread = pid_to_thread_id (ptid);
1894
1895   ALL_BP_LOCATIONS (bpt)
1896     {
1897       if (bpt->loc_type != bp_loc_software_breakpoint
1898           && bpt->loc_type != bp_loc_hardware_breakpoint)
1899         continue;
1900
1901       if ((breakpoint_enabled (bpt->owner)
1902            || bpt->owner->enable_state == bp_permanent)
1903           && bpt->address == pc
1904           && (bpt->owner->thread == -1 || bpt->owner->thread == thread))
1905         {
1906           if (overlay_debugging 
1907               && section_is_overlay (bpt->section) 
1908               && !section_is_mapped (bpt->section))
1909             continue;           /* unmapped overlay -- can't be a match */
1910           else
1911             return 1;
1912         }
1913     }
1914
1915   return 0;
1916 }
1917 \f
1918
1919 /* bpstat stuff.  External routines' interfaces are documented
1920    in breakpoint.h.  */
1921
1922 int
1923 ep_is_catchpoint (struct breakpoint *ep)
1924 {
1925   return (ep->type == bp_catchpoint);
1926 }
1927
1928 void 
1929 bpstat_free (bpstat bs)
1930 {
1931   if (bs->old_val != NULL)
1932     value_free (bs->old_val);
1933   free_command_lines (&bs->commands);
1934   xfree (bs);
1935 }
1936
1937 /* Clear a bpstat so that it says we are not at any breakpoint.
1938    Also free any storage that is part of a bpstat.  */
1939
1940 void
1941 bpstat_clear (bpstat *bsp)
1942 {
1943   bpstat p;
1944   bpstat q;
1945
1946   if (bsp == 0)
1947     return;
1948   p = *bsp;
1949   while (p != NULL)
1950     {
1951       q = p->next;
1952       bpstat_free (p);
1953       p = q;
1954     }
1955   *bsp = NULL;
1956 }
1957
1958 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
1959    is part of the bpstat is copied as well.  */
1960
1961 bpstat
1962 bpstat_copy (bpstat bs)
1963 {
1964   bpstat p = NULL;
1965   bpstat tmp;
1966   bpstat retval = NULL;
1967
1968   if (bs == NULL)
1969     return bs;
1970
1971   for (; bs != NULL; bs = bs->next)
1972     {
1973       tmp = (bpstat) xmalloc (sizeof (*tmp));
1974       memcpy (tmp, bs, sizeof (*tmp));
1975       if (bs->commands != NULL)
1976         tmp->commands = copy_command_lines (bs->commands);
1977       if (bs->old_val != NULL)
1978         {
1979           tmp->old_val = value_copy (bs->old_val);
1980           release_value (tmp->old_val);
1981         }
1982
1983       if (p == NULL)
1984         /* This is the first thing in the chain.  */
1985         retval = tmp;
1986       else
1987         p->next = tmp;
1988       p = tmp;
1989     }
1990   p->next = NULL;
1991   return retval;
1992 }
1993
1994 /* Find the bpstat associated with this breakpoint */
1995
1996 bpstat
1997 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
1998 {
1999   if (bsp == NULL)
2000     return NULL;
2001
2002   for (; bsp != NULL; bsp = bsp->next)
2003     {
2004       if (bsp->breakpoint_at && bsp->breakpoint_at->owner == breakpoint)
2005         return bsp;
2006     }
2007   return NULL;
2008 }
2009
2010 /* Find a step_resume breakpoint associated with this bpstat.
2011    (If there are multiple step_resume bp's on the list, this function
2012    will arbitrarily pick one.)
2013
2014    It is an error to use this function if BPSTAT doesn't contain a
2015    step_resume breakpoint.
2016
2017    See wait_for_inferior's use of this function.  */
2018 struct breakpoint *
2019 bpstat_find_step_resume_breakpoint (bpstat bsp)
2020 {
2021   int current_thread;
2022
2023   gdb_assert (bsp != NULL);
2024
2025   current_thread = pid_to_thread_id (inferior_ptid);
2026
2027   for (; bsp != NULL; bsp = bsp->next)
2028     {
2029       if ((bsp->breakpoint_at != NULL) &&
2030           (bsp->breakpoint_at->owner->type == bp_step_resume) &&
2031           (bsp->breakpoint_at->owner->thread == current_thread || 
2032            bsp->breakpoint_at->owner->thread == -1))
2033         return bsp->breakpoint_at->owner;
2034     }
2035
2036   internal_error (__FILE__, __LINE__, _("No step_resume breakpoint found."));
2037 }
2038
2039
2040 /* Put in *NUM the breakpoint number of the first breakpoint we are stopped
2041    at.  *BSP upon return is a bpstat which points to the remaining
2042    breakpoints stopped at (but which is not guaranteed to be good for
2043    anything but further calls to bpstat_num).
2044    Return 0 if passed a bpstat which does not indicate any breakpoints.
2045    Return -1 if stopped at a breakpoint that has been deleted since
2046    we set it.
2047    Return 1 otherwise.  */
2048
2049 int
2050 bpstat_num (bpstat *bsp, int *num)
2051 {
2052   struct breakpoint *b;
2053
2054   if ((*bsp) == NULL)
2055     return 0;                   /* No more breakpoint values */
2056
2057   /* We assume we'll never have several bpstats that
2058      correspond to a single breakpoint -- otherwise, 
2059      this function might return the same number more
2060      than once and this will look ugly.  */
2061   b = (*bsp)->breakpoint_at ? (*bsp)->breakpoint_at->owner : NULL;
2062   *bsp = (*bsp)->next;
2063   if (b == NULL)
2064     return -1;                  /* breakpoint that's been deleted since */
2065
2066   *num = b->number;             /* We have its number */
2067   return 1;
2068 }
2069
2070 /* Modify BS so that the actions will not be performed.  */
2071
2072 void
2073 bpstat_clear_actions (bpstat bs)
2074 {
2075   for (; bs != NULL; bs = bs->next)
2076     {
2077       free_command_lines (&bs->commands);
2078       if (bs->old_val != NULL)
2079         {
2080           value_free (bs->old_val);
2081           bs->old_val = NULL;
2082         }
2083     }
2084 }
2085
2086 /* Stub for cleaning up our state if we error-out of a breakpoint command */
2087 static void
2088 cleanup_executing_breakpoints (void *ignore)
2089 {
2090   executing_breakpoint_commands = 0;
2091 }
2092
2093 /* Execute all the commands associated with all the breakpoints at this
2094    location.  Any of these commands could cause the process to proceed
2095    beyond this point, etc.  We look out for such changes by checking
2096    the global "breakpoint_proceeded" after each command.
2097
2098    Returns true if a breakpoint command resumed the inferior.  In that
2099    case, it is the caller's responsibility to recall it again with the
2100    bpstat of the current thread.  */
2101
2102 static int
2103 bpstat_do_actions_1 (bpstat *bsp)
2104 {
2105   bpstat bs;
2106   struct cleanup *old_chain;
2107   int again = 0;
2108
2109   /* Avoid endless recursion if a `source' command is contained
2110      in bs->commands.  */
2111   if (executing_breakpoint_commands)
2112     return 0;
2113
2114   executing_breakpoint_commands = 1;
2115   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
2116
2117   /* This pointer will iterate over the list of bpstat's. */
2118   bs = *bsp;
2119
2120   breakpoint_proceeded = 0;
2121   for (; bs != NULL; bs = bs->next)
2122     {
2123       struct command_line *cmd;
2124       struct cleanup *this_cmd_tree_chain;
2125
2126       /* Take ownership of the BSP's command tree, if it has one.
2127
2128          The command tree could legitimately contain commands like
2129          'step' and 'next', which call clear_proceed_status, which
2130          frees stop_bpstat's command tree.  To make sure this doesn't
2131          free the tree we're executing out from under us, we need to
2132          take ownership of the tree ourselves.  Since a given bpstat's
2133          commands are only executed once, we don't need to copy it; we
2134          can clear the pointer in the bpstat, and make sure we free
2135          the tree when we're done.  */
2136       cmd = bs->commands;
2137       bs->commands = 0;
2138       this_cmd_tree_chain = make_cleanup_free_command_lines (&cmd);
2139
2140       while (cmd != NULL)
2141         {
2142           execute_control_command (cmd);
2143
2144           if (breakpoint_proceeded)
2145             break;
2146           else
2147             cmd = cmd->next;
2148         }
2149
2150       /* We can free this command tree now.  */
2151       do_cleanups (this_cmd_tree_chain);
2152
2153       if (breakpoint_proceeded)
2154         {
2155           if (target_can_async_p ())
2156             /* If we are in async mode, then the target might be still
2157                running, not stopped at any breakpoint, so nothing for
2158                us to do here -- just return to the event loop.  */
2159             ;
2160           else
2161             /* In sync mode, when execute_control_command returns
2162                we're already standing on the next breakpoint.
2163                Breakpoint commands for that stop were not run, since
2164                execute_command does not run breakpoint commands --
2165                only command_line_handler does, but that one is not
2166                involved in execution of breakpoint commands.  So, we
2167                can now execute breakpoint commands.  It should be
2168                noted that making execute_command do bpstat actions is
2169                not an option -- in this case we'll have recursive
2170                invocation of bpstat for each breakpoint with a
2171                command, and can easily blow up GDB stack.  Instead, we
2172                return true, which will trigger the caller to recall us
2173                with the new stop_bpstat.  */
2174             again = 1;
2175           break;
2176         }
2177     }
2178   do_cleanups (old_chain);
2179   return again;
2180 }
2181
2182 void
2183 bpstat_do_actions (void)
2184 {
2185   /* Do any commands attached to breakpoint we are stopped at.  */
2186   while (!ptid_equal (inferior_ptid, null_ptid)
2187          && target_has_execution
2188          && !is_exited (inferior_ptid)
2189          && !is_executing (inferior_ptid))
2190     /* Since in sync mode, bpstat_do_actions may resume the inferior,
2191        and only return when it is stopped at the next breakpoint, we
2192        keep doing breakpoint actions until it returns false to
2193        indicate the inferior was not resumed.  */
2194     if (!bpstat_do_actions_1 (&inferior_thread ()->stop_bpstat))
2195       break;
2196 }
2197
2198 /* Print out the (old or new) value associated with a watchpoint.  */
2199
2200 static void
2201 watchpoint_value_print (struct value *val, struct ui_file *stream)
2202 {
2203   if (val == NULL)
2204     fprintf_unfiltered (stream, _("<unreadable>"));
2205   else
2206     {
2207       struct value_print_options opts;
2208       get_user_print_options (&opts);
2209       value_print (val, stream, &opts);
2210     }
2211 }
2212
2213 /* This is the normal print function for a bpstat.  In the future,
2214    much of this logic could (should?) be moved to bpstat_stop_status,
2215    by having it set different print_it values.
2216
2217    Current scheme: When we stop, bpstat_print() is called.  It loops
2218    through the bpstat list of things causing this stop, calling the
2219    print_bp_stop_message function on each one. The behavior of the
2220    print_bp_stop_message function depends on the print_it field of
2221    bpstat. If such field so indicates, call this function here.
2222
2223    Return values from this routine (ultimately used by bpstat_print()
2224    and normal_stop() to decide what to do): 
2225    PRINT_NOTHING: Means we already printed all we needed to print,
2226    don't print anything else.
2227    PRINT_SRC_ONLY: Means we printed something, and we do *not* desire
2228    that something to be followed by a location.
2229    PRINT_SCR_AND_LOC: Means we printed something, and we *do* desire
2230    that something to be followed by a location.
2231    PRINT_UNKNOWN: Means we printed nothing or we need to do some more
2232    analysis.  */
2233
2234 static enum print_stop_action
2235 print_it_typical (bpstat bs)
2236 {
2237   struct cleanup *old_chain;
2238   struct breakpoint *b;
2239   const struct bp_location *bl;
2240   struct ui_stream *stb;
2241   int bp_temp = 0;
2242   enum print_stop_action result;
2243
2244   /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
2245      which has since been deleted.  */
2246   if (bs->breakpoint_at == NULL)
2247     return PRINT_UNKNOWN;
2248   bl = bs->breakpoint_at;
2249   b = bl->owner;
2250
2251   stb = ui_out_stream_new (uiout);
2252   old_chain = make_cleanup_ui_out_stream_delete (stb);
2253
2254   switch (b->type)
2255     {
2256     case bp_breakpoint:
2257     case bp_hardware_breakpoint:
2258       bp_temp = bs->breakpoint_at->owner->disposition == disp_del;
2259       if (bl->address != bl->requested_address)
2260         breakpoint_adjustment_warning (bl->requested_address,
2261                                        bl->address,
2262                                        b->number, 1);
2263       annotate_breakpoint (b->number);
2264       if (bp_temp) 
2265         ui_out_text (uiout, "\nTemporary breakpoint ");
2266       else
2267         ui_out_text (uiout, "\nBreakpoint ");
2268       if (ui_out_is_mi_like_p (uiout))
2269         {
2270           ui_out_field_string (uiout, "reason", 
2271                           async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
2272           ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
2273         }
2274       ui_out_field_int (uiout, "bkptno", b->number);
2275       ui_out_text (uiout, ", ");
2276       result = PRINT_SRC_AND_LOC;
2277       break;
2278
2279     case bp_shlib_event:
2280       /* Did we stop because the user set the stop_on_solib_events
2281          variable?  (If so, we report this as a generic, "Stopped due
2282          to shlib event" message.) */
2283       printf_filtered (_("Stopped due to shared library event\n"));
2284       result = PRINT_NOTHING;
2285       break;
2286
2287     case bp_thread_event:
2288       /* Not sure how we will get here. 
2289          GDB should not stop for these breakpoints.  */
2290       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
2291       result = PRINT_NOTHING;
2292       break;
2293
2294     case bp_overlay_event:
2295       /* By analogy with the thread event, GDB should not stop for these. */
2296       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
2297       result = PRINT_NOTHING;
2298       break;
2299
2300     case bp_watchpoint:
2301     case bp_hardware_watchpoint:
2302       annotate_watchpoint (b->number);
2303       if (ui_out_is_mi_like_p (uiout))
2304         ui_out_field_string
2305           (uiout, "reason",
2306            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
2307       mention (b);
2308       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2309       ui_out_text (uiout, "\nOld value = ");
2310       watchpoint_value_print (bs->old_val, stb->stream);
2311       ui_out_field_stream (uiout, "old", stb);
2312       ui_out_text (uiout, "\nNew value = ");
2313       watchpoint_value_print (b->val, stb->stream);
2314       ui_out_field_stream (uiout, "new", stb);
2315       ui_out_text (uiout, "\n");
2316       /* More than one watchpoint may have been triggered.  */
2317       result = PRINT_UNKNOWN;
2318       break;
2319
2320     case bp_read_watchpoint:
2321       if (ui_out_is_mi_like_p (uiout))
2322         ui_out_field_string
2323           (uiout, "reason",
2324            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
2325       mention (b);
2326       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2327       ui_out_text (uiout, "\nValue = ");
2328       watchpoint_value_print (b->val, stb->stream);
2329       ui_out_field_stream (uiout, "value", stb);
2330       ui_out_text (uiout, "\n");
2331       result = PRINT_UNKNOWN;
2332       break;
2333
2334     case bp_access_watchpoint:
2335       if (bs->old_val != NULL)
2336         {
2337           annotate_watchpoint (b->number);
2338           if (ui_out_is_mi_like_p (uiout))
2339             ui_out_field_string
2340               (uiout, "reason",
2341                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
2342           mention (b);
2343           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2344           ui_out_text (uiout, "\nOld value = ");
2345           watchpoint_value_print (bs->old_val, stb->stream);
2346           ui_out_field_stream (uiout, "old", stb);
2347           ui_out_text (uiout, "\nNew value = ");
2348         }
2349       else 
2350         {
2351           mention (b);
2352           if (ui_out_is_mi_like_p (uiout))
2353             ui_out_field_string
2354               (uiout, "reason",
2355                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
2356           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2357           ui_out_text (uiout, "\nValue = ");
2358         }
2359       watchpoint_value_print (b->val, stb->stream);
2360       ui_out_field_stream (uiout, "new", stb);
2361       ui_out_text (uiout, "\n");
2362       result = PRINT_UNKNOWN;
2363       break;
2364
2365     /* Fall through, we don't deal with these types of breakpoints
2366        here. */
2367
2368     case bp_finish:
2369       if (ui_out_is_mi_like_p (uiout))
2370         ui_out_field_string
2371           (uiout, "reason",
2372            async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
2373       result = PRINT_UNKNOWN;
2374       break;
2375
2376     case bp_until:
2377       if (ui_out_is_mi_like_p (uiout))
2378         ui_out_field_string
2379           (uiout, "reason",
2380            async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
2381       result = PRINT_UNKNOWN;
2382       break;
2383
2384     case bp_none:
2385     case bp_longjmp:
2386     case bp_longjmp_resume:
2387     case bp_step_resume:
2388     case bp_watchpoint_scope:
2389     case bp_call_dummy:
2390     default:
2391       result = PRINT_UNKNOWN;
2392       break;
2393     }
2394
2395   do_cleanups (old_chain);
2396   return result;
2397 }
2398
2399 /* Generic routine for printing messages indicating why we
2400    stopped. The behavior of this function depends on the value
2401    'print_it' in the bpstat structure.  Under some circumstances we
2402    may decide not to print anything here and delegate the task to
2403    normal_stop(). */
2404
2405 static enum print_stop_action
2406 print_bp_stop_message (bpstat bs)
2407 {
2408   switch (bs->print_it)
2409     {
2410     case print_it_noop:
2411       /* Nothing should be printed for this bpstat entry. */
2412       return PRINT_UNKNOWN;
2413       break;
2414
2415     case print_it_done:
2416       /* We still want to print the frame, but we already printed the
2417          relevant messages. */
2418       return PRINT_SRC_AND_LOC;
2419       break;
2420
2421     case print_it_normal:
2422       {
2423         const struct bp_location *bl = bs->breakpoint_at;
2424         struct breakpoint *b = bl ? bl->owner : NULL;
2425         
2426         /* Normal case.  Call the breakpoint's print_it method, or
2427            print_it_typical.  */
2428         /* FIXME: how breakpoint can ever be NULL here?  */
2429         if (b != NULL && b->ops != NULL && b->ops->print_it != NULL)
2430           return b->ops->print_it (b);
2431         else
2432           return print_it_typical (bs);
2433       }
2434         break;
2435
2436     default:
2437       internal_error (__FILE__, __LINE__,
2438                       _("print_bp_stop_message: unrecognized enum value"));
2439       break;
2440     }
2441 }
2442
2443 /* Print a message indicating what happened.  This is called from
2444    normal_stop().  The input to this routine is the head of the bpstat
2445    list - a list of the eventpoints that caused this stop.  This
2446    routine calls the generic print routine for printing a message
2447    about reasons for stopping.  This will print (for example) the
2448    "Breakpoint n," part of the output.  The return value of this
2449    routine is one of:
2450
2451    PRINT_UNKNOWN: Means we printed nothing
2452    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
2453    code to print the location. An example is 
2454    "Breakpoint 1, " which should be followed by
2455    the location.
2456    PRINT_SRC_ONLY: Means we printed something, but there is no need
2457    to also print the location part of the message.
2458    An example is the catch/throw messages, which
2459    don't require a location appended to the end.  
2460    PRINT_NOTHING: We have done some printing and we don't need any 
2461    further info to be printed.*/
2462
2463 enum print_stop_action
2464 bpstat_print (bpstat bs)
2465 {
2466   int val;
2467
2468   /* Maybe another breakpoint in the chain caused us to stop.
2469      (Currently all watchpoints go on the bpstat whether hit or not.
2470      That probably could (should) be changed, provided care is taken
2471      with respect to bpstat_explains_signal).  */
2472   for (; bs; bs = bs->next)
2473     {
2474       val = print_bp_stop_message (bs);
2475       if (val == PRINT_SRC_ONLY 
2476           || val == PRINT_SRC_AND_LOC 
2477           || val == PRINT_NOTHING)
2478         return val;
2479     }
2480
2481   /* We reached the end of the chain, or we got a null BS to start
2482      with and nothing was printed. */
2483   return PRINT_UNKNOWN;
2484 }
2485
2486 /* Evaluate the expression EXP and return 1 if value is zero.
2487    This is used inside a catch_errors to evaluate the breakpoint condition. 
2488    The argument is a "struct expression *" that has been cast to char * to 
2489    make it pass through catch_errors.  */
2490
2491 static int
2492 breakpoint_cond_eval (void *exp)
2493 {
2494   struct value *mark = value_mark ();
2495   int i = !value_true (evaluate_expression ((struct expression *) exp));
2496   value_free_to_mark (mark);
2497   return i;
2498 }
2499
2500 /* Allocate a new bpstat and chain it to the current one.  */
2501
2502 static bpstat
2503 bpstat_alloc (const struct bp_location *bl, bpstat cbs /* Current "bs" value */ )
2504 {
2505   bpstat bs;
2506
2507   bs = (bpstat) xmalloc (sizeof (*bs));
2508   cbs->next = bs;
2509   bs->breakpoint_at = bl;
2510   /* If the condition is false, etc., don't do the commands.  */
2511   bs->commands = NULL;
2512   bs->old_val = NULL;
2513   bs->print_it = print_it_normal;
2514   return bs;
2515 }
2516 \f
2517 /* The target has stopped with waitstatus WS.  Check if any hardware
2518    watchpoints have triggered, according to the target.  */
2519
2520 int
2521 watchpoints_triggered (struct target_waitstatus *ws)
2522 {
2523   int stopped_by_watchpoint = STOPPED_BY_WATCHPOINT (*ws);
2524   CORE_ADDR addr;
2525   struct breakpoint *b;
2526
2527   if (!stopped_by_watchpoint)
2528     {
2529       /* We were not stopped by a watchpoint.  Mark all watchpoints
2530          as not triggered.  */
2531       ALL_BREAKPOINTS (b)
2532         if (b->type == bp_hardware_watchpoint
2533             || b->type == bp_read_watchpoint
2534             || b->type == bp_access_watchpoint)
2535           b->watchpoint_triggered = watch_triggered_no;
2536
2537       return 0;
2538     }
2539
2540   if (!target_stopped_data_address (&current_target, &addr))
2541     {
2542       /* We were stopped by a watchpoint, but we don't know where.
2543          Mark all watchpoints as unknown.  */
2544       ALL_BREAKPOINTS (b)
2545         if (b->type == bp_hardware_watchpoint
2546             || b->type == bp_read_watchpoint
2547             || b->type == bp_access_watchpoint)
2548           b->watchpoint_triggered = watch_triggered_unknown;
2549
2550       return stopped_by_watchpoint;
2551     }
2552
2553   /* The target could report the data address.  Mark watchpoints
2554      affected by this data address as triggered, and all others as not
2555      triggered.  */
2556
2557   ALL_BREAKPOINTS (b)
2558     if (b->type == bp_hardware_watchpoint
2559         || b->type == bp_read_watchpoint
2560         || b->type == bp_access_watchpoint)
2561       {
2562         struct bp_location *loc;
2563         struct value *v;
2564
2565         b->watchpoint_triggered = watch_triggered_no;
2566         for (loc = b->loc; loc; loc = loc->next)
2567           /* Exact match not required.  Within range is
2568              sufficient.  */
2569           if (target_watchpoint_addr_within_range (&current_target,
2570                                                    addr, loc->address,
2571                                                    loc->length))
2572             {
2573               b->watchpoint_triggered = watch_triggered_yes;
2574               break;
2575             }
2576       }
2577
2578   return 1;
2579 }
2580
2581 /* Possible return values for watchpoint_check (this can't be an enum
2582    because of check_errors).  */
2583 /* The watchpoint has been deleted.  */
2584 #define WP_DELETED 1
2585 /* The value has changed.  */
2586 #define WP_VALUE_CHANGED 2
2587 /* The value has not changed.  */
2588 #define WP_VALUE_NOT_CHANGED 3
2589
2590 #define BP_TEMPFLAG 1
2591 #define BP_HARDWAREFLAG 2
2592
2593 /* Check watchpoint condition.  */
2594
2595 static int
2596 watchpoint_check (void *p)
2597 {
2598   bpstat bs = (bpstat) p;
2599   struct breakpoint *b;
2600   struct frame_info *fr;
2601   int within_current_scope;
2602
2603   b = bs->breakpoint_at->owner;
2604
2605   if (b->exp_valid_block == NULL)
2606     within_current_scope = 1;
2607   else
2608     {
2609       /* There is no current frame at this moment.  If we're going to have
2610          any chance of handling watchpoints on local variables, we'll need
2611          the frame chain (so we can determine if we're in scope).  */
2612       reinit_frame_cache ();
2613       fr = frame_find_by_id (b->watchpoint_frame);
2614       within_current_scope = (fr != NULL);
2615
2616       /* If we've gotten confused in the unwinder, we might have
2617          returned a frame that can't describe this variable.  */
2618       if (within_current_scope
2619           && (block_linkage_function (b->exp_valid_block)
2620               != get_frame_function (fr)))
2621         within_current_scope = 0;
2622
2623       /* in_function_epilogue_p() returns a non-zero value if we're still
2624          in the function but the stack frame has already been invalidated.
2625          Since we can't rely on the values of local variables after the
2626          stack has been destroyed, we are treating the watchpoint in that
2627          state as `not changed' without further checking.
2628          
2629          vinschen/2003-09-04: The former implementation left out the case
2630          that the watchpoint frame couldn't be found by frame_find_by_id()
2631          because the current PC is currently in an epilogue.  Calling
2632          gdbarch_in_function_epilogue_p() also when fr == NULL fixes that. */
2633       if ((!within_current_scope || fr == get_current_frame ())
2634           && gdbarch_in_function_epilogue_p (current_gdbarch, read_pc ()))
2635         return WP_VALUE_NOT_CHANGED;
2636       if (fr && within_current_scope)
2637         /* If we end up stopping, the current frame will get selected
2638            in normal_stop.  So this call to select_frame won't affect
2639            the user.  */
2640         select_frame (fr);
2641     }
2642
2643   if (within_current_scope)
2644     {
2645       /* We use value_{,free_to_}mark because it could be a
2646          *long* time before we return to the command level and
2647          call free_all_values.  We can't call free_all_values because
2648          we might be in the middle of evaluating a function call.  */
2649
2650       struct value *mark = value_mark ();
2651       struct value *new_val;
2652
2653       fetch_watchpoint_value (b->exp, &new_val, NULL, NULL);
2654       if ((b->val != NULL) != (new_val != NULL)
2655           || (b->val != NULL && !value_equal (b->val, new_val)))
2656         {
2657           if (new_val != NULL)
2658             {
2659               release_value (new_val);
2660               value_free_to_mark (mark);
2661             }
2662           bs->old_val = b->val;
2663           b->val = new_val;
2664           b->val_valid = 1;
2665           /* We will stop here */
2666           return WP_VALUE_CHANGED;
2667         }
2668       else
2669         {
2670           /* Nothing changed, don't do anything.  */
2671           value_free_to_mark (mark);
2672           /* We won't stop here */
2673           return WP_VALUE_NOT_CHANGED;
2674         }
2675     }
2676   else
2677     {
2678       /* This seems like the only logical thing to do because
2679          if we temporarily ignored the watchpoint, then when
2680          we reenter the block in which it is valid it contains
2681          garbage (in the case of a function, it may have two
2682          garbage values, one before and one after the prologue).
2683          So we can't even detect the first assignment to it and
2684          watch after that (since the garbage may or may not equal
2685          the first value assigned).  */
2686       /* We print all the stop information in print_it_typical(), but
2687          in this case, by the time we call print_it_typical() this bp
2688          will be deleted already. So we have no choice but print the
2689          information here. */
2690       if (ui_out_is_mi_like_p (uiout))
2691         ui_out_field_string
2692           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
2693       ui_out_text (uiout, "\nWatchpoint ");
2694       ui_out_field_int (uiout, "wpnum", b->number);
2695       ui_out_text (uiout, " deleted because the program has left the block in\n\
2696 which its expression is valid.\n");     
2697
2698       if (b->related_breakpoint)
2699         b->related_breakpoint->disposition = disp_del_at_next_stop;
2700       b->disposition = disp_del_at_next_stop;
2701
2702       return WP_DELETED;
2703     }
2704 }
2705
2706 /* Return true if it looks like target has stopped due to hitting
2707    breakpoint location BL.  This function does not check if we
2708    should stop, only if BL explains the stop.   */
2709 static int
2710 bpstat_check_location (const struct bp_location *bl, CORE_ADDR bp_addr)
2711 {
2712   struct breakpoint *b = bl->owner;
2713
2714   if (b->type != bp_watchpoint
2715       && b->type != bp_hardware_watchpoint
2716       && b->type != bp_read_watchpoint
2717       && b->type != bp_access_watchpoint
2718       && b->type != bp_hardware_breakpoint
2719       && b->type != bp_catchpoint)      /* a non-watchpoint bp */
2720     {
2721       if (bl->address != bp_addr)       /* address doesn't match */
2722         return 0;
2723       if (overlay_debugging             /* unmapped overlay section */
2724           && section_is_overlay (bl->section) 
2725           && !section_is_mapped (bl->section))
2726         return 0;
2727     }
2728   
2729   /* Continuable hardware watchpoints are treated as non-existent if the
2730      reason we stopped wasn't a hardware watchpoint (we didn't stop on
2731      some data address).  Otherwise gdb won't stop on a break instruction
2732      in the code (not from a breakpoint) when a hardware watchpoint has
2733      been defined.  Also skip watchpoints which we know did not trigger
2734      (did not match the data address).  */
2735   
2736   if ((b->type == bp_hardware_watchpoint
2737        || b->type == bp_read_watchpoint
2738        || b->type == bp_access_watchpoint)
2739       && b->watchpoint_triggered == watch_triggered_no)
2740     return 0;
2741   
2742   if (b->type == bp_hardware_breakpoint)
2743     {
2744       if (bl->address != bp_addr)
2745         return 0;
2746       if (overlay_debugging             /* unmapped overlay section */
2747           && section_is_overlay (bl->section) 
2748           && !section_is_mapped (bl->section))
2749         return 0;
2750     }
2751
2752   if (b->type == bp_catchpoint)
2753     {
2754       gdb_assert (b->ops != NULL && b->ops->breakpoint_hit != NULL);
2755       if (!b->ops->breakpoint_hit (b))
2756         return 0;
2757     }
2758      
2759   return 1;
2760 }
2761
2762 /* If BS refers to a watchpoint, determine if the watched values
2763    has actually changed, and we should stop.  If not, set BS->stop
2764    to 0.  */
2765 static void
2766 bpstat_check_watchpoint (bpstat bs)
2767 {
2768   const struct bp_location *bl = bs->breakpoint_at;
2769   struct breakpoint *b = bl->owner;
2770
2771   if (b->type == bp_watchpoint
2772       || b->type == bp_read_watchpoint
2773       || b->type == bp_access_watchpoint
2774       || b->type == bp_hardware_watchpoint)
2775     {
2776       CORE_ADDR addr;
2777       struct value *v;
2778       int must_check_value = 0;
2779       
2780       if (b->type == bp_watchpoint)
2781         /* For a software watchpoint, we must always check the
2782            watched value.  */
2783         must_check_value = 1;
2784       else if (b->watchpoint_triggered == watch_triggered_yes)
2785         /* We have a hardware watchpoint (read, write, or access)
2786            and the target earlier reported an address watched by
2787            this watchpoint.  */
2788         must_check_value = 1;
2789       else if (b->watchpoint_triggered == watch_triggered_unknown
2790                && b->type == bp_hardware_watchpoint)
2791         /* We were stopped by a hardware watchpoint, but the target could
2792            not report the data address.  We must check the watchpoint's
2793            value.  Access and read watchpoints are out of luck; without
2794            a data address, we can't figure it out.  */
2795         must_check_value = 1;
2796       
2797       if (must_check_value)
2798         {
2799           char *message = xstrprintf ("Error evaluating expression for watchpoint %d\n",
2800                                       b->number);
2801           struct cleanup *cleanups = make_cleanup (xfree, message);
2802           int e = catch_errors (watchpoint_check, bs, message,
2803                                 RETURN_MASK_ALL);
2804           do_cleanups (cleanups);
2805           switch (e)
2806             {
2807             case WP_DELETED:
2808               /* We've already printed what needs to be printed.  */
2809               bs->print_it = print_it_done;
2810               /* Stop.  */
2811               break;
2812             case WP_VALUE_CHANGED:
2813               if (b->type == bp_read_watchpoint)
2814                 {
2815                   /* Don't stop: read watchpoints shouldn't fire if
2816                      the value has changed.  This is for targets
2817                      which cannot set read-only watchpoints.  */
2818                   bs->print_it = print_it_noop;
2819                   bs->stop = 0;
2820                 }
2821               break;
2822             case WP_VALUE_NOT_CHANGED:
2823               if (b->type == bp_hardware_watchpoint
2824                   || b->type == bp_watchpoint)
2825                 {
2826                   /* Don't stop: write watchpoints shouldn't fire if
2827                      the value hasn't changed.  */
2828                   bs->print_it = print_it_noop;
2829                   bs->stop = 0;
2830                 }
2831               /* Stop.  */
2832               break;
2833             default:
2834               /* Can't happen.  */
2835             case 0:
2836               /* Error from catch_errors.  */
2837               printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
2838               if (b->related_breakpoint)
2839                 b->related_breakpoint->disposition = disp_del_at_next_stop;
2840               b->disposition = disp_del_at_next_stop;
2841               /* We've already printed what needs to be printed.  */
2842               bs->print_it = print_it_done;
2843               break;
2844             }
2845         }
2846       else      /* must_check_value == 0 */
2847         {
2848           /* This is a case where some watchpoint(s) triggered, but
2849              not at the address of this watchpoint, or else no
2850              watchpoint triggered after all.  So don't print
2851              anything for this watchpoint.  */
2852           bs->print_it = print_it_noop;
2853           bs->stop = 0;
2854         }
2855     }
2856 }
2857
2858
2859 /* Check conditions (condition proper, frame, thread and ignore count)
2860    of breakpoint referred to by BS.  If we should not stop for this
2861    breakpoint, set BS->stop to 0.  */
2862 static void
2863 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
2864 {
2865   int thread_id = pid_to_thread_id (ptid);
2866   const struct bp_location *bl = bs->breakpoint_at;
2867   struct breakpoint *b = bl->owner;
2868
2869   if (frame_id_p (b->frame_id)
2870       && !frame_id_eq (b->frame_id, get_frame_id (get_current_frame ())))
2871     bs->stop = 0;
2872   else if (bs->stop)
2873     {
2874       int value_is_zero = 0;
2875       
2876       /* If this is a scope breakpoint, mark the associated
2877          watchpoint as triggered so that we will handle the
2878          out-of-scope event.  We'll get to the watchpoint next
2879          iteration.  */
2880       if (b->type == bp_watchpoint_scope)
2881         b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
2882       
2883       if (bl->cond && bl->owner->disposition != disp_del_at_next_stop)
2884         {
2885           /* Need to select the frame, with all that implies
2886              so that the conditions will have the right context.  */
2887           select_frame (get_current_frame ());
2888           value_is_zero
2889             = catch_errors (breakpoint_cond_eval, (bl->cond),
2890                             "Error in testing breakpoint condition:\n",
2891                             RETURN_MASK_ALL);
2892           /* FIXME-someday, should give breakpoint # */
2893           free_all_values ();
2894         }
2895       if (bl->cond && value_is_zero)
2896         {
2897           bs->stop = 0;
2898         }
2899       else if (b->thread != -1 && b->thread != thread_id)
2900         {
2901           bs->stop = 0;
2902         }
2903       else if (b->ignore_count > 0)
2904         {
2905           b->ignore_count--;
2906           annotate_ignore_count_change ();
2907           bs->stop = 0;
2908           /* Increase the hit count even though we don't
2909              stop.  */
2910           ++(b->hit_count);
2911         }       
2912     }
2913 }
2914
2915
2916 /* Get a bpstat associated with having just stopped at address
2917    BP_ADDR in thread PTID.
2918
2919    Determine whether we stopped at a breakpoint, etc, or whether we
2920    don't understand this stop.  Result is a chain of bpstat's such that:
2921
2922    if we don't understand the stop, the result is a null pointer.
2923
2924    if we understand why we stopped, the result is not null.
2925
2926    Each element of the chain refers to a particular breakpoint or
2927    watchpoint at which we have stopped.  (We may have stopped for
2928    several reasons concurrently.)
2929
2930    Each element of the chain has valid next, breakpoint_at,
2931    commands, FIXME??? fields.  */
2932
2933 bpstat
2934 bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid)
2935 {
2936   struct breakpoint *b = NULL;
2937   const struct bp_location *bl;
2938   struct bp_location *loc;
2939   /* Root of the chain of bpstat's */
2940   struct bpstats root_bs[1];
2941   /* Pointer to the last thing in the chain currently.  */
2942   bpstat bs = root_bs;
2943   int ix;
2944   int need_remove_insert;
2945
2946   ALL_BP_LOCATIONS (bl)
2947   {
2948     b = bl->owner;
2949     gdb_assert (b);
2950     if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
2951       continue;
2952
2953     /* For hardware watchpoints, we look only at the first location.
2954        The watchpoint_check function will work on entire expression,
2955        not the individual locations.  For read watchopints, the
2956        watchpoints_triggered function have checked all locations
2957        alrea
2958      */
2959     if (b->type == bp_hardware_watchpoint && bl != b->loc)
2960       continue;
2961
2962     if (!bpstat_check_location (bl, bp_addr))
2963       continue;
2964
2965     /* Come here if it's a watchpoint, or if the break address matches */
2966
2967     bs = bpstat_alloc (bl, bs); /* Alloc a bpstat to explain stop */
2968
2969     /* Assume we stop.  Should we find watchpoint that is not actually
2970        triggered, or if condition of breakpoint is false, we'll reset
2971        'stop' to 0.  */
2972     bs->stop = 1;
2973     bs->print = 1;
2974
2975     bpstat_check_watchpoint (bs);
2976     if (!bs->stop)
2977       continue;
2978
2979     if (b->type == bp_thread_event || b->type == bp_overlay_event)
2980       /* We do not stop for these.  */
2981       bs->stop = 0;
2982     else
2983       bpstat_check_breakpoint_conditions (bs, ptid);
2984   
2985     if (bs->stop)
2986       {
2987         ++(b->hit_count);
2988
2989         /* We will stop here */
2990         if (b->disposition == disp_disable)
2991           {
2992             if (b->enable_state != bp_permanent)
2993               b->enable_state = bp_disabled;
2994             update_global_location_list (0);
2995           }
2996         if (b->silent)
2997           bs->print = 0;
2998         bs->commands = b->commands;
2999         if (bs->commands &&
3000             (strcmp ("silent", bs->commands->line) == 0
3001              || (xdb_commands && strcmp ("Q", bs->commands->line) == 0)))
3002           {
3003             bs->commands = bs->commands->next;
3004             bs->print = 0;
3005           }
3006         bs->commands = copy_command_lines (bs->commands);
3007       }
3008
3009     /* Print nothing for this entry if we dont stop or if we dont print.  */
3010     if (bs->stop == 0 || bs->print == 0)
3011       bs->print_it = print_it_noop;
3012   }
3013
3014   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3015     {
3016       if (loc->address == bp_addr)
3017         {
3018           bs = bpstat_alloc (loc, bs);
3019           /* For hits of moribund locations, we should just proceed.  */
3020           bs->stop = 0;
3021           bs->print = 0;
3022           bs->print_it = print_it_noop;
3023         }
3024     }
3025
3026   bs->next = NULL;              /* Terminate the chain */
3027   bs = root_bs->next;           /* Re-grab the head of the chain */
3028
3029   /* If we aren't stopping, the value of some hardware watchpoint may
3030      not have changed, but the intermediate memory locations we are
3031      watching may have.  Don't bother if we're stopping; this will get
3032      done later.  */
3033   for (bs = root_bs->next; bs != NULL; bs = bs->next)
3034     if (bs->stop)
3035       break;
3036
3037   need_remove_insert = 0;
3038   if (bs == NULL)
3039     for (bs = root_bs->next; bs != NULL; bs = bs->next)
3040       if (!bs->stop
3041           && bs->breakpoint_at->owner
3042           && (bs->breakpoint_at->owner->type == bp_hardware_watchpoint
3043               || bs->breakpoint_at->owner->type == bp_read_watchpoint
3044               || bs->breakpoint_at->owner->type == bp_access_watchpoint))
3045         {
3046           /* remove/insert can invalidate bs->breakpoint_at, if this
3047              location is no longer used by the watchpoint.  Prevent
3048              further code from trying to use it.  */
3049           bs->breakpoint_at = NULL;
3050           need_remove_insert = 1;
3051         }
3052
3053   if (need_remove_insert)
3054     {
3055       remove_breakpoints ();
3056       insert_breakpoints ();
3057     }
3058
3059   return root_bs->next;
3060 }
3061 \f
3062 /* Tell what to do about this bpstat.  */
3063 struct bpstat_what
3064 bpstat_what (bpstat bs)
3065 {
3066   /* Classify each bpstat as one of the following.  */
3067   enum class
3068     {
3069       /* This bpstat element has no effect on the main_action.  */
3070       no_effect = 0,
3071
3072       /* There was a watchpoint, stop but don't print.  */
3073       wp_silent,
3074
3075       /* There was a watchpoint, stop and print.  */
3076       wp_noisy,
3077
3078       /* There was a breakpoint but we're not stopping.  */
3079       bp_nostop,
3080
3081       /* There was a breakpoint, stop but don't print.  */
3082       bp_silent,
3083
3084       /* There was a breakpoint, stop and print.  */
3085       bp_noisy,
3086
3087       /* We hit the longjmp breakpoint.  */
3088       long_jump,
3089
3090       /* We hit the longjmp_resume breakpoint.  */
3091       long_resume,
3092
3093       /* We hit the step_resume breakpoint.  */
3094       step_resume,
3095
3096       /* We hit the shared library event breakpoint.  */
3097       shlib_event,
3098
3099       /* This is just used to count how many enums there are.  */
3100       class_last
3101     };
3102
3103   /* Here is the table which drives this routine.  So that we can
3104      format it pretty, we define some abbreviations for the
3105      enum bpstat_what codes.  */
3106 #define kc BPSTAT_WHAT_KEEP_CHECKING
3107 #define ss BPSTAT_WHAT_STOP_SILENT
3108 #define sn BPSTAT_WHAT_STOP_NOISY
3109 #define sgl BPSTAT_WHAT_SINGLE
3110 #define slr BPSTAT_WHAT_SET_LONGJMP_RESUME
3111 #define clr BPSTAT_WHAT_CLEAR_LONGJMP_RESUME
3112 #define sr BPSTAT_WHAT_STEP_RESUME
3113 #define shl BPSTAT_WHAT_CHECK_SHLIBS
3114
3115 /* "Can't happen."  Might want to print an error message.
3116    abort() is not out of the question, but chances are GDB is just
3117    a bit confused, not unusable.  */
3118 #define err BPSTAT_WHAT_STOP_NOISY
3119
3120   /* Given an old action and a class, come up with a new action.  */
3121   /* One interesting property of this table is that wp_silent is the same
3122      as bp_silent and wp_noisy is the same as bp_noisy.  That is because
3123      after stopping, the check for whether to step over a breakpoint
3124      (BPSTAT_WHAT_SINGLE type stuff) is handled in proceed() without
3125      reference to how we stopped.  We retain separate wp_silent and
3126      bp_silent codes in case we want to change that someday. 
3127
3128      Another possibly interesting property of this table is that
3129      there's a partial ordering, priority-like, of the actions.  Once
3130      you've decided that some action is appropriate, you'll never go
3131      back and decide something of a lower priority is better.  The
3132      ordering is:
3133
3134      kc   < clr sgl shl slr sn sr ss
3135      sgl  < shl slr sn sr ss
3136      slr  < err shl sn sr ss
3137      clr  < err shl sn sr ss
3138      ss   < shl sn sr
3139      sn   < shl sr
3140      shl  < sr
3141      sr   <
3142
3143      What I think this means is that we don't need a damned table
3144      here.  If you just put the rows and columns in the right order,
3145      it'd look awfully regular.  We could simply walk the bpstat list
3146      and choose the highest priority action we find, with a little
3147      logic to handle the 'err' cases.  */
3148
3149   /* step_resume entries: a step resume breakpoint overrides another
3150      breakpoint of signal handling (see comment in wait_for_inferior
3151      at where we set the step_resume breakpoint).  */
3152
3153   static const enum bpstat_what_main_action
3154     table[(int) class_last][(int) BPSTAT_WHAT_LAST] =
3155   {
3156   /*                              old action */
3157   /*       kc    ss    sn    sgl    slr   clr   sr   shl
3158    */
3159 /*no_effect */
3160     {kc, ss, sn, sgl, slr, clr, sr, shl},
3161 /*wp_silent */
3162     {ss, ss, sn, ss, ss, ss, sr, shl},
3163 /*wp_noisy */
3164     {sn, sn, sn, sn, sn, sn, sr, shl},
3165 /*bp_nostop */
3166     {sgl, ss, sn, sgl, slr, slr, sr, shl},
3167 /*bp_silent */
3168     {ss, ss, sn, ss, ss, ss, sr, shl},
3169 /*bp_noisy */
3170     {sn, sn, sn, sn, sn, sn, sr, shl},
3171 /*long_jump */
3172     {slr, ss, sn, slr, slr, err, sr, shl},
3173 /*long_resume */
3174     {clr, ss, sn, err, err, err, sr, shl},
3175 /*step_resume */
3176     {sr, sr, sr, sr, sr, sr, sr, sr},
3177 /*shlib */
3178     {shl, shl, shl, shl, shl, shl, sr, shl}
3179   };
3180
3181 #undef kc
3182 #undef ss
3183 #undef sn
3184 #undef sgl
3185 #undef slr
3186 #undef clr
3187 #undef err
3188 #undef sr
3189 #undef ts
3190 #undef shl
3191   enum bpstat_what_main_action current_action = BPSTAT_WHAT_KEEP_CHECKING;
3192   struct bpstat_what retval;
3193
3194   retval.call_dummy = 0;
3195   for (; bs != NULL; bs = bs->next)
3196     {
3197       enum class bs_class = no_effect;
3198       if (bs->breakpoint_at == NULL)
3199         /* I suspect this can happen if it was a momentary breakpoint
3200            which has since been deleted.  */
3201         continue;
3202       if (bs->breakpoint_at->owner == NULL)
3203         bs_class = bp_nostop;
3204       else
3205       switch (bs->breakpoint_at->owner->type)
3206         {
3207         case bp_none:
3208           continue;
3209
3210         case bp_breakpoint:
3211         case bp_hardware_breakpoint:
3212         case bp_until:
3213         case bp_finish:
3214           if (bs->stop)
3215             {
3216               if (bs->print)
3217                 bs_class = bp_noisy;
3218               else
3219                 bs_class = bp_silent;
3220             }
3221           else
3222             bs_class = bp_nostop;
3223           break;
3224         case bp_watchpoint:
3225         case bp_hardware_watchpoint:
3226         case bp_read_watchpoint:
3227         case bp_access_watchpoint:
3228           if (bs->stop)
3229             {
3230               if (bs->print)
3231                 bs_class = wp_noisy;
3232               else
3233                 bs_class = wp_silent;
3234             }
3235           else
3236             /* There was a watchpoint, but we're not stopping. 
3237                This requires no further action.  */
3238             bs_class = no_effect;
3239           break;
3240         case bp_longjmp:
3241           bs_class = long_jump;
3242           break;
3243         case bp_longjmp_resume:
3244           bs_class = long_resume;
3245           break;
3246         case bp_step_resume:
3247           if (bs->stop)
3248             {
3249               bs_class = step_resume;
3250             }
3251           else
3252             /* It is for the wrong frame.  */
3253             bs_class = bp_nostop;
3254           break;
3255         case bp_watchpoint_scope:
3256           bs_class = bp_nostop;
3257           break;
3258         case bp_shlib_event:
3259           bs_class = shlib_event;
3260           break;
3261         case bp_thread_event:
3262         case bp_overlay_event:
3263           bs_class = bp_nostop;
3264           break;
3265         case bp_catchpoint:
3266           if (bs->stop)
3267             {
3268               if (bs->print)
3269                 bs_class = bp_noisy;
3270               else
3271                 bs_class = bp_silent;
3272             }
3273           else
3274             /* There was a catchpoint, but we're not stopping.  
3275                This requires no further action.  */
3276             bs_class = no_effect;
3277           break;
3278         case bp_call_dummy:
3279           /* Make sure the action is stop (silent or noisy),
3280              so infrun.c pops the dummy frame.  */
3281           bs_class = bp_silent;
3282           retval.call_dummy = 1;
3283           break;
3284         }
3285       current_action = table[(int) bs_class][(int) current_action];
3286     }
3287   retval.main_action = current_action;
3288   return retval;
3289 }
3290
3291 /* Nonzero if we should step constantly (e.g. watchpoints on machines
3292    without hardware support).  This isn't related to a specific bpstat,
3293    just to things like whether watchpoints are set.  */
3294
3295 int
3296 bpstat_should_step (void)
3297 {
3298   struct breakpoint *b;
3299   ALL_BREAKPOINTS (b)
3300     if (breakpoint_enabled (b) && b->type == bp_watchpoint)
3301       return 1;
3302   return 0;
3303 }
3304
3305 \f
3306
3307 static void print_breakpoint_location (struct breakpoint *b,
3308                                        struct bp_location *loc,
3309                                        char *wrap_indent,
3310                                        struct ui_stream *stb)
3311 {
3312   if (b->source_file)
3313     {
3314       struct symbol *sym 
3315         = find_pc_sect_function (loc->address, loc->section);
3316       if (sym)
3317         {
3318           ui_out_text (uiout, "in ");
3319           ui_out_field_string (uiout, "func",
3320                                SYMBOL_PRINT_NAME (sym));
3321           ui_out_wrap_hint (uiout, wrap_indent);
3322           ui_out_text (uiout, " at ");
3323         }
3324       ui_out_field_string (uiout, "file", b->source_file);
3325       ui_out_text (uiout, ":");
3326       
3327       if (ui_out_is_mi_like_p (uiout))
3328         {
3329           struct symtab_and_line sal = find_pc_line (loc->address, 0);
3330           char *fullname = symtab_to_fullname (sal.symtab);
3331           
3332           if (fullname)
3333             ui_out_field_string (uiout, "fullname", fullname);
3334         }
3335       
3336       ui_out_field_int (uiout, "line", b->line_number);
3337     }
3338   else if (!b->loc)
3339     {
3340       ui_out_field_string (uiout, "pending", b->addr_string);
3341     }
3342   else
3343     {
3344       print_address_symbolic (loc->address, stb->stream, demangle, "");
3345       ui_out_field_stream (uiout, "at", stb);
3346     }
3347 }
3348
3349 /* Print B to gdb_stdout. */
3350 static void
3351 print_one_breakpoint_location (struct breakpoint *b,
3352                                struct bp_location *loc,
3353                                int loc_number,
3354                                CORE_ADDR *last_addr)
3355 {
3356   struct command_line *l;
3357   struct symbol *sym;
3358   struct ep_type_description
3359     {
3360       enum bptype type;
3361       char *description;
3362     };
3363   static struct ep_type_description bptypes[] =
3364   {
3365     {bp_none, "?deleted?"},
3366     {bp_breakpoint, "breakpoint"},
3367     {bp_hardware_breakpoint, "hw breakpoint"},
3368     {bp_until, "until"},
3369     {bp_finish, "finish"},
3370     {bp_watchpoint, "watchpoint"},
3371     {bp_hardware_watchpoint, "hw watchpoint"},
3372     {bp_read_watchpoint, "read watchpoint"},
3373     {bp_access_watchpoint, "acc watchpoint"},
3374     {bp_longjmp, "longjmp"},
3375     {bp_longjmp_resume, "longjmp resume"},
3376     {bp_step_resume, "step resume"},
3377     {bp_watchpoint_scope, "watchpoint scope"},
3378     {bp_call_dummy, "call dummy"},
3379     {bp_shlib_event, "shlib events"},
3380     {bp_thread_event, "thread events"},
3381     {bp_overlay_event, "overlay events"},
3382     {bp_catchpoint, "catchpoint"},
3383   };
3384   
3385   static char bpenables[] = "nynny";
3386   char wrap_indent[80];
3387   struct ui_stream *stb = ui_out_stream_new (uiout);
3388   struct cleanup *old_chain = make_cleanup_ui_out_stream_delete (stb);
3389   struct cleanup *bkpt_chain;
3390
3391   int header_of_multiple = 0;
3392   int part_of_multiple = (loc != NULL);
3393   struct value_print_options opts;
3394
3395   get_user_print_options (&opts);
3396
3397   gdb_assert (!loc || loc_number != 0);
3398   /* See comment in print_one_breakpoint concerning
3399      treatment of breakpoints with single disabled
3400      location.  */
3401   if (loc == NULL 
3402       && (b->loc != NULL 
3403           && (b->loc->next != NULL || !b->loc->enabled)))
3404     header_of_multiple = 1;
3405   if (loc == NULL)
3406     loc = b->loc;
3407
3408   annotate_record ();
3409   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
3410
3411   /* 1 */
3412   annotate_field (0);
3413   if (part_of_multiple)
3414     {
3415       char *formatted;
3416       formatted = xstrprintf ("%d.%d", b->number, loc_number);
3417       ui_out_field_string (uiout, "number", formatted);
3418       xfree (formatted);
3419     }
3420   else
3421     {
3422       ui_out_field_int (uiout, "number", b->number);
3423     }
3424
3425   /* 2 */
3426   annotate_field (1);
3427   if (part_of_multiple)
3428     ui_out_field_skip (uiout, "type");
3429   else 
3430     {
3431       if (((int) b->type >= (sizeof (bptypes) / sizeof (bptypes[0])))
3432           || ((int) b->type != bptypes[(int) b->type].type))
3433         internal_error (__FILE__, __LINE__,
3434                         _("bptypes table does not describe type #%d."),
3435                         (int) b->type);
3436       ui_out_field_string (uiout, "type", bptypes[(int) b->type].description);
3437     }
3438
3439   /* 3 */
3440   annotate_field (2);
3441   if (part_of_multiple)
3442     ui_out_field_skip (uiout, "disp");
3443   else
3444     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
3445
3446
3447   /* 4 */
3448   annotate_field (3);
3449   if (part_of_multiple)
3450     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
3451   else
3452       ui_out_field_fmt (uiout, "enabled", "%c", 
3453                         bpenables[(int) b->enable_state]);
3454   ui_out_spaces (uiout, 2);
3455
3456   
3457   /* 5 and 6 */
3458   strcpy (wrap_indent, "                           ");
3459   if (opts.addressprint)
3460     {
3461       if (gdbarch_addr_bit (current_gdbarch) <= 32)
3462         strcat (wrap_indent, "           ");
3463       else
3464         strcat (wrap_indent, "                   ");
3465     }
3466
3467   if (b->ops != NULL && b->ops->print_one != NULL)
3468     {
3469       /* Although the print_one can possibly print
3470          all locations,  calling it here is not likely
3471          to get any nice result.  So, make sure there's
3472          just one location.  */
3473       gdb_assert (b->loc == NULL || b->loc->next == NULL);
3474       b->ops->print_one (b, last_addr);
3475     }
3476   else
3477     switch (b->type)
3478       {
3479       case bp_none:
3480         internal_error (__FILE__, __LINE__,
3481                         _("print_one_breakpoint: bp_none encountered\n"));
3482         break;
3483
3484       case bp_watchpoint:
3485       case bp_hardware_watchpoint:
3486       case bp_read_watchpoint:
3487       case bp_access_watchpoint:
3488         /* Field 4, the address, is omitted (which makes the columns
3489            not line up too nicely with the headers, but the effect
3490            is relatively readable).  */
3491         if (opts.addressprint)
3492           ui_out_field_skip (uiout, "addr");
3493         annotate_field (5);
3494         ui_out_field_string (uiout, "what", b->exp_string);
3495         break;
3496
3497       case bp_breakpoint:
3498       case bp_hardware_breakpoint:
3499       case bp_until:
3500       case bp_finish:
3501       case bp_longjmp:
3502       case bp_longjmp_resume:
3503       case bp_step_resume:
3504       case bp_watchpoint_scope:
3505       case bp_call_dummy:
3506       case bp_shlib_event:
3507       case bp_thread_event:
3508       case bp_overlay_event:
3509         if (opts.addressprint)
3510           {
3511             annotate_field (4);
3512             if (header_of_multiple)
3513               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
3514             else if (b->loc == NULL || loc->shlib_disabled)
3515               ui_out_field_string (uiout, "addr", "<PENDING>");
3516             else
3517               ui_out_field_core_addr (uiout, "addr", loc->address);
3518           }
3519         annotate_field (5);
3520         if (!header_of_multiple)
3521           print_breakpoint_location (b, loc, wrap_indent, stb);
3522         if (b->loc)
3523           *last_addr = b->loc->address;
3524         break;
3525       }
3526
3527   if (!part_of_multiple && b->thread != -1)
3528     {
3529       /* FIXME: This seems to be redundant and lost here; see the
3530          "stop only in" line a little further down. */
3531       ui_out_text (uiout, " thread ");
3532       ui_out_field_int (uiout, "thread", b->thread);
3533     }
3534   
3535   ui_out_text (uiout, "\n");
3536   
3537   if (part_of_multiple && frame_id_p (b->frame_id))
3538     {
3539       annotate_field (6);
3540       ui_out_text (uiout, "\tstop only in stack frame at ");
3541       /* FIXME: cagney/2002-12-01: Shouldn't be poeking around inside
3542          the frame ID.  */
3543       ui_out_field_core_addr (uiout, "frame", b->frame_id.stack_addr);
3544       ui_out_text (uiout, "\n");
3545     }
3546   
3547   if (!part_of_multiple && b->cond_string && !ada_exception_catchpoint_p (b))
3548     {
3549       /* We do not print the condition for Ada exception catchpoints
3550          because the condition is an internal implementation detail
3551          that we do not want to expose to the user.  */
3552       annotate_field (7);
3553       ui_out_text (uiout, "\tstop only if ");
3554       ui_out_field_string (uiout, "cond", b->cond_string);
3555       ui_out_text (uiout, "\n");
3556     }
3557
3558   if (!part_of_multiple && b->thread != -1)
3559     {
3560       /* FIXME should make an annotation for this */
3561       ui_out_text (uiout, "\tstop only in thread ");
3562       ui_out_field_int (uiout, "thread", b->thread);
3563       ui_out_text (uiout, "\n");
3564     }
3565   
3566   if (!part_of_multiple && b->hit_count)
3567     {
3568       /* FIXME should make an annotation for this */
3569       if (ep_is_catchpoint (b))
3570         ui_out_text (uiout, "\tcatchpoint");
3571       else
3572         ui_out_text (uiout, "\tbreakpoint");
3573       ui_out_text (uiout, " already hit ");
3574       ui_out_field_int (uiout, "times", b->hit_count);
3575       if (b->hit_count == 1)
3576         ui_out_text (uiout, " time\n");
3577       else
3578         ui_out_text (uiout, " times\n");
3579     }
3580   
3581   /* Output the count also if it is zero, but only if this is
3582      mi. FIXME: Should have a better test for this. */
3583   if (ui_out_is_mi_like_p (uiout))
3584     if (!part_of_multiple && b->hit_count == 0)
3585       ui_out_field_int (uiout, "times", b->hit_count);
3586
3587   if (!part_of_multiple && b->ignore_count)
3588     {
3589       annotate_field (8);
3590       ui_out_text (uiout, "\tignore next ");
3591       ui_out_field_int (uiout, "ignore", b->ignore_count);
3592       ui_out_text (uiout, " hits\n");
3593     }
3594   
3595   if (!part_of_multiple && (l = b->commands))
3596     {
3597       struct cleanup *script_chain;
3598
3599       annotate_field (9);
3600       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
3601       print_command_lines (uiout, l, 4);
3602       do_cleanups (script_chain);
3603     }
3604
3605   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
3606     {
3607       if (b->addr_string)
3608         ui_out_field_string (uiout, "original-location", b->addr_string);
3609       else if (b->exp_string)
3610         ui_out_field_string (uiout, "original-location", b->exp_string);
3611     }
3612         
3613   do_cleanups (bkpt_chain);
3614   do_cleanups (old_chain);
3615 }
3616
3617 static void
3618 print_one_breakpoint (struct breakpoint *b,
3619                       CORE_ADDR *last_addr)
3620 {
3621   print_one_breakpoint_location (b, NULL, 0, last_addr);
3622
3623   /* If this breakpoint has custom print function,
3624      it's already printed.  Otherwise, print individual
3625      locations, if any.  */
3626   if (b->ops == NULL || b->ops->print_one == NULL)
3627     {
3628       /* If breakpoint has a single location that is
3629          disabled, we print it as if it had
3630          several locations, since otherwise it's hard to
3631          represent "breakpoint enabled, location disabled"
3632          situation.  
3633          Note that while hardware watchpoints have
3634          several locations internally, that's no a property
3635          exposed to user.  */
3636       if (b->loc 
3637           && !is_hardware_watchpoint (b)
3638           && (b->loc->next || !b->loc->enabled)
3639           && !ui_out_is_mi_like_p (uiout)) 
3640         {
3641           struct bp_location *loc;
3642           int n = 1;
3643           for (loc = b->loc; loc; loc = loc->next, ++n)
3644             print_one_breakpoint_location (b, loc, n, last_addr);
3645         }
3646     }
3647 }
3648
3649
3650 struct captured_breakpoint_query_args
3651   {
3652     int bnum;
3653   };
3654
3655 static int
3656 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
3657 {
3658   struct captured_breakpoint_query_args *args = data;
3659   struct breakpoint *b;
3660   CORE_ADDR dummy_addr = 0;
3661   ALL_BREAKPOINTS (b)
3662     {
3663       if (args->bnum == b->number)
3664         {
3665           print_one_breakpoint (b, &dummy_addr);
3666           return GDB_RC_OK;
3667         }
3668     }
3669   return GDB_RC_NONE;
3670 }
3671
3672 enum gdb_rc
3673 gdb_breakpoint_query (struct ui_out *uiout, int bnum, char **error_message)
3674 {
3675   struct captured_breakpoint_query_args args;
3676   args.bnum = bnum;
3677   /* For the moment we don't trust print_one_breakpoint() to not throw
3678      an error. */
3679   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
3680                                  error_message, RETURN_MASK_ALL) < 0)
3681     return GDB_RC_FAIL;
3682   else
3683     return GDB_RC_OK;
3684 }
3685
3686 /* Return non-zero if B is user settable (breakpoints, watchpoints,
3687    catchpoints, et.al.). */
3688
3689 static int
3690 user_settable_breakpoint (const struct breakpoint *b)
3691 {
3692   return (b->type == bp_breakpoint
3693           || b->type == bp_catchpoint
3694           || b->type == bp_hardware_breakpoint
3695           || b->type == bp_watchpoint
3696           || b->type == bp_read_watchpoint
3697           || b->type == bp_access_watchpoint
3698           || b->type == bp_hardware_watchpoint);
3699 }
3700         
3701 /* Print information on user settable breakpoint (watchpoint, etc)
3702    number BNUM.  If BNUM is -1 print all user settable breakpoints.
3703    If ALLFLAG is non-zero, include non- user settable breakpoints. */
3704
3705 static void
3706 breakpoint_1 (int bnum, int allflag)
3707 {
3708   struct breakpoint *b;
3709   CORE_ADDR last_addr = (CORE_ADDR) -1;
3710   int nr_printable_breakpoints;
3711   struct cleanup *bkpttbl_chain;
3712   struct value_print_options opts;
3713   
3714   get_user_print_options (&opts);
3715
3716   /* Compute the number of rows in the table. */
3717   nr_printable_breakpoints = 0;
3718   ALL_BREAKPOINTS (b)
3719     if (bnum == -1
3720         || bnum == b->number)
3721       {
3722         if (allflag || user_settable_breakpoint (b))
3723           nr_printable_breakpoints++;
3724       }
3725
3726   if (opts.addressprint)
3727     bkpttbl_chain 
3728       = make_cleanup_ui_out_table_begin_end (uiout, 6, nr_printable_breakpoints,
3729                                              "BreakpointTable");
3730   else
3731     bkpttbl_chain 
3732       = make_cleanup_ui_out_table_begin_end (uiout, 5, nr_printable_breakpoints,
3733                                              "BreakpointTable");
3734
3735   if (nr_printable_breakpoints > 0)
3736     annotate_breakpoints_headers ();
3737   if (nr_printable_breakpoints > 0)
3738     annotate_field (0);
3739   ui_out_table_header (uiout, 7, ui_left, "number", "Num");             /* 1 */
3740   if (nr_printable_breakpoints > 0)
3741     annotate_field (1);
3742   ui_out_table_header (uiout, 14, ui_left, "type", "Type");             /* 2 */
3743   if (nr_printable_breakpoints > 0)
3744     annotate_field (2);
3745   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");              /* 3 */
3746   if (nr_printable_breakpoints > 0)
3747     annotate_field (3);
3748   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
3749   if (opts.addressprint)
3750         {
3751           if (nr_printable_breakpoints > 0)
3752             annotate_field (4);
3753           if (gdbarch_addr_bit (current_gdbarch) <= 32)
3754             ui_out_table_header (uiout, 10, ui_left, "addr", "Address");/* 5 */
3755           else
3756             ui_out_table_header (uiout, 18, ui_left, "addr", "Address");/* 5 */
3757         }
3758   if (nr_printable_breakpoints > 0)
3759     annotate_field (5);
3760   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
3761   ui_out_table_body (uiout);
3762   if (nr_printable_breakpoints > 0)
3763     annotate_breakpoints_table ();
3764
3765   ALL_BREAKPOINTS (b)
3766     if (bnum == -1
3767         || bnum == b->number)
3768       {
3769         /* We only print out user settable breakpoints unless the
3770            allflag is set. */
3771         if (allflag || user_settable_breakpoint (b))
3772           print_one_breakpoint (b, &last_addr);
3773       }
3774   
3775   do_cleanups (bkpttbl_chain);
3776
3777   if (nr_printable_breakpoints == 0)
3778     {
3779       if (bnum == -1)
3780         ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
3781       else
3782         ui_out_message (uiout, 0, "No breakpoint or watchpoint number %d.\n",
3783                         bnum);
3784     }
3785   else
3786     {
3787       /* Compare against (CORE_ADDR)-1 in case some compiler decides
3788          that a comparison of an unsigned with -1 is always false.  */
3789       if (last_addr != (CORE_ADDR) -1 && !server_command)
3790         set_next_address (current_gdbarch, last_addr);
3791     }
3792
3793   /* FIXME? Should this be moved up so that it is only called when
3794      there have been breakpoints? */
3795   annotate_breakpoints_table_end ();
3796 }
3797
3798 static void
3799 breakpoints_info (char *bnum_exp, int from_tty)
3800 {
3801   int bnum = -1;
3802
3803   if (bnum_exp)
3804     bnum = parse_and_eval_long (bnum_exp);
3805
3806   breakpoint_1 (bnum, 0);
3807 }
3808
3809 static void
3810 maintenance_info_breakpoints (char *bnum_exp, int from_tty)
3811 {
3812   int bnum = -1;
3813
3814   if (bnum_exp)
3815     bnum = parse_and_eval_long (bnum_exp);
3816
3817   breakpoint_1 (bnum, 1);
3818 }
3819
3820 static int
3821 breakpoint_has_pc (struct breakpoint *b,
3822                    CORE_ADDR pc, struct obj_section *section)
3823 {
3824   struct bp_location *bl = b->loc;
3825   for (; bl; bl = bl->next)
3826     {
3827       if (bl->address == pc
3828           && (!overlay_debugging || bl->section == section))
3829         return 1;         
3830     }
3831   return 0;
3832 }
3833
3834 /* Print a message describing any breakpoints set at PC.  */
3835
3836 static void
3837 describe_other_breakpoints (CORE_ADDR pc, struct obj_section *section,
3838                             int thread)
3839 {
3840   int others = 0;
3841   struct breakpoint *b;
3842
3843   ALL_BREAKPOINTS (b)
3844     others += breakpoint_has_pc (b, pc, section);
3845   if (others > 0)
3846     {
3847       if (others == 1)
3848         printf_filtered (_("Note: breakpoint "));
3849       else /* if (others == ???) */
3850         printf_filtered (_("Note: breakpoints "));
3851       ALL_BREAKPOINTS (b)
3852         if (breakpoint_has_pc (b, pc, section))
3853           {
3854             others--;
3855             printf_filtered ("%d", b->number);
3856             if (b->thread == -1 && thread != -1)
3857               printf_filtered (" (all threads)");
3858             else if (b->thread != -1)
3859               printf_filtered (" (thread %d)", b->thread);
3860             printf_filtered ("%s%s ",
3861                              ((b->enable_state == bp_disabled || 
3862                                b->enable_state == bp_call_disabled) 
3863                               ? " (disabled)"
3864                               : b->enable_state == bp_permanent 
3865                               ? " (permanent)"
3866                               : ""),
3867                              (others > 1) ? "," 
3868                              : ((others == 1) ? " and" : ""));
3869           }
3870       printf_filtered (_("also set at pc "));
3871       fputs_filtered (paddress (pc), gdb_stdout);
3872       printf_filtered (".\n");
3873     }
3874 }
3875 \f
3876 /* Set the default place to put a breakpoint
3877    for the `break' command with no arguments.  */
3878
3879 void
3880 set_default_breakpoint (int valid, CORE_ADDR addr, struct symtab *symtab,
3881                         int line)
3882 {
3883   default_breakpoint_valid = valid;
3884   default_breakpoint_address = addr;
3885   default_breakpoint_symtab = symtab;
3886   default_breakpoint_line = line;
3887 }
3888
3889 /* Return true iff it is meaningful to use the address member of
3890    BPT.  For some breakpoint types, the address member is irrelevant
3891    and it makes no sense to attempt to compare it to other addresses
3892    (or use it for any other purpose either).
3893
3894    More specifically, each of the following breakpoint types will always
3895    have a zero valued address and we don't want check_duplicates() to mark
3896    breakpoints of any of these types to be a duplicate of an actual
3897    breakpoint at address zero:
3898
3899       bp_watchpoint
3900       bp_hardware_watchpoint
3901       bp_read_watchpoint
3902       bp_access_watchpoint
3903       bp_catchpoint */
3904
3905 static int
3906 breakpoint_address_is_meaningful (struct breakpoint *bpt)
3907 {
3908   enum bptype type = bpt->type;
3909
3910   return (type != bp_watchpoint
3911           && type != bp_hardware_watchpoint
3912           && type != bp_read_watchpoint
3913           && type != bp_access_watchpoint
3914           && type != bp_catchpoint);
3915 }
3916
3917 /* Rescan breakpoints at the same address and section as BPT,
3918    marking the first one as "first" and any others as "duplicates".
3919    This is so that the bpt instruction is only inserted once.
3920    If we have a permanent breakpoint at the same place as BPT, make
3921    that one the official one, and the rest as duplicates.  */
3922
3923 static void
3924 check_duplicates_for (CORE_ADDR address, struct obj_section *section)
3925 {
3926   struct bp_location *b;
3927   int count = 0;
3928   struct bp_location *perm_bp = 0;
3929
3930   ALL_BP_LOCATIONS (b)
3931     if (b->owner->enable_state != bp_disabled
3932         && b->owner->enable_state != bp_call_disabled
3933         && b->enabled
3934         && !b->shlib_disabled
3935         && b->address == address        /* address / overlay match */
3936         && (!overlay_debugging || b->section == section)
3937         && breakpoint_address_is_meaningful (b->owner))
3938     {
3939       /* Have we found a permanent breakpoint?  */
3940       if (b->owner->enable_state == bp_permanent)
3941         {
3942           perm_bp = b;
3943           break;
3944         }
3945         
3946       count++;
3947       b->duplicate = count > 1;
3948     }
3949
3950   /* If we found a permanent breakpoint at this address, go over the
3951      list again and declare all the other breakpoints there to be the
3952      duplicates.  */
3953   if (perm_bp)
3954     {
3955       perm_bp->duplicate = 0;
3956
3957       /* Permanent breakpoint should always be inserted.  */
3958       if (! perm_bp->inserted)
3959         internal_error (__FILE__, __LINE__,
3960                         _("allegedly permanent breakpoint is not "
3961                         "actually inserted"));
3962
3963       ALL_BP_LOCATIONS (b)
3964         if (b != perm_bp)
3965           {
3966             if (b->owner->enable_state != bp_disabled
3967                 && b->owner->enable_state != bp_call_disabled
3968                 && b->enabled && !b->shlib_disabled             
3969                 && b->address == address        /* address / overlay match */
3970                 && (!overlay_debugging || b->section == section)
3971                 && breakpoint_address_is_meaningful (b->owner))
3972               {
3973                 if (b->inserted)
3974                   internal_error (__FILE__, __LINE__,
3975                                   _("another breakpoint was inserted on top of "
3976                                   "a permanent breakpoint"));
3977
3978                 b->duplicate = 1;
3979               }
3980           }
3981     }
3982 }
3983
3984 static void
3985 check_duplicates (struct breakpoint *bpt)
3986 {
3987   struct bp_location *bl = bpt->loc;
3988
3989   if (! breakpoint_address_is_meaningful (bpt))
3990     return;
3991
3992   for (; bl; bl = bl->next)
3993     check_duplicates_for (bl->address, bl->section);    
3994 }
3995
3996 static void
3997 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
3998                                int bnum, int have_bnum)
3999 {
4000   char astr1[40];
4001   char astr2[40];
4002
4003   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
4004   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
4005   if (have_bnum)
4006     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
4007              bnum, astr1, astr2);
4008   else
4009     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
4010 }
4011
4012 /* Adjust a breakpoint's address to account for architectural constraints
4013    on breakpoint placement.  Return the adjusted address.  Note: Very
4014    few targets require this kind of adjustment.  For most targets,
4015    this function is simply the identity function.  */
4016
4017 static CORE_ADDR
4018 adjust_breakpoint_address (CORE_ADDR bpaddr, enum bptype bptype)
4019 {
4020   if (!gdbarch_adjust_breakpoint_address_p (current_gdbarch))
4021     {
4022       /* Very few targets need any kind of breakpoint adjustment.  */
4023       return bpaddr;
4024     }
4025   else if (bptype == bp_watchpoint
4026            || bptype == bp_hardware_watchpoint
4027            || bptype == bp_read_watchpoint
4028            || bptype == bp_access_watchpoint
4029            || bptype == bp_catchpoint)
4030     {
4031       /* Watchpoints and the various bp_catch_* eventpoints should not
4032          have their addresses modified.  */
4033       return bpaddr;
4034     }
4035   else
4036     {
4037       CORE_ADDR adjusted_bpaddr;
4038
4039       /* Some targets have architectural constraints on the placement
4040          of breakpoint instructions.  Obtain the adjusted address.  */
4041       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (current_gdbarch,
4042                                                            bpaddr);
4043
4044       /* An adjusted breakpoint address can significantly alter
4045          a user's expectations.  Print a warning if an adjustment
4046          is required.  */
4047       if (adjusted_bpaddr != bpaddr)
4048         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
4049
4050       return adjusted_bpaddr;
4051     }
4052 }
4053
4054 /* Allocate a struct bp_location.  */
4055
4056 static struct bp_location *
4057 allocate_bp_location (struct breakpoint *bpt)
4058 {
4059   struct bp_location *loc, *loc_p;
4060
4061   loc = xmalloc (sizeof (struct bp_location));
4062   memset (loc, 0, sizeof (*loc));
4063
4064   loc->owner = bpt;
4065   loc->cond = NULL;
4066   loc->shlib_disabled = 0;
4067   loc->enabled = 1;
4068
4069   switch (bpt->type)
4070     {
4071     case bp_breakpoint:
4072     case bp_until:
4073     case bp_finish:
4074     case bp_longjmp:
4075     case bp_longjmp_resume:
4076     case bp_step_resume:
4077     case bp_watchpoint_scope:
4078     case bp_call_dummy:
4079     case bp_shlib_event:
4080     case bp_thread_event:
4081     case bp_overlay_event:
4082       loc->loc_type = bp_loc_software_breakpoint;
4083       break;
4084     case bp_hardware_breakpoint:
4085       loc->loc_type = bp_loc_hardware_breakpoint;
4086       break;
4087     case bp_hardware_watchpoint:
4088     case bp_read_watchpoint:
4089     case bp_access_watchpoint:
4090       loc->loc_type = bp_loc_hardware_watchpoint;
4091       break;
4092     case bp_watchpoint:
4093     case bp_catchpoint:
4094       loc->loc_type = bp_loc_other;
4095       break;
4096     default:
4097       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
4098     }
4099
4100   return loc;
4101 }
4102
4103 static void free_bp_location (struct bp_location *loc)
4104 {
4105   if (loc->cond)
4106     xfree (loc->cond);
4107
4108   if (loc->function_name)
4109     xfree (loc->function_name);
4110   
4111   xfree (loc);
4112 }
4113
4114 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
4115    that has type BPTYPE and has no locations as yet.  */
4116
4117 static struct breakpoint *
4118 set_raw_breakpoint_without_location (enum bptype bptype)
4119 {
4120   struct breakpoint *b, *b1;
4121
4122   b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
4123   memset (b, 0, sizeof (*b));
4124
4125   b->type = bptype;
4126   b->language = current_language->la_language;
4127   b->input_radix = input_radix;
4128   b->thread = -1;
4129   b->enable_state = bp_enabled;
4130   b->next = 0;
4131   b->silent = 0;
4132   b->ignore_count = 0;
4133   b->commands = NULL;
4134   b->frame_id = null_frame_id;
4135   b->forked_inferior_pid = null_ptid;
4136   b->exec_pathname = NULL;
4137   b->ops = NULL;
4138   b->condition_not_parsed = 0;
4139
4140   /* Add this breakpoint to the end of the chain
4141      so that a list of breakpoints will come out in order
4142      of increasing numbers.  */
4143
4144   b1 = breakpoint_chain;
4145   if (b1 == 0)
4146     breakpoint_chain = b;
4147   else
4148     {
4149       while (b1->next)
4150         b1 = b1->next;
4151       b1->next = b;
4152     }
4153   return b;
4154 }
4155
4156 /* Initialize loc->function_name.  */
4157 static void
4158 set_breakpoint_location_function (struct bp_location *loc)
4159 {
4160   if (loc->owner->type == bp_breakpoint
4161       || loc->owner->type == bp_hardware_breakpoint)
4162     {
4163       find_pc_partial_function (loc->address, &(loc->function_name), 
4164                                 NULL, NULL);
4165       if (loc->function_name)
4166         loc->function_name = xstrdup (loc->function_name);
4167     }
4168 }
4169
4170 /* set_raw_breakpoint is a low level routine for allocating and
4171    partially initializing a breakpoint of type BPTYPE.  The newly
4172    created breakpoint's address, section, source file name, and line
4173    number are provided by SAL.  The newly created and partially
4174    initialized breakpoint is added to the breakpoint chain and
4175    is also returned as the value of this function.
4176
4177    It is expected that the caller will complete the initialization of
4178    the newly created breakpoint struct as well as output any status
4179    information regarding the creation of a new breakpoint.  In
4180    particular, set_raw_breakpoint does NOT set the breakpoint
4181    number!  Care should be taken to not allow an error to occur
4182    prior to completing the initialization of the breakpoint.  If this
4183    should happen, a bogus breakpoint will be left on the chain.  */
4184
4185 struct breakpoint *
4186 set_raw_breakpoint (struct symtab_and_line sal, enum bptype bptype)
4187 {
4188   struct breakpoint *b = set_raw_breakpoint_without_location (bptype);
4189   CORE_ADDR adjusted_address;
4190
4191   /* Adjust the breakpoint's address prior to allocating a location.
4192      Once we call allocate_bp_location(), that mostly uninitialized
4193      location will be placed on the location chain.  Adjustment of the
4194      breakpoint may cause target_read_memory() to be called and we do
4195      not want its scan of the location chain to find a breakpoint and
4196      location that's only been partially initialized.  */
4197   adjusted_address = adjust_breakpoint_address (sal.pc, b->type);
4198
4199   b->loc = allocate_bp_location (b);
4200   b->loc->requested_address = sal.pc;
4201   b->loc->address = adjusted_address;
4202
4203   if (sal.symtab == NULL)
4204     b->source_file = NULL;
4205   else
4206     b->source_file = savestring (sal.symtab->filename,
4207                                  strlen (sal.symtab->filename));
4208   b->loc->section = sal.section;
4209   b->line_number = sal.line;
4210
4211   set_breakpoint_location_function (b->loc);
4212
4213   breakpoints_changed ();
4214
4215   return b;
4216 }
4217
4218
4219 /* Note that the breakpoint object B describes a permanent breakpoint
4220    instruction, hard-wired into the inferior's code.  */
4221 void
4222 make_breakpoint_permanent (struct breakpoint *b)
4223 {
4224   struct bp_location *bl;
4225   b->enable_state = bp_permanent;
4226
4227   /* By definition, permanent breakpoints are already present in the code. 
4228      Mark all locations as inserted.  For now, make_breakpoint_permanent
4229      is called in just one place, so it's hard to say if it's reasonable
4230      to have permanent breakpoint with multiple locations or not,
4231      but it's easy to implmement.  */
4232   for (bl = b->loc; bl; bl = bl->next)
4233     bl->inserted = 1;
4234 }
4235
4236 static struct breakpoint *
4237 create_internal_breakpoint (CORE_ADDR address, enum bptype type)
4238 {
4239   static int internal_breakpoint_number = -1;
4240   struct symtab_and_line sal;
4241   struct breakpoint *b;
4242
4243   init_sal (&sal);              /* initialize to zeroes */
4244
4245   sal.pc = address;
4246   sal.section = find_pc_overlay (sal.pc);
4247
4248   b = set_raw_breakpoint (sal, type);
4249   b->number = internal_breakpoint_number--;
4250   b->disposition = disp_donttouch;
4251
4252   return b;
4253 }
4254
4255
4256 static void
4257 create_longjmp_breakpoint (char *func_name)
4258 {
4259   struct minimal_symbol *m;
4260
4261   if ((m = lookup_minimal_symbol_text (func_name, NULL)) == NULL)
4262     return;
4263   set_momentary_breakpoint_at_pc (SYMBOL_VALUE_ADDRESS (m), bp_longjmp);
4264   update_global_location_list (1);
4265 }
4266
4267 /* Call this routine when stepping and nexting to enable a breakpoint
4268    if we do a longjmp().  When we hit that breakpoint, call
4269    set_longjmp_resume_breakpoint() to figure out where we are going. */
4270
4271 void
4272 set_longjmp_breakpoint (void)
4273 {
4274   if (gdbarch_get_longjmp_target_p (current_gdbarch))
4275     {
4276       create_longjmp_breakpoint ("longjmp");
4277       create_longjmp_breakpoint ("_longjmp");
4278       create_longjmp_breakpoint ("siglongjmp");
4279       create_longjmp_breakpoint ("_siglongjmp");
4280     }
4281 }
4282
4283 /* Delete all longjmp breakpoints from THREAD.  */
4284 void
4285 delete_longjmp_breakpoint (int thread)
4286 {
4287   struct breakpoint *b, *temp;
4288
4289   ALL_BREAKPOINTS_SAFE (b, temp)
4290     if (b->type == bp_longjmp)
4291       {
4292         if (b->thread == thread)
4293           delete_breakpoint (b);
4294       }
4295 }
4296
4297 static void
4298 create_overlay_event_breakpoint_1 (char *func_name, struct objfile *objfile)
4299 {
4300   struct breakpoint *b;
4301   struct minimal_symbol *m;
4302
4303   if ((m = lookup_minimal_symbol_text (func_name, objfile)) == NULL)
4304     return;
4305  
4306   b = create_internal_breakpoint (SYMBOL_VALUE_ADDRESS (m), 
4307                                   bp_overlay_event);
4308   b->addr_string = xstrdup (func_name);
4309
4310   if (overlay_debugging == ovly_auto)
4311     {
4312       b->enable_state = bp_enabled;
4313       overlay_events_enabled = 1;
4314     }
4315   else 
4316     {
4317       b->enable_state = bp_disabled;
4318       overlay_events_enabled = 0;
4319     }
4320   update_global_location_list (1);
4321 }
4322
4323 static void
4324 create_overlay_event_breakpoint (char *func_name)
4325 {
4326   struct objfile *objfile;
4327   ALL_OBJFILES (objfile)
4328     create_overlay_event_breakpoint_1 (func_name, objfile);
4329 }
4330
4331 void
4332 enable_overlay_breakpoints (void)
4333 {
4334   struct breakpoint *b;
4335
4336   ALL_BREAKPOINTS (b)
4337     if (b->type == bp_overlay_event)
4338     {
4339       b->enable_state = bp_enabled;
4340       update_global_location_list (1);
4341       overlay_events_enabled = 1;
4342     }
4343 }
4344
4345 void
4346 disable_overlay_breakpoints (void)
4347 {
4348   struct breakpoint *b;
4349
4350   ALL_BREAKPOINTS (b)
4351     if (b->type == bp_overlay_event)
4352     {
4353       b->enable_state = bp_disabled;
4354       update_global_location_list (0);
4355       overlay_events_enabled = 0;
4356     }
4357 }
4358
4359 struct breakpoint *
4360 create_thread_event_breakpoint (CORE_ADDR address)
4361 {
4362   struct breakpoint *b;
4363
4364   b = create_internal_breakpoint (address, bp_thread_event);
4365   
4366   b->enable_state = bp_enabled;
4367   /* addr_string has to be used or breakpoint_re_set will delete me.  */
4368   b->addr_string = xstrprintf ("*0x%s", paddr (b->loc->address));
4369
4370   update_global_location_list_nothrow (1);
4371
4372   return b;
4373 }
4374
4375 void
4376 remove_thread_event_breakpoints (void)
4377 {
4378   struct breakpoint *b, *temp;
4379
4380   ALL_BREAKPOINTS_SAFE (b, temp)
4381     if (b->type == bp_thread_event)
4382       delete_breakpoint (b);
4383 }
4384
4385 struct captured_parse_breakpoint_args
4386   {
4387     char **arg_p;
4388     struct symtabs_and_lines *sals_p;
4389     char ***addr_string_p;
4390     int *not_found_ptr;
4391   };
4392
4393 struct lang_and_radix
4394   {
4395     enum language lang;
4396     int radix;
4397   };
4398
4399
4400 void
4401 remove_solib_event_breakpoints (void)
4402 {
4403   struct breakpoint *b, *temp;
4404
4405   ALL_BREAKPOINTS_SAFE (b, temp)
4406     if (b->type == bp_shlib_event)
4407       delete_breakpoint (b);
4408 }
4409
4410 struct breakpoint *
4411 create_solib_event_breakpoint (CORE_ADDR address)
4412 {
4413   struct breakpoint *b;
4414
4415   b = create_internal_breakpoint (address, bp_shlib_event);
4416   update_global_location_list_nothrow (1);
4417   return b;
4418 }
4419
4420 /* Disable any breakpoints that are on code in shared libraries.  Only
4421    apply to enabled breakpoints, disabled ones can just stay disabled.  */
4422
4423 void
4424 disable_breakpoints_in_shlibs (void)
4425 {
4426   struct bp_location *loc;
4427   int disabled_shlib_breaks = 0;
4428
4429   ALL_BP_LOCATIONS (loc)
4430   {
4431     struct breakpoint *b = loc->owner;
4432     /* We apply the check to all breakpoints, including disabled
4433        for those with loc->duplicate set.  This is so that when breakpoint
4434        becomes enabled, or the duplicate is removed, gdb will try to insert
4435        all breakpoints.  If we don't set shlib_disabled here, we'll try
4436        to insert those breakpoints and fail.  */
4437     if (((b->type == bp_breakpoint) || (b->type == bp_hardware_breakpoint))
4438         && !loc->shlib_disabled
4439 #ifdef PC_SOLIB
4440         && PC_SOLIB (loc->address)
4441 #else
4442         && solib_address (loc->address)
4443 #endif
4444         )
4445       {
4446         loc->shlib_disabled = 1;
4447       }
4448   }
4449 }
4450
4451 /* Disable any breakpoints that are in in an unloaded shared library.  Only
4452    apply to enabled breakpoints, disabled ones can just stay disabled.  */
4453
4454 static void
4455 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
4456 {
4457   struct bp_location *loc;
4458   int disabled_shlib_breaks = 0;
4459
4460   ALL_BP_LOCATIONS (loc)
4461   {
4462     struct breakpoint *b = loc->owner;
4463     if ((loc->loc_type == bp_loc_hardware_breakpoint
4464          || loc->loc_type == bp_loc_software_breakpoint)
4465         && !loc->shlib_disabled)
4466       {
4467 #ifdef PC_SOLIB
4468         char *so_name = PC_SOLIB (loc->address);
4469 #else
4470         char *so_name = solib_address (loc->address);
4471 #endif
4472         if (so_name && !strcmp (so_name, solib->so_name))
4473           {
4474             loc->shlib_disabled = 1;
4475             /* At this point, we cannot rely on remove_breakpoint
4476                succeeding so we must mark the breakpoint as not inserted
4477                to prevent future errors occurring in remove_breakpoints.  */
4478             loc->inserted = 0;
4479             if (!disabled_shlib_breaks)
4480               {
4481                 target_terminal_ours_for_output ();
4482                 warning (_("Temporarily disabling breakpoints for unloaded shared library \"%s\""),
4483                           so_name);
4484               }
4485             disabled_shlib_breaks = 1;
4486           }
4487       }
4488   }
4489 }
4490
4491 /* FORK & VFORK catchpoints.  */
4492
4493 /* Implement the "insert" breakpoint_ops method for fork catchpoints.  */
4494
4495 static void
4496 insert_catch_fork (struct breakpoint *b)
4497 {
4498   target_insert_fork_catchpoint (PIDGET (inferior_ptid));
4499 }
4500
4501 /* Implement the "remove" breakpoint_ops method for fork catchpoints.  */
4502
4503 static int
4504 remove_catch_fork (struct breakpoint *b)
4505 {
4506   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
4507 }
4508
4509 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
4510    catchpoints.  */
4511
4512 static int
4513 breakpoint_hit_catch_fork (struct breakpoint *b)
4514 {
4515   return inferior_has_forked (inferior_ptid, &b->forked_inferior_pid);
4516 }
4517
4518 /* Implement the "print_it" breakpoint_ops method for fork catchpoints.  */
4519
4520 static enum print_stop_action
4521 print_it_catch_fork (struct breakpoint *b)
4522 {
4523   annotate_catchpoint (b->number);
4524   printf_filtered (_("\nCatchpoint %d (forked process %d), "),
4525                    b->number, ptid_get_pid (b->forked_inferior_pid));
4526   return PRINT_SRC_AND_LOC;
4527 }
4528
4529 /* Implement the "print_one" breakpoint_ops method for fork catchpoints.  */
4530
4531 static void
4532 print_one_catch_fork (struct breakpoint *b, CORE_ADDR *last_addr)
4533 {
4534   struct value_print_options opts;
4535
4536   get_user_print_options (&opts);
4537
4538   /* Field 4, the address, is omitted (which makes the columns
4539      not line up too nicely with the headers, but the effect
4540      is relatively readable).  */
4541   if (opts.addressprint)
4542     ui_out_field_skip (uiout, "addr");
4543   annotate_field (5);
4544   ui_out_text (uiout, "fork");
4545   if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4546     {
4547       ui_out_text (uiout, ", process ");
4548       ui_out_field_int (uiout, "what",
4549                         ptid_get_pid (b->forked_inferior_pid));
4550       ui_out_spaces (uiout, 1);
4551     }
4552 }
4553
4554 /* Implement the "print_mention" breakpoint_ops method for fork
4555    catchpoints.  */
4556
4557 static void
4558 print_mention_catch_fork (struct breakpoint *b)
4559 {
4560   printf_filtered (_("Catchpoint %d (fork)"), b->number);
4561 }
4562
4563 /* The breakpoint_ops structure to be used in fork catchpoints.  */
4564
4565 static struct breakpoint_ops catch_fork_breakpoint_ops =
4566 {
4567   insert_catch_fork,
4568   remove_catch_fork,
4569   breakpoint_hit_catch_fork,
4570   print_it_catch_fork,
4571   print_one_catch_fork,
4572   print_mention_catch_fork
4573 };
4574
4575 /* Implement the "insert" breakpoint_ops method for vfork catchpoints.  */
4576
4577 static void
4578 insert_catch_vfork (struct breakpoint *b)
4579 {
4580   target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
4581 }
4582
4583 /* Implement the "remove" breakpoint_ops method for vfork catchpoints.  */
4584
4585 static int
4586 remove_catch_vfork (struct breakpoint *b)
4587 {
4588   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
4589 }
4590
4591 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
4592    catchpoints.  */
4593
4594 static int
4595 breakpoint_hit_catch_vfork (struct breakpoint *b)
4596 {
4597   return inferior_has_vforked (inferior_ptid, &b->forked_inferior_pid);
4598 }
4599
4600 /* Implement the "print_it" breakpoint_ops method for vfork catchpoints.  */
4601
4602 static enum print_stop_action
4603 print_it_catch_vfork (struct breakpoint *b)
4604 {
4605   annotate_catchpoint (b->number);
4606   printf_filtered (_("\nCatchpoint %d (vforked process %d), "),
4607                    b->number, ptid_get_pid (b->forked_inferior_pid));
4608   return PRINT_SRC_AND_LOC;
4609 }
4610
4611 /* Implement the "print_one" breakpoint_ops method for vfork catchpoints.  */
4612
4613 static void
4614 print_one_catch_vfork (struct breakpoint *b, CORE_ADDR *last_addr)
4615 {
4616   struct value_print_options opts;
4617
4618   get_user_print_options (&opts);
4619   /* Field 4, the address, is omitted (which makes the columns
4620      not line up too nicely with the headers, but the effect
4621      is relatively readable).  */
4622   if (opts.addressprint)
4623     ui_out_field_skip (uiout, "addr");
4624   annotate_field (5);
4625   ui_out_text (uiout, "vfork");
4626   if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4627     {
4628       ui_out_text (uiout, ", process ");
4629       ui_out_field_int (uiout, "what",
4630                         ptid_get_pid (b->forked_inferior_pid));
4631       ui_out_spaces (uiout, 1);
4632     }
4633 }
4634
4635 /* Implement the "print_mention" breakpoint_ops method for vfork
4636    catchpoints.  */
4637
4638 static void
4639 print_mention_catch_vfork (struct breakpoint *b)
4640 {
4641   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
4642 }
4643
4644 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
4645
4646 static struct breakpoint_ops catch_vfork_breakpoint_ops =
4647 {
4648   insert_catch_vfork,
4649   remove_catch_vfork,
4650   breakpoint_hit_catch_vfork,
4651   print_it_catch_vfork,
4652   print_one_catch_vfork,
4653   print_mention_catch_vfork
4654 };
4655
4656 /* Create a new breakpoint of the bp_catchpoint kind and return it.
4657  
4658    If TEMPFLAG is non-zero, then make the breakpoint temporary.
4659    If COND_STRING is not NULL, then store it in the breakpoint.
4660    OPS, if not NULL, is the breakpoint_ops structure associated
4661    to the catchpoint.  */
4662
4663 static struct breakpoint *
4664 create_catchpoint (int tempflag, char *cond_string,
4665                    struct breakpoint_ops *ops)
4666 {
4667   struct symtab_and_line sal;
4668   struct breakpoint *b;
4669
4670   init_sal (&sal);
4671   sal.pc = 0;
4672   sal.symtab = NULL;
4673   sal.line = 0;
4674
4675   b = set_raw_breakpoint (sal, bp_catchpoint);
4676   set_breakpoint_count (breakpoint_count + 1);
4677   b->number = breakpoint_count;
4678
4679   b->cond_string = (cond_string == NULL) ? 
4680     NULL : savestring (cond_string, strlen (cond_string));
4681   b->thread = -1;
4682   b->addr_string = NULL;
4683   b->enable_state = bp_enabled;
4684   b->disposition = tempflag ? disp_del : disp_donttouch;
4685   b->ops = ops;
4686
4687   mention (b);
4688   update_global_location_list (1);
4689
4690   return b;
4691 }
4692
4693 static void
4694 create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
4695                                     struct breakpoint_ops *ops)
4696 {
4697   struct breakpoint *b = create_catchpoint (tempflag, cond_string, ops);
4698
4699   /* FIXME: We should put this information in a breakpoint private data
4700      area.  */
4701   b->forked_inferior_pid = null_ptid;
4702 }
4703
4704 /* Exec catchpoints.  */
4705
4706 static void
4707 insert_catch_exec (struct breakpoint *b)
4708 {
4709   target_insert_exec_catchpoint (PIDGET (inferior_ptid));
4710 }
4711
4712 static int
4713 remove_catch_exec (struct breakpoint *b)
4714 {
4715   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
4716 }
4717
4718 static int
4719 breakpoint_hit_catch_exec (struct breakpoint *b)
4720 {
4721   return inferior_has_execd (inferior_ptid, &b->exec_pathname);
4722 }
4723
4724 static enum print_stop_action
4725 print_it_catch_exec (struct breakpoint *b)
4726 {
4727   annotate_catchpoint (b->number);
4728   printf_filtered (_("\nCatchpoint %d (exec'd %s), "), b->number,
4729                    b->exec_pathname);
4730   return PRINT_SRC_AND_LOC;
4731 }
4732
4733 static void
4734 print_one_catch_exec (struct breakpoint *b, CORE_ADDR *last_addr)
4735 {
4736   struct value_print_options opts;
4737
4738   get_user_print_options (&opts);
4739
4740   /* Field 4, the address, is omitted (which makes the columns
4741      not line up too nicely with the headers, but the effect
4742      is relatively readable).  */
4743   if (opts.addressprint)
4744     ui_out_field_skip (uiout, "addr");
4745   annotate_field (5);
4746   ui_out_text (uiout, "exec");
4747   if (b->exec_pathname != NULL)
4748     {
4749       ui_out_text (uiout, ", program \"");
4750       ui_out_field_string (uiout, "what", b->exec_pathname);
4751       ui_out_text (uiout, "\" ");
4752     }
4753 }
4754
4755 static void
4756 print_mention_catch_exec (struct breakpoint *b)
4757 {
4758   printf_filtered (_("Catchpoint %d (exec)"), b->number);
4759 }
4760
4761 static struct breakpoint_ops catch_exec_breakpoint_ops =
4762 {
4763   insert_catch_exec,
4764   remove_catch_exec,
4765   breakpoint_hit_catch_exec,
4766   print_it_catch_exec,
4767   print_one_catch_exec,
4768   print_mention_catch_exec
4769 };
4770
4771 static int
4772 hw_breakpoint_used_count (void)
4773 {
4774   struct breakpoint *b;
4775   int i = 0;
4776
4777   ALL_BREAKPOINTS (b)
4778   {
4779     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
4780       i++;
4781   }
4782
4783   return i;
4784 }
4785
4786 static int
4787 hw_watchpoint_used_count (enum bptype type, int *other_type_used)
4788 {
4789   struct breakpoint *b;
4790   int i = 0;
4791
4792   *other_type_used = 0;
4793   ALL_BREAKPOINTS (b)
4794   {
4795     if (breakpoint_enabled (b))
4796       {
4797         if (b->type == type)
4798           i++;
4799         else if ((b->type == bp_hardware_watchpoint ||
4800                   b->type == bp_read_watchpoint ||
4801                   b->type == bp_access_watchpoint))
4802           *other_type_used = 1;
4803       }
4804   }
4805   return i;
4806 }
4807
4808 void
4809 disable_watchpoints_before_interactive_call_start (void)
4810 {
4811   struct breakpoint *b;
4812
4813   ALL_BREAKPOINTS (b)
4814   {
4815     if (((b->type == bp_watchpoint)
4816          || (b->type == bp_hardware_watchpoint)
4817          || (b->type == bp_read_watchpoint)
4818          || (b->type == bp_access_watchpoint))
4819         && breakpoint_enabled (b))
4820       {
4821         b->enable_state = bp_call_disabled;
4822         update_global_location_list (0);
4823       }
4824   }
4825 }
4826
4827 void
4828 enable_watchpoints_after_interactive_call_stop (void)
4829 {
4830   struct breakpoint *b;
4831
4832   ALL_BREAKPOINTS (b)
4833   {
4834     if (((b->type == bp_watchpoint)
4835          || (b->type == bp_hardware_watchpoint)
4836          || (b->type == bp_read_watchpoint)
4837          || (b->type == bp_access_watchpoint))
4838         && (b->enable_state == bp_call_disabled))
4839       {
4840         b->enable_state = bp_enabled;
4841         update_global_location_list (1);
4842       }
4843   }
4844 }
4845
4846
4847 /* Set a breakpoint that will evaporate an end of command
4848    at address specified by SAL.
4849    Restrict it to frame FRAME if FRAME is nonzero.  */
4850
4851 struct breakpoint *
4852 set_momentary_breakpoint (struct symtab_and_line sal, struct frame_id frame_id,
4853                           enum bptype type)
4854 {
4855   struct breakpoint *b;
4856   b = set_raw_breakpoint (sal, type);
4857   b->enable_state = bp_enabled;
4858   b->disposition = disp_donttouch;
4859   b->frame_id = frame_id;
4860
4861   /* If we're debugging a multi-threaded program, then we
4862      want momentary breakpoints to be active in only a 
4863      single thread of control.  */
4864   if (in_thread_list (inferior_ptid))
4865     b->thread = pid_to_thread_id (inferior_ptid);
4866
4867   update_global_location_list_nothrow (1);
4868
4869   return b;
4870 }
4871
4872 struct breakpoint *
4873 set_momentary_breakpoint_at_pc (CORE_ADDR pc, enum bptype type)
4874 {
4875   struct symtab_and_line sal;
4876
4877   sal = find_pc_line (pc, 0);
4878   sal.pc = pc;
4879   sal.section = find_pc_overlay (pc);
4880   sal.explicit_pc = 1;
4881
4882   return set_momentary_breakpoint (sal, null_frame_id, type);
4883 }
4884 \f
4885
4886 /* Tell the user we have just set a breakpoint B.  */
4887
4888 static void
4889 mention (struct breakpoint *b)
4890 {
4891   int say_where = 0;
4892   struct cleanup *ui_out_chain;
4893   struct value_print_options opts;
4894
4895   get_user_print_options (&opts);
4896
4897   /* FIXME: This is misplaced; mention() is called by things (like
4898      hitting a watchpoint) other than breakpoint creation.  It should
4899      be possible to clean this up and at the same time replace the
4900      random calls to breakpoint_changed with this hook.  */
4901   observer_notify_breakpoint_created (b->number);
4902
4903   if (b->ops != NULL && b->ops->print_mention != NULL)
4904     b->ops->print_mention (b);
4905   else
4906     switch (b->type)
4907       {
4908       case bp_none:
4909         printf_filtered (_("(apparently deleted?) Eventpoint %d: "), b->number);
4910         break;
4911       case bp_watchpoint:
4912         ui_out_text (uiout, "Watchpoint ");
4913         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
4914         ui_out_field_int (uiout, "number", b->number);
4915         ui_out_text (uiout, ": ");
4916         ui_out_field_string (uiout, "exp", b->exp_string);
4917         do_cleanups (ui_out_chain);
4918         break;
4919       case bp_hardware_watchpoint:
4920         ui_out_text (uiout, "Hardware watchpoint ");
4921         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
4922         ui_out_field_int (uiout, "number", b->number);
4923         ui_out_text (uiout, ": ");
4924         ui_out_field_string (uiout, "exp", b->exp_string);
4925         do_cleanups (ui_out_chain);
4926         break;
4927       case bp_read_watchpoint:
4928         ui_out_text (uiout, "Hardware read watchpoint ");
4929         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
4930         ui_out_field_int (uiout, "number", b->number);
4931         ui_out_text (uiout, ": ");
4932         ui_out_field_string (uiout, "exp", b->exp_string);
4933         do_cleanups (ui_out_chain);
4934         break;
4935       case bp_access_watchpoint:
4936         ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
4937         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
4938         ui_out_field_int (uiout, "number", b->number);
4939         ui_out_text (uiout, ": ");
4940         ui_out_field_string (uiout, "exp", b->exp_string);
4941         do_cleanups (ui_out_chain);
4942         break;
4943       case bp_breakpoint:
4944         if (ui_out_is_mi_like_p (uiout))
4945           {
4946             say_where = 0;
4947             break;
4948           }
4949         if (b->disposition == disp_del)
4950           printf_filtered (_("Temporary breakpoint"));
4951         else
4952           printf_filtered (_("Breakpoint"));
4953         printf_filtered (_(" %d"), b->number);
4954         say_where = 1;
4955         break;
4956       case bp_hardware_breakpoint:
4957         if (ui_out_is_mi_like_p (uiout))
4958           {
4959             say_where = 0;
4960             break;
4961           }
4962         printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
4963         say_where = 1;
4964         break;
4965
4966       case bp_until:
4967       case bp_finish:
4968       case bp_longjmp:
4969       case bp_longjmp_resume:
4970       case bp_step_resume:
4971       case bp_call_dummy:
4972       case bp_watchpoint_scope:
4973       case bp_shlib_event:
4974       case bp_thread_event:
4975       case bp_overlay_event:
4976         break;
4977       }
4978
4979   if (say_where)
4980     {
4981       /* i18n: cagney/2005-02-11: Below needs to be merged into a
4982          single string.  */
4983       if (b->loc == NULL)
4984         {
4985           printf_filtered (_(" (%s) pending."), b->addr_string);
4986         }
4987       else
4988         {
4989           if (opts.addressprint || b->source_file == NULL)
4990             {
4991               printf_filtered (" at ");
4992               fputs_filtered (paddress (b->loc->address), gdb_stdout);
4993             }
4994           if (b->source_file)
4995             printf_filtered (": file %s, line %d.",
4996                              b->source_file, b->line_number);
4997           
4998           if (b->loc->next)
4999             {
5000               struct bp_location *loc = b->loc;
5001               int n = 0;
5002               for (; loc; loc = loc->next)
5003                 ++n;
5004               printf_filtered (" (%d locations)", n);           
5005             }
5006
5007         }
5008     }
5009   if (ui_out_is_mi_like_p (uiout))
5010     return;
5011   printf_filtered ("\n");
5012 }
5013 \f
5014
5015 static struct bp_location *
5016 add_location_to_breakpoint (struct breakpoint *b,
5017                             const struct symtab_and_line *sal)
5018 {
5019   struct bp_location *loc, **tmp;
5020
5021   loc = allocate_bp_location (b);
5022   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
5023     ;
5024   *tmp = loc;
5025   loc->requested_address = sal->pc;
5026   loc->address = adjust_breakpoint_address (loc->requested_address, b->type);
5027   loc->section = sal->section;
5028
5029   set_breakpoint_location_function (loc);
5030   return loc;
5031 }
5032 \f
5033
5034 /* Return 1 if LOC is pointing to a permanent breakpoint, 
5035    return 0 otherwise.  */
5036
5037 static int
5038 bp_loc_is_permanent (struct bp_location *loc)
5039 {
5040   int len;
5041   CORE_ADDR addr;
5042   const gdb_byte *brk;
5043   gdb_byte *target_mem;
5044   struct cleanup *cleanup;
5045   int retval = 0;
5046
5047   gdb_assert (loc != NULL);
5048
5049   addr = loc->address;
5050   brk = gdbarch_breakpoint_from_pc (current_gdbarch, &addr, &len);
5051
5052   /* Software breakpoints unsupported?  */
5053   if (brk == NULL)
5054     return 0;
5055
5056   target_mem = alloca (len);
5057
5058   /* Enable the automatic memory restoration from breakpoints while
5059      we read the memory.  Otherwise we could say about our temporary
5060      breakpoints they are permanent.  */
5061   cleanup = make_show_memory_breakpoints_cleanup (0);
5062
5063   if (target_read_memory (loc->address, target_mem, len) == 0
5064       && memcmp (target_mem, brk, len) == 0)
5065     retval = 1;
5066
5067   do_cleanups (cleanup);
5068
5069   return retval;
5070 }
5071
5072
5073
5074 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
5075    as textual description of the location, and COND_STRING
5076    as condition expression.  */
5077
5078 static void
5079 create_breakpoint (struct symtabs_and_lines sals, char *addr_string,
5080                    char *cond_string,
5081                    enum bptype type, enum bpdisp disposition,
5082                    int thread, int ignore_count, 
5083                    struct breakpoint_ops *ops, int from_tty, int enabled)
5084 {
5085   struct breakpoint *b = NULL;
5086   int i;
5087
5088   if (type == bp_hardware_breakpoint)
5089     {
5090       int i = hw_breakpoint_used_count ();
5091       int target_resources_ok = 
5092         TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint, 
5093                                             i + 1, 0);
5094       if (target_resources_ok == 0)
5095         error (_("No hardware breakpoint support in the target."));
5096       else if (target_resources_ok < 0)
5097         error (_("Hardware breakpoints used exceeds limit."));
5098     }
5099
5100   for (i = 0; i < sals.nelts; ++i)
5101     {
5102       struct symtab_and_line sal = sals.sals[i];
5103       struct bp_location *loc;
5104
5105       if (from_tty)
5106         describe_other_breakpoints (sal.pc, sal.section, thread);
5107
5108       if (i == 0)
5109         {
5110           b = set_raw_breakpoint (sal, type);
5111           set_breakpoint_count (breakpoint_count + 1);
5112           b->number = breakpoint_count;
5113           b->thread = thread;
5114   
5115           b->cond_string = cond_string;
5116           b->ignore_count = ignore_count;
5117           b->enable_state = enabled ? bp_enabled : bp_disabled;
5118           b->disposition = disposition;
5119
5120           loc = b->loc;
5121         }
5122       else
5123         {
5124           loc = add_location_to_breakpoint (b, &sal);
5125         }
5126
5127       if (bp_loc_is_permanent (loc))
5128         make_breakpoint_permanent (b);
5129
5130       if (b->cond_string)
5131         {
5132           char *arg = b->cond_string;
5133           loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
5134           if (*arg)
5135               error (_("Garbage %s follows condition"), arg);
5136         }
5137     }   
5138
5139   if (addr_string)
5140     b->addr_string = addr_string;
5141   else
5142     /* addr_string has to be used or breakpoint_re_set will delete
5143        me.  */
5144     b->addr_string = xstrprintf ("*0x%s", paddr (b->loc->address));
5145
5146   b->ops = ops;
5147   mention (b);
5148 }
5149
5150 /* Remove element at INDEX_TO_REMOVE from SAL, shifting other
5151    elements to fill the void space.  */
5152 static void remove_sal (struct symtabs_and_lines *sal, int index_to_remove)
5153 {
5154   int i = index_to_remove+1;
5155   int last_index = sal->nelts-1;
5156
5157   for (;i <= last_index; ++i)
5158     sal->sals[i-1] = sal->sals[i];
5159
5160   --(sal->nelts);
5161 }
5162
5163 /* If appropriate, obtains all sals that correspond
5164    to the same file and line as SAL.  This is done
5165    only if SAL does not have explicit PC and has
5166    line and file information.  If we got just a single
5167    expanded sal, return the original.
5168
5169    Otherwise, if SAL.explicit_line is not set, filter out 
5170    all sals for which the name of enclosing function 
5171    is different from SAL. This makes sure that if we have
5172    breakpoint originally set in template instantiation, say
5173    foo<int>(), we won't expand SAL to locations at the same
5174    line in all existing instantiations of 'foo'.
5175
5176 */
5177 struct symtabs_and_lines
5178 expand_line_sal_maybe (struct symtab_and_line sal)
5179 {
5180   struct symtabs_and_lines expanded;
5181   CORE_ADDR original_pc = sal.pc;
5182   char *original_function = NULL;
5183   int found;
5184   int i;
5185
5186   /* If we have explicit pc, don't expand.
5187      If we have no line number, we can't expand.  */
5188   if (sal.explicit_pc || sal.line == 0 || sal.symtab == NULL)
5189     {
5190       expanded.nelts = 1;
5191       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5192       expanded.sals[0] = sal;
5193       return expanded;
5194     }
5195
5196   sal.pc = 0;
5197   find_pc_partial_function (original_pc, &original_function, NULL, NULL);
5198   
5199   expanded = expand_line_sal (sal);
5200   if (expanded.nelts == 1)
5201     {
5202       /* We had one sal, we got one sal.  Without futher
5203          processing, just return the original sal.  */
5204       xfree (expanded.sals);
5205       expanded.nelts = 1;
5206       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5207       sal.pc = original_pc;
5208       expanded.sals[0] = sal;
5209       return expanded;      
5210     }
5211
5212   if (!sal.explicit_line)
5213     {
5214       CORE_ADDR func_addr, func_end;
5215       for (i = 0; i < expanded.nelts; ++i)
5216         {
5217           CORE_ADDR pc = expanded.sals[i].pc;
5218           char *this_function;
5219           if (find_pc_partial_function (pc, &this_function, 
5220                                         &func_addr, &func_end))
5221             {
5222               if (this_function && 
5223                   strcmp (this_function, original_function) != 0)
5224                 {
5225                   remove_sal (&expanded, i);
5226                   --i;
5227                 }
5228               else if (func_addr == pc)     
5229                 {            
5230                   /* We're at beginning of a function, and should
5231                      skip prologue.  */
5232                   struct symbol *sym = find_pc_function (pc);
5233                   if (sym)
5234                     expanded.sals[i] = find_function_start_sal (sym, 1);
5235                   else
5236                     expanded.sals[i].pc 
5237                       = gdbarch_skip_prologue (current_gdbarch, pc);
5238                 }
5239             }
5240         }
5241     }
5242
5243   
5244   if (expanded.nelts <= 1)
5245     {
5246       /* This is un ugly workaround. If we get zero
5247        expanded sals then something is really wrong.
5248       Fix that by returnign the original sal. */
5249       xfree (expanded.sals);
5250       expanded.nelts = 1;
5251       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5252       sal.pc = original_pc;
5253       expanded.sals[0] = sal;
5254       return expanded;      
5255     }
5256
5257   if (original_pc)
5258     {
5259       found = 0;
5260       for (i = 0; i < expanded.nelts; ++i)
5261         if (expanded.sals[i].pc == original_pc)
5262           {
5263             found = 1;
5264             break;
5265           }
5266       gdb_assert (found);
5267     }
5268
5269   return expanded;
5270 }
5271
5272 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
5273    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
5274    value.  COND_STRING, if not NULL, specified the condition to be
5275    used for all breakpoints.  Essentially the only case where
5276    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
5277    function.  In that case, it's still not possible to specify
5278    separate conditions for different overloaded functions, so
5279    we take just a single condition string.
5280    
5281    NOTE: If the function succeeds, the caller is expected to cleanup
5282    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
5283    array contents).  If the function fails (error() is called), the
5284    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
5285    COND and SALS arrays and each of those arrays contents. */
5286
5287 static void
5288 create_breakpoints (struct symtabs_and_lines sals, char **addr_string,
5289                     char *cond_string,
5290                     enum bptype type, enum bpdisp disposition,
5291                     int thread, int ignore_count, 
5292                     struct breakpoint_ops *ops, int from_tty,
5293                     int enabled)
5294 {
5295   int i;
5296   for (i = 0; i < sals.nelts; ++i)
5297     {
5298       struct symtabs_and_lines expanded = 
5299         expand_line_sal_maybe (sals.sals[i]);
5300
5301       create_breakpoint (expanded, addr_string[i],
5302                          cond_string, type, disposition,
5303                          thread, ignore_count, ops, from_tty, enabled);
5304     }
5305
5306   update_global_location_list (1);
5307 }
5308
5309 /* Parse ARG which is assumed to be a SAL specification possibly
5310    followed by conditionals.  On return, SALS contains an array of SAL
5311    addresses found. ADDR_STRING contains a vector of (canonical)
5312    address strings. ARG points to the end of the SAL. */
5313
5314 static void
5315 parse_breakpoint_sals (char **address,
5316                        struct symtabs_and_lines *sals,
5317                        char ***addr_string,
5318                        int *not_found_ptr)
5319 {
5320   char *addr_start = *address;
5321   *addr_string = NULL;
5322   /* If no arg given, or if first arg is 'if ', use the default
5323      breakpoint. */
5324   if ((*address) == NULL
5325       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
5326     {
5327       if (default_breakpoint_valid)
5328         {
5329           struct symtab_and_line sal;
5330           init_sal (&sal);              /* initialize to zeroes */
5331           sals->sals = (struct symtab_and_line *)
5332             xmalloc (sizeof (struct symtab_and_line));
5333           sal.pc = default_breakpoint_address;
5334           sal.line = default_breakpoint_line;
5335           sal.symtab = default_breakpoint_symtab;
5336           sal.section = find_pc_overlay (sal.pc);
5337           sals->sals[0] = sal;
5338           sals->nelts = 1;
5339         }
5340       else
5341         error (_("No default breakpoint address now."));
5342     }
5343   else
5344     {
5345       /* Force almost all breakpoints to be in terms of the
5346          current_source_symtab (which is decode_line_1's default).  This
5347          should produce the results we want almost all of the time while
5348          leaving default_breakpoint_* alone.  
5349          ObjC: However, don't match an Objective-C method name which
5350          may have a '+' or '-' succeeded by a '[' */
5351          
5352       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
5353                         
5354       if (default_breakpoint_valid
5355           && (!cursal.symtab
5356               || ((strchr ("+-", (*address)[0]) != NULL)
5357                   && ((*address)[1] != '['))))
5358         *sals = decode_line_1 (address, 1, default_breakpoint_symtab,
5359                                default_breakpoint_line, addr_string, 
5360                                not_found_ptr);
5361       else
5362         *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0,
5363                                addr_string, not_found_ptr);
5364     }
5365   /* For any SAL that didn't have a canonical string, fill one in. */
5366   if (sals->nelts > 0 && *addr_string == NULL)
5367     *addr_string = xcalloc (sals->nelts, sizeof (char **));
5368   if (addr_start != (*address))
5369     {
5370       int i;
5371       for (i = 0; i < sals->nelts; i++)
5372         {
5373           /* Add the string if not present. */
5374           if ((*addr_string)[i] == NULL)
5375             (*addr_string)[i] = savestring (addr_start, (*address) - addr_start);
5376         }
5377     }
5378 }
5379
5380
5381 /* Convert each SAL into a real PC.  Verify that the PC can be
5382    inserted as a breakpoint.  If it can't throw an error. */
5383
5384 static void
5385 breakpoint_sals_to_pc (struct symtabs_and_lines *sals,
5386                        char *address)
5387 {    
5388   int i;
5389   for (i = 0; i < sals->nelts; i++)
5390     resolve_sal_pc (&sals->sals[i]);
5391 }
5392
5393 static void
5394 do_captured_parse_breakpoint (struct ui_out *ui, void *data)
5395 {
5396   struct captured_parse_breakpoint_args *args = data;
5397   
5398   parse_breakpoint_sals (args->arg_p, args->sals_p, args->addr_string_p, 
5399                          args->not_found_ptr);
5400 }
5401
5402 /* Given TOK, a string specification of condition and thread, as
5403    accepted by the 'break' command, extract the condition
5404    string and thread number and set *COND_STRING and *THREAD.
5405    PC identifies the context at which the condition should be parsed.  
5406    If no condition is found, *COND_STRING is set to NULL.
5407    If no thread is found, *THREAD is set to -1.  */
5408 static void 
5409 find_condition_and_thread (char *tok, CORE_ADDR pc, 
5410                            char **cond_string, int *thread)
5411 {
5412   *cond_string = NULL;
5413   *thread = -1;
5414   while (tok && *tok)
5415     {
5416       char *end_tok;
5417       int toklen;
5418       char *cond_start = NULL;
5419       char *cond_end = NULL;
5420       while (*tok == ' ' || *tok == '\t')
5421         tok++;
5422       
5423       end_tok = tok;
5424       
5425       while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
5426         end_tok++;
5427       
5428       toklen = end_tok - tok;
5429       
5430       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
5431         {
5432           struct expression *expr;
5433
5434           tok = cond_start = end_tok + 1;
5435           expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
5436           xfree (expr);
5437           cond_end = tok;
5438           *cond_string = savestring (cond_start, 
5439                                      cond_end - cond_start);
5440         }
5441       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
5442         {
5443           char *tmptok;
5444           
5445           tok = end_tok + 1;
5446           tmptok = tok;
5447           *thread = strtol (tok, &tok, 0);
5448           if (tok == tmptok)
5449             error (_("Junk after thread keyword."));
5450           if (!valid_thread_id (*thread))
5451             error (_("Unknown thread %d."), *thread);
5452         }
5453       else
5454         error (_("Junk at end of arguments."));
5455     }
5456 }
5457
5458 /* Set a breakpoint.  This function is shared between
5459    CLI and MI functions for setting a breakpoint.
5460    This function has two major modes of operations,
5461    selected by the PARSE_CONDITION_AND_THREAD parameter.
5462    If non-zero, the function will parse arg, extracting
5463    breakpoint location, address and thread. Otherwise,
5464    ARG is just the location of breakpoint, with condition
5465    and thread specified by the COND_STRING and THREAD
5466    parameters.  */
5467
5468 static void
5469 break_command_really (char *arg, char *cond_string, int thread,
5470                       int parse_condition_and_thread,
5471                       int tempflag, int hardwareflag, 
5472                       int ignore_count,
5473                       enum auto_boolean pending_break_support,
5474                       struct breakpoint_ops *ops,
5475                       int from_tty,
5476                       int enabled)
5477 {
5478   struct gdb_exception e;
5479   struct symtabs_and_lines sals;
5480   struct symtab_and_line pending_sal;
5481   char *copy_arg;
5482   char *err_msg;
5483   char *addr_start = arg;
5484   char **addr_string;
5485   struct cleanup *old_chain;
5486   struct cleanup *breakpoint_chain = NULL;
5487   struct captured_parse_breakpoint_args parse_args;
5488   int i;
5489   int pending = 0;
5490   int not_found = 0;
5491
5492   sals.sals = NULL;
5493   sals.nelts = 0;
5494   addr_string = NULL;
5495
5496   parse_args.arg_p = &arg;
5497   parse_args.sals_p = &sals;
5498   parse_args.addr_string_p = &addr_string;
5499   parse_args.not_found_ptr = &not_found;
5500
5501   e = catch_exception (uiout, do_captured_parse_breakpoint, 
5502                        &parse_args, RETURN_MASK_ALL);
5503
5504   /* If caller is interested in rc value from parse, set value.  */
5505   switch (e.reason)
5506     {
5507     case RETURN_QUIT:
5508       throw_exception (e);
5509     case RETURN_ERROR:
5510       switch (e.error)
5511         {
5512         case NOT_FOUND_ERROR:
5513
5514           /* If pending breakpoint support is turned off, throw
5515              error.  */
5516
5517           if (pending_break_support == AUTO_BOOLEAN_FALSE)
5518             throw_exception (e);
5519
5520           exception_print (gdb_stderr, e);
5521
5522           /* If pending breakpoint support is auto query and the user
5523              selects no, then simply return the error code.  */
5524           if (pending_break_support == AUTO_BOOLEAN_AUTO && 
5525               !nquery ("Make breakpoint pending on future shared library load? "))
5526             return;
5527
5528           /* At this point, either the user was queried about setting
5529              a pending breakpoint and selected yes, or pending
5530              breakpoint behavior is on and thus a pending breakpoint
5531              is defaulted on behalf of the user.  */
5532           copy_arg = xstrdup (addr_start);
5533           addr_string = &copy_arg;
5534           sals.nelts = 1;
5535           sals.sals = &pending_sal;
5536           pending_sal.pc = 0;
5537           pending = 1;
5538           break;
5539         default:
5540           throw_exception (e);
5541         }
5542     default:
5543       if (!sals.nelts)
5544         return;
5545     }
5546
5547   /* Create a chain of things that always need to be cleaned up. */
5548   old_chain = make_cleanup (null_cleanup, 0);
5549
5550   if (!pending)
5551     {
5552       /* Make sure that all storage allocated to SALS gets freed.  */
5553       make_cleanup (xfree, sals.sals);
5554       
5555       /* Cleanup the addr_string array but not its contents. */
5556       make_cleanup (xfree, addr_string);
5557     }
5558
5559   /* ----------------------------- SNIP -----------------------------
5560      Anything added to the cleanup chain beyond this point is assumed
5561      to be part of a breakpoint.  If the breakpoint create succeeds
5562      then the memory is not reclaimed. */
5563   breakpoint_chain = make_cleanup (null_cleanup, 0);
5564
5565   /* Mark the contents of the addr_string for cleanup.  These go on
5566      the breakpoint_chain and only occure if the breakpoint create
5567      fails. */
5568   for (i = 0; i < sals.nelts; i++)
5569     {
5570       if (addr_string[i] != NULL)
5571         make_cleanup (xfree, addr_string[i]);
5572     }
5573
5574   /* Resolve all line numbers to PC's and verify that the addresses
5575      are ok for the target.  */
5576   if (!pending)
5577     breakpoint_sals_to_pc (&sals, addr_start);
5578
5579   /* Verify that condition can be parsed, before setting any
5580      breakpoints.  Allocate a separate condition expression for each
5581      breakpoint. */
5582   if (!pending)
5583     {
5584       if (parse_condition_and_thread)
5585         {
5586             /* Here we only parse 'arg' to separate condition
5587                from thread number, so parsing in context of first
5588                sal is OK.  When setting the breakpoint we'll 
5589                re-parse it in context of each sal.  */
5590             cond_string = NULL;
5591             thread = -1;
5592             find_condition_and_thread (arg, sals.sals[0].pc, &cond_string, &thread);
5593             if (cond_string)
5594                 make_cleanup (xfree, cond_string);
5595         }
5596       else
5597         {
5598             /* Create a private copy of condition string.  */
5599             if (cond_string)
5600             {
5601                 cond_string = xstrdup (cond_string);
5602                 make_cleanup (xfree, cond_string);
5603             }
5604         }
5605       create_breakpoints (sals, addr_string, cond_string,
5606                           hardwareflag ? bp_hardware_breakpoint 
5607                           : bp_breakpoint,
5608                           tempflag ? disp_del : disp_donttouch,
5609                           thread, ignore_count, ops, from_tty, enabled);
5610     }
5611   else
5612     {
5613       struct symtab_and_line sal = {0};
5614       struct breakpoint *b;
5615
5616       make_cleanup (xfree, copy_arg);
5617
5618       b = set_raw_breakpoint_without_location (hardwareflag 
5619                                                ? bp_hardware_breakpoint 
5620                                                : bp_breakpoint);
5621       set_breakpoint_count (breakpoint_count + 1);
5622       b->number = breakpoint_count;
5623       b->thread = -1;
5624       b->addr_string = addr_string[0];
5625       b->cond_string = NULL;
5626       b->ignore_count = ignore_count;
5627       b->disposition = tempflag ? disp_del : disp_donttouch;
5628       b->condition_not_parsed = 1;
5629       b->ops = ops;
5630       b->enable_state = enabled ? bp_enabled : bp_disabled;
5631
5632       update_global_location_list (1);
5633       mention (b);
5634     }
5635   
5636   if (sals.nelts > 1)
5637     warning (_("Multiple breakpoints were set.\n"
5638                "Use the \"delete\" command to delete unwanted breakpoints."));
5639   /* That's it. Discard the cleanups for data inserted into the
5640      breakpoint. */
5641   discard_cleanups (breakpoint_chain);
5642   /* But cleanup everything else. */
5643   do_cleanups (old_chain);
5644 }
5645
5646 /* Set a breakpoint. 
5647    ARG is a string describing breakpoint address,
5648    condition, and thread.
5649    FLAG specifies if a breakpoint is hardware on,
5650    and if breakpoint is temporary, using BP_HARDWARE_FLAG
5651    and BP_TEMPFLAG.  */
5652    
5653 static void
5654 break_command_1 (char *arg, int flag, int from_tty)
5655 {
5656   int hardwareflag = flag & BP_HARDWAREFLAG;
5657   int tempflag = flag & BP_TEMPFLAG;
5658
5659   break_command_really (arg, 
5660                         NULL, 0, 1 /* parse arg */,
5661                         tempflag, hardwareflag,
5662                         0 /* Ignore count */,
5663                         pending_break_support, 
5664                         NULL /* breakpoint_ops */,
5665                         from_tty,
5666                         1 /* enabled */);
5667 }
5668
5669
5670 void
5671 set_breakpoint (char *address, char *condition,
5672                 int hardwareflag, int tempflag,
5673                 int thread, int ignore_count,
5674                 int pending, int enabled)
5675 {
5676   break_command_really (address, condition, thread,
5677                         0 /* condition and thread are valid.  */,
5678                         tempflag, hardwareflag,
5679                         ignore_count,
5680                         pending 
5681                         ? AUTO_BOOLEAN_TRUE : AUTO_BOOLEAN_FALSE,
5682                         NULL, 0, enabled);
5683 }
5684
5685 /* Adjust SAL to the first instruction past the function prologue.
5686    The end of the prologue is determined using the line table from
5687    the debugging information.
5688
5689    If SAL is already past the prologue, then do nothing.  */
5690
5691 static void
5692 skip_prologue_sal (struct symtab_and_line *sal)
5693 {
5694   struct symbol *sym = find_pc_function (sal->pc);
5695   struct symtab_and_line start_sal;
5696
5697   if (sym == NULL)
5698     return;
5699
5700   start_sal = find_function_start_sal (sym, 1);
5701   if (sal->pc < start_sal.pc)
5702     *sal = start_sal;
5703 }
5704
5705 /* Helper function for break_command_1 and disassemble_command.  */
5706
5707 void
5708 resolve_sal_pc (struct symtab_and_line *sal)
5709 {
5710   CORE_ADDR pc;
5711
5712   if (sal->pc == 0 && sal->symtab != NULL)
5713     {
5714       if (!find_line_pc (sal->symtab, sal->line, &pc))
5715         error (_("No line %d in file \"%s\"."),
5716                sal->line, sal->symtab->filename);
5717       sal->pc = pc;
5718
5719       /* If this SAL corresponds to a breakpoint inserted using
5720          a line number, then skip the function prologue if necessary.  */
5721       if (sal->explicit_line)
5722         skip_prologue_sal (sal);
5723     }
5724
5725   if (sal->section == 0 && sal->symtab != NULL)
5726     {
5727       struct blockvector *bv;
5728       struct block *b;
5729       struct symbol *sym;
5730
5731       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
5732       if (bv != NULL)
5733         {
5734           sym = block_linkage_function (b);
5735           if (sym != NULL)
5736             {
5737               fixup_symbol_section (sym, sal->symtab->objfile);
5738               sal->section = SYMBOL_OBJ_SECTION (sym);
5739             }
5740           else
5741             {
5742               /* It really is worthwhile to have the section, so we'll just
5743                  have to look harder. This case can be executed if we have 
5744                  line numbers but no functions (as can happen in assembly 
5745                  source).  */
5746
5747               struct minimal_symbol *msym;
5748
5749               msym = lookup_minimal_symbol_by_pc (sal->pc);
5750               if (msym)
5751                 sal->section = SYMBOL_OBJ_SECTION (msym);
5752             }
5753         }
5754     }
5755 }
5756
5757 void
5758 break_command (char *arg, int from_tty)
5759 {
5760   break_command_1 (arg, 0, from_tty);
5761 }
5762
5763 void
5764 tbreak_command (char *arg, int from_tty)
5765 {
5766   break_command_1 (arg, BP_TEMPFLAG, from_tty);
5767 }
5768
5769 static void
5770 hbreak_command (char *arg, int from_tty)
5771 {
5772   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
5773 }
5774
5775 static void
5776 thbreak_command (char *arg, int from_tty)
5777 {
5778   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
5779 }
5780
5781 static void
5782 stop_command (char *arg, int from_tty)
5783 {
5784   printf_filtered (_("Specify the type of breakpoint to set.\n\
5785 Usage: stop in <function | address>\n\
5786        stop at <line>\n"));
5787 }
5788
5789 static void
5790 stopin_command (char *arg, int from_tty)
5791 {
5792   int badInput = 0;
5793
5794   if (arg == (char *) NULL)
5795     badInput = 1;
5796   else if (*arg != '*')
5797     {
5798       char *argptr = arg;
5799       int hasColon = 0;
5800
5801       /* look for a ':'.  If this is a line number specification, then
5802          say it is bad, otherwise, it should be an address or
5803          function/method name */
5804       while (*argptr && !hasColon)
5805         {
5806           hasColon = (*argptr == ':');
5807           argptr++;
5808         }
5809
5810       if (hasColon)
5811         badInput = (*argptr != ':');    /* Not a class::method */
5812       else
5813         badInput = isdigit (*arg);      /* a simple line number */
5814     }
5815
5816   if (badInput)
5817     printf_filtered (_("Usage: stop in <function | address>\n"));
5818   else
5819     break_command_1 (arg, 0, from_tty);
5820 }
5821
5822 static void
5823 stopat_command (char *arg, int from_tty)
5824 {
5825   int badInput = 0;
5826
5827   if (arg == (char *) NULL || *arg == '*')      /* no line number */
5828     badInput = 1;
5829   else
5830     {
5831       char *argptr = arg;
5832       int hasColon = 0;
5833
5834       /* look for a ':'.  If there is a '::' then get out, otherwise
5835          it is probably a line number. */
5836       while (*argptr && !hasColon)
5837         {
5838           hasColon = (*argptr == ':');
5839           argptr++;
5840         }
5841
5842       if (hasColon)
5843         badInput = (*argptr == ':');    /* we have class::method */
5844       else
5845         badInput = !isdigit (*arg);     /* not a line number */
5846     }
5847
5848   if (badInput)
5849     printf_filtered (_("Usage: stop at <line>\n"));
5850   else
5851     break_command_1 (arg, 0, from_tty);
5852 }
5853
5854 /* accessflag:  hw_write:  watch write, 
5855                 hw_read:   watch read, 
5856                 hw_access: watch access (read or write) */
5857 static void
5858 watch_command_1 (char *arg, int accessflag, int from_tty)
5859 {
5860   struct breakpoint *b, *scope_breakpoint = NULL;
5861   struct symtab_and_line sal;
5862   struct expression *exp;
5863   struct block *exp_valid_block;
5864   struct value *val, *mark;
5865   struct frame_info *frame;
5866   struct frame_info *prev_frame = NULL;
5867   char *exp_start = NULL;
5868   char *exp_end = NULL;
5869   char *tok, *id_tok_start, *end_tok;
5870   int toklen;
5871   char *cond_start = NULL;
5872   char *cond_end = NULL;
5873   struct expression *cond = NULL;
5874   int i, other_type_used, target_resources_ok = 0;
5875   enum bptype bp_type;
5876   int mem_cnt = 0;
5877   int thread = -1;
5878
5879   init_sal (&sal);              /* initialize to zeroes */
5880
5881   /* Make sure that we actually have parameters to parse.  */
5882   if (arg != NULL && arg[0] != '\0')
5883     {
5884       toklen = strlen (arg); /* Size of argument list.  */
5885
5886       /* Points tok to the end of the argument list.  */
5887       tok = arg + toklen - 1;
5888
5889       /* Go backwards in the parameters list. Skip the last parameter.
5890          If we're expecting a 'thread <thread_num>' parameter, this should
5891          be the thread identifier.  */
5892       while (tok > arg && (*tok == ' ' || *tok == '\t'))
5893         tok--;
5894       while (tok > arg && (*tok != ' ' && *tok != '\t'))
5895         tok--;
5896
5897       /* Points end_tok to the beginning of the last token.  */
5898       id_tok_start = tok + 1;
5899
5900       /* Go backwards in the parameters list. Skip one more parameter.
5901          If we're expecting a 'thread <thread_num>' parameter, we should
5902          reach a "thread" token.  */
5903       while (tok > arg && (*tok == ' ' || *tok == '\t'))
5904         tok--;
5905
5906       end_tok = tok;
5907
5908       while (tok > arg && (*tok != ' ' && *tok != '\t'))
5909         tok--;
5910
5911       /* Move the pointer forward to skip the whitespace and
5912          calculate the length of the token.  */
5913       tok++;
5914       toklen = end_tok - tok;
5915
5916       if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
5917         {
5918           /* At this point we've found a "thread" token, which means
5919              the user is trying to set a watchpoint that triggers
5920              only in a specific thread.  */
5921           char *endp;
5922
5923           /* Extract the thread ID from the next token.  */
5924           thread = strtol (id_tok_start, &endp, 0);
5925
5926           /* Check if the user provided a valid numeric value for the
5927              thread ID.  */
5928           if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5929             error (_("Invalid thread ID specification %s."), id_tok_start);
5930
5931           /* Check if the thread actually exists.  */
5932           if (!valid_thread_id (thread))
5933             error (_("Unknown thread %d."), thread);
5934
5935           /* Truncate the string and get rid of the thread <thread_num>
5936              parameter before the parameter list is parsed by the
5937              evaluate_expression() function.  */
5938           *tok = '\0';
5939         }
5940     }
5941
5942   /* Parse the rest of the arguments.  */
5943   innermost_block = NULL;
5944   exp_start = arg;
5945   exp = parse_exp_1 (&arg, 0, 0);
5946   exp_end = arg;
5947   /* Remove trailing whitespace from the expression before saving it.
5948      This makes the eventual display of the expression string a bit
5949      prettier.  */
5950   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
5951     --exp_end;
5952
5953   exp_valid_block = innermost_block;
5954   mark = value_mark ();
5955   fetch_watchpoint_value (exp, &val, NULL, NULL);
5956   if (val != NULL)
5957     release_value (val);
5958
5959   tok = arg;
5960   while (*tok == ' ' || *tok == '\t')
5961     tok++;
5962   end_tok = tok;
5963
5964   while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
5965     end_tok++;
5966
5967   toklen = end_tok - tok;
5968   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
5969     {
5970       tok = cond_start = end_tok + 1;
5971       cond = parse_exp_1 (&tok, 0, 0);
5972       cond_end = tok;
5973     }
5974   if (*tok)
5975     error (_("Junk at end of command."));
5976
5977   if (accessflag == hw_read)
5978     bp_type = bp_read_watchpoint;
5979   else if (accessflag == hw_access)
5980     bp_type = bp_access_watchpoint;
5981   else
5982     bp_type = bp_hardware_watchpoint;
5983
5984   mem_cnt = can_use_hardware_watchpoint (val);
5985   if (mem_cnt == 0 && bp_type != bp_hardware_watchpoint)
5986     error (_("Expression cannot be implemented with read/access watchpoint."));
5987   if (mem_cnt != 0)
5988     {
5989       i = hw_watchpoint_used_count (bp_type, &other_type_used);
5990       target_resources_ok = 
5991         TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_type, i + mem_cnt, 
5992                                             other_type_used);
5993       if (target_resources_ok == 0 && bp_type != bp_hardware_watchpoint)
5994         error (_("Target does not support this type of hardware watchpoint."));
5995
5996       if (target_resources_ok < 0 && bp_type != bp_hardware_watchpoint)
5997         error (_("Target can only support one kind of HW watchpoint at a time."));
5998     }
5999
6000   /* Change the type of breakpoint to an ordinary watchpoint if a hardware
6001      watchpoint could not be set.  */
6002   if (!mem_cnt || target_resources_ok <= 0)
6003     bp_type = bp_watchpoint;
6004
6005   frame = block_innermost_frame (exp_valid_block);
6006   if (frame)
6007     prev_frame = get_prev_frame (frame);
6008   else
6009     prev_frame = NULL;
6010
6011   /* If the expression is "local", then set up a "watchpoint scope"
6012      breakpoint at the point where we've left the scope of the watchpoint
6013      expression.  Create the scope breakpoint before the watchpoint, so
6014      that we will encounter it first in bpstat_stop_status.  */
6015   if (innermost_block && prev_frame)
6016     {
6017       scope_breakpoint = create_internal_breakpoint (get_frame_pc (prev_frame),
6018                                                      bp_watchpoint_scope);
6019
6020       scope_breakpoint->enable_state = bp_enabled;
6021
6022       /* Automatically delete the breakpoint when it hits.  */
6023       scope_breakpoint->disposition = disp_del;
6024
6025       /* Only break in the proper frame (help with recursion).  */
6026       scope_breakpoint->frame_id = get_frame_id (prev_frame);
6027
6028       /* Set the address at which we will stop.  */
6029       scope_breakpoint->loc->requested_address
6030         = get_frame_pc (prev_frame);
6031       scope_breakpoint->loc->address
6032         = adjust_breakpoint_address (scope_breakpoint->loc->requested_address,
6033                                      scope_breakpoint->type);
6034     }
6035
6036   /* Now set up the breakpoint.  */
6037   b = set_raw_breakpoint (sal, bp_type);
6038   set_breakpoint_count (breakpoint_count + 1);
6039   b->number = breakpoint_count;
6040   b->thread = thread;
6041   b->disposition = disp_donttouch;
6042   b->exp = exp;
6043   b->exp_valid_block = exp_valid_block;
6044   b->exp_string = savestring (exp_start, exp_end - exp_start);
6045   b->val = val;
6046   b->val_valid = 1;
6047   b->loc->cond = cond;
6048   if (cond_start)
6049     b->cond_string = savestring (cond_start, cond_end - cond_start);
6050   else
6051     b->cond_string = 0;
6052
6053   if (frame)
6054     b->watchpoint_frame = get_frame_id (frame);
6055   else
6056     b->watchpoint_frame = null_frame_id;
6057
6058   if (scope_breakpoint != NULL)
6059     {
6060       /* The scope breakpoint is related to the watchpoint.  We will
6061          need to act on them together.  */
6062       b->related_breakpoint = scope_breakpoint;
6063       scope_breakpoint->related_breakpoint = b;
6064     }
6065
6066   value_free_to_mark (mark);
6067   mention (b);
6068   update_global_location_list (1);
6069 }
6070
6071 /* Return count of locations need to be watched and can be handled
6072    in hardware.  If the watchpoint can not be handled
6073    in hardware return zero.  */
6074
6075 static int
6076 can_use_hardware_watchpoint (struct value *v)
6077 {
6078   int found_memory_cnt = 0;
6079   struct value *head = v;
6080
6081   /* Did the user specifically forbid us to use hardware watchpoints? */
6082   if (!can_use_hw_watchpoints)
6083     return 0;
6084
6085   /* Make sure that the value of the expression depends only upon
6086      memory contents, and values computed from them within GDB.  If we
6087      find any register references or function calls, we can't use a
6088      hardware watchpoint.
6089
6090      The idea here is that evaluating an expression generates a series
6091      of values, one holding the value of every subexpression.  (The
6092      expression a*b+c has five subexpressions: a, b, a*b, c, and
6093      a*b+c.)  GDB's values hold almost enough information to establish
6094      the criteria given above --- they identify memory lvalues,
6095      register lvalues, computed values, etcetera.  So we can evaluate
6096      the expression, and then scan the chain of values that leaves
6097      behind to decide whether we can detect any possible change to the
6098      expression's final value using only hardware watchpoints.
6099
6100      However, I don't think that the values returned by inferior
6101      function calls are special in any way.  So this function may not
6102      notice that an expression involving an inferior function call
6103      can't be watched with hardware watchpoints.  FIXME.  */
6104   for (; v; v = value_next (v))
6105     {
6106       if (VALUE_LVAL (v) == lval_memory)
6107         {
6108           if (value_lazy (v))
6109             /* A lazy memory lvalue is one that GDB never needed to fetch;
6110                we either just used its address (e.g., `a' in `a.b') or
6111                we never needed it at all (e.g., `a' in `a,b').  */
6112             ;
6113           else
6114             {
6115               /* Ahh, memory we actually used!  Check if we can cover
6116                  it with hardware watchpoints.  */
6117               struct type *vtype = check_typedef (value_type (v));
6118
6119               /* We only watch structs and arrays if user asked for it
6120                  explicitly, never if they just happen to appear in a
6121                  middle of some value chain.  */
6122               if (v == head
6123                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
6124                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
6125                 {
6126                   CORE_ADDR vaddr = VALUE_ADDRESS (v) + value_offset (v);
6127                   int       len   = TYPE_LENGTH (value_type (v));
6128
6129                   if (!TARGET_REGION_OK_FOR_HW_WATCHPOINT (vaddr, len))
6130                     return 0;
6131                   else
6132                     found_memory_cnt++;
6133                 }
6134             }
6135         }
6136       else if (VALUE_LVAL (v) != not_lval
6137                && deprecated_value_modifiable (v) == 0)
6138         return 0;       /* ??? What does this represent? */
6139       else if (VALUE_LVAL (v) == lval_register)
6140         return 0;       /* cannot watch a register with a HW watchpoint */
6141     }
6142
6143   /* The expression itself looks suitable for using a hardware
6144      watchpoint, but give the target machine a chance to reject it.  */
6145   return found_memory_cnt;
6146 }
6147
6148 void
6149 watch_command_wrapper (char *arg, int from_tty)
6150 {
6151   watch_command (arg, from_tty);
6152 }
6153
6154 static void
6155 watch_command (char *arg, int from_tty)
6156 {
6157   watch_command_1 (arg, hw_write, from_tty);
6158 }
6159
6160 void
6161 rwatch_command_wrapper (char *arg, int from_tty)
6162 {
6163   rwatch_command (arg, from_tty);
6164 }
6165
6166 static void
6167 rwatch_command (char *arg, int from_tty)
6168 {
6169   watch_command_1 (arg, hw_read, from_tty);
6170 }
6171
6172 void
6173 awatch_command_wrapper (char *arg, int from_tty)
6174 {
6175   awatch_command (arg, from_tty);
6176 }
6177
6178 static void
6179 awatch_command (char *arg, int from_tty)
6180 {
6181   watch_command_1 (arg, hw_access, from_tty);
6182 }
6183 \f
6184
6185 /* Helper routines for the until_command routine in infcmd.c.  Here
6186    because it uses the mechanisms of breakpoints.  */
6187
6188 struct until_break_command_continuation_args
6189 {
6190   struct breakpoint *breakpoint;
6191   struct breakpoint *breakpoint2;
6192 };
6193
6194 /* This function is called by fetch_inferior_event via the
6195    cmd_continuation pointer, to complete the until command. It takes
6196    care of cleaning up the temporary breakpoints set up by the until
6197    command. */
6198 static void
6199 until_break_command_continuation (void *arg)
6200 {
6201   struct until_break_command_continuation_args *a = arg;
6202
6203   delete_breakpoint (a->breakpoint);
6204   if (a->breakpoint2)
6205     delete_breakpoint (a->breakpoint2);
6206 }
6207
6208 void
6209 until_break_command (char *arg, int from_tty, int anywhere)
6210 {
6211   struct symtabs_and_lines sals;
6212   struct symtab_and_line sal;
6213   struct frame_info *frame = get_selected_frame (NULL);
6214   struct frame_info *prev_frame = get_prev_frame (frame);
6215   struct breakpoint *breakpoint;
6216   struct breakpoint *breakpoint2 = NULL;
6217   struct cleanup *old_chain;
6218
6219   clear_proceed_status ();
6220
6221   /* Set a breakpoint where the user wants it and at return from
6222      this function */
6223
6224   if (default_breakpoint_valid)
6225     sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
6226                           default_breakpoint_line, (char ***) NULL, NULL);
6227   else
6228     sals = decode_line_1 (&arg, 1, (struct symtab *) NULL, 
6229                           0, (char ***) NULL, NULL);
6230
6231   if (sals.nelts != 1)
6232     error (_("Couldn't get information on specified line."));
6233
6234   sal = sals.sals[0];
6235   xfree (sals.sals);    /* malloc'd, so freed */
6236
6237   if (*arg)
6238     error (_("Junk at end of arguments."));
6239
6240   resolve_sal_pc (&sal);
6241
6242   if (anywhere)
6243     /* If the user told us to continue until a specified location,
6244        we don't specify a frame at which we need to stop.  */
6245     breakpoint = set_momentary_breakpoint (sal, null_frame_id, bp_until);
6246   else
6247     /* Otherwise, specify the current frame, because we want to stop only
6248        at the very same frame.  */
6249     breakpoint = set_momentary_breakpoint (sal, get_frame_id (frame),
6250                                            bp_until);
6251
6252   old_chain = make_cleanup_delete_breakpoint (breakpoint);
6253
6254   /* Keep within the current frame, or in frames called by the current
6255      one.  */
6256   if (prev_frame)
6257     {
6258       sal = find_pc_line (get_frame_pc (prev_frame), 0);
6259       sal.pc = get_frame_pc (prev_frame);
6260       breakpoint2 = set_momentary_breakpoint (sal, get_frame_id (prev_frame),
6261                                               bp_until);
6262       make_cleanup_delete_breakpoint (breakpoint2);
6263     }
6264
6265   proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
6266
6267   /* If we are running asynchronously, and proceed call above has actually
6268      managed to start the target, arrange for breakpoints to be
6269      deleted when the target stops.  Otherwise, we're already stopped and
6270      delete breakpoints via cleanup chain.  */
6271
6272   if (target_can_async_p () && is_running (inferior_ptid))
6273     {
6274       struct until_break_command_continuation_args *args;
6275       args = xmalloc (sizeof (*args));
6276
6277       args->breakpoint = breakpoint;
6278       args->breakpoint2 = breakpoint2;
6279
6280       discard_cleanups (old_chain);
6281       add_continuation (inferior_thread (),
6282                         until_break_command_continuation, args,
6283                         xfree);
6284     }
6285   else
6286     do_cleanups (old_chain);
6287 }
6288
6289 static void
6290 ep_skip_leading_whitespace (char **s)
6291 {
6292   if ((s == NULL) || (*s == NULL))
6293     return;
6294   while (isspace (**s))
6295     *s += 1;
6296 }
6297
6298 /* This function attempts to parse an optional "if <cond>" clause
6299    from the arg string.  If one is not found, it returns NULL.
6300
6301    Else, it returns a pointer to the condition string.  (It does not
6302    attempt to evaluate the string against a particular block.)  And,
6303    it updates arg to point to the first character following the parsed
6304    if clause in the arg string. */
6305
6306 static char *
6307 ep_parse_optional_if_clause (char **arg)
6308 {
6309   char *cond_string;
6310
6311   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
6312     return NULL;
6313
6314   /* Skip the "if" keyword. */
6315   (*arg) += 2;
6316
6317   /* Skip any extra leading whitespace, and record the start of the
6318      condition string. */
6319   ep_skip_leading_whitespace (arg);
6320   cond_string = *arg;
6321
6322   /* Assume that the condition occupies the remainder of the arg string. */
6323   (*arg) += strlen (cond_string);
6324
6325   return cond_string;
6326 }
6327
6328 /* This function attempts to parse an optional filename from the arg
6329    string.  If one is not found, it returns NULL.
6330
6331    Else, it returns a pointer to the parsed filename.  (This function
6332    makes no attempt to verify that a file of that name exists, or is
6333    accessible.)  And, it updates arg to point to the first character
6334    following the parsed filename in the arg string.
6335
6336    Note that clients needing to preserve the returned filename for
6337    future access should copy it to their own buffers. */
6338 static char *
6339 ep_parse_optional_filename (char **arg)
6340 {
6341   static char filename[1024];
6342   char *arg_p = *arg;
6343   int i;
6344   char c;
6345
6346   if ((*arg_p == '\0') || isspace (*arg_p))
6347     return NULL;
6348
6349   for (i = 0;; i++)
6350     {
6351       c = *arg_p;
6352       if (isspace (c))
6353         c = '\0';
6354       filename[i] = c;
6355       if (c == '\0')
6356         break;
6357       arg_p++;
6358     }
6359   *arg = arg_p;
6360
6361   return filename;
6362 }
6363
6364 /* Commands to deal with catching events, such as signals, exceptions,
6365    process start/exit, etc.  */
6366
6367 typedef enum
6368 {
6369   catch_fork_temporary, catch_vfork_temporary,
6370   catch_fork_permanent, catch_vfork_permanent
6371 }
6372 catch_fork_kind;
6373
6374 static void
6375 catch_fork_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
6376 {
6377   char *cond_string = NULL;
6378   catch_fork_kind fork_kind;
6379   int tempflag;
6380
6381   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
6382   tempflag = (fork_kind == catch_fork_temporary
6383               || fork_kind == catch_vfork_temporary);
6384
6385   if (!arg)
6386     arg = "";
6387   ep_skip_leading_whitespace (&arg);
6388
6389   /* The allowed syntax is:
6390      catch [v]fork
6391      catch [v]fork if <cond>
6392
6393      First, check if there's an if clause. */
6394   cond_string = ep_parse_optional_if_clause (&arg);
6395
6396   if ((*arg != '\0') && !isspace (*arg))
6397     error (_("Junk at end of arguments."));
6398
6399   /* If this target supports it, create a fork or vfork catchpoint
6400      and enable reporting of such events. */
6401   switch (fork_kind)
6402     {
6403     case catch_fork_temporary:
6404     case catch_fork_permanent:
6405       create_fork_vfork_event_catchpoint (tempflag, cond_string,
6406                                           &catch_fork_breakpoint_ops);
6407       break;
6408     case catch_vfork_temporary:
6409     case catch_vfork_permanent:
6410       create_fork_vfork_event_catchpoint (tempflag, cond_string,
6411                                           &catch_vfork_breakpoint_ops);
6412       break;
6413     default:
6414       error (_("unsupported or unknown fork kind; cannot catch it"));
6415       break;
6416     }
6417 }
6418
6419 static void
6420 catch_exec_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
6421 {
6422   int tempflag;
6423   char *cond_string = NULL;
6424
6425   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6426
6427   if (!arg)
6428     arg = "";
6429   ep_skip_leading_whitespace (&arg);
6430
6431   /* The allowed syntax is:
6432      catch exec
6433      catch exec if <cond>
6434
6435      First, check if there's an if clause. */
6436   cond_string = ep_parse_optional_if_clause (&arg);
6437
6438   if ((*arg != '\0') && !isspace (*arg))
6439     error (_("Junk at end of arguments."));
6440
6441   /* If this target supports it, create an exec catchpoint
6442      and enable reporting of such events. */
6443   create_catchpoint (tempflag, cond_string, &catch_exec_breakpoint_ops);
6444 }
6445
6446 static enum print_stop_action
6447 print_exception_catchpoint (struct breakpoint *b)
6448 {
6449   int bp_temp, bp_throw;
6450
6451   annotate_catchpoint (b->number);
6452
6453   bp_throw = strstr (b->addr_string, "throw") != NULL;
6454   if (b->loc->address != b->loc->requested_address)
6455     breakpoint_adjustment_warning (b->loc->requested_address,
6456                                    b->loc->address,
6457                                    b->number, 1);
6458   bp_temp = b->loc->owner->disposition == disp_del;
6459   ui_out_text (uiout, 
6460                bp_temp ? "Temporary catchpoint "
6461                        : "Catchpoint ");
6462   if (!ui_out_is_mi_like_p (uiout))
6463     ui_out_field_int (uiout, "bkptno", b->number);
6464   ui_out_text (uiout,
6465                bp_throw ? " (exception thrown), "
6466                         : " (exception caught), ");
6467   if (ui_out_is_mi_like_p (uiout))
6468     {
6469       ui_out_field_string (uiout, "reason", 
6470                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
6471       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6472       ui_out_field_int (uiout, "bkptno", b->number);
6473     }
6474   return PRINT_SRC_AND_LOC;
6475 }
6476
6477 static void
6478 print_one_exception_catchpoint (struct breakpoint *b, CORE_ADDR *last_addr)
6479 {
6480   struct value_print_options opts;
6481   get_user_print_options (&opts);
6482   if (opts.addressprint)
6483     {
6484       annotate_field (4);
6485       if (b->loc == NULL || b->loc->shlib_disabled)
6486         ui_out_field_string (uiout, "addr", "<PENDING>");
6487       else
6488         ui_out_field_core_addr (uiout, "addr", b->loc->address);
6489     }
6490   annotate_field (5);
6491   if (b->loc)
6492     *last_addr = b->loc->address;
6493   if (strstr (b->addr_string, "throw") != NULL)
6494     ui_out_field_string (uiout, "what", "exception throw");
6495   else
6496     ui_out_field_string (uiout, "what", "exception catch");
6497 }
6498
6499 static void
6500 print_mention_exception_catchpoint (struct breakpoint *b)
6501 {
6502   int bp_temp;
6503   int bp_throw;
6504
6505   bp_temp = b->loc->owner->disposition == disp_del;
6506   bp_throw = strstr (b->addr_string, "throw") != NULL;
6507   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
6508                               : _("Catchpoint "));
6509   ui_out_field_int (uiout, "bkptno", b->number);
6510   ui_out_text (uiout, bp_throw ? _(" (throw)")
6511                                : _(" (catch)"));
6512 }
6513
6514 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = {
6515   NULL, /* insert */
6516   NULL, /* remove */
6517   NULL, /* breakpoint_hit */
6518   print_exception_catchpoint,
6519   print_one_exception_catchpoint,
6520   print_mention_exception_catchpoint
6521 };
6522
6523 static int
6524 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
6525                           enum exception_event_kind ex_event, int from_tty)
6526 {
6527   char *trigger_func_name;
6528  
6529   if (ex_event == EX_EVENT_CATCH)
6530     trigger_func_name = "__cxa_begin_catch";
6531   else
6532     trigger_func_name = "__cxa_throw";
6533
6534   break_command_really (trigger_func_name, cond_string, -1,
6535                         0 /* condition and thread are valid.  */,
6536                         tempflag, 0,
6537                         0,
6538                         AUTO_BOOLEAN_TRUE /* pending */,
6539                         &gnu_v3_exception_catchpoint_ops, from_tty,
6540                         1 /* enabled */);
6541
6542   return 1;
6543 }
6544
6545 /* Deal with "catch catch" and "catch throw" commands */
6546
6547 static void
6548 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
6549                            int tempflag, int from_tty)
6550 {
6551   char *cond_string = NULL;
6552   struct symtab_and_line *sal = NULL;
6553
6554   if (!arg)
6555     arg = "";
6556   ep_skip_leading_whitespace (&arg);
6557
6558   cond_string = ep_parse_optional_if_clause (&arg);
6559
6560   if ((*arg != '\0') && !isspace (*arg))
6561     error (_("Junk at end of arguments."));
6562
6563   if ((ex_event != EX_EVENT_THROW) &&
6564       (ex_event != EX_EVENT_CATCH))
6565     error (_("Unsupported or unknown exception event; cannot catch it"));
6566
6567   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
6568     return;
6569
6570   warning (_("Unsupported with this platform/compiler combination."));
6571 }
6572
6573 /* Implementation of "catch catch" command.  */
6574
6575 static void
6576 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
6577 {
6578   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6579   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
6580 }
6581
6582 /* Implementation of "catch throw" command.  */
6583
6584 static void
6585 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
6586 {
6587   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6588   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
6589 }
6590
6591 /* Create a breakpoint struct for Ada exception catchpoints.  */
6592
6593 static void
6594 create_ada_exception_breakpoint (struct symtab_and_line sal,
6595                                  char *addr_string,
6596                                  char *exp_string,
6597                                  char *cond_string,
6598                                  struct expression *cond,
6599                                  struct breakpoint_ops *ops,
6600                                  int tempflag,
6601                                  int from_tty)
6602 {
6603   struct breakpoint *b;
6604
6605   if (from_tty)
6606     {
6607       describe_other_breakpoints (sal.pc, sal.section, -1);
6608       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
6609          version for exception catchpoints, because two catchpoints
6610          used for different exception names will use the same address.
6611          In this case, a "breakpoint ... also set at..." warning is
6612          unproductive.  Besides. the warning phrasing is also a bit
6613          inapropriate, we should use the word catchpoint, and tell
6614          the user what type of catchpoint it is.  The above is good
6615          enough for now, though.  */
6616     }
6617
6618   b = set_raw_breakpoint (sal, bp_breakpoint);
6619   set_breakpoint_count (breakpoint_count + 1);
6620
6621   b->enable_state = bp_enabled;
6622   b->disposition = tempflag ? disp_del : disp_donttouch;
6623   b->number = breakpoint_count;
6624   b->ignore_count = 0;
6625   b->loc->cond = cond;
6626   b->addr_string = addr_string;
6627   b->language = language_ada;
6628   b->cond_string = cond_string;
6629   b->exp_string = exp_string;
6630   b->thread = -1;
6631   b->ops = ops;
6632
6633   mention (b);
6634   update_global_location_list (1);
6635 }
6636
6637 /* Implement the "catch exception" command.  */
6638
6639 static void
6640 catch_ada_exception_command (char *arg, int from_tty,
6641                              struct cmd_list_element *command)
6642 {
6643   int tempflag;
6644   struct symtab_and_line sal;
6645   enum bptype type;
6646   char *addr_string = NULL;
6647   char *exp_string = NULL;
6648   char *cond_string = NULL;
6649   struct expression *cond = NULL;
6650   struct breakpoint_ops *ops = NULL;
6651
6652   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6653
6654   if (!arg)
6655     arg = "";
6656   sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
6657                                        &cond_string, &cond, &ops);
6658   create_ada_exception_breakpoint (sal, addr_string, exp_string,
6659                                    cond_string, cond, ops, tempflag,
6660                                    from_tty);
6661 }
6662
6663 /* Implement the "catch assert" command.  */
6664
6665 static void
6666 catch_assert_command (char *arg, int from_tty, struct cmd_list_element *command)
6667 {
6668   int tempflag;
6669   struct symtab_and_line sal;
6670   char *addr_string = NULL;
6671   struct breakpoint_ops *ops = NULL;
6672
6673   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6674
6675   if (!arg)
6676     arg = "";
6677   sal = ada_decode_assert_location (arg, &addr_string, &ops);
6678   create_ada_exception_breakpoint (sal, addr_string, NULL, NULL, NULL, ops,
6679                                    tempflag, from_tty);
6680 }
6681
6682 static void
6683 catch_command (char *arg, int from_tty)
6684 {
6685   error (_("Catch requires an event name."));
6686 }
6687 \f
6688
6689 static void
6690 tcatch_command (char *arg, int from_tty)
6691 {
6692   error (_("Catch requires an event name."));
6693 }
6694
6695 /* Delete breakpoints by address or line.  */
6696
6697 static void
6698 clear_command (char *arg, int from_tty)
6699 {
6700   struct breakpoint *b;
6701   VEC(breakpoint_p) *found = 0;
6702   int ix;
6703   int default_match;
6704   struct symtabs_and_lines sals;
6705   struct symtab_and_line sal;
6706   int i;
6707
6708   if (arg)
6709     {
6710       sals = decode_line_spec (arg, 1);
6711       default_match = 0;
6712     }
6713   else
6714     {
6715       sals.sals = (struct symtab_and_line *)
6716         xmalloc (sizeof (struct symtab_and_line));
6717       make_cleanup (xfree, sals.sals);
6718       init_sal (&sal);          /* initialize to zeroes */
6719       sal.line = default_breakpoint_line;
6720       sal.symtab = default_breakpoint_symtab;
6721       sal.pc = default_breakpoint_address;
6722       if (sal.symtab == 0)
6723         error (_("No source file specified."));
6724
6725       sals.sals[0] = sal;
6726       sals.nelts = 1;
6727
6728       default_match = 1;
6729     }
6730
6731   /* We don't call resolve_sal_pc here. That's not
6732      as bad as it seems, because all existing breakpoints
6733      typically have both file/line and pc set.  So, if
6734      clear is given file/line, we can match this to existing
6735      breakpoint without obtaining pc at all.
6736
6737      We only support clearing given the address explicitly 
6738      present in breakpoint table.  Say, we've set breakpoint 
6739      at file:line. There were several PC values for that file:line,
6740      due to optimization, all in one block.
6741      We've picked one PC value. If "clear" is issued with another
6742      PC corresponding to the same file:line, the breakpoint won't
6743      be cleared.  We probably can still clear the breakpoint, but 
6744      since the other PC value is never presented to user, user
6745      can only find it by guessing, and it does not seem important
6746      to support that.  */
6747
6748   /* For each line spec given, delete bps which correspond
6749      to it.  Do it in two passes, solely to preserve the current
6750      behavior that from_tty is forced true if we delete more than
6751      one breakpoint.  */
6752
6753   found = NULL;
6754   for (i = 0; i < sals.nelts; i++)
6755     {
6756       /* If exact pc given, clear bpts at that pc.
6757          If line given (pc == 0), clear all bpts on specified line.
6758          If defaulting, clear all bpts on default line
6759          or at default pc.
6760
6761          defaulting    sal.pc != 0    tests to do
6762
6763          0              1             pc
6764          1              1             pc _and_ line
6765          0              0             line
6766          1              0             <can't happen> */
6767
6768       sal = sals.sals[i];
6769
6770       /* Find all matching breakpoints and add them to
6771          'found'.  */
6772       ALL_BREAKPOINTS (b)
6773         {
6774           int match = 0;
6775           /* Are we going to delete b? */
6776           if (b->type != bp_none
6777               && b->type != bp_watchpoint
6778               && b->type != bp_hardware_watchpoint
6779               && b->type != bp_read_watchpoint
6780               && b->type != bp_access_watchpoint)
6781             {
6782               struct bp_location *loc = b->loc;
6783               for (; loc; loc = loc->next)
6784                 {
6785                   int pc_match = sal.pc 
6786                     && (loc->address == sal.pc)
6787                     && (!section_is_overlay (loc->section)
6788                         || loc->section == sal.section);
6789                   int line_match = ((default_match || (0 == sal.pc))
6790                                     && b->source_file != NULL
6791                                     && sal.symtab != NULL
6792                                     && strcmp (b->source_file, sal.symtab->filename) == 0
6793                                     && b->line_number == sal.line);
6794                   if (pc_match || line_match)
6795                     {
6796                       match = 1;
6797                       break;
6798                     }
6799                 }
6800             }
6801
6802           if (match)
6803             VEC_safe_push(breakpoint_p, found, b);
6804         }
6805     }
6806   /* Now go thru the 'found' chain and delete them.  */
6807   if (VEC_empty(breakpoint_p, found))
6808     {
6809       if (arg)
6810         error (_("No breakpoint at %s."), arg);
6811       else
6812         error (_("No breakpoint at this line."));
6813     }
6814
6815   if (VEC_length(breakpoint_p, found) > 1)
6816     from_tty = 1;               /* Always report if deleted more than one */
6817   if (from_tty)
6818     {
6819       if (VEC_length(breakpoint_p, found) == 1)
6820         printf_unfiltered (_("Deleted breakpoint "));
6821       else
6822         printf_unfiltered (_("Deleted breakpoints "));
6823     }
6824   breakpoints_changed ();
6825
6826   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
6827     {
6828       if (from_tty)
6829         printf_unfiltered ("%d ", b->number);
6830       delete_breakpoint (b);
6831     }
6832   if (from_tty)
6833     putchar_unfiltered ('\n');
6834 }
6835 \f
6836 /* Delete breakpoint in BS if they are `delete' breakpoints and
6837    all breakpoints that are marked for deletion, whether hit or not.
6838    This is called after any breakpoint is hit, or after errors.  */
6839
6840 void
6841 breakpoint_auto_delete (bpstat bs)
6842 {
6843   struct breakpoint *b, *temp;
6844
6845   for (; bs; bs = bs->next)
6846     if (bs->breakpoint_at 
6847         && bs->breakpoint_at->owner
6848         && bs->breakpoint_at->owner->disposition == disp_del
6849         && bs->stop)
6850       delete_breakpoint (bs->breakpoint_at->owner);
6851
6852   ALL_BREAKPOINTS_SAFE (b, temp)
6853   {
6854     if (b->disposition == disp_del_at_next_stop)
6855       delete_breakpoint (b);
6856   }
6857 }
6858
6859 /* A cleanup function which destroys a vector.  */
6860
6861 static void
6862 do_vec_free (void *p)
6863 {
6864   VEC(bp_location_p) **vec = p;
6865   if (*vec)
6866     VEC_free (bp_location_p, *vec);
6867 }
6868
6869 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
6870    into the inferior, only remove already-inserted locations that no
6871    longer should be inserted.  Functions that delete a breakpoint or
6872    breakpoints should pass false, so that deleting a breakpoint
6873    doesn't have the side effect of inserting the locations of other
6874    breakpoints that are marked not-inserted, but should_be_inserted
6875    returns true on them.
6876
6877    This behaviour is useful is situations close to tear-down -- e.g.,
6878    after an exec, while the target still has execution, but breakpoint
6879    shadows of the previous executable image should *NOT* be restored
6880    to the new image; or before detaching, where the target still has
6881    execution and wants to delete breakpoints from GDB's lists, and all
6882    breakpoints had already been removed from the inferior.  */
6883
6884 static void
6885 update_global_location_list (int should_insert)
6886 {
6887   struct breakpoint *b;
6888   struct bp_location **next = &bp_location_chain;
6889   struct bp_location *loc;
6890   struct bp_location *loc2;
6891   VEC(bp_location_p) *old_locations = NULL;
6892   int ret;
6893   int ix;
6894   struct cleanup *cleanups;
6895
6896   cleanups = make_cleanup (do_vec_free, &old_locations);
6897   /* Store old locations for future reference.  */
6898   for (loc = bp_location_chain; loc; loc = loc->global_next)
6899     VEC_safe_push (bp_location_p, old_locations, loc);
6900
6901   bp_location_chain = NULL;
6902   ALL_BREAKPOINTS (b)
6903     {
6904       for (loc = b->loc; loc; loc = loc->next)
6905         {
6906           *next = loc;
6907           next = &(loc->global_next);
6908           *next = NULL;
6909         }
6910     }
6911
6912   /* Identify bp_location instances that are no longer present in the new
6913      list, and therefore should be freed.  Note that it's not necessary that
6914      those locations should be removed from inferior -- if there's another
6915      location at the same address (previously marked as duplicate),
6916      we don't need to remove/insert the location.  */
6917   for (ix = 0; VEC_iterate(bp_location_p, old_locations, ix, loc); ++ix)
6918     {
6919       /* Tells if 'loc' is found amoung the new locations.  If not, we
6920          have to free it.  */
6921       int found_object = 0;
6922       /* Tells if the location should remain inserted in the target.  */
6923       int keep_in_target = 0;
6924       int removed = 0;
6925       for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
6926         if (loc2 == loc)
6927           {
6928             found_object = 1;
6929             break;
6930           }
6931
6932       /* If this location is no longer present, and inserted, look if there's
6933          maybe a new location at the same address.  If so, mark that one 
6934          inserted, and don't remove this one.  This is needed so that we 
6935          don't have a time window where a breakpoint at certain location is not
6936          inserted.  */
6937
6938       if (loc->inserted)
6939         {
6940           /* If the location is inserted now, we might have to remove it.  */
6941
6942           if (found_object && should_be_inserted (loc))
6943             {
6944               /* The location is still present in the location list, and still
6945                  should be inserted.  Don't do anything.  */
6946               keep_in_target = 1;
6947             }
6948           else
6949             {
6950               /* The location is either no longer present, or got disabled.
6951                  See if there's another location at the same address, in which 
6952                  case we don't need to remove this one from the target.  */
6953               if (breakpoint_address_is_meaningful (loc->owner))
6954                 for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
6955                   {
6956                     /* For the sake of should_insert_location.  The
6957                        call to check_duplicates will fix up this later.  */
6958                     loc2->duplicate = 0;
6959                     if (should_be_inserted (loc2)
6960                         && loc2 != loc && loc2->address == loc->address)
6961                       {           
6962                         loc2->inserted = 1;
6963                         loc2->target_info = loc->target_info;
6964                         keep_in_target = 1;
6965                         break;
6966                       }
6967                   }
6968             }
6969
6970           if (!keep_in_target)
6971             {
6972               if (remove_breakpoint (loc, mark_uninserted))
6973                 {
6974                   /* This is just about all we can do.  We could keep this
6975                      location on the global list, and try to remove it next
6976                      time, but there's no particular reason why we will
6977                      succeed next time.  
6978                      
6979                      Note that at this point, loc->owner is still valid,
6980                      as delete_breakpoint frees the breakpoint only
6981                      after calling us.  */
6982                   printf_filtered (_("warning: Error removing breakpoint %d\n"), 
6983                                    loc->owner->number);
6984                 }
6985               removed = 1;
6986             }
6987         }
6988
6989       if (!found_object)
6990         {
6991           if (removed && non_stop)
6992             {
6993               /* This location was removed from the targets.  In non-stop mode,
6994                  a race condition is possible where we've removed a breakpoint,
6995                  but stop events for that breakpoint are already queued and will
6996                  arrive later.  To suppress spurious SIGTRAPs reported to user,
6997                  we keep this breakpoint location for a bit, and will retire it
6998                  after we see 3 * thread_count events.
6999                  The theory here is that reporting of events should,
7000                  "on the average", be fair, so after that many event we'll see
7001                  events from all threads that have anything of interest, and no
7002                  longer need to keep this breakpoint.  This is just a
7003                  heuristic, but if it's wrong, we'll report unexpected SIGTRAP,
7004                  which is usability issue, but not a correctness problem.  */
7005               loc->events_till_retirement = 3 * (thread_count () + 1);
7006               loc->owner = NULL;
7007
7008               VEC_safe_push (bp_location_p, moribund_locations, loc);
7009             }
7010           else
7011             free_bp_location (loc);
7012         }
7013     }
7014
7015   ALL_BREAKPOINTS (b)
7016     {
7017       check_duplicates (b);
7018     }
7019
7020   if (breakpoints_always_inserted_mode () && should_insert
7021       && (target_has_execution
7022           || (gdbarch_has_global_solist (target_gdbarch)
7023               && target_supports_multi_process ())))
7024     insert_breakpoint_locations ();
7025
7026   do_cleanups (cleanups);
7027 }
7028
7029 void
7030 breakpoint_retire_moribund (void)
7031 {
7032   struct bp_location *loc;
7033   int ix;
7034
7035   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
7036     if (--(loc->events_till_retirement) == 0)
7037       {
7038         free_bp_location (loc);
7039         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
7040         --ix;
7041       }
7042 }
7043
7044 static void
7045 update_global_location_list_nothrow (int inserting)
7046 {
7047   struct gdb_exception e;
7048   TRY_CATCH (e, RETURN_MASK_ERROR)
7049     update_global_location_list (inserting);
7050 }
7051
7052 /* Clear BPT from a BPS.  */
7053 static void
7054 bpstat_remove_breakpoint (bpstat bps, struct breakpoint *bpt)
7055 {
7056   bpstat bs;
7057   for (bs = bps; bs; bs = bs->next)
7058     if (bs->breakpoint_at && bs->breakpoint_at->owner == bpt)
7059       {
7060         bs->breakpoint_at = NULL;
7061         bs->old_val = NULL;
7062         /* bs->commands will be freed later.  */
7063       }
7064 }
7065
7066 /* Callback for iterate_over_threads.  */
7067 static int
7068 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
7069 {
7070   struct breakpoint *bpt = data;
7071   bpstat_remove_breakpoint (th->stop_bpstat, bpt);
7072   return 0;
7073 }
7074
7075 /* Delete a breakpoint and clean up all traces of it in the data
7076    structures. */
7077
7078 void
7079 delete_breakpoint (struct breakpoint *bpt)
7080 {
7081   struct breakpoint *b;
7082   struct bp_location *loc, *next;
7083
7084   gdb_assert (bpt != NULL);
7085
7086   /* Has this bp already been deleted?  This can happen because multiple
7087      lists can hold pointers to bp's.  bpstat lists are especial culprits.
7088
7089      One example of this happening is a watchpoint's scope bp.  When the
7090      scope bp triggers, we notice that the watchpoint is out of scope, and
7091      delete it.  We also delete its scope bp.  But the scope bp is marked
7092      "auto-deleting", and is already on a bpstat.  That bpstat is then
7093      checked for auto-deleting bp's, which are deleted.
7094
7095      A real solution to this problem might involve reference counts in bp's,
7096      and/or giving them pointers back to their referencing bpstat's, and
7097      teaching delete_breakpoint to only free a bp's storage when no more
7098      references were extent.  A cheaper bandaid was chosen.  */
7099   if (bpt->type == bp_none)
7100     return;
7101
7102   observer_notify_breakpoint_deleted (bpt->number);
7103
7104   if (breakpoint_chain == bpt)
7105     breakpoint_chain = bpt->next;
7106
7107   ALL_BREAKPOINTS (b)
7108     if (b->next == bpt)
7109     {
7110       b->next = bpt->next;
7111       break;
7112     }
7113
7114   free_command_lines (&bpt->commands);
7115   if (bpt->cond_string != NULL)
7116     xfree (bpt->cond_string);
7117   if (bpt->addr_string != NULL)
7118     xfree (bpt->addr_string);
7119   if (bpt->exp != NULL)
7120     xfree (bpt->exp);
7121   if (bpt->exp_string != NULL)
7122     xfree (bpt->exp_string);
7123   if (bpt->val != NULL)
7124     value_free (bpt->val);
7125   if (bpt->source_file != NULL)
7126     xfree (bpt->source_file);
7127   if (bpt->exec_pathname != NULL)
7128     xfree (bpt->exec_pathname);
7129
7130   /* Be sure no bpstat's are pointing at it after it's been freed.  */
7131   /* FIXME, how can we find all bpstat's?
7132      We just check stop_bpstat for now.  Note that we cannot just
7133      remove bpstats pointing at bpt from the stop_bpstat list
7134      entirely, as breakpoint commands are associated with the bpstat;
7135      if we remove it here, then the later call to
7136          bpstat_do_actions (&stop_bpstat);
7137      in event-top.c won't do anything, and temporary breakpoints
7138      with commands won't work.  */
7139
7140   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
7141
7142   /* Now that breakpoint is removed from breakpoint
7143      list, update the global location list.  This
7144      will remove locations that used to belong to
7145      this breakpoint.  Do this before freeing
7146      the breakpoint itself, since remove_breakpoint
7147      looks at location's owner.  It might be better
7148      design to have location completely self-contained,
7149      but it's not the case now.  */
7150   update_global_location_list (0);
7151
7152
7153   /* On the chance that someone will soon try again to delete this same
7154      bp, we mark it as deleted before freeing its storage. */
7155   bpt->type = bp_none;
7156
7157   xfree (bpt);
7158 }
7159
7160 static void
7161 do_delete_breakpoint_cleanup (void *b)
7162 {
7163   delete_breakpoint (b);
7164 }
7165
7166 struct cleanup *
7167 make_cleanup_delete_breakpoint (struct breakpoint *b)
7168 {
7169   return make_cleanup (do_delete_breakpoint_cleanup, b);
7170 }
7171
7172 void
7173 delete_command (char *arg, int from_tty)
7174 {
7175   struct breakpoint *b, *temp;
7176
7177   dont_repeat ();
7178
7179   if (arg == 0)
7180     {
7181       int breaks_to_delete = 0;
7182
7183       /* Delete all breakpoints if no argument.
7184          Do not delete internal or call-dummy breakpoints, these
7185          have to be deleted with an explicit breakpoint number argument.  */
7186       ALL_BREAKPOINTS (b)
7187       {
7188         if (b->type != bp_call_dummy &&
7189             b->type != bp_shlib_event &&
7190             b->type != bp_thread_event &&
7191             b->type != bp_overlay_event &&
7192             b->number >= 0)
7193           {
7194             breaks_to_delete = 1;
7195             break;
7196           }
7197       }
7198
7199       /* Ask user only if there are some breakpoints to delete.  */
7200       if (!from_tty
7201           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
7202         {
7203           ALL_BREAKPOINTS_SAFE (b, temp)
7204           {
7205             if (b->type != bp_call_dummy &&
7206                 b->type != bp_shlib_event &&
7207                 b->type != bp_thread_event &&
7208                 b->type != bp_overlay_event &&
7209                 b->number >= 0)
7210               delete_breakpoint (b);
7211           }
7212         }
7213     }
7214   else
7215     map_breakpoint_numbers (arg, delete_breakpoint);
7216 }
7217
7218 static int
7219 all_locations_are_pending (struct bp_location *loc)
7220 {
7221   for (; loc; loc = loc->next)
7222     if (!loc->shlib_disabled)
7223       return 0;
7224   return 1;
7225 }
7226
7227 /* Subroutine of update_breakpoint_locations to simplify it.
7228    Return non-zero if multiple fns in list LOC have the same name.
7229    Null names are ignored.  */
7230
7231 static int
7232 ambiguous_names_p (struct bp_location *loc)
7233 {
7234   struct bp_location *l;
7235   htab_t htab = htab_create_alloc (13, htab_hash_string,
7236                                    (int (*) (const void *, const void *)) streq,
7237                                    NULL, xcalloc, xfree);
7238
7239   for (l = loc; l != NULL; l = l->next)
7240     {
7241       const char **slot;
7242       const char *name = l->function_name;
7243
7244       /* Allow for some names to be NULL, ignore them.  */
7245       if (name == NULL)
7246         continue;
7247
7248       slot = (const char **) htab_find_slot (htab, (const void *) name,
7249                                              INSERT);
7250       /* NOTE: We can assume slot != NULL here because xcalloc never returns
7251          NULL.  */
7252       if (*slot != NULL)
7253         {
7254           htab_delete (htab);
7255           return 1;
7256         }
7257       *slot = name;
7258     }
7259
7260   htab_delete (htab);
7261   return 0;
7262 }
7263
7264 static void
7265 update_breakpoint_locations (struct breakpoint *b,
7266                              struct symtabs_and_lines sals)
7267 {
7268   int i;
7269   char *s;
7270   struct bp_location *existing_locations = b->loc;
7271
7272   /* If there's no new locations, and all existing locations
7273      are pending, don't do anything.  This optimizes
7274      the common case where all locations are in the same
7275      shared library, that was unloaded. We'd like to
7276      retain the location, so that when the library
7277      is loaded again, we don't loose the enabled/disabled
7278      status of the individual locations.  */
7279   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
7280     return;
7281
7282   b->loc = NULL;
7283
7284   for (i = 0; i < sals.nelts; ++i)
7285     {
7286       struct bp_location *new_loc = 
7287         add_location_to_breakpoint (b, &(sals.sals[i]));
7288
7289       /* Reparse conditions, they might contain references to the
7290          old symtab.  */
7291       if (b->cond_string != NULL)
7292         {
7293           struct gdb_exception e;
7294
7295           s = b->cond_string;
7296           TRY_CATCH (e, RETURN_MASK_ERROR)
7297             {
7298               new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 
7299                                            0);
7300             }
7301           if (e.reason < 0)
7302             {
7303               warning (_("failed to reevaluate condition for breakpoint %d: %s"), 
7304                        b->number, e.message);
7305               new_loc->enabled = 0;
7306             }
7307         }
7308
7309       if (b->source_file != NULL)
7310         xfree (b->source_file);
7311       if (sals.sals[i].symtab == NULL)
7312         b->source_file = NULL;
7313       else
7314         b->source_file =
7315           savestring (sals.sals[i].symtab->filename,
7316                       strlen (sals.sals[i].symtab->filename));
7317
7318       if (b->line_number == 0)
7319         b->line_number = sals.sals[i].line;
7320     }
7321
7322   /* Update locations of permanent breakpoints.  */
7323   if (b->enable_state == bp_permanent)
7324     make_breakpoint_permanent (b);
7325
7326   /* If possible, carry over 'disable' status from existing breakpoints.  */
7327   {
7328     struct bp_location *e = existing_locations;
7329     /* If there are multiple breakpoints with the same function name,
7330        e.g. for inline functions, comparing function names won't work.
7331        Instead compare pc addresses; this is just a heuristic as things
7332        may have moved, but in practice it gives the correct answer
7333        often enough until a better solution is found.  */
7334     int have_ambiguous_names = ambiguous_names_p (b->loc);
7335
7336     for (; e; e = e->next)
7337       {
7338         if (!e->enabled && e->function_name)
7339           {
7340             struct bp_location *l = b->loc;
7341             if (have_ambiguous_names)
7342               {
7343                 for (; l; l = l->next)
7344                   if (e->address == l->address)
7345                     {
7346                       l->enabled = 0;
7347                       break;
7348                     }
7349               }
7350             else
7351               {
7352                 for (; l; l = l->next)
7353                   if (l->function_name
7354                       && strcmp (e->function_name, l->function_name) == 0)
7355                     {
7356                       l->enabled = 0;
7357                       break;
7358                     }
7359               }
7360           }
7361       }
7362   }
7363
7364   update_global_location_list (1);
7365 }
7366
7367
7368 /* Reset a breakpoint given it's struct breakpoint * BINT.
7369    The value we return ends up being the return value from catch_errors.
7370    Unused in this case.  */
7371
7372 static int
7373 breakpoint_re_set_one (void *bint)
7374 {
7375   /* get past catch_errs */
7376   struct breakpoint *b = (struct breakpoint *) bint;
7377   struct value *mark;
7378   int i;
7379   int not_found = 0;
7380   int *not_found_ptr = &not_found;
7381   struct symtabs_and_lines sals = {};
7382   struct symtabs_and_lines expanded;
7383   char *s;
7384   enum enable_state save_enable;
7385   struct gdb_exception e;
7386   struct cleanup *cleanups;
7387
7388   switch (b->type)
7389     {
7390     case bp_none:
7391       warning (_("attempted to reset apparently deleted breakpoint #%d?"),
7392                b->number);
7393       return 0;
7394     case bp_breakpoint:
7395     case bp_hardware_breakpoint:
7396       if (b->addr_string == NULL)
7397         {
7398           /* Anything without a string can't be re-set. */
7399           delete_breakpoint (b);
7400           return 0;
7401         }
7402
7403       set_language (b->language);
7404       input_radix = b->input_radix;
7405       s = b->addr_string;
7406       TRY_CATCH (e, RETURN_MASK_ERROR)
7407         {
7408           sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL,
7409                                 not_found_ptr);
7410         }
7411       if (e.reason < 0)
7412         {
7413           int not_found_and_ok = 0;
7414           /* For pending breakpoints, it's expected that parsing
7415              will fail until the right shared library is loaded.
7416              User has already told to create pending breakpoints and
7417              don't need extra messages.  If breakpoint is in bp_shlib_disabled
7418              state, then user already saw the message about that breakpoint
7419              being disabled, and don't want to see more errors.  */
7420           if (not_found 
7421               && (b->condition_not_parsed 
7422                   || (b->loc && b->loc->shlib_disabled)
7423                   || b->enable_state == bp_disabled))
7424             not_found_and_ok = 1;
7425
7426           if (!not_found_and_ok)
7427             {
7428               /* We surely don't want to warn about the same breakpoint
7429                  10 times.  One solution, implemented here, is disable
7430                  the breakpoint on error.  Another solution would be to
7431                  have separate 'warning emitted' flag.  Since this
7432                  happens only when a binary has changed, I don't know
7433                  which approach is better.  */
7434               b->enable_state = bp_disabled;
7435               throw_exception (e);
7436             }
7437         }
7438
7439       if (not_found)
7440         break;
7441       
7442       gdb_assert (sals.nelts == 1);
7443       resolve_sal_pc (&sals.sals[0]);
7444       if (b->condition_not_parsed && s && s[0])
7445         {
7446           char *cond_string = 0;
7447           int thread = -1;
7448           find_condition_and_thread (s, sals.sals[0].pc, 
7449                                      &cond_string, &thread);
7450           if (cond_string)
7451             b->cond_string = cond_string;
7452           b->thread = thread;
7453           b->condition_not_parsed = 0;
7454         }
7455       expanded = expand_line_sal_maybe (sals.sals[0]);
7456       cleanups = make_cleanup (xfree, sals.sals);
7457       update_breakpoint_locations (b, expanded);
7458       do_cleanups (cleanups);
7459       break;
7460
7461     case bp_watchpoint:
7462     case bp_hardware_watchpoint:
7463     case bp_read_watchpoint:
7464     case bp_access_watchpoint:
7465       /* Watchpoint can be either on expression using entirely global variables,
7466          or it can be on local variables.
7467
7468          Watchpoints of the first kind are never auto-deleted, and even persist
7469          across program restarts. Since they can use variables from shared 
7470          libraries, we need to reparse expression as libraries are loaded
7471          and unloaded.
7472
7473          Watchpoints on local variables can also change meaning as result
7474          of solib event. For example, if a watchpoint uses both a local and
7475          a global variables in expression, it's a local watchpoint, but
7476          unloading of a shared library will make the expression invalid.
7477          This is not a very common use case, but we still re-evaluate
7478          expression, to avoid surprises to the user. 
7479
7480          Note that for local watchpoints, we re-evaluate it only if
7481          watchpoints frame id is still valid.  If it's not, it means
7482          the watchpoint is out of scope and will be deleted soon. In fact,
7483          I'm not sure we'll ever be called in this case.  
7484
7485          If a local watchpoint's frame id is still valid, then
7486          b->exp_valid_block is likewise valid, and we can safely use it.  
7487          
7488          Don't do anything about disabled watchpoints, since they will
7489          be reevaluated again when enabled.  */
7490       update_watchpoint (b, 1 /* reparse */);
7491       break;
7492       /* We needn't really do anything to reset these, since the mask
7493          that requests them is unaffected by e.g., new libraries being
7494          loaded. */
7495     case bp_catchpoint:
7496       break;
7497
7498     default:
7499       printf_filtered (_("Deleting unknown breakpoint type %d\n"), b->type);
7500       /* fall through */
7501       /* Delete overlay event breakpoints; they will be reset later by
7502          breakpoint_re_set.  */
7503     case bp_overlay_event:
7504       delete_breakpoint (b);
7505       break;
7506
7507       /* This breakpoint is special, it's set up when the inferior
7508          starts and we really don't want to touch it.  */
7509     case bp_shlib_event:
7510
7511       /* Like bp_shlib_event, this breakpoint type is special.
7512          Once it is set up, we do not want to touch it.  */
7513     case bp_thread_event:
7514
7515       /* Keep temporary breakpoints, which can be encountered when we step
7516          over a dlopen call and SOLIB_ADD is resetting the breakpoints.
7517          Otherwise these should have been blown away via the cleanup chain
7518          or by breakpoint_init_inferior when we rerun the executable.  */
7519     case bp_until:
7520     case bp_finish:
7521     case bp_watchpoint_scope:
7522     case bp_call_dummy:
7523     case bp_step_resume:
7524     case bp_longjmp:
7525     case bp_longjmp_resume:
7526       break;
7527     }
7528
7529   return 0;
7530 }
7531
7532 /* Re-set all breakpoints after symbols have been re-loaded.  */
7533 void
7534 breakpoint_re_set (void)
7535 {
7536   struct breakpoint *b, *temp;
7537   enum language save_language;
7538   int save_input_radix;
7539
7540   save_language = current_language->la_language;
7541   save_input_radix = input_radix;
7542   ALL_BREAKPOINTS_SAFE (b, temp)
7543   {
7544     /* Format possible error msg */
7545     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
7546                                 b->number);
7547     struct cleanup *cleanups = make_cleanup (xfree, message);
7548     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
7549     do_cleanups (cleanups);
7550   }
7551   set_language (save_language);
7552   input_radix = save_input_radix;
7553   
7554   create_overlay_event_breakpoint ("_ovly_debug_event");
7555 }
7556 \f
7557 /* Reset the thread number of this breakpoint:
7558
7559    - If the breakpoint is for all threads, leave it as-is.
7560    - Else, reset it to the current thread for inferior_ptid. */
7561 void
7562 breakpoint_re_set_thread (struct breakpoint *b)
7563 {
7564   if (b->thread != -1)
7565     {
7566       if (in_thread_list (inferior_ptid))
7567         b->thread = pid_to_thread_id (inferior_ptid);
7568     }
7569 }
7570
7571 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
7572    If from_tty is nonzero, it prints a message to that effect,
7573    which ends with a period (no newline).  */
7574
7575 void
7576 set_ignore_count (int bptnum, int count, int from_tty)
7577 {
7578   struct breakpoint *b;
7579
7580   if (count < 0)
7581     count = 0;
7582
7583   ALL_BREAKPOINTS (b)
7584     if (b->number == bptnum)
7585     {
7586       b->ignore_count = count;
7587       if (from_tty)
7588         {
7589           if (count == 0)
7590             printf_filtered (_("Will stop next time breakpoint %d is reached."),
7591                              bptnum);
7592           else if (count == 1)
7593             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
7594                              bptnum);
7595           else
7596             printf_filtered (_("Will ignore next %d crossings of breakpoint %d."),
7597                              count, bptnum);
7598         }
7599       breakpoints_changed ();
7600       observer_notify_breakpoint_modified (b->number);
7601       return;
7602     }
7603
7604   error (_("No breakpoint number %d."), bptnum);
7605 }
7606
7607 void
7608 make_breakpoint_silent (struct breakpoint *b)
7609 {
7610   /* Silence the breakpoint.  */
7611   b->silent = 1;
7612 }
7613
7614 /* Command to set ignore-count of breakpoint N to COUNT.  */
7615
7616 static void
7617 ignore_command (char *args, int from_tty)
7618 {
7619   char *p = args;
7620   int num;
7621
7622   if (p == 0)
7623     error_no_arg (_("a breakpoint number"));
7624
7625   num = get_number (&p);
7626   if (num == 0)
7627     error (_("bad breakpoint number: '%s'"), args);
7628   if (*p == 0)
7629     error (_("Second argument (specified ignore-count) is missing."));
7630
7631   set_ignore_count (num,
7632                     longest_to_int (value_as_long (parse_and_eval (p))),
7633                     from_tty);
7634   if (from_tty)
7635     printf_filtered ("\n");
7636 }
7637 \f
7638 /* Call FUNCTION on each of the breakpoints
7639    whose numbers are given in ARGS.  */
7640
7641 static void
7642 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *))
7643 {
7644   char *p = args;
7645   char *p1;
7646   int num;
7647   struct breakpoint *b, *tmp;
7648   int match;
7649
7650   if (p == 0)
7651     error_no_arg (_("one or more breakpoint numbers"));
7652
7653   while (*p)
7654     {
7655       match = 0;
7656       p1 = p;
7657
7658       num = get_number_or_range (&p1);
7659       if (num == 0)
7660         {
7661           warning (_("bad breakpoint number at or near '%s'"), p);
7662         }
7663       else
7664         {
7665           ALL_BREAKPOINTS_SAFE (b, tmp)
7666             if (b->number == num)
7667               {
7668                 struct breakpoint *related_breakpoint = b->related_breakpoint;
7669                 match = 1;
7670                 function (b);
7671                 if (related_breakpoint)
7672                   function (related_breakpoint);
7673                 break;
7674               }
7675           if (match == 0)
7676             printf_unfiltered (_("No breakpoint number %d.\n"), num);
7677         }
7678       p = p1;
7679     }
7680 }
7681
7682 static struct bp_location *
7683 find_location_by_number (char *number)
7684 {
7685   char *dot = strchr (number, '.');
7686   char *p1;
7687   int bp_num;
7688   int loc_num;
7689   struct breakpoint *b;
7690   struct bp_location *loc;  
7691
7692   *dot = '\0';
7693
7694   p1 = number;
7695   bp_num = get_number_or_range (&p1);
7696   if (bp_num == 0)
7697     error (_("Bad breakpoint number '%s'"), number);
7698
7699   ALL_BREAKPOINTS (b)
7700     if (b->number == bp_num)
7701       {
7702         break;
7703       }
7704
7705   if (!b || b->number != bp_num)
7706     error (_("Bad breakpoint number '%s'"), number);
7707   
7708   p1 = dot+1;
7709   loc_num = get_number_or_range (&p1);
7710   if (loc_num == 0)
7711     error (_("Bad breakpoint location number '%s'"), number);
7712
7713   --loc_num;
7714   loc = b->loc;
7715   for (;loc_num && loc; --loc_num, loc = loc->next)
7716     ;
7717   if (!loc)
7718     error (_("Bad breakpoint location number '%s'"), dot+1);
7719     
7720   return loc;  
7721 }
7722
7723
7724 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
7725    If from_tty is nonzero, it prints a message to that effect,
7726    which ends with a period (no newline).  */
7727
7728 void
7729 disable_breakpoint (struct breakpoint *bpt)
7730 {
7731   /* Never disable a watchpoint scope breakpoint; we want to
7732      hit them when we leave scope so we can delete both the
7733      watchpoint and its scope breakpoint at that time.  */
7734   if (bpt->type == bp_watchpoint_scope)
7735     return;
7736
7737   /* You can't disable permanent breakpoints.  */
7738   if (bpt->enable_state == bp_permanent)
7739     return;
7740
7741   bpt->enable_state = bp_disabled;
7742
7743   update_global_location_list (0);
7744
7745   observer_notify_breakpoint_modified (bpt->number);
7746 }
7747
7748 static void
7749 disable_command (char *args, int from_tty)
7750 {
7751   struct breakpoint *bpt;
7752   if (args == 0)
7753     ALL_BREAKPOINTS (bpt)
7754       switch (bpt->type)
7755       {
7756       case bp_none:
7757         warning (_("attempted to disable apparently deleted breakpoint #%d?"),
7758                  bpt->number);
7759         continue;
7760       case bp_breakpoint:
7761       case bp_catchpoint:
7762       case bp_hardware_breakpoint:
7763       case bp_watchpoint:
7764       case bp_hardware_watchpoint:
7765       case bp_read_watchpoint:
7766       case bp_access_watchpoint:
7767         disable_breakpoint (bpt);
7768       default:
7769         continue;
7770       }
7771   else if (strchr (args, '.'))
7772     {
7773       struct bp_location *loc = find_location_by_number (args);
7774       if (loc)
7775         loc->enabled = 0;
7776       update_global_location_list (0);
7777     }
7778   else
7779     map_breakpoint_numbers (args, disable_breakpoint);
7780 }
7781
7782 static void
7783 do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition)
7784 {
7785   int target_resources_ok, other_type_used;
7786   struct value *mark;
7787
7788   if (bpt->type == bp_hardware_breakpoint)
7789     {
7790       int i;
7791       i = hw_breakpoint_used_count ();
7792       target_resources_ok = 
7793         TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint, 
7794                                             i + 1, 0);
7795       if (target_resources_ok == 0)
7796         error (_("No hardware breakpoint support in the target."));
7797       else if (target_resources_ok < 0)
7798         error (_("Hardware breakpoints used exceeds limit."));
7799     }
7800
7801   if (bpt->type == bp_watchpoint || 
7802       bpt->type == bp_hardware_watchpoint ||
7803       bpt->type == bp_read_watchpoint || 
7804       bpt->type == bp_access_watchpoint)
7805     {
7806       struct gdb_exception e;
7807
7808       TRY_CATCH (e, RETURN_MASK_ALL)
7809         {
7810           update_watchpoint (bpt, 1 /* reparse */);
7811         }
7812       if (e.reason < 0)
7813         {
7814           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
7815                              bpt->number);
7816           return;
7817         }
7818     }
7819
7820   if (bpt->enable_state != bp_permanent)
7821     bpt->enable_state = bp_enabled;
7822   bpt->disposition = disposition;
7823   update_global_location_list (1);
7824   breakpoints_changed ();
7825   
7826   observer_notify_breakpoint_modified (bpt->number);
7827 }
7828
7829
7830 void
7831 enable_breakpoint (struct breakpoint *bpt)
7832 {
7833   do_enable_breakpoint (bpt, bpt->disposition);
7834 }
7835
7836 /* The enable command enables the specified breakpoints (or all defined
7837    breakpoints) so they once again become (or continue to be) effective
7838    in stopping the inferior.  */
7839
7840 static void
7841 enable_command (char *args, int from_tty)
7842 {
7843   struct breakpoint *bpt;
7844   if (args == 0)
7845     ALL_BREAKPOINTS (bpt)
7846       switch (bpt->type)
7847       {
7848       case bp_none:
7849         warning (_("attempted to enable apparently deleted breakpoint #%d?"),
7850                  bpt->number);
7851         continue;
7852       case bp_breakpoint:
7853       case bp_catchpoint:
7854       case bp_hardware_breakpoint:
7855       case bp_watchpoint:
7856       case bp_hardware_watchpoint:
7857       case bp_read_watchpoint:
7858       case bp_access_watchpoint:
7859         enable_breakpoint (bpt);
7860       default:
7861         continue;
7862       }
7863   else if (strchr (args, '.'))
7864     {
7865       struct bp_location *loc = find_location_by_number (args);
7866       if (loc)
7867         loc->enabled = 1;
7868       update_global_location_list (1);
7869     }
7870   else
7871     map_breakpoint_numbers (args, enable_breakpoint);
7872 }
7873
7874 static void
7875 enable_once_breakpoint (struct breakpoint *bpt)
7876 {
7877   do_enable_breakpoint (bpt, disp_disable);
7878 }
7879
7880 static void
7881 enable_once_command (char *args, int from_tty)
7882 {
7883   map_breakpoint_numbers (args, enable_once_breakpoint);
7884 }
7885
7886 static void
7887 enable_delete_breakpoint (struct breakpoint *bpt)
7888 {
7889   do_enable_breakpoint (bpt, disp_del);
7890 }
7891
7892 static void
7893 enable_delete_command (char *args, int from_tty)
7894 {
7895   map_breakpoint_numbers (args, enable_delete_breakpoint);
7896 }
7897 \f
7898 static void
7899 set_breakpoint_cmd (char *args, int from_tty)
7900 {
7901 }
7902
7903 static void
7904 show_breakpoint_cmd (char *args, int from_tty)
7905 {
7906 }
7907
7908 /* Use default_breakpoint_'s, or nothing if they aren't valid.  */
7909
7910 struct symtabs_and_lines
7911 decode_line_spec_1 (char *string, int funfirstline)
7912 {
7913   struct symtabs_and_lines sals;
7914   if (string == 0)
7915     error (_("Empty line specification."));
7916   if (default_breakpoint_valid)
7917     sals = decode_line_1 (&string, funfirstline,
7918                           default_breakpoint_symtab,
7919                           default_breakpoint_line,
7920                           (char ***) NULL, NULL);
7921   else
7922     sals = decode_line_1 (&string, funfirstline,
7923                           (struct symtab *) NULL, 0, (char ***) NULL, NULL);
7924   if (*string)
7925     error (_("Junk at end of line specification: %s"), string);
7926   return sals;
7927 }
7928
7929 /* Create and insert a raw software breakpoint at PC.  Return an
7930    identifier, which should be used to remove the breakpoint later.
7931    In general, places which call this should be using something on the
7932    breakpoint chain instead; this function should be eliminated
7933    someday.  */
7934
7935 void *
7936 deprecated_insert_raw_breakpoint (CORE_ADDR pc)
7937 {
7938   struct bp_target_info *bp_tgt;
7939
7940   bp_tgt = xmalloc (sizeof (struct bp_target_info));
7941   memset (bp_tgt, 0, sizeof (struct bp_target_info));
7942
7943   bp_tgt->placed_address = pc;
7944   if (target_insert_breakpoint (bp_tgt) != 0)
7945     {
7946       /* Could not insert the breakpoint.  */
7947       xfree (bp_tgt);
7948       return NULL;
7949     }
7950
7951   return bp_tgt;
7952 }
7953
7954 /* Remove a breakpoint BP inserted by deprecated_insert_raw_breakpoint.  */
7955
7956 int
7957 deprecated_remove_raw_breakpoint (void *bp)
7958 {
7959   struct bp_target_info *bp_tgt = bp;
7960   int ret;
7961
7962   ret = target_remove_breakpoint (bp_tgt);
7963   xfree (bp_tgt);
7964
7965   return ret;
7966 }
7967
7968 /* One (or perhaps two) breakpoints used for software single stepping.  */
7969
7970 static void *single_step_breakpoints[2];
7971
7972 /* Create and insert a breakpoint for software single step.  */
7973
7974 void
7975 insert_single_step_breakpoint (CORE_ADDR next_pc)
7976 {
7977   void **bpt_p;
7978
7979   if (single_step_breakpoints[0] == NULL)
7980     bpt_p = &single_step_breakpoints[0];
7981   else
7982     {
7983       gdb_assert (single_step_breakpoints[1] == NULL);
7984       bpt_p = &single_step_breakpoints[1];
7985     }
7986
7987   /* NOTE drow/2006-04-11: A future improvement to this function would be
7988      to only create the breakpoints once, and actually put them on the
7989      breakpoint chain.  That would let us use set_raw_breakpoint.  We could
7990      adjust the addresses each time they were needed.  Doing this requires
7991      corresponding changes elsewhere where single step breakpoints are
7992      handled, however.  So, for now, we use this.  */
7993
7994   *bpt_p = deprecated_insert_raw_breakpoint (next_pc);
7995   if (*bpt_p == NULL)
7996     error (_("Could not insert single-step breakpoint at 0x%s"),
7997              paddr_nz (next_pc));
7998 }
7999
8000 /* Remove and delete any breakpoints used for software single step.  */
8001
8002 void
8003 remove_single_step_breakpoints (void)
8004 {
8005   gdb_assert (single_step_breakpoints[0] != NULL);
8006
8007   /* See insert_single_step_breakpoint for more about this deprecated
8008      call.  */
8009   deprecated_remove_raw_breakpoint (single_step_breakpoints[0]);
8010   single_step_breakpoints[0] = NULL;
8011
8012   if (single_step_breakpoints[1] != NULL)
8013     {
8014       deprecated_remove_raw_breakpoint (single_step_breakpoints[1]);
8015       single_step_breakpoints[1] = NULL;
8016     }
8017 }
8018
8019 /* Check whether a software single-step breakpoint is inserted at PC.  */
8020
8021 static int
8022 single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
8023 {
8024   int i;
8025
8026   for (i = 0; i < 2; i++)
8027     {
8028       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
8029       if (bp_tgt && bp_tgt->placed_address == pc)
8030         return 1;
8031     }
8032
8033   return 0;
8034 }
8035
8036 \f
8037 /* This help string is used for the break, hbreak, tbreak and thbreak commands.
8038    It is defined as a macro to prevent duplication.
8039    COMMAND should be a string constant containing the name of the command.  */
8040 #define BREAK_ARGS_HELP(command) \
8041 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
8042 LOCATION may be a line number, function name, or \"*\" and an address.\n\
8043 If a line number is specified, break at start of code for that line.\n\
8044 If a function is specified, break at start of code for that function.\n\
8045 If an address is specified, break at that exact address.\n\
8046 With no LOCATION, uses current execution address of selected stack frame.\n\
8047 This is useful for breaking on return to a stack frame.\n\
8048 \n\
8049 THREADNUM is the number from \"info threads\".\n\
8050 CONDITION is a boolean expression.\n\
8051 \n\
8052 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
8053 \n\
8054 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
8055
8056 /* List of subcommands for "catch".  */
8057 static struct cmd_list_element *catch_cmdlist;
8058
8059 /* List of subcommands for "tcatch".  */
8060 static struct cmd_list_element *tcatch_cmdlist;
8061
8062 /* Like add_cmd, but add the command to both the "catch" and "tcatch"
8063    lists, and pass some additional user data to the command function.  */
8064 static void
8065 add_catch_command (char *name, char *docstring,
8066                    void (*sfunc) (char *args, int from_tty,
8067                                   struct cmd_list_element *command),
8068                    void *user_data_catch,
8069                    void *user_data_tcatch)
8070 {
8071   struct cmd_list_element *command;
8072
8073   command = add_cmd (name, class_breakpoint, NULL, docstring,
8074                      &catch_cmdlist);
8075   set_cmd_sfunc (command, sfunc);
8076   set_cmd_context (command, user_data_catch);
8077
8078   command = add_cmd (name, class_breakpoint, NULL, docstring,
8079                      &tcatch_cmdlist);
8080   set_cmd_sfunc (command, sfunc);
8081   set_cmd_context (command, user_data_tcatch);
8082 }
8083
8084 void
8085 _initialize_breakpoint (void)
8086 {
8087   static struct cmd_list_element *breakpoint_set_cmdlist;
8088   static struct cmd_list_element *breakpoint_show_cmdlist;
8089   struct cmd_list_element *c;
8090
8091   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
8092
8093   breakpoint_chain = 0;
8094   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
8095      before a breakpoint is set.  */
8096   breakpoint_count = 0;
8097
8098   add_com ("ignore", class_breakpoint, ignore_command, _("\
8099 Set ignore-count of breakpoint number N to COUNT.\n\
8100 Usage is `ignore N COUNT'."));
8101   if (xdb_commands)
8102     add_com_alias ("bc", "ignore", class_breakpoint, 1);
8103
8104   add_com ("commands", class_breakpoint, commands_command, _("\
8105 Set commands to be executed when a breakpoint is hit.\n\
8106 Give breakpoint number as argument after \"commands\".\n\
8107 With no argument, the targeted breakpoint is the last one set.\n\
8108 The commands themselves follow starting on the next line.\n\
8109 Type a line containing \"end\" to indicate the end of them.\n\
8110 Give \"silent\" as the first line to make the breakpoint silent;\n\
8111 then no output is printed when it is hit, except what the commands print."));
8112
8113   add_com ("condition", class_breakpoint, condition_command, _("\
8114 Specify breakpoint number N to break only if COND is true.\n\
8115 Usage is `condition N COND', where N is an integer and COND is an\n\
8116 expression to be evaluated whenever breakpoint N is reached."));
8117
8118   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
8119 Set a temporary breakpoint.\n\
8120 Like \"break\" except the breakpoint is only temporary,\n\
8121 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
8122 by using \"enable delete\" on the breakpoint number.\n\
8123 \n"
8124 BREAK_ARGS_HELP ("tbreak")));
8125   set_cmd_completer (c, location_completer);
8126
8127   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
8128 Set a hardware assisted  breakpoint.\n\
8129 Like \"break\" except the breakpoint requires hardware support,\n\
8130 some target hardware may not have this support.\n\
8131 \n"
8132 BREAK_ARGS_HELP ("hbreak")));
8133   set_cmd_completer (c, location_completer);
8134
8135   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
8136 Set a temporary hardware assisted breakpoint.\n\
8137 Like \"hbreak\" except the breakpoint is only temporary,\n\
8138 so it will be deleted when hit.\n\
8139 \n"
8140 BREAK_ARGS_HELP ("thbreak")));
8141   set_cmd_completer (c, location_completer);
8142
8143   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
8144 Enable some breakpoints.\n\
8145 Give breakpoint numbers (separated by spaces) as arguments.\n\
8146 With no subcommand, breakpoints are enabled until you command otherwise.\n\
8147 This is used to cancel the effect of the \"disable\" command.\n\
8148 With a subcommand you can enable temporarily."),
8149                   &enablelist, "enable ", 1, &cmdlist);
8150   if (xdb_commands)
8151     add_com ("ab", class_breakpoint, enable_command, _("\
8152 Enable some breakpoints.\n\
8153 Give breakpoint numbers (separated by spaces) as arguments.\n\
8154 With no subcommand, breakpoints are enabled until you command otherwise.\n\
8155 This is used to cancel the effect of the \"disable\" command.\n\
8156 With a subcommand you can enable temporarily."));
8157
8158   add_com_alias ("en", "enable", class_breakpoint, 1);
8159
8160   add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
8161 Enable some breakpoints.\n\
8162 Give breakpoint numbers (separated by spaces) as arguments.\n\
8163 This is used to cancel the effect of the \"disable\" command.\n\
8164 May be abbreviated to simply \"enable\".\n"),
8165                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
8166
8167   add_cmd ("once", no_class, enable_once_command, _("\
8168 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
8169 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
8170            &enablebreaklist);
8171
8172   add_cmd ("delete", no_class, enable_delete_command, _("\
8173 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
8174 If a breakpoint is hit while enabled in this fashion, it is deleted."),
8175            &enablebreaklist);
8176
8177   add_cmd ("delete", no_class, enable_delete_command, _("\
8178 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
8179 If a breakpoint is hit while enabled in this fashion, it is deleted."),
8180            &enablelist);
8181
8182   add_cmd ("once", no_class, enable_once_command, _("\
8183 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
8184 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
8185            &enablelist);
8186
8187   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
8188 Disable some breakpoints.\n\
8189 Arguments are breakpoint numbers with spaces in between.\n\
8190 To disable all breakpoints, give no argument.\n\
8191 A disabled breakpoint is not forgotten, but has no effect until reenabled."),
8192                   &disablelist, "disable ", 1, &cmdlist);
8193   add_com_alias ("dis", "disable", class_breakpoint, 1);
8194   add_com_alias ("disa", "disable", class_breakpoint, 1);
8195   if (xdb_commands)
8196     add_com ("sb", class_breakpoint, disable_command, _("\
8197 Disable some breakpoints.\n\
8198 Arguments are breakpoint numbers with spaces in between.\n\
8199 To disable all breakpoints, give no argument.\n\
8200 A disabled breakpoint is not forgotten, but has no effect until reenabled."));
8201
8202   add_cmd ("breakpoints", class_alias, disable_command, _("\
8203 Disable some breakpoints.\n\
8204 Arguments are breakpoint numbers with spaces in between.\n\
8205 To disable all breakpoints, give no argument.\n\
8206 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
8207 This command may be abbreviated \"disable\"."),
8208            &disablelist);
8209
8210   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
8211 Delete some breakpoints or auto-display expressions.\n\
8212 Arguments are breakpoint numbers with spaces in between.\n\
8213 To delete all breakpoints, give no argument.\n\
8214 \n\
8215 Also a prefix command for deletion of other GDB objects.\n\
8216 The \"unset\" command is also an alias for \"delete\"."),
8217                   &deletelist, "delete ", 1, &cmdlist);
8218   add_com_alias ("d", "delete", class_breakpoint, 1);
8219   add_com_alias ("del", "delete", class_breakpoint, 1);
8220   if (xdb_commands)
8221     add_com ("db", class_breakpoint, delete_command, _("\
8222 Delete some breakpoints.\n\
8223 Arguments are breakpoint numbers with spaces in between.\n\
8224 To delete all breakpoints, give no argument.\n"));
8225
8226   add_cmd ("breakpoints", class_alias, delete_command, _("\
8227 Delete some breakpoints or auto-display expressions.\n\
8228 Arguments are breakpoint numbers with spaces in between.\n\
8229 To delete all breakpoints, give no argument.\n\
8230 This command may be abbreviated \"delete\"."),
8231            &deletelist);
8232
8233   add_com ("clear", class_breakpoint, clear_command, _("\
8234 Clear breakpoint at specified line or function.\n\
8235 Argument may be line number, function name, or \"*\" and an address.\n\
8236 If line number is specified, all breakpoints in that line are cleared.\n\
8237 If function is specified, breakpoints at beginning of function are cleared.\n\
8238 If an address is specified, breakpoints at that address are cleared.\n\
8239 \n\
8240 With no argument, clears all breakpoints in the line that the selected frame\n\
8241 is executing in.\n\
8242 \n\
8243 See also the \"delete\" command which clears breakpoints by number."));
8244
8245   c = add_com ("break", class_breakpoint, break_command, _("\
8246 Set breakpoint at specified line or function.\n"
8247 BREAK_ARGS_HELP ("break")));
8248   set_cmd_completer (c, location_completer);
8249
8250   add_com_alias ("b", "break", class_run, 1);
8251   add_com_alias ("br", "break", class_run, 1);
8252   add_com_alias ("bre", "break", class_run, 1);
8253   add_com_alias ("brea", "break", class_run, 1);
8254
8255  if (xdb_commands)
8256     {
8257       add_com_alias ("ba", "break", class_breakpoint, 1);
8258       add_com_alias ("bu", "ubreak", class_breakpoint, 1);
8259     }
8260
8261   if (dbx_commands)
8262     {
8263       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
8264 Break in function/address or break at a line in the current file."),
8265                              &stoplist, "stop ", 1, &cmdlist);
8266       add_cmd ("in", class_breakpoint, stopin_command,
8267                _("Break in function or address."), &stoplist);
8268       add_cmd ("at", class_breakpoint, stopat_command,
8269                _("Break at a line in the current file."), &stoplist);
8270       add_com ("status", class_info, breakpoints_info, _("\
8271 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8272 The \"Type\" column indicates one of:\n\
8273 \tbreakpoint     - normal breakpoint\n\
8274 \twatchpoint     - watchpoint\n\
8275 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8276 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8277 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8278 address and file/line number respectively.\n\
8279 \n\
8280 Convenience variable \"$_\" and default examine address for \"x\"\n\
8281 are set to the address of the last breakpoint listed unless the command\n\
8282 is prefixed with \"server \".\n\n\
8283 Convenience variable \"$bpnum\" contains the number of the last\n\
8284 breakpoint set."));
8285     }
8286
8287   add_info ("breakpoints", breakpoints_info, _("\
8288 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8289 The \"Type\" column indicates one of:\n\
8290 \tbreakpoint     - normal breakpoint\n\
8291 \twatchpoint     - watchpoint\n\
8292 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8293 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8294 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8295 address and file/line number respectively.\n\
8296 \n\
8297 Convenience variable \"$_\" and default examine address for \"x\"\n\
8298 are set to the address of the last breakpoint listed unless the command\n\
8299 is prefixed with \"server \".\n\n\
8300 Convenience variable \"$bpnum\" contains the number of the last\n\
8301 breakpoint set."));
8302
8303   if (xdb_commands)
8304     add_com ("lb", class_breakpoint, breakpoints_info, _("\
8305 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8306 The \"Type\" column indicates one of:\n\
8307 \tbreakpoint     - normal breakpoint\n\
8308 \twatchpoint     - watchpoint\n\
8309 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8310 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8311 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8312 address and file/line number respectively.\n\
8313 \n\
8314 Convenience variable \"$_\" and default examine address for \"x\"\n\
8315 are set to the address of the last breakpoint listed unless the command\n\
8316 is prefixed with \"server \".\n\n\
8317 Convenience variable \"$bpnum\" contains the number of the last\n\
8318 breakpoint set."));
8319
8320   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
8321 Status of all breakpoints, or breakpoint number NUMBER.\n\
8322 The \"Type\" column indicates one of:\n\
8323 \tbreakpoint     - normal breakpoint\n\
8324 \twatchpoint     - watchpoint\n\
8325 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
8326 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
8327 \tuntil          - internal breakpoint used by the \"until\" command\n\
8328 \tfinish         - internal breakpoint used by the \"finish\" command\n\
8329 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8330 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8331 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8332 address and file/line number respectively.\n\
8333 \n\
8334 Convenience variable \"$_\" and default examine address for \"x\"\n\
8335 are set to the address of the last breakpoint listed unless the command\n\
8336 is prefixed with \"server \".\n\n\
8337 Convenience variable \"$bpnum\" contains the number of the last\n\
8338 breakpoint set."),
8339            &maintenanceinfolist);
8340
8341   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
8342 Set catchpoints to catch events."),
8343                   &catch_cmdlist, "catch ",
8344                   0/*allow-unknown*/, &cmdlist);
8345
8346   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
8347 Set temporary catchpoints to catch events."),
8348                   &tcatch_cmdlist, "tcatch ",
8349                   0/*allow-unknown*/, &cmdlist);
8350
8351   /* Add catch and tcatch sub-commands.  */
8352   add_catch_command ("catch", _("\
8353 Catch an exception, when caught.\n\
8354 With an argument, catch only exceptions with the given name."),
8355                      catch_catch_command,
8356                      CATCH_PERMANENT,
8357                      CATCH_TEMPORARY);
8358   add_catch_command ("throw", _("\
8359 Catch an exception, when thrown.\n\
8360 With an argument, catch only exceptions with the given name."),
8361                      catch_throw_command,
8362                      CATCH_PERMANENT,
8363                      CATCH_TEMPORARY);
8364   add_catch_command ("fork", _("Catch calls to fork."),
8365                      catch_fork_command_1,
8366                      (void *) (uintptr_t) catch_fork_permanent,
8367                      (void *) (uintptr_t) catch_fork_temporary);
8368   add_catch_command ("vfork", _("Catch calls to vfork."),
8369                      catch_fork_command_1,
8370                      (void *) (uintptr_t) catch_vfork_permanent,
8371                      (void *) (uintptr_t) catch_vfork_temporary);
8372   add_catch_command ("exec", _("Catch calls to exec."),
8373                      catch_exec_command_1,
8374                      CATCH_PERMANENT,
8375                      CATCH_TEMPORARY);
8376   add_catch_command ("exception", _("\
8377 Catch Ada exceptions, when raised.\n\
8378 With an argument, catch only exceptions with the given name."),
8379                      catch_ada_exception_command,
8380                      CATCH_PERMANENT,
8381                      CATCH_TEMPORARY);
8382   add_catch_command ("assert", _("\
8383 Catch failed Ada assertions, when raised.\n\
8384 With an argument, catch only exceptions with the given name."),
8385                      catch_assert_command,
8386                      CATCH_PERMANENT,
8387                      CATCH_TEMPORARY);
8388
8389   c = add_com ("watch", class_breakpoint, watch_command, _("\
8390 Set a watchpoint for an expression.\n\
8391 A watchpoint stops execution of your program whenever the value of\n\
8392 an expression changes."));
8393   set_cmd_completer (c, expression_completer);
8394
8395   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
8396 Set a read watchpoint for an expression.\n\
8397 A watchpoint stops execution of your program whenever the value of\n\
8398 an expression is read."));
8399   set_cmd_completer (c, expression_completer);
8400
8401   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
8402 Set a watchpoint for an expression.\n\
8403 A watchpoint stops execution of your program whenever the value of\n\
8404 an expression is either read or written."));
8405   set_cmd_completer (c, expression_completer);
8406
8407   add_info ("watchpoints", breakpoints_info,
8408             _("Synonym for ``info breakpoints''."));
8409
8410
8411   /* XXX: cagney/2005-02-23: This should be a boolean, and should
8412      respond to changes - contrary to the description.  */
8413   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
8414                             &can_use_hw_watchpoints, _("\
8415 Set debugger's willingness to use watchpoint hardware."), _("\
8416 Show debugger's willingness to use watchpoint hardware."), _("\
8417 If zero, gdb will not use hardware for new watchpoints, even if\n\
8418 such is available.  (However, any hardware watchpoints that were\n\
8419 created before setting this to nonzero, will continue to use watchpoint\n\
8420 hardware.)"),
8421                             NULL,
8422                             show_can_use_hw_watchpoints,
8423                             &setlist, &showlist);
8424
8425   can_use_hw_watchpoints = 1;
8426
8427   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
8428 Breakpoint specific settings\n\
8429 Configure various breakpoint-specific variables such as\n\
8430 pending breakpoint behavior"),
8431                   &breakpoint_set_cmdlist, "set breakpoint ",
8432                   0/*allow-unknown*/, &setlist);
8433   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
8434 Breakpoint specific settings\n\
8435 Configure various breakpoint-specific variables such as\n\
8436 pending breakpoint behavior"),
8437                   &breakpoint_show_cmdlist, "show breakpoint ",
8438                   0/*allow-unknown*/, &showlist);
8439
8440   add_setshow_auto_boolean_cmd ("pending", no_class,
8441                                 &pending_break_support, _("\
8442 Set debugger's behavior regarding pending breakpoints."), _("\
8443 Show debugger's behavior regarding pending breakpoints."), _("\
8444 If on, an unrecognized breakpoint location will cause gdb to create a\n\
8445 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
8446 an error.  If auto, an unrecognized breakpoint location results in a\n\
8447 user-query to see if a pending breakpoint should be created."),
8448                                 NULL,
8449                                 show_pending_break_support,
8450                                 &breakpoint_set_cmdlist,
8451                                 &breakpoint_show_cmdlist);
8452
8453   pending_break_support = AUTO_BOOLEAN_AUTO;
8454
8455   add_setshow_boolean_cmd ("auto-hw", no_class,
8456                            &automatic_hardware_breakpoints, _("\
8457 Set automatic usage of hardware breakpoints."), _("\
8458 Show automatic usage of hardware breakpoints."), _("\
8459 If set, the debugger will automatically use hardware breakpoints for\n\
8460 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
8461 a warning will be emitted for such breakpoints."),
8462                            NULL,
8463                            show_automatic_hardware_breakpoints,
8464                            &breakpoint_set_cmdlist,
8465                            &breakpoint_show_cmdlist);
8466
8467   add_setshow_enum_cmd ("always-inserted", class_support,
8468                         always_inserted_enums, &always_inserted_mode, _("\
8469 Set mode for inserting breakpoints."), _("\
8470 Show mode for inserting breakpoints."), _("\
8471 When this mode is off, breakpoints are inserted in inferior when it is\n\
8472 resumed, and removed when execution stops.  When this mode is on,\n\
8473 breakpoints are inserted immediately and removed only when the user\n\
8474 deletes the breakpoint.  When this mode is auto (which is the default),\n\
8475 the behaviour depends on the non-stop setting (see help set non-stop).\n\
8476 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
8477 behaves as if always-inserted mode is on; if gdb is controlling the\n\
8478 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
8479                            NULL,
8480                            &show_always_inserted_mode,
8481                            &breakpoint_set_cmdlist,
8482                            &breakpoint_show_cmdlist);
8483   
8484   automatic_hardware_breakpoints = 1;
8485 }