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