]> Git Repo - binutils.git/blob - gdb/breakpoint.c
2008-02-21 Pedro Alves <[email protected]>
[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   /* SunOS a.out shared libraries are always mapped, so do not
4461      disable breakpoints; they will only be reported as unloaded
4462      through clear_solib when GDB discards its shared library
4463      list.  See clear_solib for more information.  */
4464   if (exec_bfd != NULL
4465       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
4466     return;
4467
4468   ALL_BP_LOCATIONS (loc)
4469   {
4470     struct breakpoint *b = loc->owner;
4471     if ((loc->loc_type == bp_loc_hardware_breakpoint
4472          || loc->loc_type == bp_loc_software_breakpoint)
4473         && !loc->shlib_disabled)
4474       {
4475 #ifdef PC_SOLIB
4476         char *so_name = PC_SOLIB (loc->address);
4477 #else
4478         char *so_name = solib_address (loc->address);
4479 #endif
4480         if (so_name && !strcmp (so_name, solib->so_name))
4481           {
4482             loc->shlib_disabled = 1;
4483             /* At this point, we cannot rely on remove_breakpoint
4484                succeeding so we must mark the breakpoint as not inserted
4485                to prevent future errors occurring in remove_breakpoints.  */
4486             loc->inserted = 0;
4487             if (!disabled_shlib_breaks)
4488               {
4489                 target_terminal_ours_for_output ();
4490                 warning (_("Temporarily disabling breakpoints for unloaded shared library \"%s\""),
4491                           so_name);
4492               }
4493             disabled_shlib_breaks = 1;
4494           }
4495       }
4496   }
4497 }
4498
4499 /* FORK & VFORK catchpoints.  */
4500
4501 /* Implement the "insert" breakpoint_ops method for fork catchpoints.  */
4502
4503 static void
4504 insert_catch_fork (struct breakpoint *b)
4505 {
4506   target_insert_fork_catchpoint (PIDGET (inferior_ptid));
4507 }
4508
4509 /* Implement the "remove" breakpoint_ops method for fork catchpoints.  */
4510
4511 static int
4512 remove_catch_fork (struct breakpoint *b)
4513 {
4514   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
4515 }
4516
4517 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
4518    catchpoints.  */
4519
4520 static int
4521 breakpoint_hit_catch_fork (struct breakpoint *b)
4522 {
4523   return inferior_has_forked (inferior_ptid, &b->forked_inferior_pid);
4524 }
4525
4526 /* Implement the "print_it" breakpoint_ops method for fork catchpoints.  */
4527
4528 static enum print_stop_action
4529 print_it_catch_fork (struct breakpoint *b)
4530 {
4531   annotate_catchpoint (b->number);
4532   printf_filtered (_("\nCatchpoint %d (forked process %d), "),
4533                    b->number, ptid_get_pid (b->forked_inferior_pid));
4534   return PRINT_SRC_AND_LOC;
4535 }
4536
4537 /* Implement the "print_one" breakpoint_ops method for fork catchpoints.  */
4538
4539 static void
4540 print_one_catch_fork (struct breakpoint *b, CORE_ADDR *last_addr)
4541 {
4542   struct value_print_options opts;
4543
4544   get_user_print_options (&opts);
4545
4546   /* Field 4, the address, is omitted (which makes the columns
4547      not line up too nicely with the headers, but the effect
4548      is relatively readable).  */
4549   if (opts.addressprint)
4550     ui_out_field_skip (uiout, "addr");
4551   annotate_field (5);
4552   ui_out_text (uiout, "fork");
4553   if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4554     {
4555       ui_out_text (uiout, ", process ");
4556       ui_out_field_int (uiout, "what",
4557                         ptid_get_pid (b->forked_inferior_pid));
4558       ui_out_spaces (uiout, 1);
4559     }
4560 }
4561
4562 /* Implement the "print_mention" breakpoint_ops method for fork
4563    catchpoints.  */
4564
4565 static void
4566 print_mention_catch_fork (struct breakpoint *b)
4567 {
4568   printf_filtered (_("Catchpoint %d (fork)"), b->number);
4569 }
4570
4571 /* The breakpoint_ops structure to be used in fork catchpoints.  */
4572
4573 static struct breakpoint_ops catch_fork_breakpoint_ops =
4574 {
4575   insert_catch_fork,
4576   remove_catch_fork,
4577   breakpoint_hit_catch_fork,
4578   print_it_catch_fork,
4579   print_one_catch_fork,
4580   print_mention_catch_fork
4581 };
4582
4583 /* Implement the "insert" breakpoint_ops method for vfork catchpoints.  */
4584
4585 static void
4586 insert_catch_vfork (struct breakpoint *b)
4587 {
4588   target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
4589 }
4590
4591 /* Implement the "remove" breakpoint_ops method for vfork catchpoints.  */
4592
4593 static int
4594 remove_catch_vfork (struct breakpoint *b)
4595 {
4596   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
4597 }
4598
4599 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
4600    catchpoints.  */
4601
4602 static int
4603 breakpoint_hit_catch_vfork (struct breakpoint *b)
4604 {
4605   return inferior_has_vforked (inferior_ptid, &b->forked_inferior_pid);
4606 }
4607
4608 /* Implement the "print_it" breakpoint_ops method for vfork catchpoints.  */
4609
4610 static enum print_stop_action
4611 print_it_catch_vfork (struct breakpoint *b)
4612 {
4613   annotate_catchpoint (b->number);
4614   printf_filtered (_("\nCatchpoint %d (vforked process %d), "),
4615                    b->number, ptid_get_pid (b->forked_inferior_pid));
4616   return PRINT_SRC_AND_LOC;
4617 }
4618
4619 /* Implement the "print_one" breakpoint_ops method for vfork catchpoints.  */
4620
4621 static void
4622 print_one_catch_vfork (struct breakpoint *b, CORE_ADDR *last_addr)
4623 {
4624   struct value_print_options opts;
4625
4626   get_user_print_options (&opts);
4627   /* Field 4, the address, is omitted (which makes the columns
4628      not line up too nicely with the headers, but the effect
4629      is relatively readable).  */
4630   if (opts.addressprint)
4631     ui_out_field_skip (uiout, "addr");
4632   annotate_field (5);
4633   ui_out_text (uiout, "vfork");
4634   if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4635     {
4636       ui_out_text (uiout, ", process ");
4637       ui_out_field_int (uiout, "what",
4638                         ptid_get_pid (b->forked_inferior_pid));
4639       ui_out_spaces (uiout, 1);
4640     }
4641 }
4642
4643 /* Implement the "print_mention" breakpoint_ops method for vfork
4644    catchpoints.  */
4645
4646 static void
4647 print_mention_catch_vfork (struct breakpoint *b)
4648 {
4649   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
4650 }
4651
4652 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
4653
4654 static struct breakpoint_ops catch_vfork_breakpoint_ops =
4655 {
4656   insert_catch_vfork,
4657   remove_catch_vfork,
4658   breakpoint_hit_catch_vfork,
4659   print_it_catch_vfork,
4660   print_one_catch_vfork,
4661   print_mention_catch_vfork
4662 };
4663
4664 /* Create a new breakpoint of the bp_catchpoint kind and return it.
4665  
4666    If TEMPFLAG is non-zero, then make the breakpoint temporary.
4667    If COND_STRING is not NULL, then store it in the breakpoint.
4668    OPS, if not NULL, is the breakpoint_ops structure associated
4669    to the catchpoint.  */
4670
4671 static struct breakpoint *
4672 create_catchpoint (int tempflag, char *cond_string,
4673                    struct breakpoint_ops *ops)
4674 {
4675   struct symtab_and_line sal;
4676   struct breakpoint *b;
4677
4678   init_sal (&sal);
4679   sal.pc = 0;
4680   sal.symtab = NULL;
4681   sal.line = 0;
4682
4683   b = set_raw_breakpoint (sal, bp_catchpoint);
4684   set_breakpoint_count (breakpoint_count + 1);
4685   b->number = breakpoint_count;
4686
4687   b->cond_string = (cond_string == NULL) ? 
4688     NULL : savestring (cond_string, strlen (cond_string));
4689   b->thread = -1;
4690   b->addr_string = NULL;
4691   b->enable_state = bp_enabled;
4692   b->disposition = tempflag ? disp_del : disp_donttouch;
4693   b->ops = ops;
4694
4695   mention (b);
4696   update_global_location_list (1);
4697
4698   return b;
4699 }
4700
4701 static void
4702 create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
4703                                     struct breakpoint_ops *ops)
4704 {
4705   struct breakpoint *b = create_catchpoint (tempflag, cond_string, ops);
4706
4707   /* FIXME: We should put this information in a breakpoint private data
4708      area.  */
4709   b->forked_inferior_pid = null_ptid;
4710 }
4711
4712 /* Exec catchpoints.  */
4713
4714 static void
4715 insert_catch_exec (struct breakpoint *b)
4716 {
4717   target_insert_exec_catchpoint (PIDGET (inferior_ptid));
4718 }
4719
4720 static int
4721 remove_catch_exec (struct breakpoint *b)
4722 {
4723   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
4724 }
4725
4726 static int
4727 breakpoint_hit_catch_exec (struct breakpoint *b)
4728 {
4729   return inferior_has_execd (inferior_ptid, &b->exec_pathname);
4730 }
4731
4732 static enum print_stop_action
4733 print_it_catch_exec (struct breakpoint *b)
4734 {
4735   annotate_catchpoint (b->number);
4736   printf_filtered (_("\nCatchpoint %d (exec'd %s), "), b->number,
4737                    b->exec_pathname);
4738   return PRINT_SRC_AND_LOC;
4739 }
4740
4741 static void
4742 print_one_catch_exec (struct breakpoint *b, CORE_ADDR *last_addr)
4743 {
4744   struct value_print_options opts;
4745
4746   get_user_print_options (&opts);
4747
4748   /* Field 4, the address, is omitted (which makes the columns
4749      not line up too nicely with the headers, but the effect
4750      is relatively readable).  */
4751   if (opts.addressprint)
4752     ui_out_field_skip (uiout, "addr");
4753   annotate_field (5);
4754   ui_out_text (uiout, "exec");
4755   if (b->exec_pathname != NULL)
4756     {
4757       ui_out_text (uiout, ", program \"");
4758       ui_out_field_string (uiout, "what", b->exec_pathname);
4759       ui_out_text (uiout, "\" ");
4760     }
4761 }
4762
4763 static void
4764 print_mention_catch_exec (struct breakpoint *b)
4765 {
4766   printf_filtered (_("Catchpoint %d (exec)"), b->number);
4767 }
4768
4769 static struct breakpoint_ops catch_exec_breakpoint_ops =
4770 {
4771   insert_catch_exec,
4772   remove_catch_exec,
4773   breakpoint_hit_catch_exec,
4774   print_it_catch_exec,
4775   print_one_catch_exec,
4776   print_mention_catch_exec
4777 };
4778
4779 static int
4780 hw_breakpoint_used_count (void)
4781 {
4782   struct breakpoint *b;
4783   int i = 0;
4784
4785   ALL_BREAKPOINTS (b)
4786   {
4787     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
4788       i++;
4789   }
4790
4791   return i;
4792 }
4793
4794 static int
4795 hw_watchpoint_used_count (enum bptype type, int *other_type_used)
4796 {
4797   struct breakpoint *b;
4798   int i = 0;
4799
4800   *other_type_used = 0;
4801   ALL_BREAKPOINTS (b)
4802   {
4803     if (breakpoint_enabled (b))
4804       {
4805         if (b->type == type)
4806           i++;
4807         else if ((b->type == bp_hardware_watchpoint ||
4808                   b->type == bp_read_watchpoint ||
4809                   b->type == bp_access_watchpoint))
4810           *other_type_used = 1;
4811       }
4812   }
4813   return i;
4814 }
4815
4816 void
4817 disable_watchpoints_before_interactive_call_start (void)
4818 {
4819   struct breakpoint *b;
4820
4821   ALL_BREAKPOINTS (b)
4822   {
4823     if (((b->type == bp_watchpoint)
4824          || (b->type == bp_hardware_watchpoint)
4825          || (b->type == bp_read_watchpoint)
4826          || (b->type == bp_access_watchpoint))
4827         && breakpoint_enabled (b))
4828       {
4829         b->enable_state = bp_call_disabled;
4830         update_global_location_list (0);
4831       }
4832   }
4833 }
4834
4835 void
4836 enable_watchpoints_after_interactive_call_stop (void)
4837 {
4838   struct breakpoint *b;
4839
4840   ALL_BREAKPOINTS (b)
4841   {
4842     if (((b->type == bp_watchpoint)
4843          || (b->type == bp_hardware_watchpoint)
4844          || (b->type == bp_read_watchpoint)
4845          || (b->type == bp_access_watchpoint))
4846         && (b->enable_state == bp_call_disabled))
4847       {
4848         b->enable_state = bp_enabled;
4849         update_global_location_list (1);
4850       }
4851   }
4852 }
4853
4854
4855 /* Set a breakpoint that will evaporate an end of command
4856    at address specified by SAL.
4857    Restrict it to frame FRAME if FRAME is nonzero.  */
4858
4859 struct breakpoint *
4860 set_momentary_breakpoint (struct symtab_and_line sal, struct frame_id frame_id,
4861                           enum bptype type)
4862 {
4863   struct breakpoint *b;
4864   b = set_raw_breakpoint (sal, type);
4865   b->enable_state = bp_enabled;
4866   b->disposition = disp_donttouch;
4867   b->frame_id = frame_id;
4868
4869   /* If we're debugging a multi-threaded program, then we
4870      want momentary breakpoints to be active in only a 
4871      single thread of control.  */
4872   if (in_thread_list (inferior_ptid))
4873     b->thread = pid_to_thread_id (inferior_ptid);
4874
4875   update_global_location_list_nothrow (1);
4876
4877   return b;
4878 }
4879
4880 struct breakpoint *
4881 set_momentary_breakpoint_at_pc (CORE_ADDR pc, enum bptype type)
4882 {
4883   struct symtab_and_line sal;
4884
4885   sal = find_pc_line (pc, 0);
4886   sal.pc = pc;
4887   sal.section = find_pc_overlay (pc);
4888   sal.explicit_pc = 1;
4889
4890   return set_momentary_breakpoint (sal, null_frame_id, type);
4891 }
4892 \f
4893
4894 /* Tell the user we have just set a breakpoint B.  */
4895
4896 static void
4897 mention (struct breakpoint *b)
4898 {
4899   int say_where = 0;
4900   struct cleanup *ui_out_chain;
4901   struct value_print_options opts;
4902
4903   get_user_print_options (&opts);
4904
4905   /* FIXME: This is misplaced; mention() is called by things (like
4906      hitting a watchpoint) other than breakpoint creation.  It should
4907      be possible to clean this up and at the same time replace the
4908      random calls to breakpoint_changed with this hook.  */
4909   observer_notify_breakpoint_created (b->number);
4910
4911   if (b->ops != NULL && b->ops->print_mention != NULL)
4912     b->ops->print_mention (b);
4913   else
4914     switch (b->type)
4915       {
4916       case bp_none:
4917         printf_filtered (_("(apparently deleted?) Eventpoint %d: "), b->number);
4918         break;
4919       case bp_watchpoint:
4920         ui_out_text (uiout, "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_hardware_watchpoint:
4928         ui_out_text (uiout, "Hardware watchpoint ");
4929         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
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_read_watchpoint:
4936         ui_out_text (uiout, "Hardware read watchpoint ");
4937         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
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_access_watchpoint:
4944         ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
4945         ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
4946         ui_out_field_int (uiout, "number", b->number);
4947         ui_out_text (uiout, ": ");
4948         ui_out_field_string (uiout, "exp", b->exp_string);
4949         do_cleanups (ui_out_chain);
4950         break;
4951       case bp_breakpoint:
4952         if (ui_out_is_mi_like_p (uiout))
4953           {
4954             say_where = 0;
4955             break;
4956           }
4957         if (b->disposition == disp_del)
4958           printf_filtered (_("Temporary breakpoint"));
4959         else
4960           printf_filtered (_("Breakpoint"));
4961         printf_filtered (_(" %d"), b->number);
4962         say_where = 1;
4963         break;
4964       case bp_hardware_breakpoint:
4965         if (ui_out_is_mi_like_p (uiout))
4966           {
4967             say_where = 0;
4968             break;
4969           }
4970         printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
4971         say_where = 1;
4972         break;
4973
4974       case bp_until:
4975       case bp_finish:
4976       case bp_longjmp:
4977       case bp_longjmp_resume:
4978       case bp_step_resume:
4979       case bp_call_dummy:
4980       case bp_watchpoint_scope:
4981       case bp_shlib_event:
4982       case bp_thread_event:
4983       case bp_overlay_event:
4984         break;
4985       }
4986
4987   if (say_where)
4988     {
4989       /* i18n: cagney/2005-02-11: Below needs to be merged into a
4990          single string.  */
4991       if (b->loc == NULL)
4992         {
4993           printf_filtered (_(" (%s) pending."), b->addr_string);
4994         }
4995       else
4996         {
4997           if (opts.addressprint || b->source_file == NULL)
4998             {
4999               printf_filtered (" at ");
5000               fputs_filtered (paddress (b->loc->address), gdb_stdout);
5001             }
5002           if (b->source_file)
5003             printf_filtered (": file %s, line %d.",
5004                              b->source_file, b->line_number);
5005           
5006           if (b->loc->next)
5007             {
5008               struct bp_location *loc = b->loc;
5009               int n = 0;
5010               for (; loc; loc = loc->next)
5011                 ++n;
5012               printf_filtered (" (%d locations)", n);           
5013             }
5014
5015         }
5016     }
5017   if (ui_out_is_mi_like_p (uiout))
5018     return;
5019   printf_filtered ("\n");
5020 }
5021 \f
5022
5023 static struct bp_location *
5024 add_location_to_breakpoint (struct breakpoint *b,
5025                             const struct symtab_and_line *sal)
5026 {
5027   struct bp_location *loc, **tmp;
5028
5029   loc = allocate_bp_location (b);
5030   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
5031     ;
5032   *tmp = loc;
5033   loc->requested_address = sal->pc;
5034   loc->address = adjust_breakpoint_address (loc->requested_address, b->type);
5035   loc->section = sal->section;
5036
5037   set_breakpoint_location_function (loc);
5038   return loc;
5039 }
5040 \f
5041
5042 /* Return 1 if LOC is pointing to a permanent breakpoint, 
5043    return 0 otherwise.  */
5044
5045 static int
5046 bp_loc_is_permanent (struct bp_location *loc)
5047 {
5048   int len;
5049   CORE_ADDR addr;
5050   const gdb_byte *brk;
5051   gdb_byte *target_mem;
5052   struct cleanup *cleanup;
5053   int retval = 0;
5054
5055   gdb_assert (loc != NULL);
5056
5057   addr = loc->address;
5058   brk = gdbarch_breakpoint_from_pc (current_gdbarch, &addr, &len);
5059
5060   /* Software breakpoints unsupported?  */
5061   if (brk == NULL)
5062     return 0;
5063
5064   target_mem = alloca (len);
5065
5066   /* Enable the automatic memory restoration from breakpoints while
5067      we read the memory.  Otherwise we could say about our temporary
5068      breakpoints they are permanent.  */
5069   cleanup = make_show_memory_breakpoints_cleanup (0);
5070
5071   if (target_read_memory (loc->address, target_mem, len) == 0
5072       && memcmp (target_mem, brk, len) == 0)
5073     retval = 1;
5074
5075   do_cleanups (cleanup);
5076
5077   return retval;
5078 }
5079
5080
5081
5082 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
5083    as textual description of the location, and COND_STRING
5084    as condition expression.  */
5085
5086 static void
5087 create_breakpoint (struct symtabs_and_lines sals, char *addr_string,
5088                    char *cond_string,
5089                    enum bptype type, enum bpdisp disposition,
5090                    int thread, int ignore_count, 
5091                    struct breakpoint_ops *ops, int from_tty, int enabled)
5092 {
5093   struct breakpoint *b = NULL;
5094   int i;
5095
5096   if (type == bp_hardware_breakpoint)
5097     {
5098       int i = hw_breakpoint_used_count ();
5099       int target_resources_ok = 
5100         TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint, 
5101                                             i + 1, 0);
5102       if (target_resources_ok == 0)
5103         error (_("No hardware breakpoint support in the target."));
5104       else if (target_resources_ok < 0)
5105         error (_("Hardware breakpoints used exceeds limit."));
5106     }
5107
5108   for (i = 0; i < sals.nelts; ++i)
5109     {
5110       struct symtab_and_line sal = sals.sals[i];
5111       struct bp_location *loc;
5112
5113       if (from_tty)
5114         describe_other_breakpoints (sal.pc, sal.section, thread);
5115
5116       if (i == 0)
5117         {
5118           b = set_raw_breakpoint (sal, type);
5119           set_breakpoint_count (breakpoint_count + 1);
5120           b->number = breakpoint_count;
5121           b->thread = thread;
5122   
5123           b->cond_string = cond_string;
5124           b->ignore_count = ignore_count;
5125           b->enable_state = enabled ? bp_enabled : bp_disabled;
5126           b->disposition = disposition;
5127
5128           loc = b->loc;
5129         }
5130       else
5131         {
5132           loc = add_location_to_breakpoint (b, &sal);
5133         }
5134
5135       if (bp_loc_is_permanent (loc))
5136         make_breakpoint_permanent (b);
5137
5138       if (b->cond_string)
5139         {
5140           char *arg = b->cond_string;
5141           loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
5142           if (*arg)
5143               error (_("Garbage %s follows condition"), arg);
5144         }
5145     }   
5146
5147   if (addr_string)
5148     b->addr_string = addr_string;
5149   else
5150     /* addr_string has to be used or breakpoint_re_set will delete
5151        me.  */
5152     b->addr_string = xstrprintf ("*0x%s", paddr (b->loc->address));
5153
5154   b->ops = ops;
5155   mention (b);
5156 }
5157
5158 /* Remove element at INDEX_TO_REMOVE from SAL, shifting other
5159    elements to fill the void space.  */
5160 static void
5161 remove_sal (struct symtabs_and_lines *sal, int index_to_remove)
5162 {
5163   int i = index_to_remove+1;
5164   int last_index = sal->nelts-1;
5165
5166   for (;i <= last_index; ++i)
5167     sal->sals[i-1] = sal->sals[i];
5168
5169   --(sal->nelts);
5170 }
5171
5172 /* If appropriate, obtains all sals that correspond
5173    to the same file and line as SAL.  This is done
5174    only if SAL does not have explicit PC and has
5175    line and file information.  If we got just a single
5176    expanded sal, return the original.
5177
5178    Otherwise, if SAL.explicit_line is not set, filter out 
5179    all sals for which the name of enclosing function 
5180    is different from SAL. This makes sure that if we have
5181    breakpoint originally set in template instantiation, say
5182    foo<int>(), we won't expand SAL to locations at the same
5183    line in all existing instantiations of 'foo'.
5184
5185 */
5186 static struct symtabs_and_lines
5187 expand_line_sal_maybe (struct symtab_and_line sal)
5188 {
5189   struct symtabs_and_lines expanded;
5190   CORE_ADDR original_pc = sal.pc;
5191   char *original_function = NULL;
5192   int found;
5193   int i;
5194
5195   /* If we have explicit pc, don't expand.
5196      If we have no line number, we can't expand.  */
5197   if (sal.explicit_pc || sal.line == 0 || sal.symtab == NULL)
5198     {
5199       expanded.nelts = 1;
5200       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5201       expanded.sals[0] = sal;
5202       return expanded;
5203     }
5204
5205   sal.pc = 0;
5206   find_pc_partial_function (original_pc, &original_function, NULL, NULL);
5207   
5208   expanded = expand_line_sal (sal);
5209   if (expanded.nelts == 1)
5210     {
5211       /* We had one sal, we got one sal.  Without futher
5212          processing, just return the original sal.  */
5213       xfree (expanded.sals);
5214       expanded.nelts = 1;
5215       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5216       sal.pc = original_pc;
5217       expanded.sals[0] = sal;
5218       return expanded;      
5219     }
5220
5221   if (!sal.explicit_line)
5222     {
5223       CORE_ADDR func_addr, func_end;
5224       for (i = 0; i < expanded.nelts; ++i)
5225         {
5226           CORE_ADDR pc = expanded.sals[i].pc;
5227           char *this_function;
5228           if (find_pc_partial_function (pc, &this_function, 
5229                                         &func_addr, &func_end))
5230             {
5231               if (this_function && 
5232                   strcmp (this_function, original_function) != 0)
5233                 {
5234                   remove_sal (&expanded, i);
5235                   --i;
5236                 }
5237               else if (func_addr == pc)     
5238                 {            
5239                   /* We're at beginning of a function, and should
5240                      skip prologue.  */
5241                   struct symbol *sym = find_pc_function (pc);
5242                   if (sym)
5243                     expanded.sals[i] = find_function_start_sal (sym, 1);
5244                   else
5245                     expanded.sals[i].pc 
5246                       = gdbarch_skip_prologue (current_gdbarch, pc);
5247                 }
5248             }
5249         }
5250     }
5251
5252   
5253   if (expanded.nelts <= 1)
5254     {
5255       /* This is un ugly workaround. If we get zero
5256        expanded sals then something is really wrong.
5257       Fix that by returnign the original sal. */
5258       xfree (expanded.sals);
5259       expanded.nelts = 1;
5260       expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5261       sal.pc = original_pc;
5262       expanded.sals[0] = sal;
5263       return expanded;      
5264     }
5265
5266   if (original_pc)
5267     {
5268       found = 0;
5269       for (i = 0; i < expanded.nelts; ++i)
5270         if (expanded.sals[i].pc == original_pc)
5271           {
5272             found = 1;
5273             break;
5274           }
5275       gdb_assert (found);
5276     }
5277
5278   return expanded;
5279 }
5280
5281 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
5282    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
5283    value.  COND_STRING, if not NULL, specified the condition to be
5284    used for all breakpoints.  Essentially the only case where
5285    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
5286    function.  In that case, it's still not possible to specify
5287    separate conditions for different overloaded functions, so
5288    we take just a single condition string.
5289    
5290    NOTE: If the function succeeds, the caller is expected to cleanup
5291    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
5292    array contents).  If the function fails (error() is called), the
5293    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
5294    COND and SALS arrays and each of those arrays contents. */
5295
5296 static void
5297 create_breakpoints (struct symtabs_and_lines sals, char **addr_string,
5298                     char *cond_string,
5299                     enum bptype type, enum bpdisp disposition,
5300                     int thread, int ignore_count, 
5301                     struct breakpoint_ops *ops, int from_tty,
5302                     int enabled)
5303 {
5304   int i;
5305   for (i = 0; i < sals.nelts; ++i)
5306     {
5307       struct symtabs_and_lines expanded = 
5308         expand_line_sal_maybe (sals.sals[i]);
5309
5310       create_breakpoint (expanded, addr_string[i],
5311                          cond_string, type, disposition,
5312                          thread, ignore_count, ops, from_tty, enabled);
5313     }
5314
5315   update_global_location_list (1);
5316 }
5317
5318 /* Parse ARG which is assumed to be a SAL specification possibly
5319    followed by conditionals.  On return, SALS contains an array of SAL
5320    addresses found. ADDR_STRING contains a vector of (canonical)
5321    address strings. ARG points to the end of the SAL. */
5322
5323 static void
5324 parse_breakpoint_sals (char **address,
5325                        struct symtabs_and_lines *sals,
5326                        char ***addr_string,
5327                        int *not_found_ptr)
5328 {
5329   char *addr_start = *address;
5330   *addr_string = NULL;
5331   /* If no arg given, or if first arg is 'if ', use the default
5332      breakpoint. */
5333   if ((*address) == NULL
5334       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
5335     {
5336       if (default_breakpoint_valid)
5337         {
5338           struct symtab_and_line sal;
5339           init_sal (&sal);              /* initialize to zeroes */
5340           sals->sals = (struct symtab_and_line *)
5341             xmalloc (sizeof (struct symtab_and_line));
5342           sal.pc = default_breakpoint_address;
5343           sal.line = default_breakpoint_line;
5344           sal.symtab = default_breakpoint_symtab;
5345           sal.section = find_pc_overlay (sal.pc);
5346           sals->sals[0] = sal;
5347           sals->nelts = 1;
5348         }
5349       else
5350         error (_("No default breakpoint address now."));
5351     }
5352   else
5353     {
5354       /* Force almost all breakpoints to be in terms of the
5355          current_source_symtab (which is decode_line_1's default).  This
5356          should produce the results we want almost all of the time while
5357          leaving default_breakpoint_* alone.  
5358          ObjC: However, don't match an Objective-C method name which
5359          may have a '+' or '-' succeeded by a '[' */
5360          
5361       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
5362                         
5363       if (default_breakpoint_valid
5364           && (!cursal.symtab
5365               || ((strchr ("+-", (*address)[0]) != NULL)
5366                   && ((*address)[1] != '['))))
5367         *sals = decode_line_1 (address, 1, default_breakpoint_symtab,
5368                                default_breakpoint_line, addr_string, 
5369                                not_found_ptr);
5370       else
5371         *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0,
5372                                addr_string, not_found_ptr);
5373     }
5374   /* For any SAL that didn't have a canonical string, fill one in. */
5375   if (sals->nelts > 0 && *addr_string == NULL)
5376     *addr_string = xcalloc (sals->nelts, sizeof (char **));
5377   if (addr_start != (*address))
5378     {
5379       int i;
5380       for (i = 0; i < sals->nelts; i++)
5381         {
5382           /* Add the string if not present. */
5383           if ((*addr_string)[i] == NULL)
5384             (*addr_string)[i] = savestring (addr_start, (*address) - addr_start);
5385         }
5386     }
5387 }
5388
5389
5390 /* Convert each SAL into a real PC.  Verify that the PC can be
5391    inserted as a breakpoint.  If it can't throw an error. */
5392
5393 static void
5394 breakpoint_sals_to_pc (struct symtabs_and_lines *sals,
5395                        char *address)
5396 {    
5397   int i;
5398   for (i = 0; i < sals->nelts; i++)
5399     resolve_sal_pc (&sals->sals[i]);
5400 }
5401
5402 static void
5403 do_captured_parse_breakpoint (struct ui_out *ui, void *data)
5404 {
5405   struct captured_parse_breakpoint_args *args = data;
5406   
5407   parse_breakpoint_sals (args->arg_p, args->sals_p, args->addr_string_p, 
5408                          args->not_found_ptr);
5409 }
5410
5411 /* Given TOK, a string specification of condition and thread, as
5412    accepted by the 'break' command, extract the condition
5413    string and thread number and set *COND_STRING and *THREAD.
5414    PC identifies the context at which the condition should be parsed.  
5415    If no condition is found, *COND_STRING is set to NULL.
5416    If no thread is found, *THREAD is set to -1.  */
5417 static void 
5418 find_condition_and_thread (char *tok, CORE_ADDR pc, 
5419                            char **cond_string, int *thread)
5420 {
5421   *cond_string = NULL;
5422   *thread = -1;
5423   while (tok && *tok)
5424     {
5425       char *end_tok;
5426       int toklen;
5427       char *cond_start = NULL;
5428       char *cond_end = NULL;
5429       while (*tok == ' ' || *tok == '\t')
5430         tok++;
5431       
5432       end_tok = tok;
5433       
5434       while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
5435         end_tok++;
5436       
5437       toklen = end_tok - tok;
5438       
5439       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
5440         {
5441           struct expression *expr;
5442
5443           tok = cond_start = end_tok + 1;
5444           expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
5445           xfree (expr);
5446           cond_end = tok;
5447           *cond_string = savestring (cond_start, 
5448                                      cond_end - cond_start);
5449         }
5450       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
5451         {
5452           char *tmptok;
5453           
5454           tok = end_tok + 1;
5455           tmptok = tok;
5456           *thread = strtol (tok, &tok, 0);
5457           if (tok == tmptok)
5458             error (_("Junk after thread keyword."));
5459           if (!valid_thread_id (*thread))
5460             error (_("Unknown thread %d."), *thread);
5461         }
5462       else
5463         error (_("Junk at end of arguments."));
5464     }
5465 }
5466
5467 /* Set a breakpoint.  This function is shared between
5468    CLI and MI functions for setting a breakpoint.
5469    This function has two major modes of operations,
5470    selected by the PARSE_CONDITION_AND_THREAD parameter.
5471    If non-zero, the function will parse arg, extracting
5472    breakpoint location, address and thread. Otherwise,
5473    ARG is just the location of breakpoint, with condition
5474    and thread specified by the COND_STRING and THREAD
5475    parameters.  */
5476
5477 static void
5478 break_command_really (char *arg, char *cond_string, int thread,
5479                       int parse_condition_and_thread,
5480                       int tempflag, int hardwareflag, 
5481                       int ignore_count,
5482                       enum auto_boolean pending_break_support,
5483                       struct breakpoint_ops *ops,
5484                       int from_tty,
5485                       int enabled)
5486 {
5487   struct gdb_exception e;
5488   struct symtabs_and_lines sals;
5489   struct symtab_and_line pending_sal;
5490   char *copy_arg;
5491   char *err_msg;
5492   char *addr_start = arg;
5493   char **addr_string;
5494   struct cleanup *old_chain;
5495   struct cleanup *breakpoint_chain = NULL;
5496   struct captured_parse_breakpoint_args parse_args;
5497   int i;
5498   int pending = 0;
5499   int not_found = 0;
5500
5501   sals.sals = NULL;
5502   sals.nelts = 0;
5503   addr_string = NULL;
5504
5505   parse_args.arg_p = &arg;
5506   parse_args.sals_p = &sals;
5507   parse_args.addr_string_p = &addr_string;
5508   parse_args.not_found_ptr = &not_found;
5509
5510   e = catch_exception (uiout, do_captured_parse_breakpoint, 
5511                        &parse_args, RETURN_MASK_ALL);
5512
5513   /* If caller is interested in rc value from parse, set value.  */
5514   switch (e.reason)
5515     {
5516     case RETURN_QUIT:
5517       throw_exception (e);
5518     case RETURN_ERROR:
5519       switch (e.error)
5520         {
5521         case NOT_FOUND_ERROR:
5522
5523           /* If pending breakpoint support is turned off, throw
5524              error.  */
5525
5526           if (pending_break_support == AUTO_BOOLEAN_FALSE)
5527             throw_exception (e);
5528
5529           exception_print (gdb_stderr, e);
5530
5531           /* If pending breakpoint support is auto query and the user
5532              selects no, then simply return the error code.  */
5533           if (pending_break_support == AUTO_BOOLEAN_AUTO && 
5534               !nquery ("Make breakpoint pending on future shared library load? "))
5535             return;
5536
5537           /* At this point, either the user was queried about setting
5538              a pending breakpoint and selected yes, or pending
5539              breakpoint behavior is on and thus a pending breakpoint
5540              is defaulted on behalf of the user.  */
5541           copy_arg = xstrdup (addr_start);
5542           addr_string = &copy_arg;
5543           sals.nelts = 1;
5544           sals.sals = &pending_sal;
5545           pending_sal.pc = 0;
5546           pending = 1;
5547           break;
5548         default:
5549           throw_exception (e);
5550         }
5551     default:
5552       if (!sals.nelts)
5553         return;
5554     }
5555
5556   /* Create a chain of things that always need to be cleaned up. */
5557   old_chain = make_cleanup (null_cleanup, 0);
5558
5559   if (!pending)
5560     {
5561       /* Make sure that all storage allocated to SALS gets freed.  */
5562       make_cleanup (xfree, sals.sals);
5563       
5564       /* Cleanup the addr_string array but not its contents. */
5565       make_cleanup (xfree, addr_string);
5566     }
5567
5568   /* ----------------------------- SNIP -----------------------------
5569      Anything added to the cleanup chain beyond this point is assumed
5570      to be part of a breakpoint.  If the breakpoint create succeeds
5571      then the memory is not reclaimed. */
5572   breakpoint_chain = make_cleanup (null_cleanup, 0);
5573
5574   /* Mark the contents of the addr_string for cleanup.  These go on
5575      the breakpoint_chain and only occure if the breakpoint create
5576      fails. */
5577   for (i = 0; i < sals.nelts; i++)
5578     {
5579       if (addr_string[i] != NULL)
5580         make_cleanup (xfree, addr_string[i]);
5581     }
5582
5583   /* Resolve all line numbers to PC's and verify that the addresses
5584      are ok for the target.  */
5585   if (!pending)
5586     breakpoint_sals_to_pc (&sals, addr_start);
5587
5588   /* Verify that condition can be parsed, before setting any
5589      breakpoints.  Allocate a separate condition expression for each
5590      breakpoint. */
5591   if (!pending)
5592     {
5593       if (parse_condition_and_thread)
5594         {
5595             /* Here we only parse 'arg' to separate condition
5596                from thread number, so parsing in context of first
5597                sal is OK.  When setting the breakpoint we'll 
5598                re-parse it in context of each sal.  */
5599             cond_string = NULL;
5600             thread = -1;
5601             find_condition_and_thread (arg, sals.sals[0].pc, &cond_string, &thread);
5602             if (cond_string)
5603                 make_cleanup (xfree, cond_string);
5604         }
5605       else
5606         {
5607             /* Create a private copy of condition string.  */
5608             if (cond_string)
5609             {
5610                 cond_string = xstrdup (cond_string);
5611                 make_cleanup (xfree, cond_string);
5612             }
5613         }
5614       create_breakpoints (sals, addr_string, cond_string,
5615                           hardwareflag ? bp_hardware_breakpoint 
5616                           : bp_breakpoint,
5617                           tempflag ? disp_del : disp_donttouch,
5618                           thread, ignore_count, ops, from_tty, enabled);
5619     }
5620   else
5621     {
5622       struct symtab_and_line sal = {0};
5623       struct breakpoint *b;
5624
5625       make_cleanup (xfree, copy_arg);
5626
5627       b = set_raw_breakpoint_without_location (hardwareflag 
5628                                                ? bp_hardware_breakpoint 
5629                                                : bp_breakpoint);
5630       set_breakpoint_count (breakpoint_count + 1);
5631       b->number = breakpoint_count;
5632       b->thread = -1;
5633       b->addr_string = addr_string[0];
5634       b->cond_string = NULL;
5635       b->ignore_count = ignore_count;
5636       b->disposition = tempflag ? disp_del : disp_donttouch;
5637       b->condition_not_parsed = 1;
5638       b->ops = ops;
5639       b->enable_state = enabled ? bp_enabled : bp_disabled;
5640
5641       update_global_location_list (1);
5642       mention (b);
5643     }
5644   
5645   if (sals.nelts > 1)
5646     warning (_("Multiple breakpoints were set.\n"
5647                "Use the \"delete\" command to delete unwanted breakpoints."));
5648   /* That's it. Discard the cleanups for data inserted into the
5649      breakpoint. */
5650   discard_cleanups (breakpoint_chain);
5651   /* But cleanup everything else. */
5652   do_cleanups (old_chain);
5653 }
5654
5655 /* Set a breakpoint. 
5656    ARG is a string describing breakpoint address,
5657    condition, and thread.
5658    FLAG specifies if a breakpoint is hardware on,
5659    and if breakpoint is temporary, using BP_HARDWARE_FLAG
5660    and BP_TEMPFLAG.  */
5661    
5662 static void
5663 break_command_1 (char *arg, int flag, int from_tty)
5664 {
5665   int hardwareflag = flag & BP_HARDWAREFLAG;
5666   int tempflag = flag & BP_TEMPFLAG;
5667
5668   break_command_really (arg, 
5669                         NULL, 0, 1 /* parse arg */,
5670                         tempflag, hardwareflag,
5671                         0 /* Ignore count */,
5672                         pending_break_support, 
5673                         NULL /* breakpoint_ops */,
5674                         from_tty,
5675                         1 /* enabled */);
5676 }
5677
5678
5679 void
5680 set_breakpoint (char *address, char *condition,
5681                 int hardwareflag, int tempflag,
5682                 int thread, int ignore_count,
5683                 int pending, int enabled)
5684 {
5685   break_command_really (address, condition, thread,
5686                         0 /* condition and thread are valid.  */,
5687                         tempflag, hardwareflag,
5688                         ignore_count,
5689                         pending 
5690                         ? AUTO_BOOLEAN_TRUE : AUTO_BOOLEAN_FALSE,
5691                         NULL, 0, enabled);
5692 }
5693
5694 /* Adjust SAL to the first instruction past the function prologue.
5695    The end of the prologue is determined using the line table from
5696    the debugging information.
5697
5698    If SAL is already past the prologue, then do nothing.  */
5699
5700 static void
5701 skip_prologue_sal (struct symtab_and_line *sal)
5702 {
5703   struct symbol *sym = find_pc_function (sal->pc);
5704   struct symtab_and_line start_sal;
5705
5706   if (sym == NULL)
5707     return;
5708
5709   start_sal = find_function_start_sal (sym, 1);
5710   if (sal->pc < start_sal.pc)
5711     *sal = start_sal;
5712 }
5713
5714 /* Helper function for break_command_1 and disassemble_command.  */
5715
5716 void
5717 resolve_sal_pc (struct symtab_and_line *sal)
5718 {
5719   CORE_ADDR pc;
5720
5721   if (sal->pc == 0 && sal->symtab != NULL)
5722     {
5723       if (!find_line_pc (sal->symtab, sal->line, &pc))
5724         error (_("No line %d in file \"%s\"."),
5725                sal->line, sal->symtab->filename);
5726       sal->pc = pc;
5727
5728       /* If this SAL corresponds to a breakpoint inserted using
5729          a line number, then skip the function prologue if necessary.  */
5730       if (sal->explicit_line)
5731         skip_prologue_sal (sal);
5732     }
5733
5734   if (sal->section == 0 && sal->symtab != NULL)
5735     {
5736       struct blockvector *bv;
5737       struct block *b;
5738       struct symbol *sym;
5739
5740       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
5741       if (bv != NULL)
5742         {
5743           sym = block_linkage_function (b);
5744           if (sym != NULL)
5745             {
5746               fixup_symbol_section (sym, sal->symtab->objfile);
5747               sal->section = SYMBOL_OBJ_SECTION (sym);
5748             }
5749           else
5750             {
5751               /* It really is worthwhile to have the section, so we'll just
5752                  have to look harder. This case can be executed if we have 
5753                  line numbers but no functions (as can happen in assembly 
5754                  source).  */
5755
5756               struct minimal_symbol *msym;
5757
5758               msym = lookup_minimal_symbol_by_pc (sal->pc);
5759               if (msym)
5760                 sal->section = SYMBOL_OBJ_SECTION (msym);
5761             }
5762         }
5763     }
5764 }
5765
5766 void
5767 break_command (char *arg, int from_tty)
5768 {
5769   break_command_1 (arg, 0, from_tty);
5770 }
5771
5772 void
5773 tbreak_command (char *arg, int from_tty)
5774 {
5775   break_command_1 (arg, BP_TEMPFLAG, from_tty);
5776 }
5777
5778 static void
5779 hbreak_command (char *arg, int from_tty)
5780 {
5781   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
5782 }
5783
5784 static void
5785 thbreak_command (char *arg, int from_tty)
5786 {
5787   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
5788 }
5789
5790 static void
5791 stop_command (char *arg, int from_tty)
5792 {
5793   printf_filtered (_("Specify the type of breakpoint to set.\n\
5794 Usage: stop in <function | address>\n\
5795        stop at <line>\n"));
5796 }
5797
5798 static void
5799 stopin_command (char *arg, int from_tty)
5800 {
5801   int badInput = 0;
5802
5803   if (arg == (char *) NULL)
5804     badInput = 1;
5805   else if (*arg != '*')
5806     {
5807       char *argptr = arg;
5808       int hasColon = 0;
5809
5810       /* look for a ':'.  If this is a line number specification, then
5811          say it is bad, otherwise, it should be an address or
5812          function/method name */
5813       while (*argptr && !hasColon)
5814         {
5815           hasColon = (*argptr == ':');
5816           argptr++;
5817         }
5818
5819       if (hasColon)
5820         badInput = (*argptr != ':');    /* Not a class::method */
5821       else
5822         badInput = isdigit (*arg);      /* a simple line number */
5823     }
5824
5825   if (badInput)
5826     printf_filtered (_("Usage: stop in <function | address>\n"));
5827   else
5828     break_command_1 (arg, 0, from_tty);
5829 }
5830
5831 static void
5832 stopat_command (char *arg, int from_tty)
5833 {
5834   int badInput = 0;
5835
5836   if (arg == (char *) NULL || *arg == '*')      /* no line number */
5837     badInput = 1;
5838   else
5839     {
5840       char *argptr = arg;
5841       int hasColon = 0;
5842
5843       /* look for a ':'.  If there is a '::' then get out, otherwise
5844          it is probably a line number. */
5845       while (*argptr && !hasColon)
5846         {
5847           hasColon = (*argptr == ':');
5848           argptr++;
5849         }
5850
5851       if (hasColon)
5852         badInput = (*argptr == ':');    /* we have class::method */
5853       else
5854         badInput = !isdigit (*arg);     /* not a line number */
5855     }
5856
5857   if (badInput)
5858     printf_filtered (_("Usage: stop at <line>\n"));
5859   else
5860     break_command_1 (arg, 0, from_tty);
5861 }
5862
5863 /* accessflag:  hw_write:  watch write, 
5864                 hw_read:   watch read, 
5865                 hw_access: watch access (read or write) */
5866 static void
5867 watch_command_1 (char *arg, int accessflag, int from_tty)
5868 {
5869   struct breakpoint *b, *scope_breakpoint = NULL;
5870   struct symtab_and_line sal;
5871   struct expression *exp;
5872   struct block *exp_valid_block;
5873   struct value *val, *mark;
5874   struct frame_info *frame;
5875   struct frame_info *prev_frame = NULL;
5876   char *exp_start = NULL;
5877   char *exp_end = NULL;
5878   char *tok, *id_tok_start, *end_tok;
5879   int toklen;
5880   char *cond_start = NULL;
5881   char *cond_end = NULL;
5882   struct expression *cond = NULL;
5883   int i, other_type_used, target_resources_ok = 0;
5884   enum bptype bp_type;
5885   int mem_cnt = 0;
5886   int thread = -1;
5887
5888   init_sal (&sal);              /* initialize to zeroes */
5889
5890   /* Make sure that we actually have parameters to parse.  */
5891   if (arg != NULL && arg[0] != '\0')
5892     {
5893       toklen = strlen (arg); /* Size of argument list.  */
5894
5895       /* Points tok to the end of the argument list.  */
5896       tok = arg + toklen - 1;
5897
5898       /* Go backwards in the parameters list. Skip the last parameter.
5899          If we're expecting a 'thread <thread_num>' parameter, this should
5900          be the thread identifier.  */
5901       while (tok > arg && (*tok == ' ' || *tok == '\t'))
5902         tok--;
5903       while (tok > arg && (*tok != ' ' && *tok != '\t'))
5904         tok--;
5905
5906       /* Points end_tok to the beginning of the last token.  */
5907       id_tok_start = tok + 1;
5908
5909       /* Go backwards in the parameters list. Skip one more parameter.
5910          If we're expecting a 'thread <thread_num>' parameter, we should
5911          reach a "thread" token.  */
5912       while (tok > arg && (*tok == ' ' || *tok == '\t'))
5913         tok--;
5914
5915       end_tok = tok;
5916
5917       while (tok > arg && (*tok != ' ' && *tok != '\t'))
5918         tok--;
5919
5920       /* Move the pointer forward to skip the whitespace and
5921          calculate the length of the token.  */
5922       tok++;
5923       toklen = end_tok - tok;
5924
5925       if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
5926         {
5927           /* At this point we've found a "thread" token, which means
5928              the user is trying to set a watchpoint that triggers
5929              only in a specific thread.  */
5930           char *endp;
5931
5932           /* Extract the thread ID from the next token.  */
5933           thread = strtol (id_tok_start, &endp, 0);
5934
5935           /* Check if the user provided a valid numeric value for the
5936              thread ID.  */
5937           if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5938             error (_("Invalid thread ID specification %s."), id_tok_start);
5939
5940           /* Check if the thread actually exists.  */
5941           if (!valid_thread_id (thread))
5942             error (_("Unknown thread %d."), thread);
5943
5944           /* Truncate the string and get rid of the thread <thread_num>
5945              parameter before the parameter list is parsed by the
5946              evaluate_expression() function.  */
5947           *tok = '\0';
5948         }
5949     }
5950
5951   /* Parse the rest of the arguments.  */
5952   innermost_block = NULL;
5953   exp_start = arg;
5954   exp = parse_exp_1 (&arg, 0, 0);
5955   exp_end = arg;
5956   /* Remove trailing whitespace from the expression before saving it.
5957      This makes the eventual display of the expression string a bit
5958      prettier.  */
5959   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
5960     --exp_end;
5961
5962   exp_valid_block = innermost_block;
5963   mark = value_mark ();
5964   fetch_watchpoint_value (exp, &val, NULL, NULL);
5965   if (val != NULL)
5966     release_value (val);
5967
5968   tok = arg;
5969   while (*tok == ' ' || *tok == '\t')
5970     tok++;
5971   end_tok = tok;
5972
5973   while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
5974     end_tok++;
5975
5976   toklen = end_tok - tok;
5977   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
5978     {
5979       tok = cond_start = end_tok + 1;
5980       cond = parse_exp_1 (&tok, 0, 0);
5981       cond_end = tok;
5982     }
5983   if (*tok)
5984     error (_("Junk at end of command."));
5985
5986   if (accessflag == hw_read)
5987     bp_type = bp_read_watchpoint;
5988   else if (accessflag == hw_access)
5989     bp_type = bp_access_watchpoint;
5990   else
5991     bp_type = bp_hardware_watchpoint;
5992
5993   mem_cnt = can_use_hardware_watchpoint (val);
5994   if (mem_cnt == 0 && bp_type != bp_hardware_watchpoint)
5995     error (_("Expression cannot be implemented with read/access watchpoint."));
5996   if (mem_cnt != 0)
5997     {
5998       i = hw_watchpoint_used_count (bp_type, &other_type_used);
5999       target_resources_ok = 
6000         TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_type, i + mem_cnt, 
6001                                             other_type_used);
6002       if (target_resources_ok == 0 && bp_type != bp_hardware_watchpoint)
6003         error (_("Target does not support this type of hardware watchpoint."));
6004
6005       if (target_resources_ok < 0 && bp_type != bp_hardware_watchpoint)
6006         error (_("Target can only support one kind of HW watchpoint at a time."));
6007     }
6008
6009   /* Change the type of breakpoint to an ordinary watchpoint if a hardware
6010      watchpoint could not be set.  */
6011   if (!mem_cnt || target_resources_ok <= 0)
6012     bp_type = bp_watchpoint;
6013
6014   frame = block_innermost_frame (exp_valid_block);
6015   if (frame)
6016     prev_frame = get_prev_frame (frame);
6017   else
6018     prev_frame = NULL;
6019
6020   /* If the expression is "local", then set up a "watchpoint scope"
6021      breakpoint at the point where we've left the scope of the watchpoint
6022      expression.  Create the scope breakpoint before the watchpoint, so
6023      that we will encounter it first in bpstat_stop_status.  */
6024   if (innermost_block && prev_frame)
6025     {
6026       scope_breakpoint = create_internal_breakpoint (get_frame_pc (prev_frame),
6027                                                      bp_watchpoint_scope);
6028
6029       scope_breakpoint->enable_state = bp_enabled;
6030
6031       /* Automatically delete the breakpoint when it hits.  */
6032       scope_breakpoint->disposition = disp_del;
6033
6034       /* Only break in the proper frame (help with recursion).  */
6035       scope_breakpoint->frame_id = get_frame_id (prev_frame);
6036
6037       /* Set the address at which we will stop.  */
6038       scope_breakpoint->loc->requested_address
6039         = get_frame_pc (prev_frame);
6040       scope_breakpoint->loc->address
6041         = adjust_breakpoint_address (scope_breakpoint->loc->requested_address,
6042                                      scope_breakpoint->type);
6043     }
6044
6045   /* Now set up the breakpoint.  */
6046   b = set_raw_breakpoint (sal, bp_type);
6047   set_breakpoint_count (breakpoint_count + 1);
6048   b->number = breakpoint_count;
6049   b->thread = thread;
6050   b->disposition = disp_donttouch;
6051   b->exp = exp;
6052   b->exp_valid_block = exp_valid_block;
6053   b->exp_string = savestring (exp_start, exp_end - exp_start);
6054   b->val = val;
6055   b->val_valid = 1;
6056   b->loc->cond = cond;
6057   if (cond_start)
6058     b->cond_string = savestring (cond_start, cond_end - cond_start);
6059   else
6060     b->cond_string = 0;
6061
6062   if (frame)
6063     b->watchpoint_frame = get_frame_id (frame);
6064   else
6065     b->watchpoint_frame = null_frame_id;
6066
6067   if (scope_breakpoint != NULL)
6068     {
6069       /* The scope breakpoint is related to the watchpoint.  We will
6070          need to act on them together.  */
6071       b->related_breakpoint = scope_breakpoint;
6072       scope_breakpoint->related_breakpoint = b;
6073     }
6074
6075   value_free_to_mark (mark);
6076   mention (b);
6077   update_global_location_list (1);
6078 }
6079
6080 /* Return count of locations need to be watched and can be handled
6081    in hardware.  If the watchpoint can not be handled
6082    in hardware return zero.  */
6083
6084 static int
6085 can_use_hardware_watchpoint (struct value *v)
6086 {
6087   int found_memory_cnt = 0;
6088   struct value *head = v;
6089
6090   /* Did the user specifically forbid us to use hardware watchpoints? */
6091   if (!can_use_hw_watchpoints)
6092     return 0;
6093
6094   /* Make sure that the value of the expression depends only upon
6095      memory contents, and values computed from them within GDB.  If we
6096      find any register references or function calls, we can't use a
6097      hardware watchpoint.
6098
6099      The idea here is that evaluating an expression generates a series
6100      of values, one holding the value of every subexpression.  (The
6101      expression a*b+c has five subexpressions: a, b, a*b, c, and
6102      a*b+c.)  GDB's values hold almost enough information to establish
6103      the criteria given above --- they identify memory lvalues,
6104      register lvalues, computed values, etcetera.  So we can evaluate
6105      the expression, and then scan the chain of values that leaves
6106      behind to decide whether we can detect any possible change to the
6107      expression's final value using only hardware watchpoints.
6108
6109      However, I don't think that the values returned by inferior
6110      function calls are special in any way.  So this function may not
6111      notice that an expression involving an inferior function call
6112      can't be watched with hardware watchpoints.  FIXME.  */
6113   for (; v; v = value_next (v))
6114     {
6115       if (VALUE_LVAL (v) == lval_memory)
6116         {
6117           if (value_lazy (v))
6118             /* A lazy memory lvalue is one that GDB never needed to fetch;
6119                we either just used its address (e.g., `a' in `a.b') or
6120                we never needed it at all (e.g., `a' in `a,b').  */
6121             ;
6122           else
6123             {
6124               /* Ahh, memory we actually used!  Check if we can cover
6125                  it with hardware watchpoints.  */
6126               struct type *vtype = check_typedef (value_type (v));
6127
6128               /* We only watch structs and arrays if user asked for it
6129                  explicitly, never if they just happen to appear in a
6130                  middle of some value chain.  */
6131               if (v == head
6132                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
6133                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
6134                 {
6135                   CORE_ADDR vaddr = VALUE_ADDRESS (v) + value_offset (v);
6136                   int       len   = TYPE_LENGTH (value_type (v));
6137
6138                   if (!TARGET_REGION_OK_FOR_HW_WATCHPOINT (vaddr, len))
6139                     return 0;
6140                   else
6141                     found_memory_cnt++;
6142                 }
6143             }
6144         }
6145       else if (VALUE_LVAL (v) != not_lval
6146                && deprecated_value_modifiable (v) == 0)
6147         return 0;       /* ??? What does this represent? */
6148       else if (VALUE_LVAL (v) == lval_register)
6149         return 0;       /* cannot watch a register with a HW watchpoint */
6150     }
6151
6152   /* The expression itself looks suitable for using a hardware
6153      watchpoint, but give the target machine a chance to reject it.  */
6154   return found_memory_cnt;
6155 }
6156
6157 void
6158 watch_command_wrapper (char *arg, int from_tty)
6159 {
6160   watch_command (arg, from_tty);
6161 }
6162
6163 static void
6164 watch_command (char *arg, int from_tty)
6165 {
6166   watch_command_1 (arg, hw_write, from_tty);
6167 }
6168
6169 void
6170 rwatch_command_wrapper (char *arg, int from_tty)
6171 {
6172   rwatch_command (arg, from_tty);
6173 }
6174
6175 static void
6176 rwatch_command (char *arg, int from_tty)
6177 {
6178   watch_command_1 (arg, hw_read, from_tty);
6179 }
6180
6181 void
6182 awatch_command_wrapper (char *arg, int from_tty)
6183 {
6184   awatch_command (arg, from_tty);
6185 }
6186
6187 static void
6188 awatch_command (char *arg, int from_tty)
6189 {
6190   watch_command_1 (arg, hw_access, from_tty);
6191 }
6192 \f
6193
6194 /* Helper routines for the until_command routine in infcmd.c.  Here
6195    because it uses the mechanisms of breakpoints.  */
6196
6197 struct until_break_command_continuation_args
6198 {
6199   struct breakpoint *breakpoint;
6200   struct breakpoint *breakpoint2;
6201 };
6202
6203 /* This function is called by fetch_inferior_event via the
6204    cmd_continuation pointer, to complete the until command. It takes
6205    care of cleaning up the temporary breakpoints set up by the until
6206    command. */
6207 static void
6208 until_break_command_continuation (void *arg)
6209 {
6210   struct until_break_command_continuation_args *a = arg;
6211
6212   delete_breakpoint (a->breakpoint);
6213   if (a->breakpoint2)
6214     delete_breakpoint (a->breakpoint2);
6215 }
6216
6217 void
6218 until_break_command (char *arg, int from_tty, int anywhere)
6219 {
6220   struct symtabs_and_lines sals;
6221   struct symtab_and_line sal;
6222   struct frame_info *frame = get_selected_frame (NULL);
6223   struct frame_info *prev_frame = get_prev_frame (frame);
6224   struct breakpoint *breakpoint;
6225   struct breakpoint *breakpoint2 = NULL;
6226   struct cleanup *old_chain;
6227
6228   clear_proceed_status ();
6229
6230   /* Set a breakpoint where the user wants it and at return from
6231      this function */
6232
6233   if (default_breakpoint_valid)
6234     sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
6235                           default_breakpoint_line, (char ***) NULL, NULL);
6236   else
6237     sals = decode_line_1 (&arg, 1, (struct symtab *) NULL, 
6238                           0, (char ***) NULL, NULL);
6239
6240   if (sals.nelts != 1)
6241     error (_("Couldn't get information on specified line."));
6242
6243   sal = sals.sals[0];
6244   xfree (sals.sals);    /* malloc'd, so freed */
6245
6246   if (*arg)
6247     error (_("Junk at end of arguments."));
6248
6249   resolve_sal_pc (&sal);
6250
6251   if (anywhere)
6252     /* If the user told us to continue until a specified location,
6253        we don't specify a frame at which we need to stop.  */
6254     breakpoint = set_momentary_breakpoint (sal, null_frame_id, bp_until);
6255   else
6256     /* Otherwise, specify the current frame, because we want to stop only
6257        at the very same frame.  */
6258     breakpoint = set_momentary_breakpoint (sal, get_frame_id (frame),
6259                                            bp_until);
6260
6261   old_chain = make_cleanup_delete_breakpoint (breakpoint);
6262
6263   /* Keep within the current frame, or in frames called by the current
6264      one.  */
6265   if (prev_frame)
6266     {
6267       sal = find_pc_line (get_frame_pc (prev_frame), 0);
6268       sal.pc = get_frame_pc (prev_frame);
6269       breakpoint2 = set_momentary_breakpoint (sal, get_frame_id (prev_frame),
6270                                               bp_until);
6271       make_cleanup_delete_breakpoint (breakpoint2);
6272     }
6273
6274   proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
6275
6276   /* If we are running asynchronously, and proceed call above has actually
6277      managed to start the target, arrange for breakpoints to be
6278      deleted when the target stops.  Otherwise, we're already stopped and
6279      delete breakpoints via cleanup chain.  */
6280
6281   if (target_can_async_p () && is_running (inferior_ptid))
6282     {
6283       struct until_break_command_continuation_args *args;
6284       args = xmalloc (sizeof (*args));
6285
6286       args->breakpoint = breakpoint;
6287       args->breakpoint2 = breakpoint2;
6288
6289       discard_cleanups (old_chain);
6290       add_continuation (inferior_thread (),
6291                         until_break_command_continuation, args,
6292                         xfree);
6293     }
6294   else
6295     do_cleanups (old_chain);
6296 }
6297
6298 static void
6299 ep_skip_leading_whitespace (char **s)
6300 {
6301   if ((s == NULL) || (*s == NULL))
6302     return;
6303   while (isspace (**s))
6304     *s += 1;
6305 }
6306
6307 /* This function attempts to parse an optional "if <cond>" clause
6308    from the arg string.  If one is not found, it returns NULL.
6309
6310    Else, it returns a pointer to the condition string.  (It does not
6311    attempt to evaluate the string against a particular block.)  And,
6312    it updates arg to point to the first character following the parsed
6313    if clause in the arg string. */
6314
6315 static char *
6316 ep_parse_optional_if_clause (char **arg)
6317 {
6318   char *cond_string;
6319
6320   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
6321     return NULL;
6322
6323   /* Skip the "if" keyword. */
6324   (*arg) += 2;
6325
6326   /* Skip any extra leading whitespace, and record the start of the
6327      condition string. */
6328   ep_skip_leading_whitespace (arg);
6329   cond_string = *arg;
6330
6331   /* Assume that the condition occupies the remainder of the arg string. */
6332   (*arg) += strlen (cond_string);
6333
6334   return cond_string;
6335 }
6336
6337 /* This function attempts to parse an optional filename from the arg
6338    string.  If one is not found, it returns NULL.
6339
6340    Else, it returns a pointer to the parsed filename.  (This function
6341    makes no attempt to verify that a file of that name exists, or is
6342    accessible.)  And, it updates arg to point to the first character
6343    following the parsed filename in the arg string.
6344
6345    Note that clients needing to preserve the returned filename for
6346    future access should copy it to their own buffers. */
6347 static char *
6348 ep_parse_optional_filename (char **arg)
6349 {
6350   static char filename[1024];
6351   char *arg_p = *arg;
6352   int i;
6353   char c;
6354
6355   if ((*arg_p == '\0') || isspace (*arg_p))
6356     return NULL;
6357
6358   for (i = 0;; i++)
6359     {
6360       c = *arg_p;
6361       if (isspace (c))
6362         c = '\0';
6363       filename[i] = c;
6364       if (c == '\0')
6365         break;
6366       arg_p++;
6367     }
6368   *arg = arg_p;
6369
6370   return filename;
6371 }
6372
6373 /* Commands to deal with catching events, such as signals, exceptions,
6374    process start/exit, etc.  */
6375
6376 typedef enum
6377 {
6378   catch_fork_temporary, catch_vfork_temporary,
6379   catch_fork_permanent, catch_vfork_permanent
6380 }
6381 catch_fork_kind;
6382
6383 static void
6384 catch_fork_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
6385 {
6386   char *cond_string = NULL;
6387   catch_fork_kind fork_kind;
6388   int tempflag;
6389
6390   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
6391   tempflag = (fork_kind == catch_fork_temporary
6392               || fork_kind == catch_vfork_temporary);
6393
6394   if (!arg)
6395     arg = "";
6396   ep_skip_leading_whitespace (&arg);
6397
6398   /* The allowed syntax is:
6399      catch [v]fork
6400      catch [v]fork if <cond>
6401
6402      First, check if there's an if clause. */
6403   cond_string = ep_parse_optional_if_clause (&arg);
6404
6405   if ((*arg != '\0') && !isspace (*arg))
6406     error (_("Junk at end of arguments."));
6407
6408   /* If this target supports it, create a fork or vfork catchpoint
6409      and enable reporting of such events. */
6410   switch (fork_kind)
6411     {
6412     case catch_fork_temporary:
6413     case catch_fork_permanent:
6414       create_fork_vfork_event_catchpoint (tempflag, cond_string,
6415                                           &catch_fork_breakpoint_ops);
6416       break;
6417     case catch_vfork_temporary:
6418     case catch_vfork_permanent:
6419       create_fork_vfork_event_catchpoint (tempflag, cond_string,
6420                                           &catch_vfork_breakpoint_ops);
6421       break;
6422     default:
6423       error (_("unsupported or unknown fork kind; cannot catch it"));
6424       break;
6425     }
6426 }
6427
6428 static void
6429 catch_exec_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
6430 {
6431   int tempflag;
6432   char *cond_string = NULL;
6433
6434   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6435
6436   if (!arg)
6437     arg = "";
6438   ep_skip_leading_whitespace (&arg);
6439
6440   /* The allowed syntax is:
6441      catch exec
6442      catch exec if <cond>
6443
6444      First, check if there's an if clause. */
6445   cond_string = ep_parse_optional_if_clause (&arg);
6446
6447   if ((*arg != '\0') && !isspace (*arg))
6448     error (_("Junk at end of arguments."));
6449
6450   /* If this target supports it, create an exec catchpoint
6451      and enable reporting of such events. */
6452   create_catchpoint (tempflag, cond_string, &catch_exec_breakpoint_ops);
6453 }
6454
6455 static enum print_stop_action
6456 print_exception_catchpoint (struct breakpoint *b)
6457 {
6458   int bp_temp, bp_throw;
6459
6460   annotate_catchpoint (b->number);
6461
6462   bp_throw = strstr (b->addr_string, "throw") != NULL;
6463   if (b->loc->address != b->loc->requested_address)
6464     breakpoint_adjustment_warning (b->loc->requested_address,
6465                                    b->loc->address,
6466                                    b->number, 1);
6467   bp_temp = b->loc->owner->disposition == disp_del;
6468   ui_out_text (uiout, 
6469                bp_temp ? "Temporary catchpoint "
6470                        : "Catchpoint ");
6471   if (!ui_out_is_mi_like_p (uiout))
6472     ui_out_field_int (uiout, "bkptno", b->number);
6473   ui_out_text (uiout,
6474                bp_throw ? " (exception thrown), "
6475                         : " (exception caught), ");
6476   if (ui_out_is_mi_like_p (uiout))
6477     {
6478       ui_out_field_string (uiout, "reason", 
6479                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
6480       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6481       ui_out_field_int (uiout, "bkptno", b->number);
6482     }
6483   return PRINT_SRC_AND_LOC;
6484 }
6485
6486 static void
6487 print_one_exception_catchpoint (struct breakpoint *b, CORE_ADDR *last_addr)
6488 {
6489   struct value_print_options opts;
6490   get_user_print_options (&opts);
6491   if (opts.addressprint)
6492     {
6493       annotate_field (4);
6494       if (b->loc == NULL || b->loc->shlib_disabled)
6495         ui_out_field_string (uiout, "addr", "<PENDING>");
6496       else
6497         ui_out_field_core_addr (uiout, "addr", b->loc->address);
6498     }
6499   annotate_field (5);
6500   if (b->loc)
6501     *last_addr = b->loc->address;
6502   if (strstr (b->addr_string, "throw") != NULL)
6503     ui_out_field_string (uiout, "what", "exception throw");
6504   else
6505     ui_out_field_string (uiout, "what", "exception catch");
6506 }
6507
6508 static void
6509 print_mention_exception_catchpoint (struct breakpoint *b)
6510 {
6511   int bp_temp;
6512   int bp_throw;
6513
6514   bp_temp = b->loc->owner->disposition == disp_del;
6515   bp_throw = strstr (b->addr_string, "throw") != NULL;
6516   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
6517                               : _("Catchpoint "));
6518   ui_out_field_int (uiout, "bkptno", b->number);
6519   ui_out_text (uiout, bp_throw ? _(" (throw)")
6520                                : _(" (catch)"));
6521 }
6522
6523 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = {
6524   NULL, /* insert */
6525   NULL, /* remove */
6526   NULL, /* breakpoint_hit */
6527   print_exception_catchpoint,
6528   print_one_exception_catchpoint,
6529   print_mention_exception_catchpoint
6530 };
6531
6532 static int
6533 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
6534                           enum exception_event_kind ex_event, int from_tty)
6535 {
6536   char *trigger_func_name;
6537  
6538   if (ex_event == EX_EVENT_CATCH)
6539     trigger_func_name = "__cxa_begin_catch";
6540   else
6541     trigger_func_name = "__cxa_throw";
6542
6543   break_command_really (trigger_func_name, cond_string, -1,
6544                         0 /* condition and thread are valid.  */,
6545                         tempflag, 0,
6546                         0,
6547                         AUTO_BOOLEAN_TRUE /* pending */,
6548                         &gnu_v3_exception_catchpoint_ops, from_tty,
6549                         1 /* enabled */);
6550
6551   return 1;
6552 }
6553
6554 /* Deal with "catch catch" and "catch throw" commands */
6555
6556 static void
6557 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
6558                            int tempflag, int from_tty)
6559 {
6560   char *cond_string = NULL;
6561   struct symtab_and_line *sal = NULL;
6562
6563   if (!arg)
6564     arg = "";
6565   ep_skip_leading_whitespace (&arg);
6566
6567   cond_string = ep_parse_optional_if_clause (&arg);
6568
6569   if ((*arg != '\0') && !isspace (*arg))
6570     error (_("Junk at end of arguments."));
6571
6572   if ((ex_event != EX_EVENT_THROW) &&
6573       (ex_event != EX_EVENT_CATCH))
6574     error (_("Unsupported or unknown exception event; cannot catch it"));
6575
6576   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
6577     return;
6578
6579   warning (_("Unsupported with this platform/compiler combination."));
6580 }
6581
6582 /* Implementation of "catch catch" command.  */
6583
6584 static void
6585 catch_catch_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_CATCH, arg, tempflag, from_tty);
6589 }
6590
6591 /* Implementation of "catch throw" command.  */
6592
6593 static void
6594 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
6595 {
6596   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6597   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
6598 }
6599
6600 /* Create a breakpoint struct for Ada exception catchpoints.  */
6601
6602 static void
6603 create_ada_exception_breakpoint (struct symtab_and_line sal,
6604                                  char *addr_string,
6605                                  char *exp_string,
6606                                  char *cond_string,
6607                                  struct expression *cond,
6608                                  struct breakpoint_ops *ops,
6609                                  int tempflag,
6610                                  int from_tty)
6611 {
6612   struct breakpoint *b;
6613
6614   if (from_tty)
6615     {
6616       describe_other_breakpoints (sal.pc, sal.section, -1);
6617       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
6618          version for exception catchpoints, because two catchpoints
6619          used for different exception names will use the same address.
6620          In this case, a "breakpoint ... also set at..." warning is
6621          unproductive.  Besides. the warning phrasing is also a bit
6622          inapropriate, we should use the word catchpoint, and tell
6623          the user what type of catchpoint it is.  The above is good
6624          enough for now, though.  */
6625     }
6626
6627   b = set_raw_breakpoint (sal, bp_breakpoint);
6628   set_breakpoint_count (breakpoint_count + 1);
6629
6630   b->enable_state = bp_enabled;
6631   b->disposition = tempflag ? disp_del : disp_donttouch;
6632   b->number = breakpoint_count;
6633   b->ignore_count = 0;
6634   b->loc->cond = cond;
6635   b->addr_string = addr_string;
6636   b->language = language_ada;
6637   b->cond_string = cond_string;
6638   b->exp_string = exp_string;
6639   b->thread = -1;
6640   b->ops = ops;
6641
6642   mention (b);
6643   update_global_location_list (1);
6644 }
6645
6646 /* Implement the "catch exception" command.  */
6647
6648 static void
6649 catch_ada_exception_command (char *arg, int from_tty,
6650                              struct cmd_list_element *command)
6651 {
6652   int tempflag;
6653   struct symtab_and_line sal;
6654   enum bptype type;
6655   char *addr_string = NULL;
6656   char *exp_string = NULL;
6657   char *cond_string = NULL;
6658   struct expression *cond = NULL;
6659   struct breakpoint_ops *ops = NULL;
6660
6661   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6662
6663   if (!arg)
6664     arg = "";
6665   sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
6666                                        &cond_string, &cond, &ops);
6667   create_ada_exception_breakpoint (sal, addr_string, exp_string,
6668                                    cond_string, cond, ops, tempflag,
6669                                    from_tty);
6670 }
6671
6672 /* Implement the "catch assert" command.  */
6673
6674 static void
6675 catch_assert_command (char *arg, int from_tty, struct cmd_list_element *command)
6676 {
6677   int tempflag;
6678   struct symtab_and_line sal;
6679   char *addr_string = NULL;
6680   struct breakpoint_ops *ops = NULL;
6681
6682   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6683
6684   if (!arg)
6685     arg = "";
6686   sal = ada_decode_assert_location (arg, &addr_string, &ops);
6687   create_ada_exception_breakpoint (sal, addr_string, NULL, NULL, NULL, ops,
6688                                    tempflag, from_tty);
6689 }
6690
6691 static void
6692 catch_command (char *arg, int from_tty)
6693 {
6694   error (_("Catch requires an event name."));
6695 }
6696 \f
6697
6698 static void
6699 tcatch_command (char *arg, int from_tty)
6700 {
6701   error (_("Catch requires an event name."));
6702 }
6703
6704 /* Delete breakpoints by address or line.  */
6705
6706 static void
6707 clear_command (char *arg, int from_tty)
6708 {
6709   struct breakpoint *b;
6710   VEC(breakpoint_p) *found = 0;
6711   int ix;
6712   int default_match;
6713   struct symtabs_and_lines sals;
6714   struct symtab_and_line sal;
6715   int i;
6716
6717   if (arg)
6718     {
6719       sals = decode_line_spec (arg, 1);
6720       default_match = 0;
6721     }
6722   else
6723     {
6724       sals.sals = (struct symtab_and_line *)
6725         xmalloc (sizeof (struct symtab_and_line));
6726       make_cleanup (xfree, sals.sals);
6727       init_sal (&sal);          /* initialize to zeroes */
6728       sal.line = default_breakpoint_line;
6729       sal.symtab = default_breakpoint_symtab;
6730       sal.pc = default_breakpoint_address;
6731       if (sal.symtab == 0)
6732         error (_("No source file specified."));
6733
6734       sals.sals[0] = sal;
6735       sals.nelts = 1;
6736
6737       default_match = 1;
6738     }
6739
6740   /* We don't call resolve_sal_pc here. That's not
6741      as bad as it seems, because all existing breakpoints
6742      typically have both file/line and pc set.  So, if
6743      clear is given file/line, we can match this to existing
6744      breakpoint without obtaining pc at all.
6745
6746      We only support clearing given the address explicitly 
6747      present in breakpoint table.  Say, we've set breakpoint 
6748      at file:line. There were several PC values for that file:line,
6749      due to optimization, all in one block.
6750      We've picked one PC value. If "clear" is issued with another
6751      PC corresponding to the same file:line, the breakpoint won't
6752      be cleared.  We probably can still clear the breakpoint, but 
6753      since the other PC value is never presented to user, user
6754      can only find it by guessing, and it does not seem important
6755      to support that.  */
6756
6757   /* For each line spec given, delete bps which correspond
6758      to it.  Do it in two passes, solely to preserve the current
6759      behavior that from_tty is forced true if we delete more than
6760      one breakpoint.  */
6761
6762   found = NULL;
6763   for (i = 0; i < sals.nelts; i++)
6764     {
6765       /* If exact pc given, clear bpts at that pc.
6766          If line given (pc == 0), clear all bpts on specified line.
6767          If defaulting, clear all bpts on default line
6768          or at default pc.
6769
6770          defaulting    sal.pc != 0    tests to do
6771
6772          0              1             pc
6773          1              1             pc _and_ line
6774          0              0             line
6775          1              0             <can't happen> */
6776
6777       sal = sals.sals[i];
6778
6779       /* Find all matching breakpoints and add them to
6780          'found'.  */
6781       ALL_BREAKPOINTS (b)
6782         {
6783           int match = 0;
6784           /* Are we going to delete b? */
6785           if (b->type != bp_none
6786               && b->type != bp_watchpoint
6787               && b->type != bp_hardware_watchpoint
6788               && b->type != bp_read_watchpoint
6789               && b->type != bp_access_watchpoint)
6790             {
6791               struct bp_location *loc = b->loc;
6792               for (; loc; loc = loc->next)
6793                 {
6794                   int pc_match = sal.pc 
6795                     && (loc->address == sal.pc)
6796                     && (!section_is_overlay (loc->section)
6797                         || loc->section == sal.section);
6798                   int line_match = ((default_match || (0 == sal.pc))
6799                                     && b->source_file != NULL
6800                                     && sal.symtab != NULL
6801                                     && strcmp (b->source_file, sal.symtab->filename) == 0
6802                                     && b->line_number == sal.line);
6803                   if (pc_match || line_match)
6804                     {
6805                       match = 1;
6806                       break;
6807                     }
6808                 }
6809             }
6810
6811           if (match)
6812             VEC_safe_push(breakpoint_p, found, b);
6813         }
6814     }
6815   /* Now go thru the 'found' chain and delete them.  */
6816   if (VEC_empty(breakpoint_p, found))
6817     {
6818       if (arg)
6819         error (_("No breakpoint at %s."), arg);
6820       else
6821         error (_("No breakpoint at this line."));
6822     }
6823
6824   if (VEC_length(breakpoint_p, found) > 1)
6825     from_tty = 1;               /* Always report if deleted more than one */
6826   if (from_tty)
6827     {
6828       if (VEC_length(breakpoint_p, found) == 1)
6829         printf_unfiltered (_("Deleted breakpoint "));
6830       else
6831         printf_unfiltered (_("Deleted breakpoints "));
6832     }
6833   breakpoints_changed ();
6834
6835   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
6836     {
6837       if (from_tty)
6838         printf_unfiltered ("%d ", b->number);
6839       delete_breakpoint (b);
6840     }
6841   if (from_tty)
6842     putchar_unfiltered ('\n');
6843 }
6844 \f
6845 /* Delete breakpoint in BS if they are `delete' breakpoints and
6846    all breakpoints that are marked for deletion, whether hit or not.
6847    This is called after any breakpoint is hit, or after errors.  */
6848
6849 void
6850 breakpoint_auto_delete (bpstat bs)
6851 {
6852   struct breakpoint *b, *temp;
6853
6854   for (; bs; bs = bs->next)
6855     if (bs->breakpoint_at 
6856         && bs->breakpoint_at->owner
6857         && bs->breakpoint_at->owner->disposition == disp_del
6858         && bs->stop)
6859       delete_breakpoint (bs->breakpoint_at->owner);
6860
6861   ALL_BREAKPOINTS_SAFE (b, temp)
6862   {
6863     if (b->disposition == disp_del_at_next_stop)
6864       delete_breakpoint (b);
6865   }
6866 }
6867
6868 /* A cleanup function which destroys a vector.  */
6869
6870 static void
6871 do_vec_free (void *p)
6872 {
6873   VEC(bp_location_p) **vec = p;
6874   if (*vec)
6875     VEC_free (bp_location_p, *vec);
6876 }
6877
6878 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
6879    into the inferior, only remove already-inserted locations that no
6880    longer should be inserted.  Functions that delete a breakpoint or
6881    breakpoints should pass false, so that deleting a breakpoint
6882    doesn't have the side effect of inserting the locations of other
6883    breakpoints that are marked not-inserted, but should_be_inserted
6884    returns true on them.
6885
6886    This behaviour is useful is situations close to tear-down -- e.g.,
6887    after an exec, while the target still has execution, but breakpoint
6888    shadows of the previous executable image should *NOT* be restored
6889    to the new image; or before detaching, where the target still has
6890    execution and wants to delete breakpoints from GDB's lists, and all
6891    breakpoints had already been removed from the inferior.  */
6892
6893 static void
6894 update_global_location_list (int should_insert)
6895 {
6896   struct breakpoint *b;
6897   struct bp_location **next = &bp_location_chain;
6898   struct bp_location *loc;
6899   struct bp_location *loc2;
6900   VEC(bp_location_p) *old_locations = NULL;
6901   int ret;
6902   int ix;
6903   struct cleanup *cleanups;
6904
6905   cleanups = make_cleanup (do_vec_free, &old_locations);
6906   /* Store old locations for future reference.  */
6907   for (loc = bp_location_chain; loc; loc = loc->global_next)
6908     VEC_safe_push (bp_location_p, old_locations, loc);
6909
6910   bp_location_chain = NULL;
6911   ALL_BREAKPOINTS (b)
6912     {
6913       for (loc = b->loc; loc; loc = loc->next)
6914         {
6915           *next = loc;
6916           next = &(loc->global_next);
6917           *next = NULL;
6918         }
6919     }
6920
6921   /* Identify bp_location instances that are no longer present in the new
6922      list, and therefore should be freed.  Note that it's not necessary that
6923      those locations should be removed from inferior -- if there's another
6924      location at the same address (previously marked as duplicate),
6925      we don't need to remove/insert the location.  */
6926   for (ix = 0; VEC_iterate(bp_location_p, old_locations, ix, loc); ++ix)
6927     {
6928       /* Tells if 'loc' is found amoung the new locations.  If not, we
6929          have to free it.  */
6930       int found_object = 0;
6931       /* Tells if the location should remain inserted in the target.  */
6932       int keep_in_target = 0;
6933       int removed = 0;
6934       for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
6935         if (loc2 == loc)
6936           {
6937             found_object = 1;
6938             break;
6939           }
6940
6941       /* If this location is no longer present, and inserted, look if there's
6942          maybe a new location at the same address.  If so, mark that one 
6943          inserted, and don't remove this one.  This is needed so that we 
6944          don't have a time window where a breakpoint at certain location is not
6945          inserted.  */
6946
6947       if (loc->inserted)
6948         {
6949           /* If the location is inserted now, we might have to remove it.  */
6950
6951           if (found_object && should_be_inserted (loc))
6952             {
6953               /* The location is still present in the location list, and still
6954                  should be inserted.  Don't do anything.  */
6955               keep_in_target = 1;
6956             }
6957           else
6958             {
6959               /* The location is either no longer present, or got disabled.
6960                  See if there's another location at the same address, in which 
6961                  case we don't need to remove this one from the target.  */
6962               if (breakpoint_address_is_meaningful (loc->owner))
6963                 for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
6964                   {
6965                     /* For the sake of should_insert_location.  The
6966                        call to check_duplicates will fix up this later.  */
6967                     loc2->duplicate = 0;
6968                     if (should_be_inserted (loc2)
6969                         && loc2 != loc && loc2->address == loc->address)
6970                       {           
6971                         loc2->inserted = 1;
6972                         loc2->target_info = loc->target_info;
6973                         keep_in_target = 1;
6974                         break;
6975                       }
6976                   }
6977             }
6978
6979           if (!keep_in_target)
6980             {
6981               if (remove_breakpoint (loc, mark_uninserted))
6982                 {
6983                   /* This is just about all we can do.  We could keep this
6984                      location on the global list, and try to remove it next
6985                      time, but there's no particular reason why we will
6986                      succeed next time.  
6987                      
6988                      Note that at this point, loc->owner is still valid,
6989                      as delete_breakpoint frees the breakpoint only
6990                      after calling us.  */
6991                   printf_filtered (_("warning: Error removing breakpoint %d\n"), 
6992                                    loc->owner->number);
6993                 }
6994               removed = 1;
6995             }
6996         }
6997
6998       if (!found_object)
6999         {
7000           if (removed && non_stop)
7001             {
7002               /* This location was removed from the targets.  In non-stop mode,
7003                  a race condition is possible where we've removed a breakpoint,
7004                  but stop events for that breakpoint are already queued and will
7005                  arrive later.  To suppress spurious SIGTRAPs reported to user,
7006                  we keep this breakpoint location for a bit, and will retire it
7007                  after we see 3 * thread_count events.
7008                  The theory here is that reporting of events should,
7009                  "on the average", be fair, so after that many event we'll see
7010                  events from all threads that have anything of interest, and no
7011                  longer need to keep this breakpoint.  This is just a
7012                  heuristic, but if it's wrong, we'll report unexpected SIGTRAP,
7013                  which is usability issue, but not a correctness problem.  */
7014               loc->events_till_retirement = 3 * (thread_count () + 1);
7015               loc->owner = NULL;
7016
7017               VEC_safe_push (bp_location_p, moribund_locations, loc);
7018             }
7019           else
7020             free_bp_location (loc);
7021         }
7022     }
7023
7024   ALL_BREAKPOINTS (b)
7025     {
7026       check_duplicates (b);
7027     }
7028
7029   if (breakpoints_always_inserted_mode () && should_insert
7030       && (target_has_execution
7031           || (gdbarch_has_global_solist (target_gdbarch)
7032               && target_supports_multi_process ())))
7033     insert_breakpoint_locations ();
7034
7035   do_cleanups (cleanups);
7036 }
7037
7038 void
7039 breakpoint_retire_moribund (void)
7040 {
7041   struct bp_location *loc;
7042   int ix;
7043
7044   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
7045     if (--(loc->events_till_retirement) == 0)
7046       {
7047         free_bp_location (loc);
7048         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
7049         --ix;
7050       }
7051 }
7052
7053 static void
7054 update_global_location_list_nothrow (int inserting)
7055 {
7056   struct gdb_exception e;
7057   TRY_CATCH (e, RETURN_MASK_ERROR)
7058     update_global_location_list (inserting);
7059 }
7060
7061 /* Clear BPT from a BPS.  */
7062 static void
7063 bpstat_remove_breakpoint (bpstat bps, struct breakpoint *bpt)
7064 {
7065   bpstat bs;
7066   for (bs = bps; bs; bs = bs->next)
7067     if (bs->breakpoint_at && bs->breakpoint_at->owner == bpt)
7068       {
7069         bs->breakpoint_at = NULL;
7070         bs->old_val = NULL;
7071         /* bs->commands will be freed later.  */
7072       }
7073 }
7074
7075 /* Callback for iterate_over_threads.  */
7076 static int
7077 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
7078 {
7079   struct breakpoint *bpt = data;
7080   bpstat_remove_breakpoint (th->stop_bpstat, bpt);
7081   return 0;
7082 }
7083
7084 /* Delete a breakpoint and clean up all traces of it in the data
7085    structures. */
7086
7087 void
7088 delete_breakpoint (struct breakpoint *bpt)
7089 {
7090   struct breakpoint *b;
7091   struct bp_location *loc, *next;
7092
7093   gdb_assert (bpt != NULL);
7094
7095   /* Has this bp already been deleted?  This can happen because multiple
7096      lists can hold pointers to bp's.  bpstat lists are especial culprits.
7097
7098      One example of this happening is a watchpoint's scope bp.  When the
7099      scope bp triggers, we notice that the watchpoint is out of scope, and
7100      delete it.  We also delete its scope bp.  But the scope bp is marked
7101      "auto-deleting", and is already on a bpstat.  That bpstat is then
7102      checked for auto-deleting bp's, which are deleted.
7103
7104      A real solution to this problem might involve reference counts in bp's,
7105      and/or giving them pointers back to their referencing bpstat's, and
7106      teaching delete_breakpoint to only free a bp's storage when no more
7107      references were extent.  A cheaper bandaid was chosen.  */
7108   if (bpt->type == bp_none)
7109     return;
7110
7111   observer_notify_breakpoint_deleted (bpt->number);
7112
7113   if (breakpoint_chain == bpt)
7114     breakpoint_chain = bpt->next;
7115
7116   ALL_BREAKPOINTS (b)
7117     if (b->next == bpt)
7118     {
7119       b->next = bpt->next;
7120       break;
7121     }
7122
7123   free_command_lines (&bpt->commands);
7124   if (bpt->cond_string != NULL)
7125     xfree (bpt->cond_string);
7126   if (bpt->addr_string != NULL)
7127     xfree (bpt->addr_string);
7128   if (bpt->exp != NULL)
7129     xfree (bpt->exp);
7130   if (bpt->exp_string != NULL)
7131     xfree (bpt->exp_string);
7132   if (bpt->val != NULL)
7133     value_free (bpt->val);
7134   if (bpt->source_file != NULL)
7135     xfree (bpt->source_file);
7136   if (bpt->exec_pathname != NULL)
7137     xfree (bpt->exec_pathname);
7138
7139   /* Be sure no bpstat's are pointing at it after it's been freed.  */
7140   /* FIXME, how can we find all bpstat's?
7141      We just check stop_bpstat for now.  Note that we cannot just
7142      remove bpstats pointing at bpt from the stop_bpstat list
7143      entirely, as breakpoint commands are associated with the bpstat;
7144      if we remove it here, then the later call to
7145          bpstat_do_actions (&stop_bpstat);
7146      in event-top.c won't do anything, and temporary breakpoints
7147      with commands won't work.  */
7148
7149   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
7150
7151   /* Now that breakpoint is removed from breakpoint
7152      list, update the global location list.  This
7153      will remove locations that used to belong to
7154      this breakpoint.  Do this before freeing
7155      the breakpoint itself, since remove_breakpoint
7156      looks at location's owner.  It might be better
7157      design to have location completely self-contained,
7158      but it's not the case now.  */
7159   update_global_location_list (0);
7160
7161
7162   /* On the chance that someone will soon try again to delete this same
7163      bp, we mark it as deleted before freeing its storage. */
7164   bpt->type = bp_none;
7165
7166   xfree (bpt);
7167 }
7168
7169 static void
7170 do_delete_breakpoint_cleanup (void *b)
7171 {
7172   delete_breakpoint (b);
7173 }
7174
7175 struct cleanup *
7176 make_cleanup_delete_breakpoint (struct breakpoint *b)
7177 {
7178   return make_cleanup (do_delete_breakpoint_cleanup, b);
7179 }
7180
7181 void
7182 delete_command (char *arg, int from_tty)
7183 {
7184   struct breakpoint *b, *temp;
7185
7186   dont_repeat ();
7187
7188   if (arg == 0)
7189     {
7190       int breaks_to_delete = 0;
7191
7192       /* Delete all breakpoints if no argument.
7193          Do not delete internal or call-dummy breakpoints, these
7194          have to be deleted with an explicit breakpoint number argument.  */
7195       ALL_BREAKPOINTS (b)
7196       {
7197         if (b->type != bp_call_dummy &&
7198             b->type != bp_shlib_event &&
7199             b->type != bp_thread_event &&
7200             b->type != bp_overlay_event &&
7201             b->number >= 0)
7202           {
7203             breaks_to_delete = 1;
7204             break;
7205           }
7206       }
7207
7208       /* Ask user only if there are some breakpoints to delete.  */
7209       if (!from_tty
7210           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
7211         {
7212           ALL_BREAKPOINTS_SAFE (b, temp)
7213           {
7214             if (b->type != bp_call_dummy &&
7215                 b->type != bp_shlib_event &&
7216                 b->type != bp_thread_event &&
7217                 b->type != bp_overlay_event &&
7218                 b->number >= 0)
7219               delete_breakpoint (b);
7220           }
7221         }
7222     }
7223   else
7224     map_breakpoint_numbers (arg, delete_breakpoint);
7225 }
7226
7227 static int
7228 all_locations_are_pending (struct bp_location *loc)
7229 {
7230   for (; loc; loc = loc->next)
7231     if (!loc->shlib_disabled)
7232       return 0;
7233   return 1;
7234 }
7235
7236 /* Subroutine of update_breakpoint_locations to simplify it.
7237    Return non-zero if multiple fns in list LOC have the same name.
7238    Null names are ignored.  */
7239
7240 static int
7241 ambiguous_names_p (struct bp_location *loc)
7242 {
7243   struct bp_location *l;
7244   htab_t htab = htab_create_alloc (13, htab_hash_string,
7245                                    (int (*) (const void *, const void *)) streq,
7246                                    NULL, xcalloc, xfree);
7247
7248   for (l = loc; l != NULL; l = l->next)
7249     {
7250       const char **slot;
7251       const char *name = l->function_name;
7252
7253       /* Allow for some names to be NULL, ignore them.  */
7254       if (name == NULL)
7255         continue;
7256
7257       slot = (const char **) htab_find_slot (htab, (const void *) name,
7258                                              INSERT);
7259       /* NOTE: We can assume slot != NULL here because xcalloc never returns
7260          NULL.  */
7261       if (*slot != NULL)
7262         {
7263           htab_delete (htab);
7264           return 1;
7265         }
7266       *slot = name;
7267     }
7268
7269   htab_delete (htab);
7270   return 0;
7271 }
7272
7273 static void
7274 update_breakpoint_locations (struct breakpoint *b,
7275                              struct symtabs_and_lines sals)
7276 {
7277   int i;
7278   char *s;
7279   struct bp_location *existing_locations = b->loc;
7280
7281   /* If there's no new locations, and all existing locations
7282      are pending, don't do anything.  This optimizes
7283      the common case where all locations are in the same
7284      shared library, that was unloaded. We'd like to
7285      retain the location, so that when the library
7286      is loaded again, we don't loose the enabled/disabled
7287      status of the individual locations.  */
7288   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
7289     return;
7290
7291   b->loc = NULL;
7292
7293   for (i = 0; i < sals.nelts; ++i)
7294     {
7295       struct bp_location *new_loc = 
7296         add_location_to_breakpoint (b, &(sals.sals[i]));
7297
7298       /* Reparse conditions, they might contain references to the
7299          old symtab.  */
7300       if (b->cond_string != NULL)
7301         {
7302           struct gdb_exception e;
7303
7304           s = b->cond_string;
7305           TRY_CATCH (e, RETURN_MASK_ERROR)
7306             {
7307               new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 
7308                                            0);
7309             }
7310           if (e.reason < 0)
7311             {
7312               warning (_("failed to reevaluate condition for breakpoint %d: %s"), 
7313                        b->number, e.message);
7314               new_loc->enabled = 0;
7315             }
7316         }
7317
7318       if (b->source_file != NULL)
7319         xfree (b->source_file);
7320       if (sals.sals[i].symtab == NULL)
7321         b->source_file = NULL;
7322       else
7323         b->source_file =
7324           savestring (sals.sals[i].symtab->filename,
7325                       strlen (sals.sals[i].symtab->filename));
7326
7327       if (b->line_number == 0)
7328         b->line_number = sals.sals[i].line;
7329     }
7330
7331   /* Update locations of permanent breakpoints.  */
7332   if (b->enable_state == bp_permanent)
7333     make_breakpoint_permanent (b);
7334
7335   /* If possible, carry over 'disable' status from existing breakpoints.  */
7336   {
7337     struct bp_location *e = existing_locations;
7338     /* If there are multiple breakpoints with the same function name,
7339        e.g. for inline functions, comparing function names won't work.
7340        Instead compare pc addresses; this is just a heuristic as things
7341        may have moved, but in practice it gives the correct answer
7342        often enough until a better solution is found.  */
7343     int have_ambiguous_names = ambiguous_names_p (b->loc);
7344
7345     for (; e; e = e->next)
7346       {
7347         if (!e->enabled && e->function_name)
7348           {
7349             struct bp_location *l = b->loc;
7350             if (have_ambiguous_names)
7351               {
7352                 for (; l; l = l->next)
7353                   if (e->address == l->address)
7354                     {
7355                       l->enabled = 0;
7356                       break;
7357                     }
7358               }
7359             else
7360               {
7361                 for (; l; l = l->next)
7362                   if (l->function_name
7363                       && strcmp (e->function_name, l->function_name) == 0)
7364                     {
7365                       l->enabled = 0;
7366                       break;
7367                     }
7368               }
7369           }
7370       }
7371   }
7372
7373   update_global_location_list (1);
7374 }
7375
7376
7377 /* Reset a breakpoint given it's struct breakpoint * BINT.
7378    The value we return ends up being the return value from catch_errors.
7379    Unused in this case.  */
7380
7381 static int
7382 breakpoint_re_set_one (void *bint)
7383 {
7384   /* get past catch_errs */
7385   struct breakpoint *b = (struct breakpoint *) bint;
7386   struct value *mark;
7387   int i;
7388   int not_found = 0;
7389   int *not_found_ptr = &not_found;
7390   struct symtabs_and_lines sals = {};
7391   struct symtabs_and_lines expanded;
7392   char *s;
7393   enum enable_state save_enable;
7394   struct gdb_exception e;
7395   struct cleanup *cleanups;
7396
7397   switch (b->type)
7398     {
7399     case bp_none:
7400       warning (_("attempted to reset apparently deleted breakpoint #%d?"),
7401                b->number);
7402       return 0;
7403     case bp_breakpoint:
7404     case bp_hardware_breakpoint:
7405       if (b->addr_string == NULL)
7406         {
7407           /* Anything without a string can't be re-set. */
7408           delete_breakpoint (b);
7409           return 0;
7410         }
7411
7412       set_language (b->language);
7413       input_radix = b->input_radix;
7414       s = b->addr_string;
7415       TRY_CATCH (e, RETURN_MASK_ERROR)
7416         {
7417           sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL,
7418                                 not_found_ptr);
7419         }
7420       if (e.reason < 0)
7421         {
7422           int not_found_and_ok = 0;
7423           /* For pending breakpoints, it's expected that parsing
7424              will fail until the right shared library is loaded.
7425              User has already told to create pending breakpoints and
7426              don't need extra messages.  If breakpoint is in bp_shlib_disabled
7427              state, then user already saw the message about that breakpoint
7428              being disabled, and don't want to see more errors.  */
7429           if (not_found 
7430               && (b->condition_not_parsed 
7431                   || (b->loc && b->loc->shlib_disabled)
7432                   || b->enable_state == bp_disabled))
7433             not_found_and_ok = 1;
7434
7435           if (!not_found_and_ok)
7436             {
7437               /* We surely don't want to warn about the same breakpoint
7438                  10 times.  One solution, implemented here, is disable
7439                  the breakpoint on error.  Another solution would be to
7440                  have separate 'warning emitted' flag.  Since this
7441                  happens only when a binary has changed, I don't know
7442                  which approach is better.  */
7443               b->enable_state = bp_disabled;
7444               throw_exception (e);
7445             }
7446         }
7447
7448       if (not_found)
7449         break;
7450       
7451       gdb_assert (sals.nelts == 1);
7452       resolve_sal_pc (&sals.sals[0]);
7453       if (b->condition_not_parsed && s && s[0])
7454         {
7455           char *cond_string = 0;
7456           int thread = -1;
7457           find_condition_and_thread (s, sals.sals[0].pc, 
7458                                      &cond_string, &thread);
7459           if (cond_string)
7460             b->cond_string = cond_string;
7461           b->thread = thread;
7462           b->condition_not_parsed = 0;
7463         }
7464       expanded = expand_line_sal_maybe (sals.sals[0]);
7465       cleanups = make_cleanup (xfree, sals.sals);
7466       update_breakpoint_locations (b, expanded);
7467       do_cleanups (cleanups);
7468       break;
7469
7470     case bp_watchpoint:
7471     case bp_hardware_watchpoint:
7472     case bp_read_watchpoint:
7473     case bp_access_watchpoint:
7474       /* Watchpoint can be either on expression using entirely global variables,
7475          or it can be on local variables.
7476
7477          Watchpoints of the first kind are never auto-deleted, and even persist
7478          across program restarts. Since they can use variables from shared 
7479          libraries, we need to reparse expression as libraries are loaded
7480          and unloaded.
7481
7482          Watchpoints on local variables can also change meaning as result
7483          of solib event. For example, if a watchpoint uses both a local and
7484          a global variables in expression, it's a local watchpoint, but
7485          unloading of a shared library will make the expression invalid.
7486          This is not a very common use case, but we still re-evaluate
7487          expression, to avoid surprises to the user. 
7488
7489          Note that for local watchpoints, we re-evaluate it only if
7490          watchpoints frame id is still valid.  If it's not, it means
7491          the watchpoint is out of scope and will be deleted soon. In fact,
7492          I'm not sure we'll ever be called in this case.  
7493
7494          If a local watchpoint's frame id is still valid, then
7495          b->exp_valid_block is likewise valid, and we can safely use it.  
7496          
7497          Don't do anything about disabled watchpoints, since they will
7498          be reevaluated again when enabled.  */
7499       update_watchpoint (b, 1 /* reparse */);
7500       break;
7501       /* We needn't really do anything to reset these, since the mask
7502          that requests them is unaffected by e.g., new libraries being
7503          loaded. */
7504     case bp_catchpoint:
7505       break;
7506
7507     default:
7508       printf_filtered (_("Deleting unknown breakpoint type %d\n"), b->type);
7509       /* fall through */
7510       /* Delete overlay event breakpoints; they will be reset later by
7511          breakpoint_re_set.  */
7512     case bp_overlay_event:
7513       delete_breakpoint (b);
7514       break;
7515
7516       /* This breakpoint is special, it's set up when the inferior
7517          starts and we really don't want to touch it.  */
7518     case bp_shlib_event:
7519
7520       /* Like bp_shlib_event, this breakpoint type is special.
7521          Once it is set up, we do not want to touch it.  */
7522     case bp_thread_event:
7523
7524       /* Keep temporary breakpoints, which can be encountered when we step
7525          over a dlopen call and SOLIB_ADD is resetting the breakpoints.
7526          Otherwise these should have been blown away via the cleanup chain
7527          or by breakpoint_init_inferior when we rerun the executable.  */
7528     case bp_until:
7529     case bp_finish:
7530     case bp_watchpoint_scope:
7531     case bp_call_dummy:
7532     case bp_step_resume:
7533     case bp_longjmp:
7534     case bp_longjmp_resume:
7535       break;
7536     }
7537
7538   return 0;
7539 }
7540
7541 /* Re-set all breakpoints after symbols have been re-loaded.  */
7542 void
7543 breakpoint_re_set (void)
7544 {
7545   struct breakpoint *b, *temp;
7546   enum language save_language;
7547   int save_input_radix;
7548
7549   save_language = current_language->la_language;
7550   save_input_radix = input_radix;
7551   ALL_BREAKPOINTS_SAFE (b, temp)
7552   {
7553     /* Format possible error msg */
7554     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
7555                                 b->number);
7556     struct cleanup *cleanups = make_cleanup (xfree, message);
7557     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
7558     do_cleanups (cleanups);
7559   }
7560   set_language (save_language);
7561   input_radix = save_input_radix;
7562   
7563   create_overlay_event_breakpoint ("_ovly_debug_event");
7564 }
7565 \f
7566 /* Reset the thread number of this breakpoint:
7567
7568    - If the breakpoint is for all threads, leave it as-is.
7569    - Else, reset it to the current thread for inferior_ptid. */
7570 void
7571 breakpoint_re_set_thread (struct breakpoint *b)
7572 {
7573   if (b->thread != -1)
7574     {
7575       if (in_thread_list (inferior_ptid))
7576         b->thread = pid_to_thread_id (inferior_ptid);
7577     }
7578 }
7579
7580 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
7581    If from_tty is nonzero, it prints a message to that effect,
7582    which ends with a period (no newline).  */
7583
7584 void
7585 set_ignore_count (int bptnum, int count, int from_tty)
7586 {
7587   struct breakpoint *b;
7588
7589   if (count < 0)
7590     count = 0;
7591
7592   ALL_BREAKPOINTS (b)
7593     if (b->number == bptnum)
7594     {
7595       b->ignore_count = count;
7596       if (from_tty)
7597         {
7598           if (count == 0)
7599             printf_filtered (_("Will stop next time breakpoint %d is reached."),
7600                              bptnum);
7601           else if (count == 1)
7602             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
7603                              bptnum);
7604           else
7605             printf_filtered (_("Will ignore next %d crossings of breakpoint %d."),
7606                              count, bptnum);
7607         }
7608       breakpoints_changed ();
7609       observer_notify_breakpoint_modified (b->number);
7610       return;
7611     }
7612
7613   error (_("No breakpoint number %d."), bptnum);
7614 }
7615
7616 void
7617 make_breakpoint_silent (struct breakpoint *b)
7618 {
7619   /* Silence the breakpoint.  */
7620   b->silent = 1;
7621 }
7622
7623 /* Command to set ignore-count of breakpoint N to COUNT.  */
7624
7625 static void
7626 ignore_command (char *args, int from_tty)
7627 {
7628   char *p = args;
7629   int num;
7630
7631   if (p == 0)
7632     error_no_arg (_("a breakpoint number"));
7633
7634   num = get_number (&p);
7635   if (num == 0)
7636     error (_("bad breakpoint number: '%s'"), args);
7637   if (*p == 0)
7638     error (_("Second argument (specified ignore-count) is missing."));
7639
7640   set_ignore_count (num,
7641                     longest_to_int (value_as_long (parse_and_eval (p))),
7642                     from_tty);
7643   if (from_tty)
7644     printf_filtered ("\n");
7645 }
7646 \f
7647 /* Call FUNCTION on each of the breakpoints
7648    whose numbers are given in ARGS.  */
7649
7650 static void
7651 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *))
7652 {
7653   char *p = args;
7654   char *p1;
7655   int num;
7656   struct breakpoint *b, *tmp;
7657   int match;
7658
7659   if (p == 0)
7660     error_no_arg (_("one or more breakpoint numbers"));
7661
7662   while (*p)
7663     {
7664       match = 0;
7665       p1 = p;
7666
7667       num = get_number_or_range (&p1);
7668       if (num == 0)
7669         {
7670           warning (_("bad breakpoint number at or near '%s'"), p);
7671         }
7672       else
7673         {
7674           ALL_BREAKPOINTS_SAFE (b, tmp)
7675             if (b->number == num)
7676               {
7677                 struct breakpoint *related_breakpoint = b->related_breakpoint;
7678                 match = 1;
7679                 function (b);
7680                 if (related_breakpoint)
7681                   function (related_breakpoint);
7682                 break;
7683               }
7684           if (match == 0)
7685             printf_unfiltered (_("No breakpoint number %d.\n"), num);
7686         }
7687       p = p1;
7688     }
7689 }
7690
7691 static struct bp_location *
7692 find_location_by_number (char *number)
7693 {
7694   char *dot = strchr (number, '.');
7695   char *p1;
7696   int bp_num;
7697   int loc_num;
7698   struct breakpoint *b;
7699   struct bp_location *loc;  
7700
7701   *dot = '\0';
7702
7703   p1 = number;
7704   bp_num = get_number_or_range (&p1);
7705   if (bp_num == 0)
7706     error (_("Bad breakpoint number '%s'"), number);
7707
7708   ALL_BREAKPOINTS (b)
7709     if (b->number == bp_num)
7710       {
7711         break;
7712       }
7713
7714   if (!b || b->number != bp_num)
7715     error (_("Bad breakpoint number '%s'"), number);
7716   
7717   p1 = dot+1;
7718   loc_num = get_number_or_range (&p1);
7719   if (loc_num == 0)
7720     error (_("Bad breakpoint location number '%s'"), number);
7721
7722   --loc_num;
7723   loc = b->loc;
7724   for (;loc_num && loc; --loc_num, loc = loc->next)
7725     ;
7726   if (!loc)
7727     error (_("Bad breakpoint location number '%s'"), dot+1);
7728     
7729   return loc;  
7730 }
7731
7732
7733 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
7734    If from_tty is nonzero, it prints a message to that effect,
7735    which ends with a period (no newline).  */
7736
7737 void
7738 disable_breakpoint (struct breakpoint *bpt)
7739 {
7740   /* Never disable a watchpoint scope breakpoint; we want to
7741      hit them when we leave scope so we can delete both the
7742      watchpoint and its scope breakpoint at that time.  */
7743   if (bpt->type == bp_watchpoint_scope)
7744     return;
7745
7746   /* You can't disable permanent breakpoints.  */
7747   if (bpt->enable_state == bp_permanent)
7748     return;
7749
7750   bpt->enable_state = bp_disabled;
7751
7752   update_global_location_list (0);
7753
7754   observer_notify_breakpoint_modified (bpt->number);
7755 }
7756
7757 static void
7758 disable_command (char *args, int from_tty)
7759 {
7760   struct breakpoint *bpt;
7761   if (args == 0)
7762     ALL_BREAKPOINTS (bpt)
7763       switch (bpt->type)
7764       {
7765       case bp_none:
7766         warning (_("attempted to disable apparently deleted breakpoint #%d?"),
7767                  bpt->number);
7768         continue;
7769       case bp_breakpoint:
7770       case bp_catchpoint:
7771       case bp_hardware_breakpoint:
7772       case bp_watchpoint:
7773       case bp_hardware_watchpoint:
7774       case bp_read_watchpoint:
7775       case bp_access_watchpoint:
7776         disable_breakpoint (bpt);
7777       default:
7778         continue;
7779       }
7780   else if (strchr (args, '.'))
7781     {
7782       struct bp_location *loc = find_location_by_number (args);
7783       if (loc)
7784         loc->enabled = 0;
7785       update_global_location_list (0);
7786     }
7787   else
7788     map_breakpoint_numbers (args, disable_breakpoint);
7789 }
7790
7791 static void
7792 do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition)
7793 {
7794   int target_resources_ok, other_type_used;
7795   struct value *mark;
7796
7797   if (bpt->type == bp_hardware_breakpoint)
7798     {
7799       int i;
7800       i = hw_breakpoint_used_count ();
7801       target_resources_ok = 
7802         TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint, 
7803                                             i + 1, 0);
7804       if (target_resources_ok == 0)
7805         error (_("No hardware breakpoint support in the target."));
7806       else if (target_resources_ok < 0)
7807         error (_("Hardware breakpoints used exceeds limit."));
7808     }
7809
7810   if (bpt->type == bp_watchpoint || 
7811       bpt->type == bp_hardware_watchpoint ||
7812       bpt->type == bp_read_watchpoint || 
7813       bpt->type == bp_access_watchpoint)
7814     {
7815       struct gdb_exception e;
7816
7817       TRY_CATCH (e, RETURN_MASK_ALL)
7818         {
7819           update_watchpoint (bpt, 1 /* reparse */);
7820         }
7821       if (e.reason < 0)
7822         {
7823           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
7824                              bpt->number);
7825           return;
7826         }
7827     }
7828
7829   if (bpt->enable_state != bp_permanent)
7830     bpt->enable_state = bp_enabled;
7831   bpt->disposition = disposition;
7832   update_global_location_list (1);
7833   breakpoints_changed ();
7834   
7835   observer_notify_breakpoint_modified (bpt->number);
7836 }
7837
7838
7839 void
7840 enable_breakpoint (struct breakpoint *bpt)
7841 {
7842   do_enable_breakpoint (bpt, bpt->disposition);
7843 }
7844
7845 /* The enable command enables the specified breakpoints (or all defined
7846    breakpoints) so they once again become (or continue to be) effective
7847    in stopping the inferior.  */
7848
7849 static void
7850 enable_command (char *args, int from_tty)
7851 {
7852   struct breakpoint *bpt;
7853   if (args == 0)
7854     ALL_BREAKPOINTS (bpt)
7855       switch (bpt->type)
7856       {
7857       case bp_none:
7858         warning (_("attempted to enable apparently deleted breakpoint #%d?"),
7859                  bpt->number);
7860         continue;
7861       case bp_breakpoint:
7862       case bp_catchpoint:
7863       case bp_hardware_breakpoint:
7864       case bp_watchpoint:
7865       case bp_hardware_watchpoint:
7866       case bp_read_watchpoint:
7867       case bp_access_watchpoint:
7868         enable_breakpoint (bpt);
7869       default:
7870         continue;
7871       }
7872   else if (strchr (args, '.'))
7873     {
7874       struct bp_location *loc = find_location_by_number (args);
7875       if (loc)
7876         loc->enabled = 1;
7877       update_global_location_list (1);
7878     }
7879   else
7880     map_breakpoint_numbers (args, enable_breakpoint);
7881 }
7882
7883 static void
7884 enable_once_breakpoint (struct breakpoint *bpt)
7885 {
7886   do_enable_breakpoint (bpt, disp_disable);
7887 }
7888
7889 static void
7890 enable_once_command (char *args, int from_tty)
7891 {
7892   map_breakpoint_numbers (args, enable_once_breakpoint);
7893 }
7894
7895 static void
7896 enable_delete_breakpoint (struct breakpoint *bpt)
7897 {
7898   do_enable_breakpoint (bpt, disp_del);
7899 }
7900
7901 static void
7902 enable_delete_command (char *args, int from_tty)
7903 {
7904   map_breakpoint_numbers (args, enable_delete_breakpoint);
7905 }
7906 \f
7907 static void
7908 set_breakpoint_cmd (char *args, int from_tty)
7909 {
7910 }
7911
7912 static void
7913 show_breakpoint_cmd (char *args, int from_tty)
7914 {
7915 }
7916
7917 /* Use default_breakpoint_'s, or nothing if they aren't valid.  */
7918
7919 struct symtabs_and_lines
7920 decode_line_spec_1 (char *string, int funfirstline)
7921 {
7922   struct symtabs_and_lines sals;
7923   if (string == 0)
7924     error (_("Empty line specification."));
7925   if (default_breakpoint_valid)
7926     sals = decode_line_1 (&string, funfirstline,
7927                           default_breakpoint_symtab,
7928                           default_breakpoint_line,
7929                           (char ***) NULL, NULL);
7930   else
7931     sals = decode_line_1 (&string, funfirstline,
7932                           (struct symtab *) NULL, 0, (char ***) NULL, NULL);
7933   if (*string)
7934     error (_("Junk at end of line specification: %s"), string);
7935   return sals;
7936 }
7937
7938 /* Create and insert a raw software breakpoint at PC.  Return an
7939    identifier, which should be used to remove the breakpoint later.
7940    In general, places which call this should be using something on the
7941    breakpoint chain instead; this function should be eliminated
7942    someday.  */
7943
7944 void *
7945 deprecated_insert_raw_breakpoint (CORE_ADDR pc)
7946 {
7947   struct bp_target_info *bp_tgt;
7948
7949   bp_tgt = xmalloc (sizeof (struct bp_target_info));
7950   memset (bp_tgt, 0, sizeof (struct bp_target_info));
7951
7952   bp_tgt->placed_address = pc;
7953   if (target_insert_breakpoint (bp_tgt) != 0)
7954     {
7955       /* Could not insert the breakpoint.  */
7956       xfree (bp_tgt);
7957       return NULL;
7958     }
7959
7960   return bp_tgt;
7961 }
7962
7963 /* Remove a breakpoint BP inserted by deprecated_insert_raw_breakpoint.  */
7964
7965 int
7966 deprecated_remove_raw_breakpoint (void *bp)
7967 {
7968   struct bp_target_info *bp_tgt = bp;
7969   int ret;
7970
7971   ret = target_remove_breakpoint (bp_tgt);
7972   xfree (bp_tgt);
7973
7974   return ret;
7975 }
7976
7977 /* One (or perhaps two) breakpoints used for software single stepping.  */
7978
7979 static void *single_step_breakpoints[2];
7980
7981 /* Create and insert a breakpoint for software single step.  */
7982
7983 void
7984 insert_single_step_breakpoint (CORE_ADDR next_pc)
7985 {
7986   void **bpt_p;
7987
7988   if (single_step_breakpoints[0] == NULL)
7989     bpt_p = &single_step_breakpoints[0];
7990   else
7991     {
7992       gdb_assert (single_step_breakpoints[1] == NULL);
7993       bpt_p = &single_step_breakpoints[1];
7994     }
7995
7996   /* NOTE drow/2006-04-11: A future improvement to this function would be
7997      to only create the breakpoints once, and actually put them on the
7998      breakpoint chain.  That would let us use set_raw_breakpoint.  We could
7999      adjust the addresses each time they were needed.  Doing this requires
8000      corresponding changes elsewhere where single step breakpoints are
8001      handled, however.  So, for now, we use this.  */
8002
8003   *bpt_p = deprecated_insert_raw_breakpoint (next_pc);
8004   if (*bpt_p == NULL)
8005     error (_("Could not insert single-step breakpoint at 0x%s"),
8006              paddr_nz (next_pc));
8007 }
8008
8009 /* Remove and delete any breakpoints used for software single step.  */
8010
8011 void
8012 remove_single_step_breakpoints (void)
8013 {
8014   gdb_assert (single_step_breakpoints[0] != NULL);
8015
8016   /* See insert_single_step_breakpoint for more about this deprecated
8017      call.  */
8018   deprecated_remove_raw_breakpoint (single_step_breakpoints[0]);
8019   single_step_breakpoints[0] = NULL;
8020
8021   if (single_step_breakpoints[1] != NULL)
8022     {
8023       deprecated_remove_raw_breakpoint (single_step_breakpoints[1]);
8024       single_step_breakpoints[1] = NULL;
8025     }
8026 }
8027
8028 /* Check whether a software single-step breakpoint is inserted at PC.  */
8029
8030 static int
8031 single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
8032 {
8033   int i;
8034
8035   for (i = 0; i < 2; i++)
8036     {
8037       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
8038       if (bp_tgt && bp_tgt->placed_address == pc)
8039         return 1;
8040     }
8041
8042   return 0;
8043 }
8044
8045 \f
8046 /* This help string is used for the break, hbreak, tbreak and thbreak commands.
8047    It is defined as a macro to prevent duplication.
8048    COMMAND should be a string constant containing the name of the command.  */
8049 #define BREAK_ARGS_HELP(command) \
8050 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
8051 LOCATION may be a line number, function name, or \"*\" and an address.\n\
8052 If a line number is specified, break at start of code for that line.\n\
8053 If a function is specified, break at start of code for that function.\n\
8054 If an address is specified, break at that exact address.\n\
8055 With no LOCATION, uses current execution address of selected stack frame.\n\
8056 This is useful for breaking on return to a stack frame.\n\
8057 \n\
8058 THREADNUM is the number from \"info threads\".\n\
8059 CONDITION is a boolean expression.\n\
8060 \n\
8061 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
8062 \n\
8063 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
8064
8065 /* List of subcommands for "catch".  */
8066 static struct cmd_list_element *catch_cmdlist;
8067
8068 /* List of subcommands for "tcatch".  */
8069 static struct cmd_list_element *tcatch_cmdlist;
8070
8071 /* Like add_cmd, but add the command to both the "catch" and "tcatch"
8072    lists, and pass some additional user data to the command function.  */
8073 static void
8074 add_catch_command (char *name, char *docstring,
8075                    void (*sfunc) (char *args, int from_tty,
8076                                   struct cmd_list_element *command),
8077                    void *user_data_catch,
8078                    void *user_data_tcatch)
8079 {
8080   struct cmd_list_element *command;
8081
8082   command = add_cmd (name, class_breakpoint, NULL, docstring,
8083                      &catch_cmdlist);
8084   set_cmd_sfunc (command, sfunc);
8085   set_cmd_context (command, user_data_catch);
8086
8087   command = add_cmd (name, class_breakpoint, NULL, docstring,
8088                      &tcatch_cmdlist);
8089   set_cmd_sfunc (command, sfunc);
8090   set_cmd_context (command, user_data_tcatch);
8091 }
8092
8093 void
8094 _initialize_breakpoint (void)
8095 {
8096   static struct cmd_list_element *breakpoint_set_cmdlist;
8097   static struct cmd_list_element *breakpoint_show_cmdlist;
8098   struct cmd_list_element *c;
8099
8100   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
8101
8102   breakpoint_chain = 0;
8103   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
8104      before a breakpoint is set.  */
8105   breakpoint_count = 0;
8106
8107   add_com ("ignore", class_breakpoint, ignore_command, _("\
8108 Set ignore-count of breakpoint number N to COUNT.\n\
8109 Usage is `ignore N COUNT'."));
8110   if (xdb_commands)
8111     add_com_alias ("bc", "ignore", class_breakpoint, 1);
8112
8113   add_com ("commands", class_breakpoint, commands_command, _("\
8114 Set commands to be executed when a breakpoint is hit.\n\
8115 Give breakpoint number as argument after \"commands\".\n\
8116 With no argument, the targeted breakpoint is the last one set.\n\
8117 The commands themselves follow starting on the next line.\n\
8118 Type a line containing \"end\" to indicate the end of them.\n\
8119 Give \"silent\" as the first line to make the breakpoint silent;\n\
8120 then no output is printed when it is hit, except what the commands print."));
8121
8122   add_com ("condition", class_breakpoint, condition_command, _("\
8123 Specify breakpoint number N to break only if COND is true.\n\
8124 Usage is `condition N COND', where N is an integer and COND is an\n\
8125 expression to be evaluated whenever breakpoint N is reached."));
8126
8127   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
8128 Set a temporary breakpoint.\n\
8129 Like \"break\" except the breakpoint is only temporary,\n\
8130 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
8131 by using \"enable delete\" on the breakpoint number.\n\
8132 \n"
8133 BREAK_ARGS_HELP ("tbreak")));
8134   set_cmd_completer (c, location_completer);
8135
8136   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
8137 Set a hardware assisted  breakpoint.\n\
8138 Like \"break\" except the breakpoint requires hardware support,\n\
8139 some target hardware may not have this support.\n\
8140 \n"
8141 BREAK_ARGS_HELP ("hbreak")));
8142   set_cmd_completer (c, location_completer);
8143
8144   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
8145 Set a temporary hardware assisted breakpoint.\n\
8146 Like \"hbreak\" except the breakpoint is only temporary,\n\
8147 so it will be deleted when hit.\n\
8148 \n"
8149 BREAK_ARGS_HELP ("thbreak")));
8150   set_cmd_completer (c, location_completer);
8151
8152   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
8153 Enable some breakpoints.\n\
8154 Give breakpoint numbers (separated by spaces) as arguments.\n\
8155 With no subcommand, breakpoints are enabled until you command otherwise.\n\
8156 This is used to cancel the effect of the \"disable\" command.\n\
8157 With a subcommand you can enable temporarily."),
8158                   &enablelist, "enable ", 1, &cmdlist);
8159   if (xdb_commands)
8160     add_com ("ab", class_breakpoint, enable_command, _("\
8161 Enable some breakpoints.\n\
8162 Give breakpoint numbers (separated by spaces) as arguments.\n\
8163 With no subcommand, breakpoints are enabled until you command otherwise.\n\
8164 This is used to cancel the effect of the \"disable\" command.\n\
8165 With a subcommand you can enable temporarily."));
8166
8167   add_com_alias ("en", "enable", class_breakpoint, 1);
8168
8169   add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
8170 Enable some breakpoints.\n\
8171 Give breakpoint numbers (separated by spaces) as arguments.\n\
8172 This is used to cancel the effect of the \"disable\" command.\n\
8173 May be abbreviated to simply \"enable\".\n"),
8174                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
8175
8176   add_cmd ("once", no_class, enable_once_command, _("\
8177 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
8178 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
8179            &enablebreaklist);
8180
8181   add_cmd ("delete", no_class, enable_delete_command, _("\
8182 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
8183 If a breakpoint is hit while enabled in this fashion, it is deleted."),
8184            &enablebreaklist);
8185
8186   add_cmd ("delete", no_class, enable_delete_command, _("\
8187 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
8188 If a breakpoint is hit while enabled in this fashion, it is deleted."),
8189            &enablelist);
8190
8191   add_cmd ("once", no_class, enable_once_command, _("\
8192 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
8193 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
8194            &enablelist);
8195
8196   add_prefix_cmd ("disable", 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                   &disablelist, "disable ", 1, &cmdlist);
8202   add_com_alias ("dis", "disable", class_breakpoint, 1);
8203   add_com_alias ("disa", "disable", class_breakpoint, 1);
8204   if (xdb_commands)
8205     add_com ("sb", class_breakpoint, disable_command, _("\
8206 Disable some breakpoints.\n\
8207 Arguments are breakpoint numbers with spaces in between.\n\
8208 To disable all breakpoints, give no argument.\n\
8209 A disabled breakpoint is not forgotten, but has no effect until reenabled."));
8210
8211   add_cmd ("breakpoints", class_alias, disable_command, _("\
8212 Disable some breakpoints.\n\
8213 Arguments are breakpoint numbers with spaces in between.\n\
8214 To disable all breakpoints, give no argument.\n\
8215 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
8216 This command may be abbreviated \"disable\"."),
8217            &disablelist);
8218
8219   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
8220 Delete some breakpoints or auto-display expressions.\n\
8221 Arguments are breakpoint numbers with spaces in between.\n\
8222 To delete all breakpoints, give no argument.\n\
8223 \n\
8224 Also a prefix command for deletion of other GDB objects.\n\
8225 The \"unset\" command is also an alias for \"delete\"."),
8226                   &deletelist, "delete ", 1, &cmdlist);
8227   add_com_alias ("d", "delete", class_breakpoint, 1);
8228   add_com_alias ("del", "delete", class_breakpoint, 1);
8229   if (xdb_commands)
8230     add_com ("db", class_breakpoint, delete_command, _("\
8231 Delete some breakpoints.\n\
8232 Arguments are breakpoint numbers with spaces in between.\n\
8233 To delete all breakpoints, give no argument.\n"));
8234
8235   add_cmd ("breakpoints", class_alias, delete_command, _("\
8236 Delete some breakpoints or auto-display expressions.\n\
8237 Arguments are breakpoint numbers with spaces in between.\n\
8238 To delete all breakpoints, give no argument.\n\
8239 This command may be abbreviated \"delete\"."),
8240            &deletelist);
8241
8242   add_com ("clear", class_breakpoint, clear_command, _("\
8243 Clear breakpoint at specified line or function.\n\
8244 Argument may be line number, function name, or \"*\" and an address.\n\
8245 If line number is specified, all breakpoints in that line are cleared.\n\
8246 If function is specified, breakpoints at beginning of function are cleared.\n\
8247 If an address is specified, breakpoints at that address are cleared.\n\
8248 \n\
8249 With no argument, clears all breakpoints in the line that the selected frame\n\
8250 is executing in.\n\
8251 \n\
8252 See also the \"delete\" command which clears breakpoints by number."));
8253
8254   c = add_com ("break", class_breakpoint, break_command, _("\
8255 Set breakpoint at specified line or function.\n"
8256 BREAK_ARGS_HELP ("break")));
8257   set_cmd_completer (c, location_completer);
8258
8259   add_com_alias ("b", "break", class_run, 1);
8260   add_com_alias ("br", "break", class_run, 1);
8261   add_com_alias ("bre", "break", class_run, 1);
8262   add_com_alias ("brea", "break", class_run, 1);
8263
8264  if (xdb_commands)
8265     {
8266       add_com_alias ("ba", "break", class_breakpoint, 1);
8267       add_com_alias ("bu", "ubreak", class_breakpoint, 1);
8268     }
8269
8270   if (dbx_commands)
8271     {
8272       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
8273 Break in function/address or break at a line in the current file."),
8274                              &stoplist, "stop ", 1, &cmdlist);
8275       add_cmd ("in", class_breakpoint, stopin_command,
8276                _("Break in function or address."), &stoplist);
8277       add_cmd ("at", class_breakpoint, stopat_command,
8278                _("Break at a line in the current file."), &stoplist);
8279       add_com ("status", class_info, breakpoints_info, _("\
8280 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8281 The \"Type\" column indicates one of:\n\
8282 \tbreakpoint     - normal breakpoint\n\
8283 \twatchpoint     - watchpoint\n\
8284 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8285 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8286 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8287 address and file/line number respectively.\n\
8288 \n\
8289 Convenience variable \"$_\" and default examine address for \"x\"\n\
8290 are set to the address of the last breakpoint listed unless the command\n\
8291 is prefixed with \"server \".\n\n\
8292 Convenience variable \"$bpnum\" contains the number of the last\n\
8293 breakpoint set."));
8294     }
8295
8296   add_info ("breakpoints", breakpoints_info, _("\
8297 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8298 The \"Type\" column indicates one of:\n\
8299 \tbreakpoint     - normal breakpoint\n\
8300 \twatchpoint     - watchpoint\n\
8301 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8302 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8303 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8304 address and file/line number respectively.\n\
8305 \n\
8306 Convenience variable \"$_\" and default examine address for \"x\"\n\
8307 are set to the address of the last breakpoint listed unless the command\n\
8308 is prefixed with \"server \".\n\n\
8309 Convenience variable \"$bpnum\" contains the number of the last\n\
8310 breakpoint set."));
8311
8312   if (xdb_commands)
8313     add_com ("lb", class_breakpoint, breakpoints_info, _("\
8314 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8315 The \"Type\" column indicates one of:\n\
8316 \tbreakpoint     - normal breakpoint\n\
8317 \twatchpoint     - watchpoint\n\
8318 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8319 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8320 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8321 address and file/line number respectively.\n\
8322 \n\
8323 Convenience variable \"$_\" and default examine address for \"x\"\n\
8324 are set to the address of the last breakpoint listed unless the command\n\
8325 is prefixed with \"server \".\n\n\
8326 Convenience variable \"$bpnum\" contains the number of the last\n\
8327 breakpoint set."));
8328
8329   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
8330 Status of all breakpoints, or breakpoint number NUMBER.\n\
8331 The \"Type\" column indicates one of:\n\
8332 \tbreakpoint     - normal breakpoint\n\
8333 \twatchpoint     - watchpoint\n\
8334 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
8335 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
8336 \tuntil          - internal breakpoint used by the \"until\" command\n\
8337 \tfinish         - internal breakpoint used by the \"finish\" command\n\
8338 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8339 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
8340 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
8341 address and file/line number respectively.\n\
8342 \n\
8343 Convenience variable \"$_\" and default examine address for \"x\"\n\
8344 are set to the address of the last breakpoint listed unless the command\n\
8345 is prefixed with \"server \".\n\n\
8346 Convenience variable \"$bpnum\" contains the number of the last\n\
8347 breakpoint set."),
8348            &maintenanceinfolist);
8349
8350   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
8351 Set catchpoints to catch events."),
8352                   &catch_cmdlist, "catch ",
8353                   0/*allow-unknown*/, &cmdlist);
8354
8355   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
8356 Set temporary catchpoints to catch events."),
8357                   &tcatch_cmdlist, "tcatch ",
8358                   0/*allow-unknown*/, &cmdlist);
8359
8360   /* Add catch and tcatch sub-commands.  */
8361   add_catch_command ("catch", _("\
8362 Catch an exception, when caught.\n\
8363 With an argument, catch only exceptions with the given name."),
8364                      catch_catch_command,
8365                      CATCH_PERMANENT,
8366                      CATCH_TEMPORARY);
8367   add_catch_command ("throw", _("\
8368 Catch an exception, when thrown.\n\
8369 With an argument, catch only exceptions with the given name."),
8370                      catch_throw_command,
8371                      CATCH_PERMANENT,
8372                      CATCH_TEMPORARY);
8373   add_catch_command ("fork", _("Catch calls to fork."),
8374                      catch_fork_command_1,
8375                      (void *) (uintptr_t) catch_fork_permanent,
8376                      (void *) (uintptr_t) catch_fork_temporary);
8377   add_catch_command ("vfork", _("Catch calls to vfork."),
8378                      catch_fork_command_1,
8379                      (void *) (uintptr_t) catch_vfork_permanent,
8380                      (void *) (uintptr_t) catch_vfork_temporary);
8381   add_catch_command ("exec", _("Catch calls to exec."),
8382                      catch_exec_command_1,
8383                      CATCH_PERMANENT,
8384                      CATCH_TEMPORARY);
8385   add_catch_command ("exception", _("\
8386 Catch Ada exceptions, when raised.\n\
8387 With an argument, catch only exceptions with the given name."),
8388                      catch_ada_exception_command,
8389                      CATCH_PERMANENT,
8390                      CATCH_TEMPORARY);
8391   add_catch_command ("assert", _("\
8392 Catch failed Ada assertions, when raised.\n\
8393 With an argument, catch only exceptions with the given name."),
8394                      catch_assert_command,
8395                      CATCH_PERMANENT,
8396                      CATCH_TEMPORARY);
8397
8398   c = add_com ("watch", class_breakpoint, watch_command, _("\
8399 Set a watchpoint for an expression.\n\
8400 A watchpoint stops execution of your program whenever the value of\n\
8401 an expression changes."));
8402   set_cmd_completer (c, expression_completer);
8403
8404   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
8405 Set a read watchpoint for an expression.\n\
8406 A watchpoint stops execution of your program whenever the value of\n\
8407 an expression is read."));
8408   set_cmd_completer (c, expression_completer);
8409
8410   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
8411 Set a watchpoint for an expression.\n\
8412 A watchpoint stops execution of your program whenever the value of\n\
8413 an expression is either read or written."));
8414   set_cmd_completer (c, expression_completer);
8415
8416   add_info ("watchpoints", breakpoints_info,
8417             _("Synonym for ``info breakpoints''."));
8418
8419
8420   /* XXX: cagney/2005-02-23: This should be a boolean, and should
8421      respond to changes - contrary to the description.  */
8422   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
8423                             &can_use_hw_watchpoints, _("\
8424 Set debugger's willingness to use watchpoint hardware."), _("\
8425 Show debugger's willingness to use watchpoint hardware."), _("\
8426 If zero, gdb will not use hardware for new watchpoints, even if\n\
8427 such is available.  (However, any hardware watchpoints that were\n\
8428 created before setting this to nonzero, will continue to use watchpoint\n\
8429 hardware.)"),
8430                             NULL,
8431                             show_can_use_hw_watchpoints,
8432                             &setlist, &showlist);
8433
8434   can_use_hw_watchpoints = 1;
8435
8436   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
8437 Breakpoint specific settings\n\
8438 Configure various breakpoint-specific variables such as\n\
8439 pending breakpoint behavior"),
8440                   &breakpoint_set_cmdlist, "set breakpoint ",
8441                   0/*allow-unknown*/, &setlist);
8442   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
8443 Breakpoint specific settings\n\
8444 Configure various breakpoint-specific variables such as\n\
8445 pending breakpoint behavior"),
8446                   &breakpoint_show_cmdlist, "show breakpoint ",
8447                   0/*allow-unknown*/, &showlist);
8448
8449   add_setshow_auto_boolean_cmd ("pending", no_class,
8450                                 &pending_break_support, _("\
8451 Set debugger's behavior regarding pending breakpoints."), _("\
8452 Show debugger's behavior regarding pending breakpoints."), _("\
8453 If on, an unrecognized breakpoint location will cause gdb to create a\n\
8454 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
8455 an error.  If auto, an unrecognized breakpoint location results in a\n\
8456 user-query to see if a pending breakpoint should be created."),
8457                                 NULL,
8458                                 show_pending_break_support,
8459                                 &breakpoint_set_cmdlist,
8460                                 &breakpoint_show_cmdlist);
8461
8462   pending_break_support = AUTO_BOOLEAN_AUTO;
8463
8464   add_setshow_boolean_cmd ("auto-hw", no_class,
8465                            &automatic_hardware_breakpoints, _("\
8466 Set automatic usage of hardware breakpoints."), _("\
8467 Show automatic usage of hardware breakpoints."), _("\
8468 If set, the debugger will automatically use hardware breakpoints for\n\
8469 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
8470 a warning will be emitted for such breakpoints."),
8471                            NULL,
8472                            show_automatic_hardware_breakpoints,
8473                            &breakpoint_set_cmdlist,
8474                            &breakpoint_show_cmdlist);
8475
8476   add_setshow_enum_cmd ("always-inserted", class_support,
8477                         always_inserted_enums, &always_inserted_mode, _("\
8478 Set mode for inserting breakpoints."), _("\
8479 Show mode for inserting breakpoints."), _("\
8480 When this mode is off, breakpoints are inserted in inferior when it is\n\
8481 resumed, and removed when execution stops.  When this mode is on,\n\
8482 breakpoints are inserted immediately and removed only when the user\n\
8483 deletes the breakpoint.  When this mode is auto (which is the default),\n\
8484 the behaviour depends on the non-stop setting (see help set non-stop).\n\
8485 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
8486 behaves as if always-inserted mode is on; if gdb is controlling the\n\
8487 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
8488                            NULL,
8489                            &show_always_inserted_mode,
8490                            &breakpoint_set_cmdlist,
8491                            &breakpoint_show_cmdlist);
8492   
8493   automatic_hardware_breakpoints = 1;
8494 }
This page took 0.496567 seconds and 4 git commands to generate.