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