gdb/
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2012 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Prototypes for local functions.  */
86
87 static void enable_delete_command (char *, int);
88
89 static void enable_once_command (char *, int);
90
91 static void enable_count_command (char *, int);
92
93 static void disable_command (char *, int);
94
95 static void enable_command (char *, int);
96
97 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
98                                                       void *),
99                                     void *);
100
101 static void ignore_command (char *, int);
102
103 static int breakpoint_re_set_one (void *);
104
105 static void breakpoint_re_set_default (struct breakpoint *);
106
107 static void create_sals_from_address_default (char **,
108                                               struct linespec_result *,
109                                               enum bptype, char *,
110                                               char **);
111
112 static void create_breakpoints_sal_default (struct gdbarch *,
113                                             struct linespec_result *,
114                                             struct linespec_sals *,
115                                             char *, char *, enum bptype,
116                                             enum bpdisp, int, int,
117                                             int,
118                                             const struct breakpoint_ops *,
119                                             int, int, int, unsigned);
120
121 static void decode_linespec_default (struct breakpoint *, char **,
122                                      struct symtabs_and_lines *);
123
124 static void clear_command (char *, int);
125
126 static void catch_command (char *, int);
127
128 static int can_use_hardware_watchpoint (struct value *);
129
130 static void break_command_1 (char *, int, int);
131
132 static void mention (struct breakpoint *);
133
134 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
135                                                                enum bptype,
136                                                                const struct breakpoint_ops *);
137 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
138                                                        const struct symtab_and_line *);
139
140 /* This function is used in gdbtk sources and thus can not be made
141    static.  */
142 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
143                                        struct symtab_and_line,
144                                        enum bptype,
145                                        const struct breakpoint_ops *);
146
147 static struct breakpoint *
148   momentary_breakpoint_from_master (struct breakpoint *orig,
149                                     enum bptype type,
150                                     const struct breakpoint_ops *ops);
151
152 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
153
154 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
155                                             CORE_ADDR bpaddr,
156                                             enum bptype bptype);
157
158 static void describe_other_breakpoints (struct gdbarch *,
159                                         struct program_space *, CORE_ADDR,
160                                         struct obj_section *, int);
161
162 static int breakpoint_address_match (struct address_space *aspace1,
163                                      CORE_ADDR addr1,
164                                      struct address_space *aspace2,
165                                      CORE_ADDR addr2);
166
167 static int watchpoint_locations_match (struct bp_location *loc1,
168                                        struct bp_location *loc2);
169
170 static int breakpoint_location_address_match (struct bp_location *bl,
171                                               struct address_space *aspace,
172                                               CORE_ADDR addr);
173
174 static void breakpoints_info (char *, int);
175
176 static void watchpoints_info (char *, int);
177
178 static int breakpoint_1 (char *, int, 
179                          int (*) (const struct breakpoint *));
180
181 static int breakpoint_cond_eval (void *);
182
183 static void cleanup_executing_breakpoints (void *);
184
185 static void commands_command (char *, int);
186
187 static void condition_command (char *, int);
188
189 typedef enum
190   {
191     mark_inserted,
192     mark_uninserted
193   }
194 insertion_state_t;
195
196 static int remove_breakpoint (struct bp_location *, insertion_state_t);
197 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
198
199 static enum print_stop_action print_bp_stop_message (bpstat bs);
200
201 static int watchpoint_check (void *);
202
203 static void maintenance_info_breakpoints (char *, int);
204
205 static int hw_breakpoint_used_count (void);
206
207 static int hw_watchpoint_use_count (struct breakpoint *);
208
209 static int hw_watchpoint_used_count_others (struct breakpoint *except,
210                                             enum bptype type,
211                                             int *other_type_used);
212
213 static void hbreak_command (char *, int);
214
215 static void thbreak_command (char *, int);
216
217 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
218                                     int count);
219
220 static void stop_command (char *arg, int from_tty);
221
222 static void stopin_command (char *arg, int from_tty);
223
224 static void stopat_command (char *arg, int from_tty);
225
226 static char *ep_parse_optional_if_clause (char **arg);
227
228 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
229                                        char *arg, int tempflag, int from_tty);
230
231 static void tcatch_command (char *arg, int from_tty);
232
233 static void detach_single_step_breakpoints (void);
234
235 static int single_step_breakpoint_inserted_here_p (struct address_space *,
236                                                    CORE_ADDR pc);
237
238 static void free_bp_location (struct bp_location *loc);
239 static void incref_bp_location (struct bp_location *loc);
240 static void decref_bp_location (struct bp_location **loc);
241
242 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
243
244 static void update_global_location_list (int);
245
246 static void update_global_location_list_nothrow (int);
247
248 static int is_hardware_watchpoint (const struct breakpoint *bpt);
249
250 static void insert_breakpoint_locations (void);
251
252 static int syscall_catchpoint_p (struct breakpoint *b);
253
254 static void tracepoints_info (char *, int);
255
256 static void delete_trace_command (char *, int);
257
258 static void enable_trace_command (char *, int);
259
260 static void disable_trace_command (char *, int);
261
262 static void trace_pass_command (char *, int);
263
264 static void set_tracepoint_count (int num);
265
266 static int is_masked_watchpoint (const struct breakpoint *b);
267
268 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
269
270 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
271    otherwise.  */
272
273 static int strace_marker_p (struct breakpoint *b);
274
275 static void init_catchpoint (struct breakpoint *b,
276                              struct gdbarch *gdbarch, int tempflag,
277                              char *cond_string,
278                              const struct breakpoint_ops *ops);
279
280 /* The abstract base class all breakpoint_ops structures inherit
281    from.  */
282 static struct breakpoint_ops base_breakpoint_ops;
283
284 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
285    that are implemented on top of software or hardware breakpoints
286    (user breakpoints, internal and momentary breakpoints, etc.).  */
287 static struct breakpoint_ops bkpt_base_breakpoint_ops;
288
289 /* Internal breakpoints class type.  */
290 static struct breakpoint_ops internal_breakpoint_ops;
291
292 /* Momentary breakpoints class type.  */
293 static struct breakpoint_ops momentary_breakpoint_ops;
294
295 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
296 static struct breakpoint_ops longjmp_breakpoint_ops;
297
298 /* The breakpoint_ops structure to be used in regular user created
299    breakpoints.  */
300 struct breakpoint_ops bkpt_breakpoint_ops;
301
302 /* Breakpoints set on probes.  */
303 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
304
305 /* Dynamic printf class type.  */
306 static struct breakpoint_ops dprintf_breakpoint_ops;
307
308 /* The style in which to perform a dynamic printf.  This is a user
309    option because different output options have different tradeoffs;
310    if GDB does the printing, there is better error handling if there
311    is a problem with any of the arguments, but using an inferior
312    function lets you have special-purpose printers and sending of
313    output to the same place as compiled-in print functions.  */
314
315 static const char dprintf_style_gdb[] = "gdb";
316 static const char dprintf_style_call[] = "call";
317 static const char dprintf_style_agent[] = "agent";
318 static const char *const dprintf_style_enums[] = {
319   dprintf_style_gdb,
320   dprintf_style_call,
321   dprintf_style_agent,
322   NULL
323 };
324 static const char *dprintf_style = dprintf_style_gdb;
325
326 /* The function to use for dynamic printf if the preferred style is to
327    call into the inferior.  The value is simply a string that is
328    copied into the command, so it can be anything that GDB can
329    evaluate to a callable address, not necessarily a function name.  */
330
331 static char *dprintf_function = "";
332
333 /* The channel to use for dynamic printf if the preferred style is to
334    call into the inferior; if a nonempty string, it will be passed to
335    the call as the first argument, with the format string as the
336    second.  As with the dprintf function, this can be anything that
337    GDB knows how to evaluate, so in addition to common choices like
338    "stderr", this could be an app-specific expression like
339    "mystreams[curlogger]".  */
340
341 static char *dprintf_channel = "";
342
343 /* True if dprintf commands should continue to operate even if GDB
344    has disconnected.  */
345 static int disconnected_dprintf = 1;
346
347 /* A reference-counted struct command_line.  This lets multiple
348    breakpoints share a single command list.  */
349 struct counted_command_line
350 {
351   /* The reference count.  */
352   int refc;
353
354   /* The command list.  */
355   struct command_line *commands;
356 };
357
358 struct command_line *
359 breakpoint_commands (struct breakpoint *b)
360 {
361   return b->commands ? b->commands->commands : NULL;
362 }
363
364 /* Flag indicating that a command has proceeded the inferior past the
365    current breakpoint.  */
366
367 static int breakpoint_proceeded;
368
369 const char *
370 bpdisp_text (enum bpdisp disp)
371 {
372   /* NOTE: the following values are a part of MI protocol and
373      represent values of 'disp' field returned when inferior stops at
374      a breakpoint.  */
375   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
376
377   return bpdisps[(int) disp];
378 }
379
380 /* Prototypes for exported functions.  */
381 /* If FALSE, gdb will not use hardware support for watchpoints, even
382    if such is available.  */
383 static int can_use_hw_watchpoints;
384
385 static void
386 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
387                              struct cmd_list_element *c,
388                              const char *value)
389 {
390   fprintf_filtered (file,
391                     _("Debugger's willingness to use "
392                       "watchpoint hardware is %s.\n"),
393                     value);
394 }
395
396 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
397    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
398    for unrecognized breakpoint locations.
399    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
400 static enum auto_boolean pending_break_support;
401 static void
402 show_pending_break_support (struct ui_file *file, int from_tty,
403                             struct cmd_list_element *c,
404                             const char *value)
405 {
406   fprintf_filtered (file,
407                     _("Debugger's behavior regarding "
408                       "pending breakpoints is %s.\n"),
409                     value);
410 }
411
412 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
413    set with "break" but falling in read-only memory.
414    If 0, gdb will warn about such breakpoints, but won't automatically
415    use hardware breakpoints.  */
416 static int automatic_hardware_breakpoints;
417 static void
418 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
419                                      struct cmd_list_element *c,
420                                      const char *value)
421 {
422   fprintf_filtered (file,
423                     _("Automatic usage of hardware breakpoints is %s.\n"),
424                     value);
425 }
426
427 /* If on, gdb will keep breakpoints inserted even as inferior is
428    stopped, and immediately insert any new breakpoints.  If off, gdb
429    will insert breakpoints into inferior only when resuming it, and
430    will remove breakpoints upon stop.  If auto, GDB will behave as ON
431    if in non-stop mode, and as OFF if all-stop mode.*/
432
433 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
434
435 static void
436 show_always_inserted_mode (struct ui_file *file, int from_tty,
437                      struct cmd_list_element *c, const char *value)
438 {
439   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
440     fprintf_filtered (file,
441                       _("Always inserted breakpoint "
442                         "mode is %s (currently %s).\n"),
443                       value,
444                       breakpoints_always_inserted_mode () ? "on" : "off");
445   else
446     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
447                       value);
448 }
449
450 int
451 breakpoints_always_inserted_mode (void)
452 {
453   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
454           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
455 }
456
457 static const char condition_evaluation_both[] = "host or target";
458
459 /* Modes for breakpoint condition evaluation.  */
460 static const char condition_evaluation_auto[] = "auto";
461 static const char condition_evaluation_host[] = "host";
462 static const char condition_evaluation_target[] = "target";
463 static const char *const condition_evaluation_enums[] = {
464   condition_evaluation_auto,
465   condition_evaluation_host,
466   condition_evaluation_target,
467   NULL
468 };
469
470 /* Global that holds the current mode for breakpoint condition evaluation.  */
471 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
472
473 /* Global that we use to display information to the user (gets its value from
474    condition_evaluation_mode_1.  */
475 static const char *condition_evaluation_mode = condition_evaluation_auto;
476
477 /* Translate a condition evaluation mode MODE into either "host"
478    or "target".  This is used mostly to translate from "auto" to the
479    real setting that is being used.  It returns the translated
480    evaluation mode.  */
481
482 static const char *
483 translate_condition_evaluation_mode (const char *mode)
484 {
485   if (mode == condition_evaluation_auto)
486     {
487       if (target_supports_evaluation_of_breakpoint_conditions ())
488         return condition_evaluation_target;
489       else
490         return condition_evaluation_host;
491     }
492   else
493     return mode;
494 }
495
496 /* Discovers what condition_evaluation_auto translates to.  */
497
498 static const char *
499 breakpoint_condition_evaluation_mode (void)
500 {
501   return translate_condition_evaluation_mode (condition_evaluation_mode);
502 }
503
504 /* Return true if GDB should evaluate breakpoint conditions or false
505    otherwise.  */
506
507 static int
508 gdb_evaluates_breakpoint_condition_p (void)
509 {
510   const char *mode = breakpoint_condition_evaluation_mode ();
511
512   return (mode == condition_evaluation_host);
513 }
514
515 void _initialize_breakpoint (void);
516
517 /* Are we executing breakpoint commands?  */
518 static int executing_breakpoint_commands;
519
520 /* Are overlay event breakpoints enabled? */
521 static int overlay_events_enabled;
522
523 /* See description in breakpoint.h. */
524 int target_exact_watchpoints = 0;
525
526 /* Walk the following statement or block through all breakpoints.
527    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
528    current breakpoint.  */
529
530 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
531
532 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
533         for (B = breakpoint_chain;      \
534              B ? (TMP=B->next, 1): 0;   \
535              B = TMP)
536
537 /* Similar iterator for the low-level breakpoints.  SAFE variant is
538    not provided so update_global_location_list must not be called
539    while executing the block of ALL_BP_LOCATIONS.  */
540
541 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
542         for (BP_TMP = bp_location;                                      \
543              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
544              BP_TMP++)
545
546 /* Iterates through locations with address ADDRESS for the currently selected
547    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
548    to where the loop should start from.
549    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
550    appropriate location to start with.  */
551
552 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
553         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
554              BP_LOCP_TMP = BP_LOCP_START;                               \
555              BP_LOCP_START                                              \
556              && (BP_LOCP_TMP < bp_location + bp_location_count          \
557              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
558              BP_LOCP_TMP++)
559
560 /* Iterator for tracepoints only.  */
561
562 #define ALL_TRACEPOINTS(B)  \
563   for (B = breakpoint_chain; B; B = B->next)  \
564     if (is_tracepoint (B))
565
566 /* Chains of all breakpoints defined.  */
567
568 struct breakpoint *breakpoint_chain;
569
570 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
571
572 static struct bp_location **bp_location;
573
574 /* Number of elements of BP_LOCATION.  */
575
576 static unsigned bp_location_count;
577
578 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
579    ADDRESS for the current elements of BP_LOCATION which get a valid
580    result from bp_location_has_shadow.  You can use it for roughly
581    limiting the subrange of BP_LOCATION to scan for shadow bytes for
582    an address you need to read.  */
583
584 static CORE_ADDR bp_location_placed_address_before_address_max;
585
586 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
587    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
588    BP_LOCATION which get a valid result from bp_location_has_shadow.
589    You can use it for roughly limiting the subrange of BP_LOCATION to
590    scan for shadow bytes for an address you need to read.  */
591
592 static CORE_ADDR bp_location_shadow_len_after_address_max;
593
594 /* The locations that no longer correspond to any breakpoint, unlinked
595    from bp_location array, but for which a hit may still be reported
596    by a target.  */
597 VEC(bp_location_p) *moribund_locations = NULL;
598
599 /* Number of last breakpoint made.  */
600
601 static int breakpoint_count;
602
603 /* The value of `breakpoint_count' before the last command that
604    created breakpoints.  If the last (break-like) command created more
605    than one breakpoint, then the difference between BREAKPOINT_COUNT
606    and PREV_BREAKPOINT_COUNT is more than one.  */
607 static int prev_breakpoint_count;
608
609 /* Number of last tracepoint made.  */
610
611 static int tracepoint_count;
612
613 static struct cmd_list_element *breakpoint_set_cmdlist;
614 static struct cmd_list_element *breakpoint_show_cmdlist;
615 struct cmd_list_element *save_cmdlist;
616
617 /* Return whether a breakpoint is an active enabled breakpoint.  */
618 static int
619 breakpoint_enabled (struct breakpoint *b)
620 {
621   return (b->enable_state == bp_enabled);
622 }
623
624 /* Set breakpoint count to NUM.  */
625
626 static void
627 set_breakpoint_count (int num)
628 {
629   prev_breakpoint_count = breakpoint_count;
630   breakpoint_count = num;
631   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
632 }
633
634 /* Used by `start_rbreak_breakpoints' below, to record the current
635    breakpoint count before "rbreak" creates any breakpoint.  */
636 static int rbreak_start_breakpoint_count;
637
638 /* Called at the start an "rbreak" command to record the first
639    breakpoint made.  */
640
641 void
642 start_rbreak_breakpoints (void)
643 {
644   rbreak_start_breakpoint_count = breakpoint_count;
645 }
646
647 /* Called at the end of an "rbreak" command to record the last
648    breakpoint made.  */
649
650 void
651 end_rbreak_breakpoints (void)
652 {
653   prev_breakpoint_count = rbreak_start_breakpoint_count;
654 }
655
656 /* Used in run_command to zero the hit count when a new run starts.  */
657
658 void
659 clear_breakpoint_hit_counts (void)
660 {
661   struct breakpoint *b;
662
663   ALL_BREAKPOINTS (b)
664     b->hit_count = 0;
665 }
666
667 /* Allocate a new counted_command_line with reference count of 1.
668    The new structure owns COMMANDS.  */
669
670 static struct counted_command_line *
671 alloc_counted_command_line (struct command_line *commands)
672 {
673   struct counted_command_line *result
674     = xmalloc (sizeof (struct counted_command_line));
675
676   result->refc = 1;
677   result->commands = commands;
678   return result;
679 }
680
681 /* Increment reference count.  This does nothing if CMD is NULL.  */
682
683 static void
684 incref_counted_command_line (struct counted_command_line *cmd)
685 {
686   if (cmd)
687     ++cmd->refc;
688 }
689
690 /* Decrement reference count.  If the reference count reaches 0,
691    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
692    nothing if *CMDP is NULL.  */
693
694 static void
695 decref_counted_command_line (struct counted_command_line **cmdp)
696 {
697   if (*cmdp)
698     {
699       if (--(*cmdp)->refc == 0)
700         {
701           free_command_lines (&(*cmdp)->commands);
702           xfree (*cmdp);
703         }
704       *cmdp = NULL;
705     }
706 }
707
708 /* A cleanup function that calls decref_counted_command_line.  */
709
710 static void
711 do_cleanup_counted_command_line (void *arg)
712 {
713   decref_counted_command_line (arg);
714 }
715
716 /* Create a cleanup that calls decref_counted_command_line on the
717    argument.  */
718
719 static struct cleanup *
720 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
721 {
722   return make_cleanup (do_cleanup_counted_command_line, cmdp);
723 }
724
725 \f
726 /* Return the breakpoint with the specified number, or NULL
727    if the number does not refer to an existing breakpoint.  */
728
729 struct breakpoint *
730 get_breakpoint (int num)
731 {
732   struct breakpoint *b;
733
734   ALL_BREAKPOINTS (b)
735     if (b->number == num)
736       return b;
737   
738   return NULL;
739 }
740
741 \f
742
743 /* Mark locations as "conditions have changed" in case the target supports
744    evaluating conditions on its side.  */
745
746 static void
747 mark_breakpoint_modified (struct breakpoint *b)
748 {
749   struct bp_location *loc;
750
751   /* This is only meaningful if the target is
752      evaluating conditions and if the user has
753      opted for condition evaluation on the target's
754      side.  */
755   if (gdb_evaluates_breakpoint_condition_p ()
756       || !target_supports_evaluation_of_breakpoint_conditions ())
757     return;
758
759   if (!is_breakpoint (b))
760     return;
761
762   for (loc = b->loc; loc; loc = loc->next)
763     loc->condition_changed = condition_modified;
764 }
765
766 /* Mark location as "conditions have changed" in case the target supports
767    evaluating conditions on its side.  */
768
769 static void
770 mark_breakpoint_location_modified (struct bp_location *loc)
771 {
772   /* This is only meaningful if the target is
773      evaluating conditions and if the user has
774      opted for condition evaluation on the target's
775      side.  */
776   if (gdb_evaluates_breakpoint_condition_p ()
777       || !target_supports_evaluation_of_breakpoint_conditions ())
778
779     return;
780
781   if (!is_breakpoint (loc->owner))
782     return;
783
784   loc->condition_changed = condition_modified;
785 }
786
787 /* Sets the condition-evaluation mode using the static global
788    condition_evaluation_mode.  */
789
790 static void
791 set_condition_evaluation_mode (char *args, int from_tty,
792                                struct cmd_list_element *c)
793 {
794   const char *old_mode, *new_mode;
795
796   if ((condition_evaluation_mode_1 == condition_evaluation_target)
797       && !target_supports_evaluation_of_breakpoint_conditions ())
798     {
799       condition_evaluation_mode_1 = condition_evaluation_mode;
800       warning (_("Target does not support breakpoint condition evaluation.\n"
801                  "Using host evaluation mode instead."));
802       return;
803     }
804
805   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
806   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
807
808   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
809      settings was "auto".  */
810   condition_evaluation_mode = condition_evaluation_mode_1;
811
812   /* Only update the mode if the user picked a different one.  */
813   if (new_mode != old_mode)
814     {
815       struct bp_location *loc, **loc_tmp;
816       /* If the user switched to a different evaluation mode, we
817          need to synch the changes with the target as follows:
818
819          "host" -> "target": Send all (valid) conditions to the target.
820          "target" -> "host": Remove all the conditions from the target.
821       */
822
823       if (new_mode == condition_evaluation_target)
824         {
825           /* Mark everything modified and synch conditions with the
826              target.  */
827           ALL_BP_LOCATIONS (loc, loc_tmp)
828             mark_breakpoint_location_modified (loc);
829         }
830       else
831         {
832           /* Manually mark non-duplicate locations to synch conditions
833              with the target.  We do this to remove all the conditions the
834              target knows about.  */
835           ALL_BP_LOCATIONS (loc, loc_tmp)
836             if (is_breakpoint (loc->owner) && loc->inserted)
837               loc->needs_update = 1;
838         }
839
840       /* Do the update.  */
841       update_global_location_list (1);
842     }
843
844   return;
845 }
846
847 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
848    what "auto" is translating to.  */
849
850 static void
851 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
852                                 struct cmd_list_element *c, const char *value)
853 {
854   if (condition_evaluation_mode == condition_evaluation_auto)
855     fprintf_filtered (file,
856                       _("Breakpoint condition evaluation "
857                         "mode is %s (currently %s).\n"),
858                       value,
859                       breakpoint_condition_evaluation_mode ());
860   else
861     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
862                       value);
863 }
864
865 /* A comparison function for bp_location AP and BP that is used by
866    bsearch.  This comparison function only cares about addresses, unlike
867    the more general bp_location_compare function.  */
868
869 static int
870 bp_location_compare_addrs (const void *ap, const void *bp)
871 {
872   struct bp_location *a = *(void **) ap;
873   struct bp_location *b = *(void **) bp;
874
875   if (a->address == b->address)
876     return 0;
877   else
878     return ((a->address > b->address) - (a->address < b->address));
879 }
880
881 /* Helper function to skip all bp_locations with addresses
882    less than ADDRESS.  It returns the first bp_location that
883    is greater than or equal to ADDRESS.  If none is found, just
884    return NULL.  */
885
886 static struct bp_location **
887 get_first_locp_gte_addr (CORE_ADDR address)
888 {
889   struct bp_location dummy_loc;
890   struct bp_location *dummy_locp = &dummy_loc;
891   struct bp_location **locp_found = NULL;
892
893   /* Initialize the dummy location's address field.  */
894   memset (&dummy_loc, 0, sizeof (struct bp_location));
895   dummy_loc.address = address;
896
897   /* Find a close match to the first location at ADDRESS.  */
898   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
899                         sizeof (struct bp_location **),
900                         bp_location_compare_addrs);
901
902   /* Nothing was found, nothing left to do.  */
903   if (locp_found == NULL)
904     return NULL;
905
906   /* We may have found a location that is at ADDRESS but is not the first in the
907      location's list.  Go backwards (if possible) and locate the first one.  */
908   while ((locp_found - 1) >= bp_location
909          && (*(locp_found - 1))->address == address)
910     locp_found--;
911
912   return locp_found;
913 }
914
915 void
916 set_breakpoint_condition (struct breakpoint *b, char *exp,
917                           int from_tty)
918 {
919   xfree (b->cond_string);
920   b->cond_string = NULL;
921
922   if (is_watchpoint (b))
923     {
924       struct watchpoint *w = (struct watchpoint *) b;
925
926       xfree (w->cond_exp);
927       w->cond_exp = NULL;
928     }
929   else
930     {
931       struct bp_location *loc;
932
933       for (loc = b->loc; loc; loc = loc->next)
934         {
935           xfree (loc->cond);
936           loc->cond = NULL;
937
938           /* No need to free the condition agent expression
939              bytecode (if we have one).  We will handle this
940              when we go through update_global_location_list.  */
941         }
942     }
943
944   if (*exp == 0)
945     {
946       if (from_tty)
947         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
948     }
949   else
950     {
951       char *arg = exp;
952
953       /* I don't know if it matters whether this is the string the user
954          typed in or the decompiled expression.  */
955       b->cond_string = xstrdup (arg);
956       b->condition_not_parsed = 0;
957
958       if (is_watchpoint (b))
959         {
960           struct watchpoint *w = (struct watchpoint *) b;
961
962           innermost_block = NULL;
963           arg = exp;
964           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
965           if (*arg)
966             error (_("Junk at end of expression"));
967           w->cond_exp_valid_block = innermost_block;
968         }
969       else
970         {
971           struct bp_location *loc;
972
973           for (loc = b->loc; loc; loc = loc->next)
974             {
975               arg = exp;
976               loc->cond =
977                 parse_exp_1 (&arg, loc->address,
978                              block_for_pc (loc->address), 0);
979               if (*arg)
980                 error (_("Junk at end of expression"));
981             }
982         }
983     }
984   mark_breakpoint_modified (b);
985
986   annotate_breakpoints_changed ();
987   observer_notify_breakpoint_modified (b);
988 }
989
990 /* Completion for the "condition" command.  */
991
992 static VEC (char_ptr) *
993 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
994 {
995   char *space;
996
997   text = skip_spaces (text);
998   space = skip_to_space (text);
999   if (*space == '\0')
1000     {
1001       int len;
1002       struct breakpoint *b;
1003       VEC (char_ptr) *result = NULL;
1004
1005       if (text[0] == '$')
1006         {
1007           /* We don't support completion of history indices.  */
1008           if (isdigit (text[1]))
1009             return NULL;
1010           return complete_internalvar (&text[1]);
1011         }
1012
1013       /* We're completing the breakpoint number.  */
1014       len = strlen (text);
1015
1016       ALL_BREAKPOINTS (b)
1017       {
1018         int single = b->loc->next == NULL;
1019         struct bp_location *loc;
1020         int count = 1;
1021
1022         for (loc = b->loc; loc; loc = loc->next)
1023           {
1024             char location[50];
1025
1026             if (single)
1027               xsnprintf (location, sizeof (location), "%d", b->number);
1028             else
1029               xsnprintf (location, sizeof (location),  "%d.%d", b->number,
1030                          count);
1031
1032             if (strncmp (location, text, len) == 0)
1033               VEC_safe_push (char_ptr, result, xstrdup (location));
1034
1035             ++count;
1036           }
1037       }
1038
1039       return result;
1040     }
1041
1042   /* We're completing the expression part.  */
1043   text = skip_spaces (space);
1044   return expression_completer (cmd, text, word);
1045 }
1046
1047 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1048
1049 static void
1050 condition_command (char *arg, int from_tty)
1051 {
1052   struct breakpoint *b;
1053   char *p;
1054   int bnum;
1055
1056   if (arg == 0)
1057     error_no_arg (_("breakpoint number"));
1058
1059   p = arg;
1060   bnum = get_number (&p);
1061   if (bnum == 0)
1062     error (_("Bad breakpoint argument: '%s'"), arg);
1063
1064   ALL_BREAKPOINTS (b)
1065     if (b->number == bnum)
1066       {
1067         /* Check if this breakpoint has a Python object assigned to
1068            it, and if it has a definition of the "stop"
1069            method.  This method and conditions entered into GDB from
1070            the CLI are mutually exclusive.  */
1071         if (b->py_bp_object
1072             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1073           error (_("Cannot set a condition where a Python 'stop' "
1074                    "method has been defined in the breakpoint."));
1075         set_breakpoint_condition (b, p, from_tty);
1076
1077         if (is_breakpoint (b))
1078           update_global_location_list (1);
1079
1080         return;
1081       }
1082
1083   error (_("No breakpoint number %d."), bnum);
1084 }
1085
1086 /* Check that COMMAND do not contain commands that are suitable
1087    only for tracepoints and not suitable for ordinary breakpoints.
1088    Throw if any such commands is found.  */
1089
1090 static void
1091 check_no_tracepoint_commands (struct command_line *commands)
1092 {
1093   struct command_line *c;
1094
1095   for (c = commands; c; c = c->next)
1096     {
1097       int i;
1098
1099       if (c->control_type == while_stepping_control)
1100         error (_("The 'while-stepping' command can "
1101                  "only be used for tracepoints"));
1102
1103       for (i = 0; i < c->body_count; ++i)
1104         check_no_tracepoint_commands ((c->body_list)[i]);
1105
1106       /* Not that command parsing removes leading whitespace and comment
1107          lines and also empty lines.  So, we only need to check for
1108          command directly.  */
1109       if (strstr (c->line, "collect ") == c->line)
1110         error (_("The 'collect' command can only be used for tracepoints"));
1111
1112       if (strstr (c->line, "teval ") == c->line)
1113         error (_("The 'teval' command can only be used for tracepoints"));
1114     }
1115 }
1116
1117 /* Encapsulate tests for different types of tracepoints.  */
1118
1119 static int
1120 is_tracepoint_type (enum bptype type)
1121 {
1122   return (type == bp_tracepoint
1123           || type == bp_fast_tracepoint
1124           || type == bp_static_tracepoint);
1125 }
1126
1127 int
1128 is_tracepoint (const struct breakpoint *b)
1129 {
1130   return is_tracepoint_type (b->type);
1131 }
1132
1133 /* A helper function that validates that COMMANDS are valid for a
1134    breakpoint.  This function will throw an exception if a problem is
1135    found.  */
1136
1137 static void
1138 validate_commands_for_breakpoint (struct breakpoint *b,
1139                                   struct command_line *commands)
1140 {
1141   if (is_tracepoint (b))
1142     {
1143       /* We need to verify that each top-level element of commands is
1144          valid for tracepoints, that there's at most one
1145          while-stepping element, and that while-stepping's body has
1146          valid tracing commands excluding nested while-stepping.  */
1147       struct command_line *c;
1148       struct command_line *while_stepping = 0;
1149       for (c = commands; c; c = c->next)
1150         {
1151           if (c->control_type == while_stepping_control)
1152             {
1153               if (b->type == bp_fast_tracepoint)
1154                 error (_("The 'while-stepping' command "
1155                          "cannot be used for fast tracepoint"));
1156               else if (b->type == bp_static_tracepoint)
1157                 error (_("The 'while-stepping' command "
1158                          "cannot be used for static tracepoint"));
1159
1160               if (while_stepping)
1161                 error (_("The 'while-stepping' command "
1162                          "can be used only once"));
1163               else
1164                 while_stepping = c;
1165             }
1166         }
1167       if (while_stepping)
1168         {
1169           struct command_line *c2;
1170
1171           gdb_assert (while_stepping->body_count == 1);
1172           c2 = while_stepping->body_list[0];
1173           for (; c2; c2 = c2->next)
1174             {
1175               if (c2->control_type == while_stepping_control)
1176                 error (_("The 'while-stepping' command cannot be nested"));
1177             }
1178         }
1179     }
1180   else
1181     {
1182       check_no_tracepoint_commands (commands);
1183     }
1184 }
1185
1186 /* Return a vector of all the static tracepoints set at ADDR.  The
1187    caller is responsible for releasing the vector.  */
1188
1189 VEC(breakpoint_p) *
1190 static_tracepoints_here (CORE_ADDR addr)
1191 {
1192   struct breakpoint *b;
1193   VEC(breakpoint_p) *found = 0;
1194   struct bp_location *loc;
1195
1196   ALL_BREAKPOINTS (b)
1197     if (b->type == bp_static_tracepoint)
1198       {
1199         for (loc = b->loc; loc; loc = loc->next)
1200           if (loc->address == addr)
1201             VEC_safe_push(breakpoint_p, found, b);
1202       }
1203
1204   return found;
1205 }
1206
1207 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1208    validate that only allowed commands are included.  */
1209
1210 void
1211 breakpoint_set_commands (struct breakpoint *b, 
1212                          struct command_line *commands)
1213 {
1214   validate_commands_for_breakpoint (b, commands);
1215
1216   decref_counted_command_line (&b->commands);
1217   b->commands = alloc_counted_command_line (commands);
1218   annotate_breakpoints_changed ();
1219   observer_notify_breakpoint_modified (b);
1220 }
1221
1222 /* Set the internal `silent' flag on the breakpoint.  Note that this
1223    is not the same as the "silent" that may appear in the breakpoint's
1224    commands.  */
1225
1226 void
1227 breakpoint_set_silent (struct breakpoint *b, int silent)
1228 {
1229   int old_silent = b->silent;
1230
1231   b->silent = silent;
1232   if (old_silent != silent)
1233     observer_notify_breakpoint_modified (b);
1234 }
1235
1236 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1237    breakpoint work for any thread.  */
1238
1239 void
1240 breakpoint_set_thread (struct breakpoint *b, int thread)
1241 {
1242   int old_thread = b->thread;
1243
1244   b->thread = thread;
1245   if (old_thread != thread)
1246     observer_notify_breakpoint_modified (b);
1247 }
1248
1249 /* Set the task for this breakpoint.  If TASK is 0, make the
1250    breakpoint work for any task.  */
1251
1252 void
1253 breakpoint_set_task (struct breakpoint *b, int task)
1254 {
1255   int old_task = b->task;
1256
1257   b->task = task;
1258   if (old_task != task)
1259     observer_notify_breakpoint_modified (b);
1260 }
1261
1262 void
1263 check_tracepoint_command (char *line, void *closure)
1264 {
1265   struct breakpoint *b = closure;
1266
1267   validate_actionline (&line, b);
1268 }
1269
1270 /* A structure used to pass information through
1271    map_breakpoint_numbers.  */
1272
1273 struct commands_info
1274 {
1275   /* True if the command was typed at a tty.  */
1276   int from_tty;
1277
1278   /* The breakpoint range spec.  */
1279   char *arg;
1280
1281   /* Non-NULL if the body of the commands are being read from this
1282      already-parsed command.  */
1283   struct command_line *control;
1284
1285   /* The command lines read from the user, or NULL if they have not
1286      yet been read.  */
1287   struct counted_command_line *cmd;
1288 };
1289
1290 /* A callback for map_breakpoint_numbers that sets the commands for
1291    commands_command.  */
1292
1293 static void
1294 do_map_commands_command (struct breakpoint *b, void *data)
1295 {
1296   struct commands_info *info = data;
1297
1298   if (info->cmd == NULL)
1299     {
1300       struct command_line *l;
1301
1302       if (info->control != NULL)
1303         l = copy_command_lines (info->control->body_list[0]);
1304       else
1305         {
1306           struct cleanup *old_chain;
1307           char *str;
1308
1309           str = xstrprintf (_("Type commands for breakpoint(s) "
1310                               "%s, one per line."),
1311                             info->arg);
1312
1313           old_chain = make_cleanup (xfree, str);
1314
1315           l = read_command_lines (str,
1316                                   info->from_tty, 1,
1317                                   (is_tracepoint (b)
1318                                    ? check_tracepoint_command : 0),
1319                                   b);
1320
1321           do_cleanups (old_chain);
1322         }
1323
1324       info->cmd = alloc_counted_command_line (l);
1325     }
1326
1327   /* If a breakpoint was on the list more than once, we don't need to
1328      do anything.  */
1329   if (b->commands != info->cmd)
1330     {
1331       validate_commands_for_breakpoint (b, info->cmd->commands);
1332       incref_counted_command_line (info->cmd);
1333       decref_counted_command_line (&b->commands);
1334       b->commands = info->cmd;
1335       annotate_breakpoints_changed ();
1336       observer_notify_breakpoint_modified (b);
1337     }
1338 }
1339
1340 static void
1341 commands_command_1 (char *arg, int from_tty, 
1342                     struct command_line *control)
1343 {
1344   struct cleanup *cleanups;
1345   struct commands_info info;
1346
1347   info.from_tty = from_tty;
1348   info.control = control;
1349   info.cmd = NULL;
1350   /* If we read command lines from the user, then `info' will hold an
1351      extra reference to the commands that we must clean up.  */
1352   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1353
1354   if (arg == NULL || !*arg)
1355     {
1356       if (breakpoint_count - prev_breakpoint_count > 1)
1357         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1358                           breakpoint_count);
1359       else if (breakpoint_count > 0)
1360         arg = xstrprintf ("%d", breakpoint_count);
1361       else
1362         {
1363           /* So that we don't try to free the incoming non-NULL
1364              argument in the cleanup below.  Mapping breakpoint
1365              numbers will fail in this case.  */
1366           arg = NULL;
1367         }
1368     }
1369   else
1370     /* The command loop has some static state, so we need to preserve
1371        our argument.  */
1372     arg = xstrdup (arg);
1373
1374   if (arg != NULL)
1375     make_cleanup (xfree, arg);
1376
1377   info.arg = arg;
1378
1379   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1380
1381   if (info.cmd == NULL)
1382     error (_("No breakpoints specified."));
1383
1384   do_cleanups (cleanups);
1385 }
1386
1387 static void
1388 commands_command (char *arg, int from_tty)
1389 {
1390   commands_command_1 (arg, from_tty, NULL);
1391 }
1392
1393 /* Like commands_command, but instead of reading the commands from
1394    input stream, takes them from an already parsed command structure.
1395
1396    This is used by cli-script.c to DTRT with breakpoint commands
1397    that are part of if and while bodies.  */
1398 enum command_control_type
1399 commands_from_control_command (char *arg, struct command_line *cmd)
1400 {
1401   commands_command_1 (arg, 0, cmd);
1402   return simple_control;
1403 }
1404
1405 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1406
1407 static int
1408 bp_location_has_shadow (struct bp_location *bl)
1409 {
1410   if (bl->loc_type != bp_loc_software_breakpoint)
1411     return 0;
1412   if (!bl->inserted)
1413     return 0;
1414   if (bl->target_info.shadow_len == 0)
1415     /* BL isn't valid, or doesn't shadow memory.  */
1416     return 0;
1417   return 1;
1418 }
1419
1420 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1421    by replacing any memory breakpoints with their shadowed contents.
1422
1423    If READBUF is not NULL, this buffer must not overlap with any of
1424    the breakpoint location's shadow_contents buffers.  Otherwise,
1425    a failed assertion internal error will be raised.
1426
1427    The range of shadowed area by each bp_location is:
1428      bl->address - bp_location_placed_address_before_address_max
1429      up to bl->address + bp_location_shadow_len_after_address_max
1430    The range we were requested to resolve shadows for is:
1431      memaddr ... memaddr + len
1432    Thus the safe cutoff boundaries for performance optimization are
1433      memaddr + len <= (bl->address
1434                        - bp_location_placed_address_before_address_max)
1435    and:
1436      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1437
1438 void
1439 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1440                         const gdb_byte *writebuf_org,
1441                         ULONGEST memaddr, LONGEST len)
1442 {
1443   /* Left boundary, right boundary and median element of our binary
1444      search.  */
1445   unsigned bc_l, bc_r, bc;
1446
1447   /* Find BC_L which is a leftmost element which may affect BUF
1448      content.  It is safe to report lower value but a failure to
1449      report higher one.  */
1450
1451   bc_l = 0;
1452   bc_r = bp_location_count;
1453   while (bc_l + 1 < bc_r)
1454     {
1455       struct bp_location *bl;
1456
1457       bc = (bc_l + bc_r) / 2;
1458       bl = bp_location[bc];
1459
1460       /* Check first BL->ADDRESS will not overflow due to the added
1461          constant.  Then advance the left boundary only if we are sure
1462          the BC element can in no way affect the BUF content (MEMADDR
1463          to MEMADDR + LEN range).
1464
1465          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1466          offset so that we cannot miss a breakpoint with its shadow
1467          range tail still reaching MEMADDR.  */
1468
1469       if ((bl->address + bp_location_shadow_len_after_address_max
1470            >= bl->address)
1471           && (bl->address + bp_location_shadow_len_after_address_max
1472               <= memaddr))
1473         bc_l = bc;
1474       else
1475         bc_r = bc;
1476     }
1477
1478   /* Due to the binary search above, we need to make sure we pick the
1479      first location that's at BC_L's address.  E.g., if there are
1480      multiple locations at the same address, BC_L may end up pointing
1481      at a duplicate location, and miss the "master"/"inserted"
1482      location.  Say, given locations L1, L2 and L3 at addresses A and
1483      B:
1484
1485       L1@A, L2@A, L3@B, ...
1486
1487      BC_L could end up pointing at location L2, while the "master"
1488      location could be L1.  Since the `loc->inserted' flag is only set
1489      on "master" locations, we'd forget to restore the shadow of L1
1490      and L2.  */
1491   while (bc_l > 0
1492          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1493     bc_l--;
1494
1495   /* Now do full processing of the found relevant range of elements.  */
1496
1497   for (bc = bc_l; bc < bp_location_count; bc++)
1498   {
1499     struct bp_location *bl = bp_location[bc];
1500     CORE_ADDR bp_addr = 0;
1501     int bp_size = 0;
1502     int bptoffset = 0;
1503
1504     /* bp_location array has BL->OWNER always non-NULL.  */
1505     if (bl->owner->type == bp_none)
1506       warning (_("reading through apparently deleted breakpoint #%d?"),
1507                bl->owner->number);
1508
1509     /* Performance optimization: any further element can no longer affect BUF
1510        content.  */
1511
1512     if (bl->address >= bp_location_placed_address_before_address_max
1513         && memaddr + len <= (bl->address
1514                              - bp_location_placed_address_before_address_max))
1515       break;
1516
1517     if (!bp_location_has_shadow (bl))
1518       continue;
1519     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1520                                    current_program_space->aspace, 0))
1521       continue;
1522
1523     /* Addresses and length of the part of the breakpoint that
1524        we need to copy.  */
1525     bp_addr = bl->target_info.placed_address;
1526     bp_size = bl->target_info.shadow_len;
1527
1528     if (bp_addr + bp_size <= memaddr)
1529       /* The breakpoint is entirely before the chunk of memory we
1530          are reading.  */
1531       continue;
1532
1533     if (bp_addr >= memaddr + len)
1534       /* The breakpoint is entirely after the chunk of memory we are
1535          reading.  */
1536       continue;
1537
1538     /* Offset within shadow_contents.  */
1539     if (bp_addr < memaddr)
1540       {
1541         /* Only copy the second part of the breakpoint.  */
1542         bp_size -= memaddr - bp_addr;
1543         bptoffset = memaddr - bp_addr;
1544         bp_addr = memaddr;
1545       }
1546
1547     if (bp_addr + bp_size > memaddr + len)
1548       {
1549         /* Only copy the first part of the breakpoint.  */
1550         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1551       }
1552
1553     if (readbuf != NULL)
1554       {
1555         /* Verify that the readbuf buffer does not overlap with
1556            the shadow_contents buffer.  */
1557         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1558                     || readbuf >= (bl->target_info.shadow_contents
1559                                    + bl->target_info.shadow_len));
1560
1561         /* Update the read buffer with this inserted breakpoint's
1562            shadow.  */
1563         memcpy (readbuf + bp_addr - memaddr,
1564                 bl->target_info.shadow_contents + bptoffset, bp_size);
1565       }
1566     else
1567       {
1568         struct gdbarch *gdbarch = bl->gdbarch;
1569         const unsigned char *bp;
1570         CORE_ADDR placed_address = bl->target_info.placed_address;
1571         unsigned placed_size = bl->target_info.placed_size;
1572
1573         /* Update the shadow with what we want to write to memory.  */
1574         memcpy (bl->target_info.shadow_contents + bptoffset,
1575                 writebuf_org + bp_addr - memaddr, bp_size);
1576
1577         /* Determine appropriate breakpoint contents and size for this
1578            address.  */
1579         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1580
1581         /* Update the final write buffer with this inserted
1582            breakpoint's INSN.  */
1583         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1584       }
1585   }
1586 }
1587 \f
1588
1589 /* Return true if BPT is either a software breakpoint or a hardware
1590    breakpoint.  */
1591
1592 int
1593 is_breakpoint (const struct breakpoint *bpt)
1594 {
1595   return (bpt->type == bp_breakpoint
1596           || bpt->type == bp_hardware_breakpoint
1597           || bpt->type == bp_dprintf);
1598 }
1599
1600 /* Return true if BPT is of any hardware watchpoint kind.  */
1601
1602 static int
1603 is_hardware_watchpoint (const struct breakpoint *bpt)
1604 {
1605   return (bpt->type == bp_hardware_watchpoint
1606           || bpt->type == bp_read_watchpoint
1607           || bpt->type == bp_access_watchpoint);
1608 }
1609
1610 /* Return true if BPT is of any watchpoint kind, hardware or
1611    software.  */
1612
1613 int
1614 is_watchpoint (const struct breakpoint *bpt)
1615 {
1616   return (is_hardware_watchpoint (bpt)
1617           || bpt->type == bp_watchpoint);
1618 }
1619
1620 /* Returns true if the current thread and its running state are safe
1621    to evaluate or update watchpoint B.  Watchpoints on local
1622    expressions need to be evaluated in the context of the thread that
1623    was current when the watchpoint was created, and, that thread needs
1624    to be stopped to be able to select the correct frame context.
1625    Watchpoints on global expressions can be evaluated on any thread,
1626    and in any state.  It is presently left to the target allowing
1627    memory accesses when threads are running.  */
1628
1629 static int
1630 watchpoint_in_thread_scope (struct watchpoint *b)
1631 {
1632   return (b->base.pspace == current_program_space
1633           && (ptid_equal (b->watchpoint_thread, null_ptid)
1634               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1635                   && !is_executing (inferior_ptid))));
1636 }
1637
1638 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1639    associated bp_watchpoint_scope breakpoint.  */
1640
1641 static void
1642 watchpoint_del_at_next_stop (struct watchpoint *w)
1643 {
1644   struct breakpoint *b = &w->base;
1645
1646   if (b->related_breakpoint != b)
1647     {
1648       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1649       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1650       b->related_breakpoint->disposition = disp_del_at_next_stop;
1651       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1652       b->related_breakpoint = b;
1653     }
1654   b->disposition = disp_del_at_next_stop;
1655 }
1656
1657 /* Assuming that B is a watchpoint:
1658    - Reparse watchpoint expression, if REPARSE is non-zero
1659    - Evaluate expression and store the result in B->val
1660    - Evaluate the condition if there is one, and store the result
1661      in b->loc->cond.
1662    - Update the list of values that must be watched in B->loc.
1663
1664    If the watchpoint disposition is disp_del_at_next_stop, then do
1665    nothing.  If this is local watchpoint that is out of scope, delete
1666    it.
1667
1668    Even with `set breakpoint always-inserted on' the watchpoints are
1669    removed + inserted on each stop here.  Normal breakpoints must
1670    never be removed because they might be missed by a running thread
1671    when debugging in non-stop mode.  On the other hand, hardware
1672    watchpoints (is_hardware_watchpoint; processed here) are specific
1673    to each LWP since they are stored in each LWP's hardware debug
1674    registers.  Therefore, such LWP must be stopped first in order to
1675    be able to modify its hardware watchpoints.
1676
1677    Hardware watchpoints must be reset exactly once after being
1678    presented to the user.  It cannot be done sooner, because it would
1679    reset the data used to present the watchpoint hit to the user.  And
1680    it must not be done later because it could display the same single
1681    watchpoint hit during multiple GDB stops.  Note that the latter is
1682    relevant only to the hardware watchpoint types bp_read_watchpoint
1683    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1684    not user-visible - its hit is suppressed if the memory content has
1685    not changed.
1686
1687    The following constraints influence the location where we can reset
1688    hardware watchpoints:
1689
1690    * target_stopped_by_watchpoint and target_stopped_data_address are
1691      called several times when GDB stops.
1692
1693    [linux] 
1694    * Multiple hardware watchpoints can be hit at the same time,
1695      causing GDB to stop.  GDB only presents one hardware watchpoint
1696      hit at a time as the reason for stopping, and all the other hits
1697      are presented later, one after the other, each time the user
1698      requests the execution to be resumed.  Execution is not resumed
1699      for the threads still having pending hit event stored in
1700      LWP_INFO->STATUS.  While the watchpoint is already removed from
1701      the inferior on the first stop the thread hit event is kept being
1702      reported from its cached value by linux_nat_stopped_data_address
1703      until the real thread resume happens after the watchpoint gets
1704      presented and thus its LWP_INFO->STATUS gets reset.
1705
1706    Therefore the hardware watchpoint hit can get safely reset on the
1707    watchpoint removal from inferior.  */
1708
1709 static void
1710 update_watchpoint (struct watchpoint *b, int reparse)
1711 {
1712   int within_current_scope;
1713   struct frame_id saved_frame_id;
1714   int frame_saved;
1715
1716   /* If this is a local watchpoint, we only want to check if the
1717      watchpoint frame is in scope if the current thread is the thread
1718      that was used to create the watchpoint.  */
1719   if (!watchpoint_in_thread_scope (b))
1720     return;
1721
1722   if (b->base.disposition == disp_del_at_next_stop)
1723     return;
1724  
1725   frame_saved = 0;
1726
1727   /* Determine if the watchpoint is within scope.  */
1728   if (b->exp_valid_block == NULL)
1729     within_current_scope = 1;
1730   else
1731     {
1732       struct frame_info *fi = get_current_frame ();
1733       struct gdbarch *frame_arch = get_frame_arch (fi);
1734       CORE_ADDR frame_pc = get_frame_pc (fi);
1735
1736       /* If we're in a function epilogue, unwinding may not work
1737          properly, so do not attempt to recreate locations at this
1738          point.  See similar comments in watchpoint_check.  */
1739       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1740         return;
1741
1742       /* Save the current frame's ID so we can restore it after
1743          evaluating the watchpoint expression on its own frame.  */
1744       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1745          took a frame parameter, so that we didn't have to change the
1746          selected frame.  */
1747       frame_saved = 1;
1748       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1749
1750       fi = frame_find_by_id (b->watchpoint_frame);
1751       within_current_scope = (fi != NULL);
1752       if (within_current_scope)
1753         select_frame (fi);
1754     }
1755
1756   /* We don't free locations.  They are stored in the bp_location array
1757      and update_global_location_list will eventually delete them and
1758      remove breakpoints if needed.  */
1759   b->base.loc = NULL;
1760
1761   if (within_current_scope && reparse)
1762     {
1763       char *s;
1764
1765       if (b->exp)
1766         {
1767           xfree (b->exp);
1768           b->exp = NULL;
1769         }
1770       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1771       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1772       /* If the meaning of expression itself changed, the old value is
1773          no longer relevant.  We don't want to report a watchpoint hit
1774          to the user when the old value and the new value may actually
1775          be completely different objects.  */
1776       value_free (b->val);
1777       b->val = NULL;
1778       b->val_valid = 0;
1779
1780       /* Note that unlike with breakpoints, the watchpoint's condition
1781          expression is stored in the breakpoint object, not in the
1782          locations (re)created below.  */
1783       if (b->base.cond_string != NULL)
1784         {
1785           if (b->cond_exp != NULL)
1786             {
1787               xfree (b->cond_exp);
1788               b->cond_exp = NULL;
1789             }
1790
1791           s = b->base.cond_string;
1792           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1793         }
1794     }
1795
1796   /* If we failed to parse the expression, for example because
1797      it refers to a global variable in a not-yet-loaded shared library,
1798      don't try to insert watchpoint.  We don't automatically delete
1799      such watchpoint, though, since failure to parse expression
1800      is different from out-of-scope watchpoint.  */
1801   if ( !target_has_execution)
1802     {
1803       /* Without execution, memory can't change.  No use to try and
1804          set watchpoint locations.  The watchpoint will be reset when
1805          the target gains execution, through breakpoint_re_set.  */
1806     }
1807   else if (within_current_scope && b->exp)
1808     {
1809       int pc = 0;
1810       struct value *val_chain, *v, *result, *next;
1811       struct program_space *frame_pspace;
1812
1813       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1814
1815       /* Avoid setting b->val if it's already set.  The meaning of
1816          b->val is 'the last value' user saw, and we should update
1817          it only if we reported that last value to user.  As it
1818          happens, the code that reports it updates b->val directly.
1819          We don't keep track of the memory value for masked
1820          watchpoints.  */
1821       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1822         {
1823           b->val = v;
1824           b->val_valid = 1;
1825         }
1826
1827       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1828
1829       /* Look at each value on the value chain.  */
1830       for (v = val_chain; v; v = value_next (v))
1831         {
1832           /* If it's a memory location, and GDB actually needed
1833              its contents to evaluate the expression, then we
1834              must watch it.  If the first value returned is
1835              still lazy, that means an error occurred reading it;
1836              watch it anyway in case it becomes readable.  */
1837           if (VALUE_LVAL (v) == lval_memory
1838               && (v == val_chain || ! value_lazy (v)))
1839             {
1840               struct type *vtype = check_typedef (value_type (v));
1841
1842               /* We only watch structs and arrays if user asked
1843                  for it explicitly, never if they just happen to
1844                  appear in the middle of some value chain.  */
1845               if (v == result
1846                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1847                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1848                 {
1849                   CORE_ADDR addr;
1850                   int type;
1851                   struct bp_location *loc, **tmp;
1852
1853                   addr = value_address (v);
1854                   type = hw_write;
1855                   if (b->base.type == bp_read_watchpoint)
1856                     type = hw_read;
1857                   else if (b->base.type == bp_access_watchpoint)
1858                     type = hw_access;
1859
1860                   loc = allocate_bp_location (&b->base);
1861                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1862                     ;
1863                   *tmp = loc;
1864                   loc->gdbarch = get_type_arch (value_type (v));
1865
1866                   loc->pspace = frame_pspace;
1867                   loc->address = addr;
1868                   loc->length = TYPE_LENGTH (value_type (v));
1869                   loc->watchpoint_type = type;
1870                 }
1871             }
1872         }
1873
1874       /* Change the type of breakpoint between hardware assisted or
1875          an ordinary watchpoint depending on the hardware support
1876          and free hardware slots.  REPARSE is set when the inferior
1877          is started.  */
1878       if (reparse)
1879         {
1880           int reg_cnt;
1881           enum bp_loc_type loc_type;
1882           struct bp_location *bl;
1883
1884           reg_cnt = can_use_hardware_watchpoint (val_chain);
1885
1886           if (reg_cnt)
1887             {
1888               int i, target_resources_ok, other_type_used;
1889               enum bptype type;
1890
1891               /* Use an exact watchpoint when there's only one memory region to be
1892                  watched, and only one debug register is needed to watch it.  */
1893               b->exact = target_exact_watchpoints && reg_cnt == 1;
1894
1895               /* We need to determine how many resources are already
1896                  used for all other hardware watchpoints plus this one
1897                  to see if we still have enough resources to also fit
1898                  this watchpoint in as well.  */
1899
1900               /* If this is a software watchpoint, we try to turn it
1901                  to a hardware one -- count resources as if B was of
1902                  hardware watchpoint type.  */
1903               type = b->base.type;
1904               if (type == bp_watchpoint)
1905                 type = bp_hardware_watchpoint;
1906
1907               /* This watchpoint may or may not have been placed on
1908                  the list yet at this point (it won't be in the list
1909                  if we're trying to create it for the first time,
1910                  through watch_command), so always account for it
1911                  manually.  */
1912
1913               /* Count resources used by all watchpoints except B.  */
1914               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1915
1916               /* Add in the resources needed for B.  */
1917               i += hw_watchpoint_use_count (&b->base);
1918
1919               target_resources_ok
1920                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1921               if (target_resources_ok <= 0)
1922                 {
1923                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1924
1925                   if (target_resources_ok == 0 && !sw_mode)
1926                     error (_("Target does not support this type of "
1927                              "hardware watchpoint."));
1928                   else if (target_resources_ok < 0 && !sw_mode)
1929                     error (_("There are not enough available hardware "
1930                              "resources for this watchpoint."));
1931
1932                   /* Downgrade to software watchpoint.  */
1933                   b->base.type = bp_watchpoint;
1934                 }
1935               else
1936                 {
1937                   /* If this was a software watchpoint, we've just
1938                      found we have enough resources to turn it to a
1939                      hardware watchpoint.  Otherwise, this is a
1940                      nop.  */
1941                   b->base.type = type;
1942                 }
1943             }
1944           else if (!b->base.ops->works_in_software_mode (&b->base))
1945             error (_("Expression cannot be implemented with "
1946                      "read/access watchpoint."));
1947           else
1948             b->base.type = bp_watchpoint;
1949
1950           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1951                       : bp_loc_hardware_watchpoint);
1952           for (bl = b->base.loc; bl; bl = bl->next)
1953             bl->loc_type = loc_type;
1954         }
1955
1956       for (v = val_chain; v; v = next)
1957         {
1958           next = value_next (v);
1959           if (v != b->val)
1960             value_free (v);
1961         }
1962
1963       /* If a software watchpoint is not watching any memory, then the
1964          above left it without any location set up.  But,
1965          bpstat_stop_status requires a location to be able to report
1966          stops, so make sure there's at least a dummy one.  */
1967       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1968         {
1969           struct breakpoint *base = &b->base;
1970           base->loc = allocate_bp_location (base);
1971           base->loc->pspace = frame_pspace;
1972           base->loc->address = -1;
1973           base->loc->length = -1;
1974           base->loc->watchpoint_type = -1;
1975         }
1976     }
1977   else if (!within_current_scope)
1978     {
1979       printf_filtered (_("\
1980 Watchpoint %d deleted because the program has left the block\n\
1981 in which its expression is valid.\n"),
1982                        b->base.number);
1983       watchpoint_del_at_next_stop (b);
1984     }
1985
1986   /* Restore the selected frame.  */
1987   if (frame_saved)
1988     select_frame (frame_find_by_id (saved_frame_id));
1989 }
1990
1991
1992 /* Returns 1 iff breakpoint location should be
1993    inserted in the inferior.  We don't differentiate the type of BL's owner
1994    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1995    breakpoint_ops is not defined, because in insert_bp_location,
1996    tracepoint's insert_location will not be called.  */
1997 static int
1998 should_be_inserted (struct bp_location *bl)
1999 {
2000   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2001     return 0;
2002
2003   if (bl->owner->disposition == disp_del_at_next_stop)
2004     return 0;
2005
2006   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2007     return 0;
2008
2009   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2010     return 0;
2011
2012   /* This is set for example, when we're attached to the parent of a
2013      vfork, and have detached from the child.  The child is running
2014      free, and we expect it to do an exec or exit, at which point the
2015      OS makes the parent schedulable again (and the target reports
2016      that the vfork is done).  Until the child is done with the shared
2017      memory region, do not insert breakpoints in the parent, otherwise
2018      the child could still trip on the parent's breakpoints.  Since
2019      the parent is blocked anyway, it won't miss any breakpoint.  */
2020   if (bl->pspace->breakpoints_not_allowed)
2021     return 0;
2022
2023   return 1;
2024 }
2025
2026 /* Same as should_be_inserted but does the check assuming
2027    that the location is not duplicated.  */
2028
2029 static int
2030 unduplicated_should_be_inserted (struct bp_location *bl)
2031 {
2032   int result;
2033   const int save_duplicate = bl->duplicate;
2034
2035   bl->duplicate = 0;
2036   result = should_be_inserted (bl);
2037   bl->duplicate = save_duplicate;
2038   return result;
2039 }
2040
2041 /* Parses a conditional described by an expression COND into an
2042    agent expression bytecode suitable for evaluation
2043    by the bytecode interpreter.  Return NULL if there was
2044    any error during parsing.  */
2045
2046 static struct agent_expr *
2047 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2048 {
2049   struct agent_expr *aexpr = NULL;
2050   struct cleanup *old_chain = NULL;
2051   volatile struct gdb_exception ex;
2052
2053   if (!cond)
2054     return NULL;
2055
2056   /* We don't want to stop processing, so catch any errors
2057      that may show up.  */
2058   TRY_CATCH (ex, RETURN_MASK_ERROR)
2059     {
2060       aexpr = gen_eval_for_expr (scope, cond);
2061     }
2062
2063   if (ex.reason < 0)
2064     {
2065       /* If we got here, it means the condition could not be parsed to a valid
2066          bytecode expression and thus can't be evaluated on the target's side.
2067          It's no use iterating through the conditions.  */
2068       return NULL;
2069     }
2070
2071   /* We have a valid agent expression.  */
2072   return aexpr;
2073 }
2074
2075 /* Based on location BL, create a list of breakpoint conditions to be
2076    passed on to the target.  If we have duplicated locations with different
2077    conditions, we will add such conditions to the list.  The idea is that the
2078    target will evaluate the list of conditions and will only notify GDB when
2079    one of them is true.  */
2080
2081 static void
2082 build_target_condition_list (struct bp_location *bl)
2083 {
2084   struct bp_location **locp = NULL, **loc2p;
2085   int null_condition_or_parse_error = 0;
2086   int modified = bl->needs_update;
2087   struct bp_location *loc;
2088
2089   /* This is only meaningful if the target is
2090      evaluating conditions and if the user has
2091      opted for condition evaluation on the target's
2092      side.  */
2093   if (gdb_evaluates_breakpoint_condition_p ()
2094       || !target_supports_evaluation_of_breakpoint_conditions ())
2095     return;
2096
2097   /* Do a first pass to check for locations with no assigned
2098      conditions or conditions that fail to parse to a valid agent expression
2099      bytecode.  If any of these happen, then it's no use to send conditions
2100      to the target since this location will always trigger and generate a
2101      response back to GDB.  */
2102   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2103     {
2104       loc = (*loc2p);
2105       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2106         {
2107           if (modified)
2108             {
2109               struct agent_expr *aexpr;
2110
2111               /* Re-parse the conditions since something changed.  In that
2112                  case we already freed the condition bytecodes (see
2113                  force_breakpoint_reinsertion).  We just
2114                  need to parse the condition to bytecodes again.  */
2115               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2116               loc->cond_bytecode = aexpr;
2117
2118               /* Check if we managed to parse the conditional expression
2119                  correctly.  If not, we will not send this condition
2120                  to the target.  */
2121               if (aexpr)
2122                 continue;
2123             }
2124
2125           /* If we have a NULL bytecode expression, it means something
2126              went wrong or we have a null condition expression.  */
2127           if (!loc->cond_bytecode)
2128             {
2129               null_condition_or_parse_error = 1;
2130               break;
2131             }
2132         }
2133     }
2134
2135   /* If any of these happened, it means we will have to evaluate the conditions
2136      for the location's address on gdb's side.  It is no use keeping bytecodes
2137      for all the other duplicate locations, thus we free all of them here.
2138
2139      This is so we have a finer control over which locations' conditions are
2140      being evaluated by GDB or the remote stub.  */
2141   if (null_condition_or_parse_error)
2142     {
2143       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2144         {
2145           loc = (*loc2p);
2146           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2147             {
2148               /* Only go as far as the first NULL bytecode is
2149                  located.  */
2150               if (!loc->cond_bytecode)
2151                 return;
2152
2153               free_agent_expr (loc->cond_bytecode);
2154               loc->cond_bytecode = NULL;
2155             }
2156         }
2157     }
2158
2159   /* No NULL conditions or failed bytecode generation.  Build a condition list
2160      for this location's address.  */
2161   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2162     {
2163       loc = (*loc2p);
2164       if (loc->cond
2165           && is_breakpoint (loc->owner)
2166           && loc->pspace->num == bl->pspace->num
2167           && loc->owner->enable_state == bp_enabled
2168           && loc->enabled)
2169         /* Add the condition to the vector.  This will be used later to send the
2170            conditions to the target.  */
2171         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2172                        loc->cond_bytecode);
2173     }
2174
2175   return;
2176 }
2177
2178 /* Parses a command described by string CMD into an agent expression
2179    bytecode suitable for evaluation by the bytecode interpreter.
2180    Return NULL if there was any error during parsing.  */
2181
2182 static struct agent_expr *
2183 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2184 {
2185   struct cleanup *old_cleanups = 0;
2186   struct expression *expr, **argvec;
2187   struct agent_expr *aexpr = NULL;
2188   struct cleanup *old_chain = NULL;
2189   volatile struct gdb_exception ex;
2190   char *cmdrest;
2191   char *format_start, *format_end;
2192   struct format_piece *fpieces;
2193   int nargs;
2194   struct gdbarch *gdbarch = get_current_arch ();
2195
2196   if (!cmd)
2197     return NULL;
2198
2199   cmdrest = cmd;
2200
2201   if (*cmdrest == ',')
2202     ++cmdrest;
2203   cmdrest = skip_spaces (cmdrest);
2204
2205   if (*cmdrest++ != '"')
2206     error (_("No format string following the location"));
2207
2208   format_start = cmdrest;
2209
2210   fpieces = parse_format_string (&cmdrest);
2211
2212   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2213
2214   format_end = cmdrest;
2215
2216   if (*cmdrest++ != '"')
2217     error (_("Bad format string, non-terminated '\"'."));
2218   
2219   cmdrest = skip_spaces (cmdrest);
2220
2221   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2222     error (_("Invalid argument syntax"));
2223
2224   if (*cmdrest == ',')
2225     cmdrest++;
2226   cmdrest = skip_spaces (cmdrest);
2227
2228   /* For each argument, make an expression.  */
2229
2230   argvec = (struct expression **) alloca (strlen (cmd)
2231                                          * sizeof (struct expression *));
2232
2233   nargs = 0;
2234   while (*cmdrest != '\0')
2235     {
2236       char *cmd1;
2237
2238       cmd1 = cmdrest;
2239       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2240       argvec[nargs++] = expr;
2241       cmdrest = cmd1;
2242       if (*cmdrest == ',')
2243         ++cmdrest;
2244     }
2245
2246   /* We don't want to stop processing, so catch any errors
2247      that may show up.  */
2248   TRY_CATCH (ex, RETURN_MASK_ERROR)
2249     {
2250       aexpr = gen_printf (scope, gdbarch, 0, 0,
2251                           format_start, format_end - format_start,
2252                           fpieces, nargs, argvec);
2253     }
2254
2255   if (ex.reason < 0)
2256     {
2257       /* If we got here, it means the command could not be parsed to a valid
2258          bytecode expression and thus can't be evaluated on the target's side.
2259          It's no use iterating through the other commands.  */
2260       return NULL;
2261     }
2262
2263   do_cleanups (old_cleanups);
2264
2265   /* We have a valid agent expression, return it.  */
2266   return aexpr;
2267 }
2268
2269 /* Based on location BL, create a list of breakpoint commands to be
2270    passed on to the target.  If we have duplicated locations with
2271    different commands, we will add any such to the list.  */
2272
2273 static void
2274 build_target_command_list (struct bp_location *bl)
2275 {
2276   struct bp_location **locp = NULL, **loc2p;
2277   int null_command_or_parse_error = 0;
2278   int modified = bl->needs_update;
2279   struct bp_location *loc;
2280
2281   /* For now, limit to agent-style dprintf breakpoints.  */
2282   if (bl->owner->type != bp_dprintf
2283       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2284     return;
2285
2286   if (!target_can_run_breakpoint_commands ())
2287     return;
2288
2289   /* Do a first pass to check for locations with no assigned
2290      conditions or conditions that fail to parse to a valid agent expression
2291      bytecode.  If any of these happen, then it's no use to send conditions
2292      to the target since this location will always trigger and generate a
2293      response back to GDB.  */
2294   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2295     {
2296       loc = (*loc2p);
2297       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2298         {
2299           if (modified)
2300             {
2301               struct agent_expr *aexpr;
2302
2303               /* Re-parse the commands since something changed.  In that
2304                  case we already freed the command bytecodes (see
2305                  force_breakpoint_reinsertion).  We just
2306                  need to parse the command to bytecodes again.  */
2307               aexpr = parse_cmd_to_aexpr (bl->address,
2308                                           loc->owner->extra_string);
2309               loc->cmd_bytecode = aexpr;
2310
2311               if (!aexpr)
2312                 continue;
2313             }
2314
2315           /* If we have a NULL bytecode expression, it means something
2316              went wrong or we have a null command expression.  */
2317           if (!loc->cmd_bytecode)
2318             {
2319               null_command_or_parse_error = 1;
2320               break;
2321             }
2322         }
2323     }
2324
2325   /* If anything failed, then we're not doing target-side commands,
2326      and so clean up.  */
2327   if (null_command_or_parse_error)
2328     {
2329       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2330         {
2331           loc = (*loc2p);
2332           if (is_breakpoint (loc->owner)
2333               && loc->pspace->num == bl->pspace->num)
2334             {
2335               /* Only go as far as the first NULL bytecode is
2336                  located.  */
2337               if (!loc->cond_bytecode)
2338                 return;
2339
2340               free_agent_expr (loc->cond_bytecode);
2341               loc->cond_bytecode = NULL;
2342             }
2343         }
2344     }
2345
2346   /* No NULL commands or failed bytecode generation.  Build a command list
2347      for this location's address.  */
2348   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2349     {
2350       loc = (*loc2p);
2351       if (loc->owner->extra_string
2352           && is_breakpoint (loc->owner)
2353           && loc->pspace->num == bl->pspace->num
2354           && loc->owner->enable_state == bp_enabled
2355           && loc->enabled)
2356         /* Add the command to the vector.  This will be used later
2357            to send the commands to the target.  */
2358         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2359                        loc->cmd_bytecode);
2360     }
2361
2362   bl->target_info.persist = 0;
2363   /* Maybe flag this location as persistent.  */
2364   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2365     bl->target_info.persist = 1;
2366 }
2367
2368 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2369    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2370    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2371    Returns 0 for success, 1 if the bp_location type is not supported or
2372    -1 for failure.
2373
2374    NOTE drow/2003-09-09: This routine could be broken down to an
2375    object-style method for each breakpoint or catchpoint type.  */
2376 static int
2377 insert_bp_location (struct bp_location *bl,
2378                     struct ui_file *tmp_error_stream,
2379                     int *disabled_breaks,
2380                     int *hw_breakpoint_error,
2381                     int *hw_bp_error_explained_already)
2382 {
2383   int val = 0;
2384   char *hw_bp_err_string = NULL;
2385   struct gdb_exception e;
2386
2387   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2388     return 0;
2389
2390   /* Note we don't initialize bl->target_info, as that wipes out
2391      the breakpoint location's shadow_contents if the breakpoint
2392      is still inserted at that location.  This in turn breaks
2393      target_read_memory which depends on these buffers when
2394      a memory read is requested at the breakpoint location:
2395      Once the target_info has been wiped, we fail to see that
2396      we have a breakpoint inserted at that address and thus
2397      read the breakpoint instead of returning the data saved in
2398      the breakpoint location's shadow contents.  */
2399   bl->target_info.placed_address = bl->address;
2400   bl->target_info.placed_address_space = bl->pspace->aspace;
2401   bl->target_info.length = bl->length;
2402
2403   /* When working with target-side conditions, we must pass all the conditions
2404      for the same breakpoint address down to the target since GDB will not
2405      insert those locations.  With a list of breakpoint conditions, the target
2406      can decide when to stop and notify GDB.  */
2407
2408   if (is_breakpoint (bl->owner))
2409     {
2410       build_target_condition_list (bl);
2411       build_target_command_list (bl);
2412       /* Reset the modification marker.  */
2413       bl->needs_update = 0;
2414     }
2415
2416   if (bl->loc_type == bp_loc_software_breakpoint
2417       || bl->loc_type == bp_loc_hardware_breakpoint)
2418     {
2419       if (bl->owner->type != bp_hardware_breakpoint)
2420         {
2421           /* If the explicitly specified breakpoint type
2422              is not hardware breakpoint, check the memory map to see
2423              if the breakpoint address is in read only memory or not.
2424
2425              Two important cases are:
2426              - location type is not hardware breakpoint, memory
2427              is readonly.  We change the type of the location to
2428              hardware breakpoint.
2429              - location type is hardware breakpoint, memory is
2430              read-write.  This means we've previously made the
2431              location hardware one, but then the memory map changed,
2432              so we undo.
2433              
2434              When breakpoints are removed, remove_breakpoints will use
2435              location types we've just set here, the only possible
2436              problem is that memory map has changed during running
2437              program, but it's not going to work anyway with current
2438              gdb.  */
2439           struct mem_region *mr 
2440             = lookup_mem_region (bl->target_info.placed_address);
2441           
2442           if (mr)
2443             {
2444               if (automatic_hardware_breakpoints)
2445                 {
2446                   enum bp_loc_type new_type;
2447                   
2448                   if (mr->attrib.mode != MEM_RW)
2449                     new_type = bp_loc_hardware_breakpoint;
2450                   else 
2451                     new_type = bp_loc_software_breakpoint;
2452                   
2453                   if (new_type != bl->loc_type)
2454                     {
2455                       static int said = 0;
2456
2457                       bl->loc_type = new_type;
2458                       if (!said)
2459                         {
2460                           fprintf_filtered (gdb_stdout,
2461                                             _("Note: automatically using "
2462                                               "hardware breakpoints for "
2463                                               "read-only addresses.\n"));
2464                           said = 1;
2465                         }
2466                     }
2467                 }
2468               else if (bl->loc_type == bp_loc_software_breakpoint
2469                        && mr->attrib.mode != MEM_RW)        
2470                 warning (_("cannot set software breakpoint "
2471                            "at readonly address %s"),
2472                          paddress (bl->gdbarch, bl->address));
2473             }
2474         }
2475         
2476       /* First check to see if we have to handle an overlay.  */
2477       if (overlay_debugging == ovly_off
2478           || bl->section == NULL
2479           || !(section_is_overlay (bl->section)))
2480         {
2481           /* No overlay handling: just set the breakpoint.  */
2482           TRY_CATCH (e, RETURN_MASK_ALL)
2483             {
2484               val = bl->owner->ops->insert_location (bl);
2485             }
2486           if (e.reason < 0)
2487             {
2488               val = 1;
2489               hw_bp_err_string = (char *) e.message;
2490             }
2491         }
2492       else
2493         {
2494           /* This breakpoint is in an overlay section.
2495              Shall we set a breakpoint at the LMA?  */
2496           if (!overlay_events_enabled)
2497             {
2498               /* Yes -- overlay event support is not active, 
2499                  so we must try to set a breakpoint at the LMA.
2500                  This will not work for a hardware breakpoint.  */
2501               if (bl->loc_type == bp_loc_hardware_breakpoint)
2502                 warning (_("hardware breakpoint %d not supported in overlay!"),
2503                          bl->owner->number);
2504               else
2505                 {
2506                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2507                                                              bl->section);
2508                   /* Set a software (trap) breakpoint at the LMA.  */
2509                   bl->overlay_target_info = bl->target_info;
2510                   bl->overlay_target_info.placed_address = addr;
2511                   val = target_insert_breakpoint (bl->gdbarch,
2512                                                   &bl->overlay_target_info);
2513                   if (val != 0)
2514                     fprintf_unfiltered (tmp_error_stream,
2515                                         "Overlay breakpoint %d "
2516                                         "failed: in ROM?\n",
2517                                         bl->owner->number);
2518                 }
2519             }
2520           /* Shall we set a breakpoint at the VMA? */
2521           if (section_is_mapped (bl->section))
2522             {
2523               /* Yes.  This overlay section is mapped into memory.  */
2524               TRY_CATCH (e, RETURN_MASK_ALL)
2525                 {
2526                   val = bl->owner->ops->insert_location (bl);
2527                 }
2528               if (e.reason < 0)
2529                 {
2530                   val = 1;
2531                   hw_bp_err_string = (char *) e.message;
2532                 }
2533             }
2534           else
2535             {
2536               /* No.  This breakpoint will not be inserted.  
2537                  No error, but do not mark the bp as 'inserted'.  */
2538               return 0;
2539             }
2540         }
2541
2542       if (val)
2543         {
2544           /* Can't set the breakpoint.  */
2545           if (solib_name_from_address (bl->pspace, bl->address))
2546             {
2547               /* See also: disable_breakpoints_in_shlibs.  */
2548               val = 0;
2549               bl->shlib_disabled = 1;
2550               observer_notify_breakpoint_modified (bl->owner);
2551               if (!*disabled_breaks)
2552                 {
2553                   fprintf_unfiltered (tmp_error_stream, 
2554                                       "Cannot insert breakpoint %d.\n", 
2555                                       bl->owner->number);
2556                   fprintf_unfiltered (tmp_error_stream, 
2557                                       "Temporarily disabling shared "
2558                                       "library breakpoints:\n");
2559                 }
2560               *disabled_breaks = 1;
2561               fprintf_unfiltered (tmp_error_stream,
2562                                   "breakpoint #%d\n", bl->owner->number);
2563             }
2564           else
2565             {
2566               if (bl->loc_type == bp_loc_hardware_breakpoint)
2567                 {
2568                   *hw_breakpoint_error = 1;
2569                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2570                   fprintf_unfiltered (tmp_error_stream,
2571                                       "Cannot insert hardware breakpoint %d%s",
2572                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2573                   if (hw_bp_err_string)
2574                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2575                 }
2576               else
2577                 {
2578                   fprintf_unfiltered (tmp_error_stream, 
2579                                       "Cannot insert breakpoint %d.\n", 
2580                                       bl->owner->number);
2581                   fprintf_filtered (tmp_error_stream, 
2582                                     "Error accessing memory address ");
2583                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2584                                   tmp_error_stream);
2585                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2586                                     safe_strerror (val));
2587                 }
2588
2589             }
2590         }
2591       else
2592         bl->inserted = 1;
2593
2594       return val;
2595     }
2596
2597   else if (bl->loc_type == bp_loc_hardware_watchpoint
2598            /* NOTE drow/2003-09-08: This state only exists for removing
2599               watchpoints.  It's not clear that it's necessary...  */
2600            && bl->owner->disposition != disp_del_at_next_stop)
2601     {
2602       gdb_assert (bl->owner->ops != NULL
2603                   && bl->owner->ops->insert_location != NULL);
2604
2605       val = bl->owner->ops->insert_location (bl);
2606
2607       /* If trying to set a read-watchpoint, and it turns out it's not
2608          supported, try emulating one with an access watchpoint.  */
2609       if (val == 1 && bl->watchpoint_type == hw_read)
2610         {
2611           struct bp_location *loc, **loc_temp;
2612
2613           /* But don't try to insert it, if there's already another
2614              hw_access location that would be considered a duplicate
2615              of this one.  */
2616           ALL_BP_LOCATIONS (loc, loc_temp)
2617             if (loc != bl
2618                 && loc->watchpoint_type == hw_access
2619                 && watchpoint_locations_match (bl, loc))
2620               {
2621                 bl->duplicate = 1;
2622                 bl->inserted = 1;
2623                 bl->target_info = loc->target_info;
2624                 bl->watchpoint_type = hw_access;
2625                 val = 0;
2626                 break;
2627               }
2628
2629           if (val == 1)
2630             {
2631               bl->watchpoint_type = hw_access;
2632               val = bl->owner->ops->insert_location (bl);
2633
2634               if (val)
2635                 /* Back to the original value.  */
2636                 bl->watchpoint_type = hw_read;
2637             }
2638         }
2639
2640       bl->inserted = (val == 0);
2641     }
2642
2643   else if (bl->owner->type == bp_catchpoint)
2644     {
2645       gdb_assert (bl->owner->ops != NULL
2646                   && bl->owner->ops->insert_location != NULL);
2647
2648       val = bl->owner->ops->insert_location (bl);
2649       if (val)
2650         {
2651           bl->owner->enable_state = bp_disabled;
2652
2653           if (val == 1)
2654             warning (_("\
2655 Error inserting catchpoint %d: Your system does not support this type\n\
2656 of catchpoint."), bl->owner->number);
2657           else
2658             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2659         }
2660
2661       bl->inserted = (val == 0);
2662
2663       /* We've already printed an error message if there was a problem
2664          inserting this catchpoint, and we've disabled the catchpoint,
2665          so just return success.  */
2666       return 0;
2667     }
2668
2669   return 0;
2670 }
2671
2672 /* This function is called when program space PSPACE is about to be
2673    deleted.  It takes care of updating breakpoints to not reference
2674    PSPACE anymore.  */
2675
2676 void
2677 breakpoint_program_space_exit (struct program_space *pspace)
2678 {
2679   struct breakpoint *b, *b_temp;
2680   struct bp_location *loc, **loc_temp;
2681
2682   /* Remove any breakpoint that was set through this program space.  */
2683   ALL_BREAKPOINTS_SAFE (b, b_temp)
2684     {
2685       if (b->pspace == pspace)
2686         delete_breakpoint (b);
2687     }
2688
2689   /* Breakpoints set through other program spaces could have locations
2690      bound to PSPACE as well.  Remove those.  */
2691   ALL_BP_LOCATIONS (loc, loc_temp)
2692     {
2693       struct bp_location *tmp;
2694
2695       if (loc->pspace == pspace)
2696         {
2697           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2698           if (loc->owner->loc == loc)
2699             loc->owner->loc = loc->next;
2700           else
2701             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2702               if (tmp->next == loc)
2703                 {
2704                   tmp->next = loc->next;
2705                   break;
2706                 }
2707         }
2708     }
2709
2710   /* Now update the global location list to permanently delete the
2711      removed locations above.  */
2712   update_global_location_list (0);
2713 }
2714
2715 /* Make sure all breakpoints are inserted in inferior.
2716    Throws exception on any error.
2717    A breakpoint that is already inserted won't be inserted
2718    again, so calling this function twice is safe.  */
2719 void
2720 insert_breakpoints (void)
2721 {
2722   struct breakpoint *bpt;
2723
2724   ALL_BREAKPOINTS (bpt)
2725     if (is_hardware_watchpoint (bpt))
2726       {
2727         struct watchpoint *w = (struct watchpoint *) bpt;
2728
2729         update_watchpoint (w, 0 /* don't reparse.  */);
2730       }
2731
2732   update_global_location_list (1);
2733
2734   /* update_global_location_list does not insert breakpoints when
2735      always_inserted_mode is not enabled.  Explicitly insert them
2736      now.  */
2737   if (!breakpoints_always_inserted_mode ())
2738     insert_breakpoint_locations ();
2739 }
2740
2741 /* Invoke CALLBACK for each of bp_location.  */
2742
2743 void
2744 iterate_over_bp_locations (walk_bp_location_callback callback)
2745 {
2746   struct bp_location *loc, **loc_tmp;
2747
2748   ALL_BP_LOCATIONS (loc, loc_tmp)
2749     {
2750       callback (loc, NULL);
2751     }
2752 }
2753
2754 /* This is used when we need to synch breakpoint conditions between GDB and the
2755    target.  It is the case with deleting and disabling of breakpoints when using
2756    always-inserted mode.  */
2757
2758 static void
2759 update_inserted_breakpoint_locations (void)
2760 {
2761   struct bp_location *bl, **blp_tmp;
2762   int error_flag = 0;
2763   int val = 0;
2764   int disabled_breaks = 0;
2765   int hw_breakpoint_error = 0;
2766   int hw_bp_details_reported = 0;
2767
2768   struct ui_file *tmp_error_stream = mem_fileopen ();
2769   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2770
2771   /* Explicitly mark the warning -- this will only be printed if
2772      there was an error.  */
2773   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2774
2775   save_current_space_and_thread ();
2776
2777   ALL_BP_LOCATIONS (bl, blp_tmp)
2778     {
2779       /* We only want to update software breakpoints and hardware
2780          breakpoints.  */
2781       if (!is_breakpoint (bl->owner))
2782         continue;
2783
2784       /* We only want to update locations that are already inserted
2785          and need updating.  This is to avoid unwanted insertion during
2786          deletion of breakpoints.  */
2787       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2788         continue;
2789
2790       switch_to_program_space_and_thread (bl->pspace);
2791
2792       /* For targets that support global breakpoints, there's no need
2793          to select an inferior to insert breakpoint to.  In fact, even
2794          if we aren't attached to any process yet, we should still
2795          insert breakpoints.  */
2796       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2797           && ptid_equal (inferior_ptid, null_ptid))
2798         continue;
2799
2800       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2801                                     &hw_breakpoint_error, &hw_bp_details_reported);
2802       if (val)
2803         error_flag = val;
2804     }
2805
2806   if (error_flag)
2807     {
2808       target_terminal_ours_for_output ();
2809       error_stream (tmp_error_stream);
2810     }
2811
2812   do_cleanups (cleanups);
2813 }
2814
2815 /* Used when starting or continuing the program.  */
2816
2817 static void
2818 insert_breakpoint_locations (void)
2819 {
2820   struct breakpoint *bpt;
2821   struct bp_location *bl, **blp_tmp;
2822   int error_flag = 0;
2823   int val = 0;
2824   int disabled_breaks = 0;
2825   int hw_breakpoint_error = 0;
2826   int hw_bp_error_explained_already = 0;
2827
2828   struct ui_file *tmp_error_stream = mem_fileopen ();
2829   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2830   
2831   /* Explicitly mark the warning -- this will only be printed if
2832      there was an error.  */
2833   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2834
2835   save_current_space_and_thread ();
2836
2837   ALL_BP_LOCATIONS (bl, blp_tmp)
2838     {
2839       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2840         continue;
2841
2842       /* There is no point inserting thread-specific breakpoints if
2843          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2844          has BL->OWNER always non-NULL.  */
2845       if (bl->owner->thread != -1
2846           && !valid_thread_id (bl->owner->thread))
2847         continue;
2848
2849       switch_to_program_space_and_thread (bl->pspace);
2850
2851       /* For targets that support global breakpoints, there's no need
2852          to select an inferior to insert breakpoint to.  In fact, even
2853          if we aren't attached to any process yet, we should still
2854          insert breakpoints.  */
2855       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2856           && ptid_equal (inferior_ptid, null_ptid))
2857         continue;
2858
2859       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2860                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2861       if (val)
2862         error_flag = val;
2863     }
2864
2865   /* If we failed to insert all locations of a watchpoint, remove
2866      them, as half-inserted watchpoint is of limited use.  */
2867   ALL_BREAKPOINTS (bpt)  
2868     {
2869       int some_failed = 0;
2870       struct bp_location *loc;
2871
2872       if (!is_hardware_watchpoint (bpt))
2873         continue;
2874
2875       if (!breakpoint_enabled (bpt))
2876         continue;
2877
2878       if (bpt->disposition == disp_del_at_next_stop)
2879         continue;
2880       
2881       for (loc = bpt->loc; loc; loc = loc->next)
2882         if (!loc->inserted && should_be_inserted (loc))
2883           {
2884             some_failed = 1;
2885             break;
2886           }
2887       if (some_failed)
2888         {
2889           for (loc = bpt->loc; loc; loc = loc->next)
2890             if (loc->inserted)
2891               remove_breakpoint (loc, mark_uninserted);
2892
2893           hw_breakpoint_error = 1;
2894           fprintf_unfiltered (tmp_error_stream,
2895                               "Could not insert hardware watchpoint %d.\n", 
2896                               bpt->number);
2897           error_flag = -1;
2898         }
2899     }
2900
2901   if (error_flag)
2902     {
2903       /* If a hardware breakpoint or watchpoint was inserted, add a
2904          message about possibly exhausted resources.  */
2905       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2906         {
2907           fprintf_unfiltered (tmp_error_stream, 
2908                               "Could not insert hardware breakpoints:\n\
2909 You may have requested too many hardware breakpoints/watchpoints.\n");
2910         }
2911       target_terminal_ours_for_output ();
2912       error_stream (tmp_error_stream);
2913     }
2914
2915   do_cleanups (cleanups);
2916 }
2917
2918 /* Used when the program stops.
2919    Returns zero if successful, or non-zero if there was a problem
2920    removing a breakpoint location.  */
2921
2922 int
2923 remove_breakpoints (void)
2924 {
2925   struct bp_location *bl, **blp_tmp;
2926   int val = 0;
2927
2928   ALL_BP_LOCATIONS (bl, blp_tmp)
2929   {
2930     if (bl->inserted && !is_tracepoint (bl->owner))
2931       val |= remove_breakpoint (bl, mark_uninserted);
2932   }
2933   return val;
2934 }
2935
2936 /* Remove breakpoints of process PID.  */
2937
2938 int
2939 remove_breakpoints_pid (int pid)
2940 {
2941   struct bp_location *bl, **blp_tmp;
2942   int val;
2943   struct inferior *inf = find_inferior_pid (pid);
2944
2945   ALL_BP_LOCATIONS (bl, blp_tmp)
2946   {
2947     if (bl->pspace != inf->pspace)
2948       continue;
2949
2950     if (bl->owner->type == bp_dprintf)
2951       continue;
2952
2953     if (bl->inserted)
2954       {
2955         val = remove_breakpoint (bl, mark_uninserted);
2956         if (val != 0)
2957           return val;
2958       }
2959   }
2960   return 0;
2961 }
2962
2963 int
2964 reattach_breakpoints (int pid)
2965 {
2966   struct cleanup *old_chain;
2967   struct bp_location *bl, **blp_tmp;
2968   int val;
2969   struct ui_file *tmp_error_stream;
2970   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2971   struct inferior *inf;
2972   struct thread_info *tp;
2973
2974   tp = any_live_thread_of_process (pid);
2975   if (tp == NULL)
2976     return 1;
2977
2978   inf = find_inferior_pid (pid);
2979   old_chain = save_inferior_ptid ();
2980
2981   inferior_ptid = tp->ptid;
2982
2983   tmp_error_stream = mem_fileopen ();
2984   make_cleanup_ui_file_delete (tmp_error_stream);
2985
2986   ALL_BP_LOCATIONS (bl, blp_tmp)
2987   {
2988     if (bl->pspace != inf->pspace)
2989       continue;
2990
2991     if (bl->inserted)
2992       {
2993         bl->inserted = 0;
2994         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2995         if (val != 0)
2996           {
2997             do_cleanups (old_chain);
2998             return val;
2999           }
3000       }
3001   }
3002   do_cleanups (old_chain);
3003   return 0;
3004 }
3005
3006 static int internal_breakpoint_number = -1;
3007
3008 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3009    If INTERNAL is non-zero, the breakpoint number will be populated
3010    from internal_breakpoint_number and that variable decremented.
3011    Otherwise the breakpoint number will be populated from
3012    breakpoint_count and that value incremented.  Internal breakpoints
3013    do not set the internal var bpnum.  */
3014 static void
3015 set_breakpoint_number (int internal, struct breakpoint *b)
3016 {
3017   if (internal)
3018     b->number = internal_breakpoint_number--;
3019   else
3020     {
3021       set_breakpoint_count (breakpoint_count + 1);
3022       b->number = breakpoint_count;
3023     }
3024 }
3025
3026 static struct breakpoint *
3027 create_internal_breakpoint (struct gdbarch *gdbarch,
3028                             CORE_ADDR address, enum bptype type,
3029                             const struct breakpoint_ops *ops)
3030 {
3031   struct symtab_and_line sal;
3032   struct breakpoint *b;
3033
3034   init_sal (&sal);              /* Initialize to zeroes.  */
3035
3036   sal.pc = address;
3037   sal.section = find_pc_overlay (sal.pc);
3038   sal.pspace = current_program_space;
3039
3040   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3041   b->number = internal_breakpoint_number--;
3042   b->disposition = disp_donttouch;
3043
3044   return b;
3045 }
3046
3047 static const char *const longjmp_names[] =
3048   {
3049     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3050   };
3051 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3052
3053 /* Per-objfile data private to breakpoint.c.  */
3054 struct breakpoint_objfile_data
3055 {
3056   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3057   struct minimal_symbol *overlay_msym;
3058
3059   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3060   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3061
3062   /* True if we have looked for longjmp probes.  */
3063   int longjmp_searched;
3064
3065   /* SystemTap probe points for longjmp (if any).  */
3066   VEC (probe_p) *longjmp_probes;
3067
3068   /* Minimal symbol for "std::terminate()" (if any).  */
3069   struct minimal_symbol *terminate_msym;
3070
3071   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3072   struct minimal_symbol *exception_msym;
3073
3074   /* True if we have looked for exception probes.  */
3075   int exception_searched;
3076
3077   /* SystemTap probe points for unwinding (if any).  */
3078   VEC (probe_p) *exception_probes;
3079 };
3080
3081 static const struct objfile_data *breakpoint_objfile_key;
3082
3083 /* Minimal symbol not found sentinel.  */
3084 static struct minimal_symbol msym_not_found;
3085
3086 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3087
3088 static int
3089 msym_not_found_p (const struct minimal_symbol *msym)
3090 {
3091   return msym == &msym_not_found;
3092 }
3093
3094 /* Return per-objfile data needed by breakpoint.c.
3095    Allocate the data if necessary.  */
3096
3097 static struct breakpoint_objfile_data *
3098 get_breakpoint_objfile_data (struct objfile *objfile)
3099 {
3100   struct breakpoint_objfile_data *bp_objfile_data;
3101
3102   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3103   if (bp_objfile_data == NULL)
3104     {
3105       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3106                                        sizeof (*bp_objfile_data));
3107
3108       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3109       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3110     }
3111   return bp_objfile_data;
3112 }
3113
3114 static void
3115 free_breakpoint_probes (struct objfile *obj, void *data)
3116 {
3117   struct breakpoint_objfile_data *bp_objfile_data = data;
3118
3119   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3120   VEC_free (probe_p, bp_objfile_data->exception_probes);
3121 }
3122
3123 static void
3124 create_overlay_event_breakpoint (void)
3125 {
3126   struct objfile *objfile;
3127   const char *const func_name = "_ovly_debug_event";
3128
3129   ALL_OBJFILES (objfile)
3130     {
3131       struct breakpoint *b;
3132       struct breakpoint_objfile_data *bp_objfile_data;
3133       CORE_ADDR addr;
3134
3135       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3136
3137       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3138         continue;
3139
3140       if (bp_objfile_data->overlay_msym == NULL)
3141         {
3142           struct minimal_symbol *m;
3143
3144           m = lookup_minimal_symbol_text (func_name, objfile);
3145           if (m == NULL)
3146             {
3147               /* Avoid future lookups in this objfile.  */
3148               bp_objfile_data->overlay_msym = &msym_not_found;
3149               continue;
3150             }
3151           bp_objfile_data->overlay_msym = m;
3152         }
3153
3154       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3155       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3156                                       bp_overlay_event,
3157                                       &internal_breakpoint_ops);
3158       b->addr_string = xstrdup (func_name);
3159
3160       if (overlay_debugging == ovly_auto)
3161         {
3162           b->enable_state = bp_enabled;
3163           overlay_events_enabled = 1;
3164         }
3165       else
3166        {
3167          b->enable_state = bp_disabled;
3168          overlay_events_enabled = 0;
3169        }
3170     }
3171   update_global_location_list (1);
3172 }
3173
3174 static void
3175 create_longjmp_master_breakpoint (void)
3176 {
3177   struct program_space *pspace;
3178   struct cleanup *old_chain;
3179
3180   old_chain = save_current_program_space ();
3181
3182   ALL_PSPACES (pspace)
3183   {
3184     struct objfile *objfile;
3185
3186     set_current_program_space (pspace);
3187
3188     ALL_OBJFILES (objfile)
3189     {
3190       int i;
3191       struct gdbarch *gdbarch;
3192       struct breakpoint_objfile_data *bp_objfile_data;
3193
3194       gdbarch = get_objfile_arch (objfile);
3195       if (!gdbarch_get_longjmp_target_p (gdbarch))
3196         continue;
3197
3198       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3199
3200       if (!bp_objfile_data->longjmp_searched)
3201         {
3202           bp_objfile_data->longjmp_probes
3203             = find_probes_in_objfile (objfile, "libc", "longjmp");
3204           bp_objfile_data->longjmp_searched = 1;
3205         }
3206
3207       if (bp_objfile_data->longjmp_probes != NULL)
3208         {
3209           int i;
3210           struct probe *probe;
3211           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3212
3213           for (i = 0;
3214                VEC_iterate (probe_p,
3215                             bp_objfile_data->longjmp_probes,
3216                             i, probe);
3217                ++i)
3218             {
3219               struct breakpoint *b;
3220
3221               b = create_internal_breakpoint (gdbarch, probe->address,
3222                                               bp_longjmp_master,
3223                                               &internal_breakpoint_ops);
3224               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3225               b->enable_state = bp_disabled;
3226             }
3227
3228           continue;
3229         }
3230
3231       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3232         {
3233           struct breakpoint *b;
3234           const char *func_name;
3235           CORE_ADDR addr;
3236
3237           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3238             continue;
3239
3240           func_name = longjmp_names[i];
3241           if (bp_objfile_data->longjmp_msym[i] == NULL)
3242             {
3243               struct minimal_symbol *m;
3244
3245               m = lookup_minimal_symbol_text (func_name, objfile);
3246               if (m == NULL)
3247                 {
3248                   /* Prevent future lookups in this objfile.  */
3249                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3250                   continue;
3251                 }
3252               bp_objfile_data->longjmp_msym[i] = m;
3253             }
3254
3255           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3256           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3257                                           &internal_breakpoint_ops);
3258           b->addr_string = xstrdup (func_name);
3259           b->enable_state = bp_disabled;
3260         }
3261     }
3262   }
3263   update_global_location_list (1);
3264
3265   do_cleanups (old_chain);
3266 }
3267
3268 /* Create a master std::terminate breakpoint.  */
3269 static void
3270 create_std_terminate_master_breakpoint (void)
3271 {
3272   struct program_space *pspace;
3273   struct cleanup *old_chain;
3274   const char *const func_name = "std::terminate()";
3275
3276   old_chain = save_current_program_space ();
3277
3278   ALL_PSPACES (pspace)
3279   {
3280     struct objfile *objfile;
3281     CORE_ADDR addr;
3282
3283     set_current_program_space (pspace);
3284
3285     ALL_OBJFILES (objfile)
3286     {
3287       struct breakpoint *b;
3288       struct breakpoint_objfile_data *bp_objfile_data;
3289
3290       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3291
3292       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3293         continue;
3294
3295       if (bp_objfile_data->terminate_msym == NULL)
3296         {
3297           struct minimal_symbol *m;
3298
3299           m = lookup_minimal_symbol (func_name, NULL, objfile);
3300           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3301                             && MSYMBOL_TYPE (m) != mst_file_text))
3302             {
3303               /* Prevent future lookups in this objfile.  */
3304               bp_objfile_data->terminate_msym = &msym_not_found;
3305               continue;
3306             }
3307           bp_objfile_data->terminate_msym = m;
3308         }
3309
3310       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3311       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3312                                       bp_std_terminate_master,
3313                                       &internal_breakpoint_ops);
3314       b->addr_string = xstrdup (func_name);
3315       b->enable_state = bp_disabled;
3316     }
3317   }
3318
3319   update_global_location_list (1);
3320
3321   do_cleanups (old_chain);
3322 }
3323
3324 /* Install a master breakpoint on the unwinder's debug hook.  */
3325
3326 static void
3327 create_exception_master_breakpoint (void)
3328 {
3329   struct objfile *objfile;
3330   const char *const func_name = "_Unwind_DebugHook";
3331
3332   ALL_OBJFILES (objfile)
3333     {
3334       struct breakpoint *b;
3335       struct gdbarch *gdbarch;
3336       struct breakpoint_objfile_data *bp_objfile_data;
3337       CORE_ADDR addr;
3338
3339       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3340
3341       /* We prefer the SystemTap probe point if it exists.  */
3342       if (!bp_objfile_data->exception_searched)
3343         {
3344           bp_objfile_data->exception_probes
3345             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3346           bp_objfile_data->exception_searched = 1;
3347         }
3348
3349       if (bp_objfile_data->exception_probes != NULL)
3350         {
3351           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3352           int i;
3353           struct probe *probe;
3354
3355           for (i = 0;
3356                VEC_iterate (probe_p,
3357                             bp_objfile_data->exception_probes,
3358                             i, probe);
3359                ++i)
3360             {
3361               struct breakpoint *b;
3362
3363               b = create_internal_breakpoint (gdbarch, probe->address,
3364                                               bp_exception_master,
3365                                               &internal_breakpoint_ops);
3366               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3367               b->enable_state = bp_disabled;
3368             }
3369
3370           continue;
3371         }
3372
3373       /* Otherwise, try the hook function.  */
3374
3375       if (msym_not_found_p (bp_objfile_data->exception_msym))
3376         continue;
3377
3378       gdbarch = get_objfile_arch (objfile);
3379
3380       if (bp_objfile_data->exception_msym == NULL)
3381         {
3382           struct minimal_symbol *debug_hook;
3383
3384           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3385           if (debug_hook == NULL)
3386             {
3387               bp_objfile_data->exception_msym = &msym_not_found;
3388               continue;
3389             }
3390
3391           bp_objfile_data->exception_msym = debug_hook;
3392         }
3393
3394       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3395       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3396                                                  &current_target);
3397       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3398                                       &internal_breakpoint_ops);
3399       b->addr_string = xstrdup (func_name);
3400       b->enable_state = bp_disabled;
3401     }
3402
3403   update_global_location_list (1);
3404 }
3405
3406 void
3407 update_breakpoints_after_exec (void)
3408 {
3409   struct breakpoint *b, *b_tmp;
3410   struct bp_location *bploc, **bplocp_tmp;
3411
3412   /* We're about to delete breakpoints from GDB's lists.  If the
3413      INSERTED flag is true, GDB will try to lift the breakpoints by
3414      writing the breakpoints' "shadow contents" back into memory.  The
3415      "shadow contents" are NOT valid after an exec, so GDB should not
3416      do that.  Instead, the target is responsible from marking
3417      breakpoints out as soon as it detects an exec.  We don't do that
3418      here instead, because there may be other attempts to delete
3419      breakpoints after detecting an exec and before reaching here.  */
3420   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3421     if (bploc->pspace == current_program_space)
3422       gdb_assert (!bploc->inserted);
3423
3424   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3425   {
3426     if (b->pspace != current_program_space)
3427       continue;
3428
3429     /* Solib breakpoints must be explicitly reset after an exec().  */
3430     if (b->type == bp_shlib_event)
3431       {
3432         delete_breakpoint (b);
3433         continue;
3434       }
3435
3436     /* JIT breakpoints must be explicitly reset after an exec().  */
3437     if (b->type == bp_jit_event)
3438       {
3439         delete_breakpoint (b);
3440         continue;
3441       }
3442
3443     /* Thread event breakpoints must be set anew after an exec(),
3444        as must overlay event and longjmp master breakpoints.  */
3445     if (b->type == bp_thread_event || b->type == bp_overlay_event
3446         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3447         || b->type == bp_exception_master)
3448       {
3449         delete_breakpoint (b);
3450         continue;
3451       }
3452
3453     /* Step-resume breakpoints are meaningless after an exec().  */
3454     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3455       {
3456         delete_breakpoint (b);
3457         continue;
3458       }
3459
3460     /* Longjmp and longjmp-resume breakpoints are also meaningless
3461        after an exec.  */
3462     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3463         || b->type == bp_longjmp_call_dummy
3464         || b->type == bp_exception || b->type == bp_exception_resume)
3465       {
3466         delete_breakpoint (b);
3467         continue;
3468       }
3469
3470     if (b->type == bp_catchpoint)
3471       {
3472         /* For now, none of the bp_catchpoint breakpoints need to
3473            do anything at this point.  In the future, if some of
3474            the catchpoints need to something, we will need to add
3475            a new method, and call this method from here.  */
3476         continue;
3477       }
3478
3479     /* bp_finish is a special case.  The only way we ought to be able
3480        to see one of these when an exec() has happened, is if the user
3481        caught a vfork, and then said "finish".  Ordinarily a finish just
3482        carries them to the call-site of the current callee, by setting
3483        a temporary bp there and resuming.  But in this case, the finish
3484        will carry them entirely through the vfork & exec.
3485
3486        We don't want to allow a bp_finish to remain inserted now.  But
3487        we can't safely delete it, 'cause finish_command has a handle to
3488        the bp on a bpstat, and will later want to delete it.  There's a
3489        chance (and I've seen it happen) that if we delete the bp_finish
3490        here, that its storage will get reused by the time finish_command
3491        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3492        We really must allow finish_command to delete a bp_finish.
3493
3494        In the absence of a general solution for the "how do we know
3495        it's safe to delete something others may have handles to?"
3496        problem, what we'll do here is just uninsert the bp_finish, and
3497        let finish_command delete it.
3498
3499        (We know the bp_finish is "doomed" in the sense that it's
3500        momentary, and will be deleted as soon as finish_command sees
3501        the inferior stopped.  So it doesn't matter that the bp's
3502        address is probably bogus in the new a.out, unlike e.g., the
3503        solib breakpoints.)  */
3504
3505     if (b->type == bp_finish)
3506       {
3507         continue;
3508       }
3509
3510     /* Without a symbolic address, we have little hope of the
3511        pre-exec() address meaning the same thing in the post-exec()
3512        a.out.  */
3513     if (b->addr_string == NULL)
3514       {
3515         delete_breakpoint (b);
3516         continue;
3517       }
3518   }
3519   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3520   create_overlay_event_breakpoint ();
3521   create_longjmp_master_breakpoint ();
3522   create_std_terminate_master_breakpoint ();
3523   create_exception_master_breakpoint ();
3524 }
3525
3526 int
3527 detach_breakpoints (ptid_t ptid)
3528 {
3529   struct bp_location *bl, **blp_tmp;
3530   int val = 0;
3531   struct cleanup *old_chain = save_inferior_ptid ();
3532   struct inferior *inf = current_inferior ();
3533
3534   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3535     error (_("Cannot detach breakpoints of inferior_ptid"));
3536
3537   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3538   inferior_ptid = ptid;
3539   ALL_BP_LOCATIONS (bl, blp_tmp)
3540   {
3541     if (bl->pspace != inf->pspace)
3542       continue;
3543
3544     if (bl->inserted)
3545       val |= remove_breakpoint_1 (bl, mark_inserted);
3546   }
3547
3548   /* Detach single-step breakpoints as well.  */
3549   detach_single_step_breakpoints ();
3550
3551   do_cleanups (old_chain);
3552   return val;
3553 }
3554
3555 /* Remove the breakpoint location BL from the current address space.
3556    Note that this is used to detach breakpoints from a child fork.
3557    When we get here, the child isn't in the inferior list, and neither
3558    do we have objects to represent its address space --- we should
3559    *not* look at bl->pspace->aspace here.  */
3560
3561 static int
3562 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3563 {
3564   int val;
3565
3566   /* BL is never in moribund_locations by our callers.  */
3567   gdb_assert (bl->owner != NULL);
3568
3569   if (bl->owner->enable_state == bp_permanent)
3570     /* Permanent breakpoints cannot be inserted or removed.  */
3571     return 0;
3572
3573   /* The type of none suggests that owner is actually deleted.
3574      This should not ever happen.  */
3575   gdb_assert (bl->owner->type != bp_none);
3576
3577   if (bl->loc_type == bp_loc_software_breakpoint
3578       || bl->loc_type == bp_loc_hardware_breakpoint)
3579     {
3580       /* "Normal" instruction breakpoint: either the standard
3581          trap-instruction bp (bp_breakpoint), or a
3582          bp_hardware_breakpoint.  */
3583
3584       /* First check to see if we have to handle an overlay.  */
3585       if (overlay_debugging == ovly_off
3586           || bl->section == NULL
3587           || !(section_is_overlay (bl->section)))
3588         {
3589           /* No overlay handling: just remove the breakpoint.  */
3590           val = bl->owner->ops->remove_location (bl);
3591         }
3592       else
3593         {
3594           /* This breakpoint is in an overlay section.
3595              Did we set a breakpoint at the LMA?  */
3596           if (!overlay_events_enabled)
3597               {
3598                 /* Yes -- overlay event support is not active, so we
3599                    should have set a breakpoint at the LMA.  Remove it.  
3600                 */
3601                 /* Ignore any failures: if the LMA is in ROM, we will
3602                    have already warned when we failed to insert it.  */
3603                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3604                   target_remove_hw_breakpoint (bl->gdbarch,
3605                                                &bl->overlay_target_info);
3606                 else
3607                   target_remove_breakpoint (bl->gdbarch,
3608                                             &bl->overlay_target_info);
3609               }
3610           /* Did we set a breakpoint at the VMA? 
3611              If so, we will have marked the breakpoint 'inserted'.  */
3612           if (bl->inserted)
3613             {
3614               /* Yes -- remove it.  Previously we did not bother to
3615                  remove the breakpoint if the section had been
3616                  unmapped, but let's not rely on that being safe.  We
3617                  don't know what the overlay manager might do.  */
3618
3619               /* However, we should remove *software* breakpoints only
3620                  if the section is still mapped, or else we overwrite
3621                  wrong code with the saved shadow contents.  */
3622               if (bl->loc_type == bp_loc_hardware_breakpoint
3623                   || section_is_mapped (bl->section))
3624                 val = bl->owner->ops->remove_location (bl);
3625               else
3626                 val = 0;
3627             }
3628           else
3629             {
3630               /* No -- not inserted, so no need to remove.  No error.  */
3631               val = 0;
3632             }
3633         }
3634
3635       /* In some cases, we might not be able to remove a breakpoint
3636          in a shared library that has already been removed, but we
3637          have not yet processed the shlib unload event.  */
3638       if (val && solib_name_from_address (bl->pspace, bl->address))
3639         val = 0;
3640
3641       if (val)
3642         return val;
3643       bl->inserted = (is == mark_inserted);
3644     }
3645   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3646     {
3647       gdb_assert (bl->owner->ops != NULL
3648                   && bl->owner->ops->remove_location != NULL);
3649
3650       bl->inserted = (is == mark_inserted);
3651       bl->owner->ops->remove_location (bl);
3652
3653       /* Failure to remove any of the hardware watchpoints comes here.  */
3654       if ((is == mark_uninserted) && (bl->inserted))
3655         warning (_("Could not remove hardware watchpoint %d."),
3656                  bl->owner->number);
3657     }
3658   else if (bl->owner->type == bp_catchpoint
3659            && breakpoint_enabled (bl->owner)
3660            && !bl->duplicate)
3661     {
3662       gdb_assert (bl->owner->ops != NULL
3663                   && bl->owner->ops->remove_location != NULL);
3664
3665       val = bl->owner->ops->remove_location (bl);
3666       if (val)
3667         return val;
3668
3669       bl->inserted = (is == mark_inserted);
3670     }
3671
3672   return 0;
3673 }
3674
3675 static int
3676 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3677 {
3678   int ret;
3679   struct cleanup *old_chain;
3680
3681   /* BL is never in moribund_locations by our callers.  */
3682   gdb_assert (bl->owner != NULL);
3683
3684   if (bl->owner->enable_state == bp_permanent)
3685     /* Permanent breakpoints cannot be inserted or removed.  */
3686     return 0;
3687
3688   /* The type of none suggests that owner is actually deleted.
3689      This should not ever happen.  */
3690   gdb_assert (bl->owner->type != bp_none);
3691
3692   old_chain = save_current_space_and_thread ();
3693
3694   switch_to_program_space_and_thread (bl->pspace);
3695
3696   ret = remove_breakpoint_1 (bl, is);
3697
3698   do_cleanups (old_chain);
3699   return ret;
3700 }
3701
3702 /* Clear the "inserted" flag in all breakpoints.  */
3703
3704 void
3705 mark_breakpoints_out (void)
3706 {
3707   struct bp_location *bl, **blp_tmp;
3708
3709   ALL_BP_LOCATIONS (bl, blp_tmp)
3710     if (bl->pspace == current_program_space)
3711       bl->inserted = 0;
3712 }
3713
3714 /* Clear the "inserted" flag in all breakpoints and delete any
3715    breakpoints which should go away between runs of the program.
3716
3717    Plus other such housekeeping that has to be done for breakpoints
3718    between runs.
3719
3720    Note: this function gets called at the end of a run (by
3721    generic_mourn_inferior) and when a run begins (by
3722    init_wait_for_inferior).  */
3723
3724
3725
3726 void
3727 breakpoint_init_inferior (enum inf_context context)
3728 {
3729   struct breakpoint *b, *b_tmp;
3730   struct bp_location *bl, **blp_tmp;
3731   int ix;
3732   struct program_space *pspace = current_program_space;
3733
3734   /* If breakpoint locations are shared across processes, then there's
3735      nothing to do.  */
3736   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3737     return;
3738
3739   ALL_BP_LOCATIONS (bl, blp_tmp)
3740   {
3741     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3742     if (bl->pspace == pspace
3743         && bl->owner->enable_state != bp_permanent)
3744       bl->inserted = 0;
3745   }
3746
3747   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3748   {
3749     if (b->loc && b->loc->pspace != pspace)
3750       continue;
3751
3752     switch (b->type)
3753       {
3754       case bp_call_dummy:
3755       case bp_longjmp_call_dummy:
3756
3757         /* If the call dummy breakpoint is at the entry point it will
3758            cause problems when the inferior is rerun, so we better get
3759            rid of it.  */
3760
3761       case bp_watchpoint_scope:
3762
3763         /* Also get rid of scope breakpoints.  */
3764
3765       case bp_shlib_event:
3766
3767         /* Also remove solib event breakpoints.  Their addresses may
3768            have changed since the last time we ran the program.
3769            Actually we may now be debugging against different target;
3770            and so the solib backend that installed this breakpoint may
3771            not be used in by the target.  E.g.,
3772
3773            (gdb) file prog-linux
3774            (gdb) run               # native linux target
3775            ...
3776            (gdb) kill
3777            (gdb) file prog-win.exe
3778            (gdb) tar rem :9999     # remote Windows gdbserver.
3779         */
3780
3781       case bp_step_resume:
3782
3783         /* Also remove step-resume breakpoints.  */
3784
3785         delete_breakpoint (b);
3786         break;
3787
3788       case bp_watchpoint:
3789       case bp_hardware_watchpoint:
3790       case bp_read_watchpoint:
3791       case bp_access_watchpoint:
3792         {
3793           struct watchpoint *w = (struct watchpoint *) b;
3794
3795           /* Likewise for watchpoints on local expressions.  */
3796           if (w->exp_valid_block != NULL)
3797             delete_breakpoint (b);
3798           else if (context == inf_starting)
3799             {
3800               /* Reset val field to force reread of starting value in
3801                  insert_breakpoints.  */
3802               if (w->val)
3803                 value_free (w->val);
3804               w->val = NULL;
3805               w->val_valid = 0;
3806           }
3807         }
3808         break;
3809       default:
3810         break;
3811       }
3812   }
3813
3814   /* Get rid of the moribund locations.  */
3815   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3816     decref_bp_location (&bl);
3817   VEC_free (bp_location_p, moribund_locations);
3818 }
3819
3820 /* These functions concern about actual breakpoints inserted in the
3821    target --- to e.g. check if we need to do decr_pc adjustment or if
3822    we need to hop over the bkpt --- so we check for address space
3823    match, not program space.  */
3824
3825 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3826    exists at PC.  It returns ordinary_breakpoint_here if it's an
3827    ordinary breakpoint, or permanent_breakpoint_here if it's a
3828    permanent breakpoint.
3829    - When continuing from a location with an ordinary breakpoint, we
3830      actually single step once before calling insert_breakpoints.
3831    - When continuing from a location with a permanent breakpoint, we
3832      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3833      the target, to advance the PC past the breakpoint.  */
3834
3835 enum breakpoint_here
3836 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3837 {
3838   struct bp_location *bl, **blp_tmp;
3839   int any_breakpoint_here = 0;
3840
3841   ALL_BP_LOCATIONS (bl, blp_tmp)
3842     {
3843       if (bl->loc_type != bp_loc_software_breakpoint
3844           && bl->loc_type != bp_loc_hardware_breakpoint)
3845         continue;
3846
3847       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3848       if ((breakpoint_enabled (bl->owner)
3849            || bl->owner->enable_state == bp_permanent)
3850           && breakpoint_location_address_match (bl, aspace, pc))
3851         {
3852           if (overlay_debugging 
3853               && section_is_overlay (bl->section)
3854               && !section_is_mapped (bl->section))
3855             continue;           /* unmapped overlay -- can't be a match */
3856           else if (bl->owner->enable_state == bp_permanent)
3857             return permanent_breakpoint_here;
3858           else
3859             any_breakpoint_here = 1;
3860         }
3861     }
3862
3863   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3864 }
3865
3866 /* Return true if there's a moribund breakpoint at PC.  */
3867
3868 int
3869 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3870 {
3871   struct bp_location *loc;
3872   int ix;
3873
3874   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3875     if (breakpoint_location_address_match (loc, aspace, pc))
3876       return 1;
3877
3878   return 0;
3879 }
3880
3881 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3882    inserted using regular breakpoint_chain / bp_location array
3883    mechanism.  This does not check for single-step breakpoints, which
3884    are inserted and removed using direct target manipulation.  */
3885
3886 int
3887 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3888                                     CORE_ADDR pc)
3889 {
3890   struct bp_location *bl, **blp_tmp;
3891
3892   ALL_BP_LOCATIONS (bl, blp_tmp)
3893     {
3894       if (bl->loc_type != bp_loc_software_breakpoint
3895           && bl->loc_type != bp_loc_hardware_breakpoint)
3896         continue;
3897
3898       if (bl->inserted
3899           && breakpoint_location_address_match (bl, aspace, pc))
3900         {
3901           if (overlay_debugging 
3902               && section_is_overlay (bl->section)
3903               && !section_is_mapped (bl->section))
3904             continue;           /* unmapped overlay -- can't be a match */
3905           else
3906             return 1;
3907         }
3908     }
3909   return 0;
3910 }
3911
3912 /* Returns non-zero iff there's either regular breakpoint
3913    or a single step breakpoint inserted at PC.  */
3914
3915 int
3916 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3917 {
3918   if (regular_breakpoint_inserted_here_p (aspace, pc))
3919     return 1;
3920
3921   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3922     return 1;
3923
3924   return 0;
3925 }
3926
3927 /* This function returns non-zero iff there is a software breakpoint
3928    inserted at PC.  */
3929
3930 int
3931 software_breakpoint_inserted_here_p (struct address_space *aspace,
3932                                      CORE_ADDR pc)
3933 {
3934   struct bp_location *bl, **blp_tmp;
3935
3936   ALL_BP_LOCATIONS (bl, blp_tmp)
3937     {
3938       if (bl->loc_type != bp_loc_software_breakpoint)
3939         continue;
3940
3941       if (bl->inserted
3942           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3943                                        aspace, pc))
3944         {
3945           if (overlay_debugging 
3946               && section_is_overlay (bl->section)
3947               && !section_is_mapped (bl->section))
3948             continue;           /* unmapped overlay -- can't be a match */
3949           else
3950             return 1;
3951         }
3952     }
3953
3954   /* Also check for software single-step breakpoints.  */
3955   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3956     return 1;
3957
3958   return 0;
3959 }
3960
3961 int
3962 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3963                                        CORE_ADDR addr, ULONGEST len)
3964 {
3965   struct breakpoint *bpt;
3966
3967   ALL_BREAKPOINTS (bpt)
3968     {
3969       struct bp_location *loc;
3970
3971       if (bpt->type != bp_hardware_watchpoint
3972           && bpt->type != bp_access_watchpoint)
3973         continue;
3974
3975       if (!breakpoint_enabled (bpt))
3976         continue;
3977
3978       for (loc = bpt->loc; loc; loc = loc->next)
3979         if (loc->pspace->aspace == aspace && loc->inserted)
3980           {
3981             CORE_ADDR l, h;
3982
3983             /* Check for intersection.  */
3984             l = max (loc->address, addr);
3985             h = min (loc->address + loc->length, addr + len);
3986             if (l < h)
3987               return 1;
3988           }
3989     }
3990   return 0;
3991 }
3992
3993 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3994    PC is valid for process/thread PTID.  */
3995
3996 int
3997 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3998                          ptid_t ptid)
3999 {
4000   struct bp_location *bl, **blp_tmp;
4001   /* The thread and task IDs associated to PTID, computed lazily.  */
4002   int thread = -1;
4003   int task = 0;
4004   
4005   ALL_BP_LOCATIONS (bl, blp_tmp)
4006     {
4007       if (bl->loc_type != bp_loc_software_breakpoint
4008           && bl->loc_type != bp_loc_hardware_breakpoint)
4009         continue;
4010
4011       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4012       if (!breakpoint_enabled (bl->owner)
4013           && bl->owner->enable_state != bp_permanent)
4014         continue;
4015
4016       if (!breakpoint_location_address_match (bl, aspace, pc))
4017         continue;
4018
4019       if (bl->owner->thread != -1)
4020         {
4021           /* This is a thread-specific breakpoint.  Check that ptid
4022              matches that thread.  If thread hasn't been computed yet,
4023              it is now time to do so.  */
4024           if (thread == -1)
4025             thread = pid_to_thread_id (ptid);
4026           if (bl->owner->thread != thread)
4027             continue;
4028         }
4029
4030       if (bl->owner->task != 0)
4031         {
4032           /* This is a task-specific breakpoint.  Check that ptid
4033              matches that task.  If task hasn't been computed yet,
4034              it is now time to do so.  */
4035           if (task == 0)
4036             task = ada_get_task_number (ptid);
4037           if (bl->owner->task != task)
4038             continue;
4039         }
4040
4041       if (overlay_debugging 
4042           && section_is_overlay (bl->section)
4043           && !section_is_mapped (bl->section))
4044         continue;           /* unmapped overlay -- can't be a match */
4045
4046       return 1;
4047     }
4048
4049   return 0;
4050 }
4051 \f
4052
4053 /* bpstat stuff.  External routines' interfaces are documented
4054    in breakpoint.h.  */
4055
4056 int
4057 is_catchpoint (struct breakpoint *ep)
4058 {
4059   return (ep->type == bp_catchpoint);
4060 }
4061
4062 /* Frees any storage that is part of a bpstat.  Does not walk the
4063    'next' chain.  */
4064
4065 static void
4066 bpstat_free (bpstat bs)
4067 {
4068   if (bs->old_val != NULL)
4069     value_free (bs->old_val);
4070   decref_counted_command_line (&bs->commands);
4071   decref_bp_location (&bs->bp_location_at);
4072   xfree (bs);
4073 }
4074
4075 /* Clear a bpstat so that it says we are not at any breakpoint.
4076    Also free any storage that is part of a bpstat.  */
4077
4078 void
4079 bpstat_clear (bpstat *bsp)
4080 {
4081   bpstat p;
4082   bpstat q;
4083
4084   if (bsp == 0)
4085     return;
4086   p = *bsp;
4087   while (p != NULL)
4088     {
4089       q = p->next;
4090       bpstat_free (p);
4091       p = q;
4092     }
4093   *bsp = NULL;
4094 }
4095
4096 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4097    is part of the bpstat is copied as well.  */
4098
4099 bpstat
4100 bpstat_copy (bpstat bs)
4101 {
4102   bpstat p = NULL;
4103   bpstat tmp;
4104   bpstat retval = NULL;
4105
4106   if (bs == NULL)
4107     return bs;
4108
4109   for (; bs != NULL; bs = bs->next)
4110     {
4111       tmp = (bpstat) xmalloc (sizeof (*tmp));
4112       memcpy (tmp, bs, sizeof (*tmp));
4113       incref_counted_command_line (tmp->commands);
4114       incref_bp_location (tmp->bp_location_at);
4115       if (bs->old_val != NULL)
4116         {
4117           tmp->old_val = value_copy (bs->old_val);
4118           release_value (tmp->old_val);
4119         }
4120
4121       if (p == NULL)
4122         /* This is the first thing in the chain.  */
4123         retval = tmp;
4124       else
4125         p->next = tmp;
4126       p = tmp;
4127     }
4128   p->next = NULL;
4129   return retval;
4130 }
4131
4132 /* Find the bpstat associated with this breakpoint.  */
4133
4134 bpstat
4135 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4136 {
4137   if (bsp == NULL)
4138     return NULL;
4139
4140   for (; bsp != NULL; bsp = bsp->next)
4141     {
4142       if (bsp->breakpoint_at == breakpoint)
4143         return bsp;
4144     }
4145   return NULL;
4146 }
4147
4148 /* Put in *NUM the breakpoint number of the first breakpoint we are
4149    stopped at.  *BSP upon return is a bpstat which points to the
4150    remaining breakpoints stopped at (but which is not guaranteed to be
4151    good for anything but further calls to bpstat_num).
4152
4153    Return 0 if passed a bpstat which does not indicate any breakpoints.
4154    Return -1 if stopped at a breakpoint that has been deleted since
4155    we set it.
4156    Return 1 otherwise.  */
4157
4158 int
4159 bpstat_num (bpstat *bsp, int *num)
4160 {
4161   struct breakpoint *b;
4162
4163   if ((*bsp) == NULL)
4164     return 0;                   /* No more breakpoint values */
4165
4166   /* We assume we'll never have several bpstats that correspond to a
4167      single breakpoint -- otherwise, this function might return the
4168      same number more than once and this will look ugly.  */
4169   b = (*bsp)->breakpoint_at;
4170   *bsp = (*bsp)->next;
4171   if (b == NULL)
4172     return -1;                  /* breakpoint that's been deleted since */
4173
4174   *num = b->number;             /* We have its number */
4175   return 1;
4176 }
4177
4178 /* See breakpoint.h.  */
4179
4180 void
4181 bpstat_clear_actions (void)
4182 {
4183   struct thread_info *tp;
4184   bpstat bs;
4185
4186   if (ptid_equal (inferior_ptid, null_ptid))
4187     return;
4188
4189   tp = find_thread_ptid (inferior_ptid);
4190   if (tp == NULL)
4191     return;
4192
4193   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4194     {
4195       decref_counted_command_line (&bs->commands);
4196
4197       if (bs->old_val != NULL)
4198         {
4199           value_free (bs->old_val);
4200           bs->old_val = NULL;
4201         }
4202     }
4203 }
4204
4205 /* Called when a command is about to proceed the inferior.  */
4206
4207 static void
4208 breakpoint_about_to_proceed (void)
4209 {
4210   if (!ptid_equal (inferior_ptid, null_ptid))
4211     {
4212       struct thread_info *tp = inferior_thread ();
4213
4214       /* Allow inferior function calls in breakpoint commands to not
4215          interrupt the command list.  When the call finishes
4216          successfully, the inferior will be standing at the same
4217          breakpoint as if nothing happened.  */
4218       if (tp->control.in_infcall)
4219         return;
4220     }
4221
4222   breakpoint_proceeded = 1;
4223 }
4224
4225 /* Stub for cleaning up our state if we error-out of a breakpoint
4226    command.  */
4227 static void
4228 cleanup_executing_breakpoints (void *ignore)
4229 {
4230   executing_breakpoint_commands = 0;
4231 }
4232
4233 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4234    or its equivalent.  */
4235
4236 static int
4237 command_line_is_silent (struct command_line *cmd)
4238 {
4239   return cmd && (strcmp ("silent", cmd->line) == 0
4240                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4241 }
4242
4243 /* Execute all the commands associated with all the breakpoints at
4244    this location.  Any of these commands could cause the process to
4245    proceed beyond this point, etc.  We look out for such changes by
4246    checking the global "breakpoint_proceeded" after each command.
4247
4248    Returns true if a breakpoint command resumed the inferior.  In that
4249    case, it is the caller's responsibility to recall it again with the
4250    bpstat of the current thread.  */
4251
4252 static int
4253 bpstat_do_actions_1 (bpstat *bsp)
4254 {
4255   bpstat bs;
4256   struct cleanup *old_chain;
4257   int again = 0;
4258
4259   /* Avoid endless recursion if a `source' command is contained
4260      in bs->commands.  */
4261   if (executing_breakpoint_commands)
4262     return 0;
4263
4264   executing_breakpoint_commands = 1;
4265   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4266
4267   prevent_dont_repeat ();
4268
4269   /* This pointer will iterate over the list of bpstat's.  */
4270   bs = *bsp;
4271
4272   breakpoint_proceeded = 0;
4273   for (; bs != NULL; bs = bs->next)
4274     {
4275       struct counted_command_line *ccmd;
4276       struct command_line *cmd;
4277       struct cleanup *this_cmd_tree_chain;
4278
4279       /* Take ownership of the BSP's command tree, if it has one.
4280
4281          The command tree could legitimately contain commands like
4282          'step' and 'next', which call clear_proceed_status, which
4283          frees stop_bpstat's command tree.  To make sure this doesn't
4284          free the tree we're executing out from under us, we need to
4285          take ownership of the tree ourselves.  Since a given bpstat's
4286          commands are only executed once, we don't need to copy it; we
4287          can clear the pointer in the bpstat, and make sure we free
4288          the tree when we're done.  */
4289       ccmd = bs->commands;
4290       bs->commands = NULL;
4291       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4292       cmd = ccmd ? ccmd->commands : NULL;
4293       if (command_line_is_silent (cmd))
4294         {
4295           /* The action has been already done by bpstat_stop_status.  */
4296           cmd = cmd->next;
4297         }
4298
4299       while (cmd != NULL)
4300         {
4301           execute_control_command (cmd);
4302
4303           if (breakpoint_proceeded)
4304             break;
4305           else
4306             cmd = cmd->next;
4307         }
4308
4309       /* We can free this command tree now.  */
4310       do_cleanups (this_cmd_tree_chain);
4311
4312       if (breakpoint_proceeded)
4313         {
4314           if (target_can_async_p ())
4315             /* If we are in async mode, then the target might be still
4316                running, not stopped at any breakpoint, so nothing for
4317                us to do here -- just return to the event loop.  */
4318             ;
4319           else
4320             /* In sync mode, when execute_control_command returns
4321                we're already standing on the next breakpoint.
4322                Breakpoint commands for that stop were not run, since
4323                execute_command does not run breakpoint commands --
4324                only command_line_handler does, but that one is not
4325                involved in execution of breakpoint commands.  So, we
4326                can now execute breakpoint commands.  It should be
4327                noted that making execute_command do bpstat actions is
4328                not an option -- in this case we'll have recursive
4329                invocation of bpstat for each breakpoint with a
4330                command, and can easily blow up GDB stack.  Instead, we
4331                return true, which will trigger the caller to recall us
4332                with the new stop_bpstat.  */
4333             again = 1;
4334           break;
4335         }
4336     }
4337   do_cleanups (old_chain);
4338   return again;
4339 }
4340
4341 void
4342 bpstat_do_actions (void)
4343 {
4344   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4345
4346   /* Do any commands attached to breakpoint we are stopped at.  */
4347   while (!ptid_equal (inferior_ptid, null_ptid)
4348          && target_has_execution
4349          && !is_exited (inferior_ptid)
4350          && !is_executing (inferior_ptid))
4351     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4352        and only return when it is stopped at the next breakpoint, we
4353        keep doing breakpoint actions until it returns false to
4354        indicate the inferior was not resumed.  */
4355     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4356       break;
4357
4358   discard_cleanups (cleanup_if_error);
4359 }
4360
4361 /* Print out the (old or new) value associated with a watchpoint.  */
4362
4363 static void
4364 watchpoint_value_print (struct value *val, struct ui_file *stream)
4365 {
4366   if (val == NULL)
4367     fprintf_unfiltered (stream, _("<unreadable>"));
4368   else
4369     {
4370       struct value_print_options opts;
4371       get_user_print_options (&opts);
4372       value_print (val, stream, &opts);
4373     }
4374 }
4375
4376 /* Generic routine for printing messages indicating why we
4377    stopped.  The behavior of this function depends on the value
4378    'print_it' in the bpstat structure.  Under some circumstances we
4379    may decide not to print anything here and delegate the task to
4380    normal_stop().  */
4381
4382 static enum print_stop_action
4383 print_bp_stop_message (bpstat bs)
4384 {
4385   switch (bs->print_it)
4386     {
4387     case print_it_noop:
4388       /* Nothing should be printed for this bpstat entry.  */
4389       return PRINT_UNKNOWN;
4390       break;
4391
4392     case print_it_done:
4393       /* We still want to print the frame, but we already printed the
4394          relevant messages.  */
4395       return PRINT_SRC_AND_LOC;
4396       break;
4397
4398     case print_it_normal:
4399       {
4400         struct breakpoint *b = bs->breakpoint_at;
4401
4402         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4403            which has since been deleted.  */
4404         if (b == NULL)
4405           return PRINT_UNKNOWN;
4406
4407         /* Normal case.  Call the breakpoint's print_it method.  */
4408         return b->ops->print_it (bs);
4409       }
4410       break;
4411
4412     default:
4413       internal_error (__FILE__, __LINE__,
4414                       _("print_bp_stop_message: unrecognized enum value"));
4415       break;
4416     }
4417 }
4418
4419 /* A helper function that prints a shared library stopped event.  */
4420
4421 static void
4422 print_solib_event (int is_catchpoint)
4423 {
4424   int any_deleted
4425     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4426   int any_added
4427     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4428
4429   if (!is_catchpoint)
4430     {
4431       if (any_added || any_deleted)
4432         ui_out_text (current_uiout,
4433                      _("Stopped due to shared library event:\n"));
4434       else
4435         ui_out_text (current_uiout,
4436                      _("Stopped due to shared library event (no "
4437                        "libraries added or removed)\n"));
4438     }
4439
4440   if (ui_out_is_mi_like_p (current_uiout))
4441     ui_out_field_string (current_uiout, "reason",
4442                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4443
4444   if (any_deleted)
4445     {
4446       struct cleanup *cleanup;
4447       char *name;
4448       int ix;
4449
4450       ui_out_text (current_uiout, _("  Inferior unloaded "));
4451       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4452                                                     "removed");
4453       for (ix = 0;
4454            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4455                         ix, name);
4456            ++ix)
4457         {
4458           if (ix > 0)
4459             ui_out_text (current_uiout, "    ");
4460           ui_out_field_string (current_uiout, "library", name);
4461           ui_out_text (current_uiout, "\n");
4462         }
4463
4464       do_cleanups (cleanup);
4465     }
4466
4467   if (any_added)
4468     {
4469       struct so_list *iter;
4470       int ix;
4471       struct cleanup *cleanup;
4472
4473       ui_out_text (current_uiout, _("  Inferior loaded "));
4474       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4475                                                     "added");
4476       for (ix = 0;
4477            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4478                         ix, iter);
4479            ++ix)
4480         {
4481           if (ix > 0)
4482             ui_out_text (current_uiout, "    ");
4483           ui_out_field_string (current_uiout, "library", iter->so_name);
4484           ui_out_text (current_uiout, "\n");
4485         }
4486
4487       do_cleanups (cleanup);
4488     }
4489 }
4490
4491 /* Print a message indicating what happened.  This is called from
4492    normal_stop().  The input to this routine is the head of the bpstat
4493    list - a list of the eventpoints that caused this stop.  KIND is
4494    the target_waitkind for the stopping event.  This
4495    routine calls the generic print routine for printing a message
4496    about reasons for stopping.  This will print (for example) the
4497    "Breakpoint n," part of the output.  The return value of this
4498    routine is one of:
4499
4500    PRINT_UNKNOWN: Means we printed nothing.
4501    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4502    code to print the location.  An example is 
4503    "Breakpoint 1, " which should be followed by
4504    the location.
4505    PRINT_SRC_ONLY: Means we printed something, but there is no need
4506    to also print the location part of the message.
4507    An example is the catch/throw messages, which
4508    don't require a location appended to the end.
4509    PRINT_NOTHING: We have done some printing and we don't need any 
4510    further info to be printed.  */
4511
4512 enum print_stop_action
4513 bpstat_print (bpstat bs, int kind)
4514 {
4515   int val;
4516
4517   /* Maybe another breakpoint in the chain caused us to stop.
4518      (Currently all watchpoints go on the bpstat whether hit or not.
4519      That probably could (should) be changed, provided care is taken
4520      with respect to bpstat_explains_signal).  */
4521   for (; bs; bs = bs->next)
4522     {
4523       val = print_bp_stop_message (bs);
4524       if (val == PRINT_SRC_ONLY 
4525           || val == PRINT_SRC_AND_LOC 
4526           || val == PRINT_NOTHING)
4527         return val;
4528     }
4529
4530   /* If we had hit a shared library event breakpoint,
4531      print_bp_stop_message would print out this message.  If we hit an
4532      OS-level shared library event, do the same thing.  */
4533   if (kind == TARGET_WAITKIND_LOADED)
4534     {
4535       print_solib_event (0);
4536       return PRINT_NOTHING;
4537     }
4538
4539   /* We reached the end of the chain, or we got a null BS to start
4540      with and nothing was printed.  */
4541   return PRINT_UNKNOWN;
4542 }
4543
4544 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4545    used inside a catch_errors to evaluate the breakpoint condition.
4546    The argument is a "struct expression *" that has been cast to a
4547    "char *" to make it pass through catch_errors.  */
4548
4549 static int
4550 breakpoint_cond_eval (void *exp)
4551 {
4552   struct value *mark = value_mark ();
4553   int i = !value_true (evaluate_expression ((struct expression *) exp));
4554
4555   value_free_to_mark (mark);
4556   return i;
4557 }
4558
4559 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4560
4561 static bpstat
4562 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4563 {
4564   bpstat bs;
4565
4566   bs = (bpstat) xmalloc (sizeof (*bs));
4567   bs->next = NULL;
4568   **bs_link_pointer = bs;
4569   *bs_link_pointer = &bs->next;
4570   bs->breakpoint_at = bl->owner;
4571   bs->bp_location_at = bl;
4572   incref_bp_location (bl);
4573   /* If the condition is false, etc., don't do the commands.  */
4574   bs->commands = NULL;
4575   bs->old_val = NULL;
4576   bs->print_it = print_it_normal;
4577   return bs;
4578 }
4579 \f
4580 /* The target has stopped with waitstatus WS.  Check if any hardware
4581    watchpoints have triggered, according to the target.  */
4582
4583 int
4584 watchpoints_triggered (struct target_waitstatus *ws)
4585 {
4586   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4587   CORE_ADDR addr;
4588   struct breakpoint *b;
4589
4590   if (!stopped_by_watchpoint)
4591     {
4592       /* We were not stopped by a watchpoint.  Mark all watchpoints
4593          as not triggered.  */
4594       ALL_BREAKPOINTS (b)
4595         if (is_hardware_watchpoint (b))
4596           {
4597             struct watchpoint *w = (struct watchpoint *) b;
4598
4599             w->watchpoint_triggered = watch_triggered_no;
4600           }
4601
4602       return 0;
4603     }
4604
4605   if (!target_stopped_data_address (&current_target, &addr))
4606     {
4607       /* We were stopped by a watchpoint, but we don't know where.
4608          Mark all watchpoints as unknown.  */
4609       ALL_BREAKPOINTS (b)
4610         if (is_hardware_watchpoint (b))
4611           {
4612             struct watchpoint *w = (struct watchpoint *) b;
4613
4614             w->watchpoint_triggered = watch_triggered_unknown;
4615           }
4616
4617       return stopped_by_watchpoint;
4618     }
4619
4620   /* The target could report the data address.  Mark watchpoints
4621      affected by this data address as triggered, and all others as not
4622      triggered.  */
4623
4624   ALL_BREAKPOINTS (b)
4625     if (is_hardware_watchpoint (b))
4626       {
4627         struct watchpoint *w = (struct watchpoint *) b;
4628         struct bp_location *loc;
4629
4630         w->watchpoint_triggered = watch_triggered_no;
4631         for (loc = b->loc; loc; loc = loc->next)
4632           {
4633             if (is_masked_watchpoint (b))
4634               {
4635                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4636                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4637
4638                 if (newaddr == start)
4639                   {
4640                     w->watchpoint_triggered = watch_triggered_yes;
4641                     break;
4642                   }
4643               }
4644             /* Exact match not required.  Within range is sufficient.  */
4645             else if (target_watchpoint_addr_within_range (&current_target,
4646                                                          addr, loc->address,
4647                                                          loc->length))
4648               {
4649                 w->watchpoint_triggered = watch_triggered_yes;
4650                 break;
4651               }
4652           }
4653       }
4654
4655   return 1;
4656 }
4657
4658 /* Possible return values for watchpoint_check (this can't be an enum
4659    because of check_errors).  */
4660 /* The watchpoint has been deleted.  */
4661 #define WP_DELETED 1
4662 /* The value has changed.  */
4663 #define WP_VALUE_CHANGED 2
4664 /* The value has not changed.  */
4665 #define WP_VALUE_NOT_CHANGED 3
4666 /* Ignore this watchpoint, no matter if the value changed or not.  */
4667 #define WP_IGNORE 4
4668
4669 #define BP_TEMPFLAG 1
4670 #define BP_HARDWAREFLAG 2
4671
4672 /* Evaluate watchpoint condition expression and check if its value
4673    changed.
4674
4675    P should be a pointer to struct bpstat, but is defined as a void *
4676    in order for this function to be usable with catch_errors.  */
4677
4678 static int
4679 watchpoint_check (void *p)
4680 {
4681   bpstat bs = (bpstat) p;
4682   struct watchpoint *b;
4683   struct frame_info *fr;
4684   int within_current_scope;
4685
4686   /* BS is built from an existing struct breakpoint.  */
4687   gdb_assert (bs->breakpoint_at != NULL);
4688   b = (struct watchpoint *) bs->breakpoint_at;
4689
4690   /* If this is a local watchpoint, we only want to check if the
4691      watchpoint frame is in scope if the current thread is the thread
4692      that was used to create the watchpoint.  */
4693   if (!watchpoint_in_thread_scope (b))
4694     return WP_IGNORE;
4695
4696   if (b->exp_valid_block == NULL)
4697     within_current_scope = 1;
4698   else
4699     {
4700       struct frame_info *frame = get_current_frame ();
4701       struct gdbarch *frame_arch = get_frame_arch (frame);
4702       CORE_ADDR frame_pc = get_frame_pc (frame);
4703
4704       /* in_function_epilogue_p() returns a non-zero value if we're
4705          still in the function but the stack frame has already been
4706          invalidated.  Since we can't rely on the values of local
4707          variables after the stack has been destroyed, we are treating
4708          the watchpoint in that state as `not changed' without further
4709          checking.  Don't mark watchpoints as changed if the current
4710          frame is in an epilogue - even if they are in some other
4711          frame, our view of the stack is likely to be wrong and
4712          frame_find_by_id could error out.  */
4713       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4714         return WP_IGNORE;
4715
4716       fr = frame_find_by_id (b->watchpoint_frame);
4717       within_current_scope = (fr != NULL);
4718
4719       /* If we've gotten confused in the unwinder, we might have
4720          returned a frame that can't describe this variable.  */
4721       if (within_current_scope)
4722         {
4723           struct symbol *function;
4724
4725           function = get_frame_function (fr);
4726           if (function == NULL
4727               || !contained_in (b->exp_valid_block,
4728                                 SYMBOL_BLOCK_VALUE (function)))
4729             within_current_scope = 0;
4730         }
4731
4732       if (within_current_scope)
4733         /* If we end up stopping, the current frame will get selected
4734            in normal_stop.  So this call to select_frame won't affect
4735            the user.  */
4736         select_frame (fr);
4737     }
4738
4739   if (within_current_scope)
4740     {
4741       /* We use value_{,free_to_}mark because it could be a *long*
4742          time before we return to the command level and call
4743          free_all_values.  We can't call free_all_values because we
4744          might be in the middle of evaluating a function call.  */
4745
4746       int pc = 0;
4747       struct value *mark;
4748       struct value *new_val;
4749
4750       if (is_masked_watchpoint (&b->base))
4751         /* Since we don't know the exact trigger address (from
4752            stopped_data_address), just tell the user we've triggered
4753            a mask watchpoint.  */
4754         return WP_VALUE_CHANGED;
4755
4756       mark = value_mark ();
4757       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4758
4759       /* We use value_equal_contents instead of value_equal because
4760          the latter coerces an array to a pointer, thus comparing just
4761          the address of the array instead of its contents.  This is
4762          not what we want.  */
4763       if ((b->val != NULL) != (new_val != NULL)
4764           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4765         {
4766           if (new_val != NULL)
4767             {
4768               release_value (new_val);
4769               value_free_to_mark (mark);
4770             }
4771           bs->old_val = b->val;
4772           b->val = new_val;
4773           b->val_valid = 1;
4774           return WP_VALUE_CHANGED;
4775         }
4776       else
4777         {
4778           /* Nothing changed.  */
4779           value_free_to_mark (mark);
4780           return WP_VALUE_NOT_CHANGED;
4781         }
4782     }
4783   else
4784     {
4785       struct ui_out *uiout = current_uiout;
4786
4787       /* This seems like the only logical thing to do because
4788          if we temporarily ignored the watchpoint, then when
4789          we reenter the block in which it is valid it contains
4790          garbage (in the case of a function, it may have two
4791          garbage values, one before and one after the prologue).
4792          So we can't even detect the first assignment to it and
4793          watch after that (since the garbage may or may not equal
4794          the first value assigned).  */
4795       /* We print all the stop information in
4796          breakpoint_ops->print_it, but in this case, by the time we
4797          call breakpoint_ops->print_it this bp will be deleted
4798          already.  So we have no choice but print the information
4799          here.  */
4800       if (ui_out_is_mi_like_p (uiout))
4801         ui_out_field_string
4802           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4803       ui_out_text (uiout, "\nWatchpoint ");
4804       ui_out_field_int (uiout, "wpnum", b->base.number);
4805       ui_out_text (uiout,
4806                    " deleted because the program has left the block in\n\
4807 which its expression is valid.\n");     
4808
4809       /* Make sure the watchpoint's commands aren't executed.  */
4810       decref_counted_command_line (&b->base.commands);
4811       watchpoint_del_at_next_stop (b);
4812
4813       return WP_DELETED;
4814     }
4815 }
4816
4817 /* Return true if it looks like target has stopped due to hitting
4818    breakpoint location BL.  This function does not check if we should
4819    stop, only if BL explains the stop.  */
4820
4821 static int
4822 bpstat_check_location (const struct bp_location *bl,
4823                        struct address_space *aspace, CORE_ADDR bp_addr,
4824                        const struct target_waitstatus *ws)
4825 {
4826   struct breakpoint *b = bl->owner;
4827
4828   /* BL is from an existing breakpoint.  */
4829   gdb_assert (b != NULL);
4830
4831   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4832 }
4833
4834 /* Determine if the watched values have actually changed, and we
4835    should stop.  If not, set BS->stop to 0.  */
4836
4837 static void
4838 bpstat_check_watchpoint (bpstat bs)
4839 {
4840   const struct bp_location *bl;
4841   struct watchpoint *b;
4842
4843   /* BS is built for existing struct breakpoint.  */
4844   bl = bs->bp_location_at;
4845   gdb_assert (bl != NULL);
4846   b = (struct watchpoint *) bs->breakpoint_at;
4847   gdb_assert (b != NULL);
4848
4849     {
4850       int must_check_value = 0;
4851       
4852       if (b->base.type == bp_watchpoint)
4853         /* For a software watchpoint, we must always check the
4854            watched value.  */
4855         must_check_value = 1;
4856       else if (b->watchpoint_triggered == watch_triggered_yes)
4857         /* We have a hardware watchpoint (read, write, or access)
4858            and the target earlier reported an address watched by
4859            this watchpoint.  */
4860         must_check_value = 1;
4861       else if (b->watchpoint_triggered == watch_triggered_unknown
4862                && b->base.type == bp_hardware_watchpoint)
4863         /* We were stopped by a hardware watchpoint, but the target could
4864            not report the data address.  We must check the watchpoint's
4865            value.  Access and read watchpoints are out of luck; without
4866            a data address, we can't figure it out.  */
4867         must_check_value = 1;
4868
4869       if (must_check_value)
4870         {
4871           char *message
4872             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4873                           b->base.number);
4874           struct cleanup *cleanups = make_cleanup (xfree, message);
4875           int e = catch_errors (watchpoint_check, bs, message,
4876                                 RETURN_MASK_ALL);
4877           do_cleanups (cleanups);
4878           switch (e)
4879             {
4880             case WP_DELETED:
4881               /* We've already printed what needs to be printed.  */
4882               bs->print_it = print_it_done;
4883               /* Stop.  */
4884               break;
4885             case WP_IGNORE:
4886               bs->print_it = print_it_noop;
4887               bs->stop = 0;
4888               break;
4889             case WP_VALUE_CHANGED:
4890               if (b->base.type == bp_read_watchpoint)
4891                 {
4892                   /* There are two cases to consider here:
4893
4894                      1. We're watching the triggered memory for reads.
4895                      In that case, trust the target, and always report
4896                      the watchpoint hit to the user.  Even though
4897                      reads don't cause value changes, the value may
4898                      have changed since the last time it was read, and
4899                      since we're not trapping writes, we will not see
4900                      those, and as such we should ignore our notion of
4901                      old value.
4902
4903                      2. We're watching the triggered memory for both
4904                      reads and writes.  There are two ways this may
4905                      happen:
4906
4907                      2.1. This is a target that can't break on data
4908                      reads only, but can break on accesses (reads or
4909                      writes), such as e.g., x86.  We detect this case
4910                      at the time we try to insert read watchpoints.
4911
4912                      2.2. Otherwise, the target supports read
4913                      watchpoints, but, the user set an access or write
4914                      watchpoint watching the same memory as this read
4915                      watchpoint.
4916
4917                      If we're watching memory writes as well as reads,
4918                      ignore watchpoint hits when we find that the
4919                      value hasn't changed, as reads don't cause
4920                      changes.  This still gives false positives when
4921                      the program writes the same value to memory as
4922                      what there was already in memory (we will confuse
4923                      it for a read), but it's much better than
4924                      nothing.  */
4925
4926                   int other_write_watchpoint = 0;
4927
4928                   if (bl->watchpoint_type == hw_read)
4929                     {
4930                       struct breakpoint *other_b;
4931
4932                       ALL_BREAKPOINTS (other_b)
4933                         if (other_b->type == bp_hardware_watchpoint
4934                             || other_b->type == bp_access_watchpoint)
4935                           {
4936                             struct watchpoint *other_w =
4937                               (struct watchpoint *) other_b;
4938
4939                             if (other_w->watchpoint_triggered
4940                                 == watch_triggered_yes)
4941                               {
4942                                 other_write_watchpoint = 1;
4943                                 break;
4944                               }
4945                           }
4946                     }
4947
4948                   if (other_write_watchpoint
4949                       || bl->watchpoint_type == hw_access)
4950                     {
4951                       /* We're watching the same memory for writes,
4952                          and the value changed since the last time we
4953                          updated it, so this trap must be for a write.
4954                          Ignore it.  */
4955                       bs->print_it = print_it_noop;
4956                       bs->stop = 0;
4957                     }
4958                 }
4959               break;
4960             case WP_VALUE_NOT_CHANGED:
4961               if (b->base.type == bp_hardware_watchpoint
4962                   || b->base.type == bp_watchpoint)
4963                 {
4964                   /* Don't stop: write watchpoints shouldn't fire if
4965                      the value hasn't changed.  */
4966                   bs->print_it = print_it_noop;
4967                   bs->stop = 0;
4968                 }
4969               /* Stop.  */
4970               break;
4971             default:
4972               /* Can't happen.  */
4973             case 0:
4974               /* Error from catch_errors.  */
4975               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4976               watchpoint_del_at_next_stop (b);
4977               /* We've already printed what needs to be printed.  */
4978               bs->print_it = print_it_done;
4979               break;
4980             }
4981         }
4982       else      /* must_check_value == 0 */
4983         {
4984           /* This is a case where some watchpoint(s) triggered, but
4985              not at the address of this watchpoint, or else no
4986              watchpoint triggered after all.  So don't print
4987              anything for this watchpoint.  */
4988           bs->print_it = print_it_noop;
4989           bs->stop = 0;
4990         }
4991     }
4992 }
4993
4994
4995 /* Check conditions (condition proper, frame, thread and ignore count)
4996    of breakpoint referred to by BS.  If we should not stop for this
4997    breakpoint, set BS->stop to 0.  */
4998
4999 static void
5000 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5001 {
5002   int thread_id = pid_to_thread_id (ptid);
5003   const struct bp_location *bl;
5004   struct breakpoint *b;
5005
5006   /* BS is built for existing struct breakpoint.  */
5007   bl = bs->bp_location_at;
5008   gdb_assert (bl != NULL);
5009   b = bs->breakpoint_at;
5010   gdb_assert (b != NULL);
5011
5012   /* Even if the target evaluated the condition on its end and notified GDB, we
5013      need to do so again since GDB does not know if we stopped due to a
5014      breakpoint or a single step breakpoint.  */
5015
5016   if (frame_id_p (b->frame_id)
5017       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5018     bs->stop = 0;
5019   else if (bs->stop)
5020     {
5021       int value_is_zero = 0;
5022       struct expression *cond;
5023
5024       /* Evaluate Python breakpoints that have a "stop"
5025          method implemented.  */
5026       if (b->py_bp_object)
5027         bs->stop = gdbpy_should_stop (b->py_bp_object);
5028
5029       if (is_watchpoint (b))
5030         {
5031           struct watchpoint *w = (struct watchpoint *) b;
5032
5033           cond = w->cond_exp;
5034         }
5035       else
5036         cond = bl->cond;
5037
5038       if (cond && b->disposition != disp_del_at_next_stop)
5039         {
5040           int within_current_scope = 1;
5041           struct watchpoint * w;
5042
5043           /* We use value_mark and value_free_to_mark because it could
5044              be a long time before we return to the command level and
5045              call free_all_values.  We can't call free_all_values
5046              because we might be in the middle of evaluating a
5047              function call.  */
5048           struct value *mark = value_mark ();
5049
5050           if (is_watchpoint (b))
5051             w = (struct watchpoint *) b;
5052           else
5053             w = NULL;
5054
5055           /* Need to select the frame, with all that implies so that
5056              the conditions will have the right context.  Because we
5057              use the frame, we will not see an inlined function's
5058              variables when we arrive at a breakpoint at the start
5059              of the inlined function; the current frame will be the
5060              call site.  */
5061           if (w == NULL || w->cond_exp_valid_block == NULL)
5062             select_frame (get_current_frame ());
5063           else
5064             {
5065               struct frame_info *frame;
5066
5067               /* For local watchpoint expressions, which particular
5068                  instance of a local is being watched matters, so we
5069                  keep track of the frame to evaluate the expression
5070                  in.  To evaluate the condition however, it doesn't
5071                  really matter which instantiation of the function
5072                  where the condition makes sense triggers the
5073                  watchpoint.  This allows an expression like "watch
5074                  global if q > 10" set in `func', catch writes to
5075                  global on all threads that call `func', or catch
5076                  writes on all recursive calls of `func' by a single
5077                  thread.  We simply always evaluate the condition in
5078                  the innermost frame that's executing where it makes
5079                  sense to evaluate the condition.  It seems
5080                  intuitive.  */
5081               frame = block_innermost_frame (w->cond_exp_valid_block);
5082               if (frame != NULL)
5083                 select_frame (frame);
5084               else
5085                 within_current_scope = 0;
5086             }
5087           if (within_current_scope)
5088             value_is_zero
5089               = catch_errors (breakpoint_cond_eval, cond,
5090                               "Error in testing breakpoint condition:\n",
5091                               RETURN_MASK_ALL);
5092           else
5093             {
5094               warning (_("Watchpoint condition cannot be tested "
5095                          "in the current scope"));
5096               /* If we failed to set the right context for this
5097                  watchpoint, unconditionally report it.  */
5098               value_is_zero = 0;
5099             }
5100           /* FIXME-someday, should give breakpoint #.  */
5101           value_free_to_mark (mark);
5102         }
5103
5104       if (cond && value_is_zero)
5105         {
5106           bs->stop = 0;
5107         }
5108       else if (b->thread != -1 && b->thread != thread_id)
5109         {
5110           bs->stop = 0;
5111         }
5112       else if (b->ignore_count > 0)
5113         {
5114           b->ignore_count--;
5115           annotate_ignore_count_change ();
5116           bs->stop = 0;
5117           /* Increase the hit count even though we don't stop.  */
5118           ++(b->hit_count);
5119           observer_notify_breakpoint_modified (b);
5120         }       
5121     }
5122 }
5123
5124
5125 /* Get a bpstat associated with having just stopped at address
5126    BP_ADDR in thread PTID.
5127
5128    Determine whether we stopped at a breakpoint, etc, or whether we
5129    don't understand this stop.  Result is a chain of bpstat's such
5130    that:
5131
5132    if we don't understand the stop, the result is a null pointer.
5133
5134    if we understand why we stopped, the result is not null.
5135
5136    Each element of the chain refers to a particular breakpoint or
5137    watchpoint at which we have stopped.  (We may have stopped for
5138    several reasons concurrently.)
5139
5140    Each element of the chain has valid next, breakpoint_at,
5141    commands, FIXME??? fields.  */
5142
5143 bpstat
5144 bpstat_stop_status (struct address_space *aspace,
5145                     CORE_ADDR bp_addr, ptid_t ptid,
5146                     const struct target_waitstatus *ws)
5147 {
5148   struct breakpoint *b = NULL;
5149   struct bp_location *bl;
5150   struct bp_location *loc;
5151   /* First item of allocated bpstat's.  */
5152   bpstat bs_head = NULL, *bs_link = &bs_head;
5153   /* Pointer to the last thing in the chain currently.  */
5154   bpstat bs;
5155   int ix;
5156   int need_remove_insert;
5157   int removed_any;
5158
5159   /* First, build the bpstat chain with locations that explain a
5160      target stop, while being careful to not set the target running,
5161      as that may invalidate locations (in particular watchpoint
5162      locations are recreated).  Resuming will happen here with
5163      breakpoint conditions or watchpoint expressions that include
5164      inferior function calls.  */
5165
5166   ALL_BREAKPOINTS (b)
5167     {
5168       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5169         continue;
5170
5171       for (bl = b->loc; bl != NULL; bl = bl->next)
5172         {
5173           /* For hardware watchpoints, we look only at the first
5174              location.  The watchpoint_check function will work on the
5175              entire expression, not the individual locations.  For
5176              read watchpoints, the watchpoints_triggered function has
5177              checked all locations already.  */
5178           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5179             break;
5180
5181           if (!bl->enabled || bl->shlib_disabled)
5182             continue;
5183
5184           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5185             continue;
5186
5187           /* Come here if it's a watchpoint, or if the break address
5188              matches.  */
5189
5190           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5191                                                    explain stop.  */
5192
5193           /* Assume we stop.  Should we find a watchpoint that is not
5194              actually triggered, or if the condition of the breakpoint
5195              evaluates as false, we'll reset 'stop' to 0.  */
5196           bs->stop = 1;
5197           bs->print = 1;
5198
5199           /* If this is a scope breakpoint, mark the associated
5200              watchpoint as triggered so that we will handle the
5201              out-of-scope event.  We'll get to the watchpoint next
5202              iteration.  */
5203           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5204             {
5205               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5206
5207               w->watchpoint_triggered = watch_triggered_yes;
5208             }
5209         }
5210     }
5211
5212   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5213     {
5214       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5215         {
5216           bs = bpstat_alloc (loc, &bs_link);
5217           /* For hits of moribund locations, we should just proceed.  */
5218           bs->stop = 0;
5219           bs->print = 0;
5220           bs->print_it = print_it_noop;
5221         }
5222     }
5223
5224   /* A bit of special processing for shlib breakpoints.  We need to
5225      process solib loading here, so that the lists of loaded and
5226      unloaded libraries are correct before we handle "catch load" and
5227      "catch unload".  */
5228   for (bs = bs_head; bs != NULL; bs = bs->next)
5229     {
5230       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5231         {
5232           handle_solib_event ();
5233           break;
5234         }
5235     }
5236
5237   /* Now go through the locations that caused the target to stop, and
5238      check whether we're interested in reporting this stop to higher
5239      layers, or whether we should resume the target transparently.  */
5240
5241   removed_any = 0;
5242
5243   for (bs = bs_head; bs != NULL; bs = bs->next)
5244     {
5245       if (!bs->stop)
5246         continue;
5247
5248       b = bs->breakpoint_at;
5249       b->ops->check_status (bs);
5250       if (bs->stop)
5251         {
5252           bpstat_check_breakpoint_conditions (bs, ptid);
5253
5254           if (bs->stop)
5255             {
5256               ++(b->hit_count);
5257               observer_notify_breakpoint_modified (b);
5258
5259               /* We will stop here.  */
5260               if (b->disposition == disp_disable)
5261                 {
5262                   --(b->enable_count);
5263                   if (b->enable_count <= 0
5264                       && b->enable_state != bp_permanent)
5265                     b->enable_state = bp_disabled;
5266                   removed_any = 1;
5267                 }
5268               if (b->silent)
5269                 bs->print = 0;
5270               bs->commands = b->commands;
5271               incref_counted_command_line (bs->commands);
5272               if (command_line_is_silent (bs->commands
5273                                           ? bs->commands->commands : NULL))
5274                 bs->print = 0;
5275             }
5276
5277         }
5278
5279       /* Print nothing for this entry if we don't stop or don't
5280          print.  */
5281       if (!bs->stop || !bs->print)
5282         bs->print_it = print_it_noop;
5283     }
5284
5285   /* If we aren't stopping, the value of some hardware watchpoint may
5286      not have changed, but the intermediate memory locations we are
5287      watching may have.  Don't bother if we're stopping; this will get
5288      done later.  */
5289   need_remove_insert = 0;
5290   if (! bpstat_causes_stop (bs_head))
5291     for (bs = bs_head; bs != NULL; bs = bs->next)
5292       if (!bs->stop
5293           && bs->breakpoint_at
5294           && is_hardware_watchpoint (bs->breakpoint_at))
5295         {
5296           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5297
5298           update_watchpoint (w, 0 /* don't reparse.  */);
5299           need_remove_insert = 1;
5300         }
5301
5302   if (need_remove_insert)
5303     update_global_location_list (1);
5304   else if (removed_any)
5305     update_global_location_list (0);
5306
5307   return bs_head;
5308 }
5309
5310 static void
5311 handle_jit_event (void)
5312 {
5313   struct frame_info *frame;
5314   struct gdbarch *gdbarch;
5315
5316   /* Switch terminal for any messages produced by
5317      breakpoint_re_set.  */
5318   target_terminal_ours_for_output ();
5319
5320   frame = get_current_frame ();
5321   gdbarch = get_frame_arch (frame);
5322
5323   jit_event_handler (gdbarch);
5324
5325   target_terminal_inferior ();
5326 }
5327
5328 /* Handle an solib event by calling solib_add.  */
5329
5330 void
5331 handle_solib_event (void)
5332 {
5333   clear_program_space_solib_cache (current_inferior ()->pspace);
5334
5335   /* Check for any newly added shared libraries if we're supposed to
5336      be adding them automatically.  Switch terminal for any messages
5337      produced by breakpoint_re_set.  */
5338   target_terminal_ours_for_output ();
5339 #ifdef SOLIB_ADD
5340   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5341 #else
5342   solib_add (NULL, 0, &current_target, auto_solib_add);
5343 #endif
5344   target_terminal_inferior ();
5345 }
5346
5347 /* Prepare WHAT final decision for infrun.  */
5348
5349 /* Decide what infrun needs to do with this bpstat.  */
5350
5351 struct bpstat_what
5352 bpstat_what (bpstat bs_head)
5353 {
5354   struct bpstat_what retval;
5355   int jit_event = 0;
5356   bpstat bs;
5357
5358   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5359   retval.call_dummy = STOP_NONE;
5360   retval.is_longjmp = 0;
5361
5362   for (bs = bs_head; bs != NULL; bs = bs->next)
5363     {
5364       /* Extract this BS's action.  After processing each BS, we check
5365          if its action overrides all we've seem so far.  */
5366       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5367       enum bptype bptype;
5368
5369       if (bs->breakpoint_at == NULL)
5370         {
5371           /* I suspect this can happen if it was a momentary
5372              breakpoint which has since been deleted.  */
5373           bptype = bp_none;
5374         }
5375       else
5376         bptype = bs->breakpoint_at->type;
5377
5378       switch (bptype)
5379         {
5380         case bp_none:
5381           break;
5382         case bp_breakpoint:
5383         case bp_hardware_breakpoint:
5384         case bp_until:
5385         case bp_finish:
5386         case bp_shlib_event:
5387           if (bs->stop)
5388             {
5389               if (bs->print)
5390                 this_action = BPSTAT_WHAT_STOP_NOISY;
5391               else
5392                 this_action = BPSTAT_WHAT_STOP_SILENT;
5393             }
5394           else
5395             this_action = BPSTAT_WHAT_SINGLE;
5396           break;
5397         case bp_watchpoint:
5398         case bp_hardware_watchpoint:
5399         case bp_read_watchpoint:
5400         case bp_access_watchpoint:
5401           if (bs->stop)
5402             {
5403               if (bs->print)
5404                 this_action = BPSTAT_WHAT_STOP_NOISY;
5405               else
5406                 this_action = BPSTAT_WHAT_STOP_SILENT;
5407             }
5408           else
5409             {
5410               /* There was a watchpoint, but we're not stopping.
5411                  This requires no further action.  */
5412             }
5413           break;
5414         case bp_longjmp:
5415         case bp_longjmp_call_dummy:
5416         case bp_exception:
5417           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5418           retval.is_longjmp = bptype != bp_exception;
5419           break;
5420         case bp_longjmp_resume:
5421         case bp_exception_resume:
5422           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5423           retval.is_longjmp = bptype == bp_longjmp_resume;
5424           break;
5425         case bp_step_resume:
5426           if (bs->stop)
5427             this_action = BPSTAT_WHAT_STEP_RESUME;
5428           else
5429             {
5430               /* It is for the wrong frame.  */
5431               this_action = BPSTAT_WHAT_SINGLE;
5432             }
5433           break;
5434         case bp_hp_step_resume:
5435           if (bs->stop)
5436             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5437           else
5438             {
5439               /* It is for the wrong frame.  */
5440               this_action = BPSTAT_WHAT_SINGLE;
5441             }
5442           break;
5443         case bp_watchpoint_scope:
5444         case bp_thread_event:
5445         case bp_overlay_event:
5446         case bp_longjmp_master:
5447         case bp_std_terminate_master:
5448         case bp_exception_master:
5449           this_action = BPSTAT_WHAT_SINGLE;
5450           break;
5451         case bp_catchpoint:
5452           if (bs->stop)
5453             {
5454               if (bs->print)
5455                 this_action = BPSTAT_WHAT_STOP_NOISY;
5456               else
5457                 this_action = BPSTAT_WHAT_STOP_SILENT;
5458             }
5459           else
5460             {
5461               /* There was a catchpoint, but we're not stopping.
5462                  This requires no further action.  */
5463             }
5464           break;
5465         case bp_jit_event:
5466           jit_event = 1;
5467           this_action = BPSTAT_WHAT_SINGLE;
5468           break;
5469         case bp_call_dummy:
5470           /* Make sure the action is stop (silent or noisy),
5471              so infrun.c pops the dummy frame.  */
5472           retval.call_dummy = STOP_STACK_DUMMY;
5473           this_action = BPSTAT_WHAT_STOP_SILENT;
5474           break;
5475         case bp_std_terminate:
5476           /* Make sure the action is stop (silent or noisy),
5477              so infrun.c pops the dummy frame.  */
5478           retval.call_dummy = STOP_STD_TERMINATE;
5479           this_action = BPSTAT_WHAT_STOP_SILENT;
5480           break;
5481         case bp_tracepoint:
5482         case bp_fast_tracepoint:
5483         case bp_static_tracepoint:
5484           /* Tracepoint hits should not be reported back to GDB, and
5485              if one got through somehow, it should have been filtered
5486              out already.  */
5487           internal_error (__FILE__, __LINE__,
5488                           _("bpstat_what: tracepoint encountered"));
5489           break;
5490         case bp_gnu_ifunc_resolver:
5491           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5492           this_action = BPSTAT_WHAT_SINGLE;
5493           break;
5494         case bp_gnu_ifunc_resolver_return:
5495           /* The breakpoint will be removed, execution will restart from the
5496              PC of the former breakpoint.  */
5497           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5498           break;
5499
5500         case bp_dprintf:
5501           this_action = BPSTAT_WHAT_STOP_SILENT;
5502           break;
5503
5504         default:
5505           internal_error (__FILE__, __LINE__,
5506                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5507         }
5508
5509       retval.main_action = max (retval.main_action, this_action);
5510     }
5511
5512   /* These operations may affect the bs->breakpoint_at state so they are
5513      delayed after MAIN_ACTION is decided above.  */
5514
5515   if (jit_event)
5516     {
5517       if (debug_infrun)
5518         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5519
5520       handle_jit_event ();
5521     }
5522
5523   for (bs = bs_head; bs != NULL; bs = bs->next)
5524     {
5525       struct breakpoint *b = bs->breakpoint_at;
5526
5527       if (b == NULL)
5528         continue;
5529       switch (b->type)
5530         {
5531         case bp_gnu_ifunc_resolver:
5532           gnu_ifunc_resolver_stop (b);
5533           break;
5534         case bp_gnu_ifunc_resolver_return:
5535           gnu_ifunc_resolver_return_stop (b);
5536           break;
5537         }
5538     }
5539
5540   return retval;
5541 }
5542
5543 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5544    without hardware support).  This isn't related to a specific bpstat,
5545    just to things like whether watchpoints are set.  */
5546
5547 int
5548 bpstat_should_step (void)
5549 {
5550   struct breakpoint *b;
5551
5552   ALL_BREAKPOINTS (b)
5553     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5554       return 1;
5555   return 0;
5556 }
5557
5558 int
5559 bpstat_causes_stop (bpstat bs)
5560 {
5561   for (; bs != NULL; bs = bs->next)
5562     if (bs->stop)
5563       return 1;
5564
5565   return 0;
5566 }
5567
5568 \f
5569
5570 /* Compute a string of spaces suitable to indent the next line
5571    so it starts at the position corresponding to the table column
5572    named COL_NAME in the currently active table of UIOUT.  */
5573
5574 static char *
5575 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5576 {
5577   static char wrap_indent[80];
5578   int i, total_width, width, align;
5579   char *text;
5580
5581   total_width = 0;
5582   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5583     {
5584       if (strcmp (text, col_name) == 0)
5585         {
5586           gdb_assert (total_width < sizeof wrap_indent);
5587           memset (wrap_indent, ' ', total_width);
5588           wrap_indent[total_width] = 0;
5589
5590           return wrap_indent;
5591         }
5592
5593       total_width += width + 1;
5594     }
5595
5596   return NULL;
5597 }
5598
5599 /* Determine if the locations of this breakpoint will have their conditions
5600    evaluated by the target, host or a mix of both.  Returns the following:
5601
5602     "host": Host evals condition.
5603     "host or target": Host or Target evals condition.
5604     "target": Target evals condition.
5605 */
5606
5607 static const char *
5608 bp_condition_evaluator (struct breakpoint *b)
5609 {
5610   struct bp_location *bl;
5611   char host_evals = 0;
5612   char target_evals = 0;
5613
5614   if (!b)
5615     return NULL;
5616
5617   if (!is_breakpoint (b))
5618     return NULL;
5619
5620   if (gdb_evaluates_breakpoint_condition_p ()
5621       || !target_supports_evaluation_of_breakpoint_conditions ())
5622     return condition_evaluation_host;
5623
5624   for (bl = b->loc; bl; bl = bl->next)
5625     {
5626       if (bl->cond_bytecode)
5627         target_evals++;
5628       else
5629         host_evals++;
5630     }
5631
5632   if (host_evals && target_evals)
5633     return condition_evaluation_both;
5634   else if (target_evals)
5635     return condition_evaluation_target;
5636   else
5637     return condition_evaluation_host;
5638 }
5639
5640 /* Determine the breakpoint location's condition evaluator.  This is
5641    similar to bp_condition_evaluator, but for locations.  */
5642
5643 static const char *
5644 bp_location_condition_evaluator (struct bp_location *bl)
5645 {
5646   if (bl && !is_breakpoint (bl->owner))
5647     return NULL;
5648
5649   if (gdb_evaluates_breakpoint_condition_p ()
5650       || !target_supports_evaluation_of_breakpoint_conditions ())
5651     return condition_evaluation_host;
5652
5653   if (bl && bl->cond_bytecode)
5654     return condition_evaluation_target;
5655   else
5656     return condition_evaluation_host;
5657 }
5658
5659 /* Print the LOC location out of the list of B->LOC locations.  */
5660
5661 static void
5662 print_breakpoint_location (struct breakpoint *b,
5663                            struct bp_location *loc)
5664 {
5665   struct ui_out *uiout = current_uiout;
5666   struct cleanup *old_chain = save_current_program_space ();
5667
5668   if (loc != NULL && loc->shlib_disabled)
5669     loc = NULL;
5670
5671   if (loc != NULL)
5672     set_current_program_space (loc->pspace);
5673
5674   if (b->display_canonical)
5675     ui_out_field_string (uiout, "what", b->addr_string);
5676   else if (loc && loc->source_file)
5677     {
5678       struct symbol *sym 
5679         = find_pc_sect_function (loc->address, loc->section);
5680       if (sym)
5681         {
5682           ui_out_text (uiout, "in ");
5683           ui_out_field_string (uiout, "func",
5684                                SYMBOL_PRINT_NAME (sym));
5685           ui_out_text (uiout, " ");
5686           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5687           ui_out_text (uiout, "at ");
5688         }
5689       ui_out_field_string (uiout, "file", loc->source_file);
5690       ui_out_text (uiout, ":");
5691       
5692       if (ui_out_is_mi_like_p (uiout))
5693         {
5694           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5695           const char *fullname = symtab_to_fullname (sal.symtab);
5696           
5697           if (fullname)
5698             ui_out_field_string (uiout, "fullname", fullname);
5699         }
5700       
5701       ui_out_field_int (uiout, "line", loc->line_number);
5702     }
5703   else if (loc)
5704     {
5705       struct ui_file *stb = mem_fileopen ();
5706       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5707
5708       print_address_symbolic (loc->gdbarch, loc->address, stb,
5709                               demangle, "");
5710       ui_out_field_stream (uiout, "at", stb);
5711
5712       do_cleanups (stb_chain);
5713     }
5714   else
5715     ui_out_field_string (uiout, "pending", b->addr_string);
5716
5717   if (loc && is_breakpoint (b)
5718       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5719       && bp_condition_evaluator (b) == condition_evaluation_both)
5720     {
5721       ui_out_text (uiout, " (");
5722       ui_out_field_string (uiout, "evaluated-by",
5723                            bp_location_condition_evaluator (loc));
5724       ui_out_text (uiout, ")");
5725     }
5726
5727   do_cleanups (old_chain);
5728 }
5729
5730 static const char *
5731 bptype_string (enum bptype type)
5732 {
5733   struct ep_type_description
5734     {
5735       enum bptype type;
5736       char *description;
5737     };
5738   static struct ep_type_description bptypes[] =
5739   {
5740     {bp_none, "?deleted?"},
5741     {bp_breakpoint, "breakpoint"},
5742     {bp_hardware_breakpoint, "hw breakpoint"},
5743     {bp_until, "until"},
5744     {bp_finish, "finish"},
5745     {bp_watchpoint, "watchpoint"},
5746     {bp_hardware_watchpoint, "hw watchpoint"},
5747     {bp_read_watchpoint, "read watchpoint"},
5748     {bp_access_watchpoint, "acc watchpoint"},
5749     {bp_longjmp, "longjmp"},
5750     {bp_longjmp_resume, "longjmp resume"},
5751     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5752     {bp_exception, "exception"},
5753     {bp_exception_resume, "exception resume"},
5754     {bp_step_resume, "step resume"},
5755     {bp_hp_step_resume, "high-priority step resume"},
5756     {bp_watchpoint_scope, "watchpoint scope"},
5757     {bp_call_dummy, "call dummy"},
5758     {bp_std_terminate, "std::terminate"},
5759     {bp_shlib_event, "shlib events"},
5760     {bp_thread_event, "thread events"},
5761     {bp_overlay_event, "overlay events"},
5762     {bp_longjmp_master, "longjmp master"},
5763     {bp_std_terminate_master, "std::terminate master"},
5764     {bp_exception_master, "exception master"},
5765     {bp_catchpoint, "catchpoint"},
5766     {bp_tracepoint, "tracepoint"},
5767     {bp_fast_tracepoint, "fast tracepoint"},
5768     {bp_static_tracepoint, "static tracepoint"},
5769     {bp_dprintf, "dprintf"},
5770     {bp_jit_event, "jit events"},
5771     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5772     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5773   };
5774
5775   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5776       || ((int) type != bptypes[(int) type].type))
5777     internal_error (__FILE__, __LINE__,
5778                     _("bptypes table does not describe type #%d."),
5779                     (int) type);
5780
5781   return bptypes[(int) type].description;
5782 }
5783
5784 /* Print B to gdb_stdout.  */
5785
5786 static void
5787 print_one_breakpoint_location (struct breakpoint *b,
5788                                struct bp_location *loc,
5789                                int loc_number,
5790                                struct bp_location **last_loc,
5791                                int allflag)
5792 {
5793   struct command_line *l;
5794   static char bpenables[] = "nynny";
5795
5796   struct ui_out *uiout = current_uiout;
5797   int header_of_multiple = 0;
5798   int part_of_multiple = (loc != NULL);
5799   struct value_print_options opts;
5800
5801   get_user_print_options (&opts);
5802
5803   gdb_assert (!loc || loc_number != 0);
5804   /* See comment in print_one_breakpoint concerning treatment of
5805      breakpoints with single disabled location.  */
5806   if (loc == NULL 
5807       && (b->loc != NULL 
5808           && (b->loc->next != NULL || !b->loc->enabled)))
5809     header_of_multiple = 1;
5810   if (loc == NULL)
5811     loc = b->loc;
5812
5813   annotate_record ();
5814
5815   /* 1 */
5816   annotate_field (0);
5817   if (part_of_multiple)
5818     {
5819       char *formatted;
5820       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5821       ui_out_field_string (uiout, "number", formatted);
5822       xfree (formatted);
5823     }
5824   else
5825     {
5826       ui_out_field_int (uiout, "number", b->number);
5827     }
5828
5829   /* 2 */
5830   annotate_field (1);
5831   if (part_of_multiple)
5832     ui_out_field_skip (uiout, "type");
5833   else
5834     ui_out_field_string (uiout, "type", bptype_string (b->type));
5835
5836   /* 3 */
5837   annotate_field (2);
5838   if (part_of_multiple)
5839     ui_out_field_skip (uiout, "disp");
5840   else
5841     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5842
5843
5844   /* 4 */
5845   annotate_field (3);
5846   if (part_of_multiple)
5847     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5848   else
5849     ui_out_field_fmt (uiout, "enabled", "%c", 
5850                       bpenables[(int) b->enable_state]);
5851   ui_out_spaces (uiout, 2);
5852
5853   
5854   /* 5 and 6 */
5855   if (b->ops != NULL && b->ops->print_one != NULL)
5856     {
5857       /* Although the print_one can possibly print all locations,
5858          calling it here is not likely to get any nice result.  So,
5859          make sure there's just one location.  */
5860       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5861       b->ops->print_one (b, last_loc);
5862     }
5863   else
5864     switch (b->type)
5865       {
5866       case bp_none:
5867         internal_error (__FILE__, __LINE__,
5868                         _("print_one_breakpoint: bp_none encountered\n"));
5869         break;
5870
5871       case bp_watchpoint:
5872       case bp_hardware_watchpoint:
5873       case bp_read_watchpoint:
5874       case bp_access_watchpoint:
5875         {
5876           struct watchpoint *w = (struct watchpoint *) b;
5877
5878           /* Field 4, the address, is omitted (which makes the columns
5879              not line up too nicely with the headers, but the effect
5880              is relatively readable).  */
5881           if (opts.addressprint)
5882             ui_out_field_skip (uiout, "addr");
5883           annotate_field (5);
5884           ui_out_field_string (uiout, "what", w->exp_string);
5885         }
5886         break;
5887
5888       case bp_breakpoint:
5889       case bp_hardware_breakpoint:
5890       case bp_until:
5891       case bp_finish:
5892       case bp_longjmp:
5893       case bp_longjmp_resume:
5894       case bp_longjmp_call_dummy:
5895       case bp_exception:
5896       case bp_exception_resume:
5897       case bp_step_resume:
5898       case bp_hp_step_resume:
5899       case bp_watchpoint_scope:
5900       case bp_call_dummy:
5901       case bp_std_terminate:
5902       case bp_shlib_event:
5903       case bp_thread_event:
5904       case bp_overlay_event:
5905       case bp_longjmp_master:
5906       case bp_std_terminate_master:
5907       case bp_exception_master:
5908       case bp_tracepoint:
5909       case bp_fast_tracepoint:
5910       case bp_static_tracepoint:
5911       case bp_dprintf:
5912       case bp_jit_event:
5913       case bp_gnu_ifunc_resolver:
5914       case bp_gnu_ifunc_resolver_return:
5915         if (opts.addressprint)
5916           {
5917             annotate_field (4);
5918             if (header_of_multiple)
5919               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5920             else if (b->loc == NULL || loc->shlib_disabled)
5921               ui_out_field_string (uiout, "addr", "<PENDING>");
5922             else
5923               ui_out_field_core_addr (uiout, "addr",
5924                                       loc->gdbarch, loc->address);
5925           }
5926         annotate_field (5);
5927         if (!header_of_multiple)
5928           print_breakpoint_location (b, loc);
5929         if (b->loc)
5930           *last_loc = b->loc;
5931         break;
5932       }
5933
5934
5935   /* For backward compatibility, don't display inferiors unless there
5936      are several.  */
5937   if (loc != NULL
5938       && !header_of_multiple
5939       && (allflag
5940           || (!gdbarch_has_global_breakpoints (target_gdbarch ())
5941               && (number_of_program_spaces () > 1
5942                   || number_of_inferiors () > 1)
5943               /* LOC is for existing B, it cannot be in
5944                  moribund_locations and thus having NULL OWNER.  */
5945               && loc->owner->type != bp_catchpoint)))
5946     {
5947       struct inferior *inf;
5948       int first = 1;
5949
5950       for (inf = inferior_list; inf != NULL; inf = inf->next)
5951         {
5952           if (inf->pspace == loc->pspace)
5953             {
5954               if (first)
5955                 {
5956                   first = 0;
5957                   ui_out_text (uiout, " inf ");
5958                 }
5959               else
5960                 ui_out_text (uiout, ", ");
5961               ui_out_text (uiout, plongest (inf->num));
5962             }
5963         }
5964     }
5965
5966   if (!part_of_multiple)
5967     {
5968       if (b->thread != -1)
5969         {
5970           /* FIXME: This seems to be redundant and lost here; see the
5971              "stop only in" line a little further down.  */
5972           ui_out_text (uiout, " thread ");
5973           ui_out_field_int (uiout, "thread", b->thread);
5974         }
5975       else if (b->task != 0)
5976         {
5977           ui_out_text (uiout, " task ");
5978           ui_out_field_int (uiout, "task", b->task);
5979         }
5980     }
5981
5982   ui_out_text (uiout, "\n");
5983
5984   if (!part_of_multiple)
5985     b->ops->print_one_detail (b, uiout);
5986
5987   if (part_of_multiple && frame_id_p (b->frame_id))
5988     {
5989       annotate_field (6);
5990       ui_out_text (uiout, "\tstop only in stack frame at ");
5991       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5992          the frame ID.  */
5993       ui_out_field_core_addr (uiout, "frame",
5994                               b->gdbarch, b->frame_id.stack_addr);
5995       ui_out_text (uiout, "\n");
5996     }
5997   
5998   if (!part_of_multiple && b->cond_string)
5999     {
6000       annotate_field (7);
6001       if (is_tracepoint (b))
6002         ui_out_text (uiout, "\ttrace only if ");
6003       else
6004         ui_out_text (uiout, "\tstop only if ");
6005       ui_out_field_string (uiout, "cond", b->cond_string);
6006
6007       /* Print whether the target is doing the breakpoint's condition
6008          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6009       if (is_breakpoint (b)
6010           && breakpoint_condition_evaluation_mode ()
6011           == condition_evaluation_target)
6012         {
6013           ui_out_text (uiout, " (");
6014           ui_out_field_string (uiout, "evaluated-by",
6015                                bp_condition_evaluator (b));
6016           ui_out_text (uiout, " evals)");
6017         }
6018       ui_out_text (uiout, "\n");
6019     }
6020
6021   if (!part_of_multiple && b->thread != -1)
6022     {
6023       /* FIXME should make an annotation for this.  */
6024       ui_out_text (uiout, "\tstop only in thread ");
6025       ui_out_field_int (uiout, "thread", b->thread);
6026       ui_out_text (uiout, "\n");
6027     }
6028   
6029   if (!part_of_multiple && b->hit_count)
6030     {
6031       /* FIXME should make an annotation for this.  */
6032       if (is_catchpoint (b))
6033         ui_out_text (uiout, "\tcatchpoint");
6034       else if (is_tracepoint (b))
6035         ui_out_text (uiout, "\ttracepoint");
6036       else
6037         ui_out_text (uiout, "\tbreakpoint");
6038       ui_out_text (uiout, " already hit ");
6039       ui_out_field_int (uiout, "times", b->hit_count);
6040       if (b->hit_count == 1)
6041         ui_out_text (uiout, " time\n");
6042       else
6043         ui_out_text (uiout, " times\n");
6044     }
6045   
6046   /* Output the count also if it is zero, but only if this is mi.
6047      FIXME: Should have a better test for this.  */
6048   if (ui_out_is_mi_like_p (uiout))
6049     if (!part_of_multiple && b->hit_count == 0)
6050       ui_out_field_int (uiout, "times", b->hit_count);
6051
6052   if (!part_of_multiple && b->ignore_count)
6053     {
6054       annotate_field (8);
6055       ui_out_text (uiout, "\tignore next ");
6056       ui_out_field_int (uiout, "ignore", b->ignore_count);
6057       ui_out_text (uiout, " hits\n");
6058     }
6059
6060   /* Note that an enable count of 1 corresponds to "enable once"
6061      behavior, which is reported by the combination of enablement and
6062      disposition, so we don't need to mention it here.  */
6063   if (!part_of_multiple && b->enable_count > 1)
6064     {
6065       annotate_field (8);
6066       ui_out_text (uiout, "\tdisable after ");
6067       /* Tweak the wording to clarify that ignore and enable counts
6068          are distinct, and have additive effect.  */
6069       if (b->ignore_count)
6070         ui_out_text (uiout, "additional ");
6071       else
6072         ui_out_text (uiout, "next ");
6073       ui_out_field_int (uiout, "enable", b->enable_count);
6074       ui_out_text (uiout, " hits\n");
6075     }
6076
6077   if (!part_of_multiple && is_tracepoint (b))
6078     {
6079       struct tracepoint *tp = (struct tracepoint *) b;
6080
6081       if (tp->traceframe_usage)
6082         {
6083           ui_out_text (uiout, "\ttrace buffer usage ");
6084           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6085           ui_out_text (uiout, " bytes\n");
6086         }
6087     }
6088   
6089   if (!part_of_multiple && b->extra_string
6090       && b->type == bp_dprintf && !b->commands)
6091     {
6092       annotate_field (7);
6093       ui_out_text (uiout, "\t(agent printf) ");
6094       ui_out_field_string (uiout, "printf", b->extra_string);
6095       ui_out_text (uiout, "\n");
6096     }
6097
6098   l = b->commands ? b->commands->commands : NULL;
6099   if (!part_of_multiple && l)
6100     {
6101       struct cleanup *script_chain;
6102
6103       annotate_field (9);
6104       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6105       print_command_lines (uiout, l, 4);
6106       do_cleanups (script_chain);
6107     }
6108
6109   if (is_tracepoint (b))
6110     {
6111       struct tracepoint *t = (struct tracepoint *) b;
6112
6113       if (!part_of_multiple && t->pass_count)
6114         {
6115           annotate_field (10);
6116           ui_out_text (uiout, "\tpass count ");
6117           ui_out_field_int (uiout, "pass", t->pass_count);
6118           ui_out_text (uiout, " \n");
6119         }
6120     }
6121
6122   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6123     {
6124       if (is_watchpoint (b))
6125         {
6126           struct watchpoint *w = (struct watchpoint *) b;
6127
6128           ui_out_field_string (uiout, "original-location", w->exp_string);
6129         }
6130       else if (b->addr_string)
6131         ui_out_field_string (uiout, "original-location", b->addr_string);
6132     }
6133 }
6134
6135 static void
6136 print_one_breakpoint (struct breakpoint *b,
6137                       struct bp_location **last_loc, 
6138                       int allflag)
6139 {
6140   struct cleanup *bkpt_chain;
6141   struct ui_out *uiout = current_uiout;
6142
6143   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6144
6145   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6146   do_cleanups (bkpt_chain);
6147
6148   /* If this breakpoint has custom print function,
6149      it's already printed.  Otherwise, print individual
6150      locations, if any.  */
6151   if (b->ops == NULL || b->ops->print_one == NULL)
6152     {
6153       /* If breakpoint has a single location that is disabled, we
6154          print it as if it had several locations, since otherwise it's
6155          hard to represent "breakpoint enabled, location disabled"
6156          situation.
6157
6158          Note that while hardware watchpoints have several locations
6159          internally, that's not a property exposed to user.  */
6160       if (b->loc 
6161           && !is_hardware_watchpoint (b)
6162           && (b->loc->next || !b->loc->enabled))
6163         {
6164           struct bp_location *loc;
6165           int n = 1;
6166
6167           for (loc = b->loc; loc; loc = loc->next, ++n)
6168             {
6169               struct cleanup *inner2 =
6170                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6171               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6172               do_cleanups (inner2);
6173             }
6174         }
6175     }
6176 }
6177
6178 static int
6179 breakpoint_address_bits (struct breakpoint *b)
6180 {
6181   int print_address_bits = 0;
6182   struct bp_location *loc;
6183
6184   for (loc = b->loc; loc; loc = loc->next)
6185     {
6186       int addr_bit;
6187
6188       /* Software watchpoints that aren't watching memory don't have
6189          an address to print.  */
6190       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6191         continue;
6192
6193       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6194       if (addr_bit > print_address_bits)
6195         print_address_bits = addr_bit;
6196     }
6197
6198   return print_address_bits;
6199 }
6200
6201 struct captured_breakpoint_query_args
6202   {
6203     int bnum;
6204   };
6205
6206 static int
6207 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6208 {
6209   struct captured_breakpoint_query_args *args = data;
6210   struct breakpoint *b;
6211   struct bp_location *dummy_loc = NULL;
6212
6213   ALL_BREAKPOINTS (b)
6214     {
6215       if (args->bnum == b->number)
6216         {
6217           print_one_breakpoint (b, &dummy_loc, 0);
6218           return GDB_RC_OK;
6219         }
6220     }
6221   return GDB_RC_NONE;
6222 }
6223
6224 enum gdb_rc
6225 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6226                       char **error_message)
6227 {
6228   struct captured_breakpoint_query_args args;
6229
6230   args.bnum = bnum;
6231   /* For the moment we don't trust print_one_breakpoint() to not throw
6232      an error.  */
6233   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6234                                  error_message, RETURN_MASK_ALL) < 0)
6235     return GDB_RC_FAIL;
6236   else
6237     return GDB_RC_OK;
6238 }
6239
6240 /* Return true if this breakpoint was set by the user, false if it is
6241    internal or momentary.  */
6242
6243 int
6244 user_breakpoint_p (struct breakpoint *b)
6245 {
6246   return b->number > 0;
6247 }
6248
6249 /* Print information on user settable breakpoint (watchpoint, etc)
6250    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6251    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6252    FILTER is non-NULL, call it on each breakpoint and only include the
6253    ones for which it returns non-zero.  Return the total number of
6254    breakpoints listed.  */
6255
6256 static int
6257 breakpoint_1 (char *args, int allflag, 
6258               int (*filter) (const struct breakpoint *))
6259 {
6260   struct breakpoint *b;
6261   struct bp_location *last_loc = NULL;
6262   int nr_printable_breakpoints;
6263   struct cleanup *bkpttbl_chain;
6264   struct value_print_options opts;
6265   int print_address_bits = 0;
6266   int print_type_col_width = 14;
6267   struct ui_out *uiout = current_uiout;
6268
6269   get_user_print_options (&opts);
6270
6271   /* Compute the number of rows in the table, as well as the size
6272      required for address fields.  */
6273   nr_printable_breakpoints = 0;
6274   ALL_BREAKPOINTS (b)
6275     {
6276       /* If we have a filter, only list the breakpoints it accepts.  */
6277       if (filter && !filter (b))
6278         continue;
6279
6280       /* If we have an "args" string, it is a list of breakpoints to 
6281          accept.  Skip the others.  */
6282       if (args != NULL && *args != '\0')
6283         {
6284           if (allflag && parse_and_eval_long (args) != b->number)
6285             continue;
6286           if (!allflag && !number_is_in_list (args, b->number))
6287             continue;
6288         }
6289
6290       if (allflag || user_breakpoint_p (b))
6291         {
6292           int addr_bit, type_len;
6293
6294           addr_bit = breakpoint_address_bits (b);
6295           if (addr_bit > print_address_bits)
6296             print_address_bits = addr_bit;
6297
6298           type_len = strlen (bptype_string (b->type));
6299           if (type_len > print_type_col_width)
6300             print_type_col_width = type_len;
6301
6302           nr_printable_breakpoints++;
6303         }
6304     }
6305
6306   if (opts.addressprint)
6307     bkpttbl_chain 
6308       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6309                                              nr_printable_breakpoints,
6310                                              "BreakpointTable");
6311   else
6312     bkpttbl_chain 
6313       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6314                                              nr_printable_breakpoints,
6315                                              "BreakpointTable");
6316
6317   if (nr_printable_breakpoints > 0)
6318     annotate_breakpoints_headers ();
6319   if (nr_printable_breakpoints > 0)
6320     annotate_field (0);
6321   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6322   if (nr_printable_breakpoints > 0)
6323     annotate_field (1);
6324   ui_out_table_header (uiout, print_type_col_width, ui_left,
6325                        "type", "Type");                         /* 2 */
6326   if (nr_printable_breakpoints > 0)
6327     annotate_field (2);
6328   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6329   if (nr_printable_breakpoints > 0)
6330     annotate_field (3);
6331   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6332   if (opts.addressprint)
6333     {
6334       if (nr_printable_breakpoints > 0)
6335         annotate_field (4);
6336       if (print_address_bits <= 32)
6337         ui_out_table_header (uiout, 10, ui_left, 
6338                              "addr", "Address");                /* 5 */
6339       else
6340         ui_out_table_header (uiout, 18, ui_left, 
6341                              "addr", "Address");                /* 5 */
6342     }
6343   if (nr_printable_breakpoints > 0)
6344     annotate_field (5);
6345   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6346   ui_out_table_body (uiout);
6347   if (nr_printable_breakpoints > 0)
6348     annotate_breakpoints_table ();
6349
6350   ALL_BREAKPOINTS (b)
6351     {
6352       QUIT;
6353       /* If we have a filter, only list the breakpoints it accepts.  */
6354       if (filter && !filter (b))
6355         continue;
6356
6357       /* If we have an "args" string, it is a list of breakpoints to 
6358          accept.  Skip the others.  */
6359
6360       if (args != NULL && *args != '\0')
6361         {
6362           if (allflag)  /* maintenance info breakpoint */
6363             {
6364               if (parse_and_eval_long (args) != b->number)
6365                 continue;
6366             }
6367           else          /* all others */
6368             {
6369               if (!number_is_in_list (args, b->number))
6370                 continue;
6371             }
6372         }
6373       /* We only print out user settable breakpoints unless the
6374          allflag is set.  */
6375       if (allflag || user_breakpoint_p (b))
6376         print_one_breakpoint (b, &last_loc, allflag);
6377     }
6378
6379   do_cleanups (bkpttbl_chain);
6380
6381   if (nr_printable_breakpoints == 0)
6382     {
6383       /* If there's a filter, let the caller decide how to report
6384          empty list.  */
6385       if (!filter)
6386         {
6387           if (args == NULL || *args == '\0')
6388             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6389           else
6390             ui_out_message (uiout, 0, 
6391                             "No breakpoint or watchpoint matching '%s'.\n",
6392                             args);
6393         }
6394     }
6395   else
6396     {
6397       if (last_loc && !server_command)
6398         set_next_address (last_loc->gdbarch, last_loc->address);
6399     }
6400
6401   /* FIXME?  Should this be moved up so that it is only called when
6402      there have been breakpoints? */
6403   annotate_breakpoints_table_end ();
6404
6405   return nr_printable_breakpoints;
6406 }
6407
6408 /* Display the value of default-collect in a way that is generally
6409    compatible with the breakpoint list.  */
6410
6411 static void
6412 default_collect_info (void)
6413 {
6414   struct ui_out *uiout = current_uiout;
6415
6416   /* If it has no value (which is frequently the case), say nothing; a
6417      message like "No default-collect." gets in user's face when it's
6418      not wanted.  */
6419   if (!*default_collect)
6420     return;
6421
6422   /* The following phrase lines up nicely with per-tracepoint collect
6423      actions.  */
6424   ui_out_text (uiout, "default collect ");
6425   ui_out_field_string (uiout, "default-collect", default_collect);
6426   ui_out_text (uiout, " \n");
6427 }
6428   
6429 static void
6430 breakpoints_info (char *args, int from_tty)
6431 {
6432   breakpoint_1 (args, 0, NULL);
6433
6434   default_collect_info ();
6435 }
6436
6437 static void
6438 watchpoints_info (char *args, int from_tty)
6439 {
6440   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6441   struct ui_out *uiout = current_uiout;
6442
6443   if (num_printed == 0)
6444     {
6445       if (args == NULL || *args == '\0')
6446         ui_out_message (uiout, 0, "No watchpoints.\n");
6447       else
6448         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6449     }
6450 }
6451
6452 static void
6453 maintenance_info_breakpoints (char *args, int from_tty)
6454 {
6455   breakpoint_1 (args, 1, NULL);
6456
6457   default_collect_info ();
6458 }
6459
6460 static int
6461 breakpoint_has_pc (struct breakpoint *b,
6462                    struct program_space *pspace,
6463                    CORE_ADDR pc, struct obj_section *section)
6464 {
6465   struct bp_location *bl = b->loc;
6466
6467   for (; bl; bl = bl->next)
6468     {
6469       if (bl->pspace == pspace
6470           && bl->address == pc
6471           && (!overlay_debugging || bl->section == section))
6472         return 1;         
6473     }
6474   return 0;
6475 }
6476
6477 /* Print a message describing any user-breakpoints set at PC.  This
6478    concerns with logical breakpoints, so we match program spaces, not
6479    address spaces.  */
6480
6481 static void
6482 describe_other_breakpoints (struct gdbarch *gdbarch,
6483                             struct program_space *pspace, CORE_ADDR pc,
6484                             struct obj_section *section, int thread)
6485 {
6486   int others = 0;
6487   struct breakpoint *b;
6488
6489   ALL_BREAKPOINTS (b)
6490     others += (user_breakpoint_p (b)
6491                && breakpoint_has_pc (b, pspace, pc, section));
6492   if (others > 0)
6493     {
6494       if (others == 1)
6495         printf_filtered (_("Note: breakpoint "));
6496       else /* if (others == ???) */
6497         printf_filtered (_("Note: breakpoints "));
6498       ALL_BREAKPOINTS (b)
6499         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6500           {
6501             others--;
6502             printf_filtered ("%d", b->number);
6503             if (b->thread == -1 && thread != -1)
6504               printf_filtered (" (all threads)");
6505             else if (b->thread != -1)
6506               printf_filtered (" (thread %d)", b->thread);
6507             printf_filtered ("%s%s ",
6508                              ((b->enable_state == bp_disabled
6509                                || b->enable_state == bp_call_disabled)
6510                               ? " (disabled)"
6511                               : b->enable_state == bp_permanent 
6512                               ? " (permanent)"
6513                               : ""),
6514                              (others > 1) ? "," 
6515                              : ((others == 1) ? " and" : ""));
6516           }
6517       printf_filtered (_("also set at pc "));
6518       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6519       printf_filtered (".\n");
6520     }
6521 }
6522 \f
6523
6524 /* Return true iff it is meaningful to use the address member of
6525    BPT.  For some breakpoint types, the address member is irrelevant
6526    and it makes no sense to attempt to compare it to other addresses
6527    (or use it for any other purpose either).
6528
6529    More specifically, each of the following breakpoint types will
6530    always have a zero valued address and we don't want to mark
6531    breakpoints of any of these types to be a duplicate of an actual
6532    breakpoint at address zero:
6533
6534       bp_watchpoint
6535       bp_catchpoint
6536
6537 */
6538
6539 static int
6540 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6541 {
6542   enum bptype type = bpt->type;
6543
6544   return (type != bp_watchpoint && type != bp_catchpoint);
6545 }
6546
6547 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6548    true if LOC1 and LOC2 represent the same watchpoint location.  */
6549
6550 static int
6551 watchpoint_locations_match (struct bp_location *loc1, 
6552                             struct bp_location *loc2)
6553 {
6554   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6555   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6556
6557   /* Both of them must exist.  */
6558   gdb_assert (w1 != NULL);
6559   gdb_assert (w2 != NULL);
6560
6561   /* If the target can evaluate the condition expression in hardware,
6562      then we we need to insert both watchpoints even if they are at
6563      the same place.  Otherwise the watchpoint will only trigger when
6564      the condition of whichever watchpoint was inserted evaluates to
6565      true, not giving a chance for GDB to check the condition of the
6566      other watchpoint.  */
6567   if ((w1->cond_exp
6568        && target_can_accel_watchpoint_condition (loc1->address, 
6569                                                  loc1->length,
6570                                                  loc1->watchpoint_type,
6571                                                  w1->cond_exp))
6572       || (w2->cond_exp
6573           && target_can_accel_watchpoint_condition (loc2->address, 
6574                                                     loc2->length,
6575                                                     loc2->watchpoint_type,
6576                                                     w2->cond_exp)))
6577     return 0;
6578
6579   /* Note that this checks the owner's type, not the location's.  In
6580      case the target does not support read watchpoints, but does
6581      support access watchpoints, we'll have bp_read_watchpoint
6582      watchpoints with hw_access locations.  Those should be considered
6583      duplicates of hw_read locations.  The hw_read locations will
6584      become hw_access locations later.  */
6585   return (loc1->owner->type == loc2->owner->type
6586           && loc1->pspace->aspace == loc2->pspace->aspace
6587           && loc1->address == loc2->address
6588           && loc1->length == loc2->length);
6589 }
6590
6591 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6592    same breakpoint location.  In most targets, this can only be true
6593    if ASPACE1 matches ASPACE2.  On targets that have global
6594    breakpoints, the address space doesn't really matter.  */
6595
6596 static int
6597 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6598                           struct address_space *aspace2, CORE_ADDR addr2)
6599 {
6600   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6601            || aspace1 == aspace2)
6602           && addr1 == addr2);
6603 }
6604
6605 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6606    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6607    matches ASPACE2.  On targets that have global breakpoints, the address
6608    space doesn't really matter.  */
6609
6610 static int
6611 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6612                                 int len1, struct address_space *aspace2,
6613                                 CORE_ADDR addr2)
6614 {
6615   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6616            || aspace1 == aspace2)
6617           && addr2 >= addr1 && addr2 < addr1 + len1);
6618 }
6619
6620 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6621    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6622    matches the breakpoint's address space.  On targets that have global
6623    breakpoints, the address space doesn't really matter.  */
6624
6625 static int
6626 breakpoint_location_address_match (struct bp_location *bl,
6627                                    struct address_space *aspace,
6628                                    CORE_ADDR addr)
6629 {
6630   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6631                                     aspace, addr)
6632           || (bl->length
6633               && breakpoint_address_match_range (bl->pspace->aspace,
6634                                                  bl->address, bl->length,
6635                                                  aspace, addr)));
6636 }
6637
6638 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6639    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6640    true, otherwise returns false.  */
6641
6642 static int
6643 tracepoint_locations_match (struct bp_location *loc1,
6644                             struct bp_location *loc2)
6645 {
6646   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6647     /* Since tracepoint locations are never duplicated with others', tracepoint
6648        locations at the same address of different tracepoints are regarded as
6649        different locations.  */
6650     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6651   else
6652     return 0;
6653 }
6654
6655 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6656    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6657    represent the same location.  */
6658
6659 static int
6660 breakpoint_locations_match (struct bp_location *loc1, 
6661                             struct bp_location *loc2)
6662 {
6663   int hw_point1, hw_point2;
6664
6665   /* Both of them must not be in moribund_locations.  */
6666   gdb_assert (loc1->owner != NULL);
6667   gdb_assert (loc2->owner != NULL);
6668
6669   hw_point1 = is_hardware_watchpoint (loc1->owner);
6670   hw_point2 = is_hardware_watchpoint (loc2->owner);
6671
6672   if (hw_point1 != hw_point2)
6673     return 0;
6674   else if (hw_point1)
6675     return watchpoint_locations_match (loc1, loc2);
6676   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6677     return tracepoint_locations_match (loc1, loc2);
6678   else
6679     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6680     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6681                                      loc2->pspace->aspace, loc2->address)
6682             && loc1->length == loc2->length);
6683 }
6684
6685 static void
6686 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6687                                int bnum, int have_bnum)
6688 {
6689   /* The longest string possibly returned by hex_string_custom
6690      is 50 chars.  These must be at least that big for safety.  */
6691   char astr1[64];
6692   char astr2[64];
6693
6694   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6695   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6696   if (have_bnum)
6697     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6698              bnum, astr1, astr2);
6699   else
6700     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6701 }
6702
6703 /* Adjust a breakpoint's address to account for architectural
6704    constraints on breakpoint placement.  Return the adjusted address.
6705    Note: Very few targets require this kind of adjustment.  For most
6706    targets, this function is simply the identity function.  */
6707
6708 static CORE_ADDR
6709 adjust_breakpoint_address (struct gdbarch *gdbarch,
6710                            CORE_ADDR bpaddr, enum bptype bptype)
6711 {
6712   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6713     {
6714       /* Very few targets need any kind of breakpoint adjustment.  */
6715       return bpaddr;
6716     }
6717   else if (bptype == bp_watchpoint
6718            || bptype == bp_hardware_watchpoint
6719            || bptype == bp_read_watchpoint
6720            || bptype == bp_access_watchpoint
6721            || bptype == bp_catchpoint)
6722     {
6723       /* Watchpoints and the various bp_catch_* eventpoints should not
6724          have their addresses modified.  */
6725       return bpaddr;
6726     }
6727   else
6728     {
6729       CORE_ADDR adjusted_bpaddr;
6730
6731       /* Some targets have architectural constraints on the placement
6732          of breakpoint instructions.  Obtain the adjusted address.  */
6733       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6734
6735       /* An adjusted breakpoint address can significantly alter
6736          a user's expectations.  Print a warning if an adjustment
6737          is required.  */
6738       if (adjusted_bpaddr != bpaddr)
6739         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6740
6741       return adjusted_bpaddr;
6742     }
6743 }
6744
6745 void
6746 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6747                   struct breakpoint *owner)
6748 {
6749   memset (loc, 0, sizeof (*loc));
6750
6751   gdb_assert (ops != NULL);
6752
6753   loc->ops = ops;
6754   loc->owner = owner;
6755   loc->cond = NULL;
6756   loc->cond_bytecode = NULL;
6757   loc->shlib_disabled = 0;
6758   loc->enabled = 1;
6759
6760   switch (owner->type)
6761     {
6762     case bp_breakpoint:
6763     case bp_until:
6764     case bp_finish:
6765     case bp_longjmp:
6766     case bp_longjmp_resume:
6767     case bp_longjmp_call_dummy:
6768     case bp_exception:
6769     case bp_exception_resume:
6770     case bp_step_resume:
6771     case bp_hp_step_resume:
6772     case bp_watchpoint_scope:
6773     case bp_call_dummy:
6774     case bp_std_terminate:
6775     case bp_shlib_event:
6776     case bp_thread_event:
6777     case bp_overlay_event:
6778     case bp_jit_event:
6779     case bp_longjmp_master:
6780     case bp_std_terminate_master:
6781     case bp_exception_master:
6782     case bp_gnu_ifunc_resolver:
6783     case bp_gnu_ifunc_resolver_return:
6784     case bp_dprintf:
6785       loc->loc_type = bp_loc_software_breakpoint;
6786       mark_breakpoint_location_modified (loc);
6787       break;
6788     case bp_hardware_breakpoint:
6789       loc->loc_type = bp_loc_hardware_breakpoint;
6790       mark_breakpoint_location_modified (loc);
6791       break;
6792     case bp_hardware_watchpoint:
6793     case bp_read_watchpoint:
6794     case bp_access_watchpoint:
6795       loc->loc_type = bp_loc_hardware_watchpoint;
6796       break;
6797     case bp_watchpoint:
6798     case bp_catchpoint:
6799     case bp_tracepoint:
6800     case bp_fast_tracepoint:
6801     case bp_static_tracepoint:
6802       loc->loc_type = bp_loc_other;
6803       break;
6804     default:
6805       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6806     }
6807
6808   loc->refc = 1;
6809 }
6810
6811 /* Allocate a struct bp_location.  */
6812
6813 static struct bp_location *
6814 allocate_bp_location (struct breakpoint *bpt)
6815 {
6816   return bpt->ops->allocate_location (bpt);
6817 }
6818
6819 static void
6820 free_bp_location (struct bp_location *loc)
6821 {
6822   loc->ops->dtor (loc);
6823   xfree (loc);
6824 }
6825
6826 /* Increment reference count.  */
6827
6828 static void
6829 incref_bp_location (struct bp_location *bl)
6830 {
6831   ++bl->refc;
6832 }
6833
6834 /* Decrement reference count.  If the reference count reaches 0,
6835    destroy the bp_location.  Sets *BLP to NULL.  */
6836
6837 static void
6838 decref_bp_location (struct bp_location **blp)
6839 {
6840   gdb_assert ((*blp)->refc > 0);
6841
6842   if (--(*blp)->refc == 0)
6843     free_bp_location (*blp);
6844   *blp = NULL;
6845 }
6846
6847 /* Add breakpoint B at the end of the global breakpoint chain.  */
6848
6849 static void
6850 add_to_breakpoint_chain (struct breakpoint *b)
6851 {
6852   struct breakpoint *b1;
6853
6854   /* Add this breakpoint to the end of the chain so that a list of
6855      breakpoints will come out in order of increasing numbers.  */
6856
6857   b1 = breakpoint_chain;
6858   if (b1 == 0)
6859     breakpoint_chain = b;
6860   else
6861     {
6862       while (b1->next)
6863         b1 = b1->next;
6864       b1->next = b;
6865     }
6866 }
6867
6868 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6869
6870 static void
6871 init_raw_breakpoint_without_location (struct breakpoint *b,
6872                                       struct gdbarch *gdbarch,
6873                                       enum bptype bptype,
6874                                       const struct breakpoint_ops *ops)
6875 {
6876   memset (b, 0, sizeof (*b));
6877
6878   gdb_assert (ops != NULL);
6879
6880   b->ops = ops;
6881   b->type = bptype;
6882   b->gdbarch = gdbarch;
6883   b->language = current_language->la_language;
6884   b->input_radix = input_radix;
6885   b->thread = -1;
6886   b->enable_state = bp_enabled;
6887   b->next = 0;
6888   b->silent = 0;
6889   b->ignore_count = 0;
6890   b->commands = NULL;
6891   b->frame_id = null_frame_id;
6892   b->condition_not_parsed = 0;
6893   b->py_bp_object = NULL;
6894   b->related_breakpoint = b;
6895 }
6896
6897 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6898    that has type BPTYPE and has no locations as yet.  */
6899
6900 static struct breakpoint *
6901 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6902                                      enum bptype bptype,
6903                                      const struct breakpoint_ops *ops)
6904 {
6905   struct breakpoint *b = XNEW (struct breakpoint);
6906
6907   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6908   add_to_breakpoint_chain (b);
6909   return b;
6910 }
6911
6912 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6913    resolutions should be made as the user specified the location explicitly
6914    enough.  */
6915
6916 static void
6917 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6918 {
6919   gdb_assert (loc->owner != NULL);
6920
6921   if (loc->owner->type == bp_breakpoint
6922       || loc->owner->type == bp_hardware_breakpoint
6923       || is_tracepoint (loc->owner))
6924     {
6925       int is_gnu_ifunc;
6926       const char *function_name;
6927       CORE_ADDR func_addr;
6928
6929       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6930                                           &func_addr, NULL, &is_gnu_ifunc);
6931
6932       if (is_gnu_ifunc && !explicit_loc)
6933         {
6934           struct breakpoint *b = loc->owner;
6935
6936           gdb_assert (loc->pspace == current_program_space);
6937           if (gnu_ifunc_resolve_name (function_name,
6938                                       &loc->requested_address))
6939             {
6940               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6941               loc->address = adjust_breakpoint_address (loc->gdbarch,
6942                                                         loc->requested_address,
6943                                                         b->type);
6944             }
6945           else if (b->type == bp_breakpoint && b->loc == loc
6946                    && loc->next == NULL && b->related_breakpoint == b)
6947             {
6948               /* Create only the whole new breakpoint of this type but do not
6949                  mess more complicated breakpoints with multiple locations.  */
6950               b->type = bp_gnu_ifunc_resolver;
6951               /* Remember the resolver's address for use by the return
6952                  breakpoint.  */
6953               loc->related_address = func_addr;
6954             }
6955         }
6956
6957       if (function_name)
6958         loc->function_name = xstrdup (function_name);
6959     }
6960 }
6961
6962 /* Attempt to determine architecture of location identified by SAL.  */
6963 struct gdbarch *
6964 get_sal_arch (struct symtab_and_line sal)
6965 {
6966   if (sal.section)
6967     return get_objfile_arch (sal.section->objfile);
6968   if (sal.symtab)
6969     return get_objfile_arch (sal.symtab->objfile);
6970
6971   return NULL;
6972 }
6973
6974 /* Low level routine for partially initializing a breakpoint of type
6975    BPTYPE.  The newly created breakpoint's address, section, source
6976    file name, and line number are provided by SAL.
6977
6978    It is expected that the caller will complete the initialization of
6979    the newly created breakpoint struct as well as output any status
6980    information regarding the creation of a new breakpoint.  */
6981
6982 static void
6983 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
6984                      struct symtab_and_line sal, enum bptype bptype,
6985                      const struct breakpoint_ops *ops)
6986 {
6987   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6988
6989   add_location_to_breakpoint (b, &sal);
6990
6991   if (bptype != bp_catchpoint)
6992     gdb_assert (sal.pspace != NULL);
6993
6994   /* Store the program space that was used to set the breakpoint,
6995      except for ordinary breakpoints, which are independent of the
6996      program space.  */
6997   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
6998     b->pspace = sal.pspace;
6999
7000   annotate_breakpoints_changed ();
7001 }
7002
7003 /* set_raw_breakpoint is a low level routine for allocating and
7004    partially initializing a breakpoint of type BPTYPE.  The newly
7005    created breakpoint's address, section, source file name, and line
7006    number are provided by SAL.  The newly created and partially
7007    initialized breakpoint is added to the breakpoint chain and
7008    is also returned as the value of this function.
7009
7010    It is expected that the caller will complete the initialization of
7011    the newly created breakpoint struct as well as output any status
7012    information regarding the creation of a new breakpoint.  In
7013    particular, set_raw_breakpoint does NOT set the breakpoint
7014    number!  Care should be taken to not allow an error to occur
7015    prior to completing the initialization of the breakpoint.  If this
7016    should happen, a bogus breakpoint will be left on the chain.  */
7017
7018 struct breakpoint *
7019 set_raw_breakpoint (struct gdbarch *gdbarch,
7020                     struct symtab_and_line sal, enum bptype bptype,
7021                     const struct breakpoint_ops *ops)
7022 {
7023   struct breakpoint *b = XNEW (struct breakpoint);
7024
7025   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7026   add_to_breakpoint_chain (b);
7027   return b;
7028 }
7029
7030
7031 /* Note that the breakpoint object B describes a permanent breakpoint
7032    instruction, hard-wired into the inferior's code.  */
7033 void
7034 make_breakpoint_permanent (struct breakpoint *b)
7035 {
7036   struct bp_location *bl;
7037
7038   b->enable_state = bp_permanent;
7039
7040   /* By definition, permanent breakpoints are already present in the
7041      code.  Mark all locations as inserted.  For now,
7042      make_breakpoint_permanent is called in just one place, so it's
7043      hard to say if it's reasonable to have permanent breakpoint with
7044      multiple locations or not, but it's easy to implement.  */
7045   for (bl = b->loc; bl; bl = bl->next)
7046     bl->inserted = 1;
7047 }
7048
7049 /* Call this routine when stepping and nexting to enable a breakpoint
7050    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7051    initiated the operation.  */
7052
7053 void
7054 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7055 {
7056   struct breakpoint *b, *b_tmp;
7057   int thread = tp->num;
7058
7059   /* To avoid having to rescan all objfile symbols at every step,
7060      we maintain a list of continually-inserted but always disabled
7061      longjmp "master" breakpoints.  Here, we simply create momentary
7062      clones of those and enable them for the requested thread.  */
7063   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7064     if (b->pspace == current_program_space
7065         && (b->type == bp_longjmp_master
7066             || b->type == bp_exception_master))
7067       {
7068         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7069         struct breakpoint *clone;
7070
7071         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7072            after their removal.  */
7073         clone = momentary_breakpoint_from_master (b, type,
7074                                                   &longjmp_breakpoint_ops);
7075         clone->thread = thread;
7076       }
7077
7078   tp->initiating_frame = frame;
7079 }
7080
7081 /* Delete all longjmp breakpoints from THREAD.  */
7082 void
7083 delete_longjmp_breakpoint (int thread)
7084 {
7085   struct breakpoint *b, *b_tmp;
7086
7087   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7088     if (b->type == bp_longjmp || b->type == bp_exception)
7089       {
7090         if (b->thread == thread)
7091           delete_breakpoint (b);
7092       }
7093 }
7094
7095 void
7096 delete_longjmp_breakpoint_at_next_stop (int thread)
7097 {
7098   struct breakpoint *b, *b_tmp;
7099
7100   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7101     if (b->type == bp_longjmp || b->type == bp_exception)
7102       {
7103         if (b->thread == thread)
7104           b->disposition = disp_del_at_next_stop;
7105       }
7106 }
7107
7108 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7109    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7110    pointer to any of them.  Return NULL if this system cannot place longjmp
7111    breakpoints.  */
7112
7113 struct breakpoint *
7114 set_longjmp_breakpoint_for_call_dummy (void)
7115 {
7116   struct breakpoint *b, *retval = NULL;
7117
7118   ALL_BREAKPOINTS (b)
7119     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7120       {
7121         struct breakpoint *new_b;
7122
7123         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7124                                                   &momentary_breakpoint_ops);
7125         new_b->thread = pid_to_thread_id (inferior_ptid);
7126
7127         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7128
7129         gdb_assert (new_b->related_breakpoint == new_b);
7130         if (retval == NULL)
7131           retval = new_b;
7132         new_b->related_breakpoint = retval;
7133         while (retval->related_breakpoint != new_b->related_breakpoint)
7134           retval = retval->related_breakpoint;
7135         retval->related_breakpoint = new_b;
7136       }
7137
7138   return retval;
7139 }
7140
7141 /* Verify all existing dummy frames and their associated breakpoints for
7142    THREAD.  Remove those which can no longer be found in the current frame
7143    stack.
7144
7145    You should call this function only at places where it is safe to currently
7146    unwind the whole stack.  Failed stack unwind would discard live dummy
7147    frames.  */
7148
7149 void
7150 check_longjmp_breakpoint_for_call_dummy (int thread)
7151 {
7152   struct breakpoint *b, *b_tmp;
7153
7154   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7155     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7156       {
7157         struct breakpoint *dummy_b = b->related_breakpoint;
7158
7159         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7160           dummy_b = dummy_b->related_breakpoint;
7161         if (dummy_b->type != bp_call_dummy
7162             || frame_find_by_id (dummy_b->frame_id) != NULL)
7163           continue;
7164         
7165         dummy_frame_discard (dummy_b->frame_id);
7166
7167         while (b->related_breakpoint != b)
7168           {
7169             if (b_tmp == b->related_breakpoint)
7170               b_tmp = b->related_breakpoint->next;
7171             delete_breakpoint (b->related_breakpoint);
7172           }
7173         delete_breakpoint (b);
7174       }
7175 }
7176
7177 void
7178 enable_overlay_breakpoints (void)
7179 {
7180   struct breakpoint *b;
7181
7182   ALL_BREAKPOINTS (b)
7183     if (b->type == bp_overlay_event)
7184     {
7185       b->enable_state = bp_enabled;
7186       update_global_location_list (1);
7187       overlay_events_enabled = 1;
7188     }
7189 }
7190
7191 void
7192 disable_overlay_breakpoints (void)
7193 {
7194   struct breakpoint *b;
7195
7196   ALL_BREAKPOINTS (b)
7197     if (b->type == bp_overlay_event)
7198     {
7199       b->enable_state = bp_disabled;
7200       update_global_location_list (0);
7201       overlay_events_enabled = 0;
7202     }
7203 }
7204
7205 /* Set an active std::terminate breakpoint for each std::terminate
7206    master breakpoint.  */
7207 void
7208 set_std_terminate_breakpoint (void)
7209 {
7210   struct breakpoint *b, *b_tmp;
7211
7212   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7213     if (b->pspace == current_program_space
7214         && b->type == bp_std_terminate_master)
7215       {
7216         momentary_breakpoint_from_master (b, bp_std_terminate,
7217                                           &momentary_breakpoint_ops);
7218       }
7219 }
7220
7221 /* Delete all the std::terminate breakpoints.  */
7222 void
7223 delete_std_terminate_breakpoint (void)
7224 {
7225   struct breakpoint *b, *b_tmp;
7226
7227   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7228     if (b->type == bp_std_terminate)
7229       delete_breakpoint (b);
7230 }
7231
7232 struct breakpoint *
7233 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7234 {
7235   struct breakpoint *b;
7236
7237   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7238                                   &internal_breakpoint_ops);
7239
7240   b->enable_state = bp_enabled;
7241   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7242   b->addr_string
7243     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7244
7245   update_global_location_list_nothrow (1);
7246
7247   return b;
7248 }
7249
7250 void
7251 remove_thread_event_breakpoints (void)
7252 {
7253   struct breakpoint *b, *b_tmp;
7254
7255   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7256     if (b->type == bp_thread_event
7257         && b->loc->pspace == current_program_space)
7258       delete_breakpoint (b);
7259 }
7260
7261 struct lang_and_radix
7262   {
7263     enum language lang;
7264     int radix;
7265   };
7266
7267 /* Create a breakpoint for JIT code registration and unregistration.  */
7268
7269 struct breakpoint *
7270 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7271 {
7272   struct breakpoint *b;
7273
7274   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7275                                   &internal_breakpoint_ops);
7276   update_global_location_list_nothrow (1);
7277   return b;
7278 }
7279
7280 /* Remove JIT code registration and unregistration breakpoint(s).  */
7281
7282 void
7283 remove_jit_event_breakpoints (void)
7284 {
7285   struct breakpoint *b, *b_tmp;
7286
7287   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7288     if (b->type == bp_jit_event
7289         && b->loc->pspace == current_program_space)
7290       delete_breakpoint (b);
7291 }
7292
7293 void
7294 remove_solib_event_breakpoints (void)
7295 {
7296   struct breakpoint *b, *b_tmp;
7297
7298   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7299     if (b->type == bp_shlib_event
7300         && b->loc->pspace == current_program_space)
7301       delete_breakpoint (b);
7302 }
7303
7304 struct breakpoint *
7305 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7306 {
7307   struct breakpoint *b;
7308
7309   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7310                                   &internal_breakpoint_ops);
7311   update_global_location_list_nothrow (1);
7312   return b;
7313 }
7314
7315 /* Disable any breakpoints that are on code in shared libraries.  Only
7316    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7317
7318 void
7319 disable_breakpoints_in_shlibs (void)
7320 {
7321   struct bp_location *loc, **locp_tmp;
7322
7323   ALL_BP_LOCATIONS (loc, locp_tmp)
7324   {
7325     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7326     struct breakpoint *b = loc->owner;
7327
7328     /* We apply the check to all breakpoints, including disabled for
7329        those with loc->duplicate set.  This is so that when breakpoint
7330        becomes enabled, or the duplicate is removed, gdb will try to
7331        insert all breakpoints.  If we don't set shlib_disabled here,
7332        we'll try to insert those breakpoints and fail.  */
7333     if (((b->type == bp_breakpoint)
7334          || (b->type == bp_jit_event)
7335          || (b->type == bp_hardware_breakpoint)
7336          || (is_tracepoint (b)))
7337         && loc->pspace == current_program_space
7338         && !loc->shlib_disabled
7339 #ifdef PC_SOLIB
7340         && PC_SOLIB (loc->address)
7341 #else
7342         && solib_name_from_address (loc->pspace, loc->address)
7343 #endif
7344         )
7345       {
7346         loc->shlib_disabled = 1;
7347       }
7348   }
7349 }
7350
7351 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7352    library.  Only apply to enabled breakpoints, disabled ones can just stay
7353    disabled.  */
7354
7355 static void
7356 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7357 {
7358   struct bp_location *loc, **locp_tmp;
7359   int disabled_shlib_breaks = 0;
7360
7361   /* SunOS a.out shared libraries are always mapped, so do not
7362      disable breakpoints; they will only be reported as unloaded
7363      through clear_solib when GDB discards its shared library
7364      list.  See clear_solib for more information.  */
7365   if (exec_bfd != NULL
7366       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7367     return;
7368
7369   ALL_BP_LOCATIONS (loc, locp_tmp)
7370   {
7371     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7372     struct breakpoint *b = loc->owner;
7373
7374     if (solib->pspace == loc->pspace
7375         && !loc->shlib_disabled
7376         && (((b->type == bp_breakpoint
7377               || b->type == bp_jit_event
7378               || b->type == bp_hardware_breakpoint)
7379              && (loc->loc_type == bp_loc_hardware_breakpoint
7380                  || loc->loc_type == bp_loc_software_breakpoint))
7381             || is_tracepoint (b))
7382         && solib_contains_address_p (solib, loc->address))
7383       {
7384         loc->shlib_disabled = 1;
7385         /* At this point, we cannot rely on remove_breakpoint
7386            succeeding so we must mark the breakpoint as not inserted
7387            to prevent future errors occurring in remove_breakpoints.  */
7388         loc->inserted = 0;
7389
7390         /* This may cause duplicate notifications for the same breakpoint.  */
7391         observer_notify_breakpoint_modified (b);
7392
7393         if (!disabled_shlib_breaks)
7394           {
7395             target_terminal_ours_for_output ();
7396             warning (_("Temporarily disabling breakpoints "
7397                        "for unloaded shared library \"%s\""),
7398                      solib->so_name);
7399           }
7400         disabled_shlib_breaks = 1;
7401       }
7402   }
7403 }
7404
7405 /* FORK & VFORK catchpoints.  */
7406
7407 /* An instance of this type is used to represent a fork or vfork
7408    catchpoint.  It includes a "struct breakpoint" as a kind of base
7409    class; users downcast to "struct breakpoint *" when needed.  A
7410    breakpoint is really of this type iff its ops pointer points to
7411    CATCH_FORK_BREAKPOINT_OPS.  */
7412
7413 struct fork_catchpoint
7414 {
7415   /* The base class.  */
7416   struct breakpoint base;
7417
7418   /* Process id of a child process whose forking triggered this
7419      catchpoint.  This field is only valid immediately after this
7420      catchpoint has triggered.  */
7421   ptid_t forked_inferior_pid;
7422 };
7423
7424 /* Implement the "insert" breakpoint_ops method for fork
7425    catchpoints.  */
7426
7427 static int
7428 insert_catch_fork (struct bp_location *bl)
7429 {
7430   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7431 }
7432
7433 /* Implement the "remove" breakpoint_ops method for fork
7434    catchpoints.  */
7435
7436 static int
7437 remove_catch_fork (struct bp_location *bl)
7438 {
7439   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7440 }
7441
7442 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7443    catchpoints.  */
7444
7445 static int
7446 breakpoint_hit_catch_fork (const struct bp_location *bl,
7447                            struct address_space *aspace, CORE_ADDR bp_addr,
7448                            const struct target_waitstatus *ws)
7449 {
7450   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7451
7452   if (ws->kind != TARGET_WAITKIND_FORKED)
7453     return 0;
7454
7455   c->forked_inferior_pid = ws->value.related_pid;
7456   return 1;
7457 }
7458
7459 /* Implement the "print_it" breakpoint_ops method for fork
7460    catchpoints.  */
7461
7462 static enum print_stop_action
7463 print_it_catch_fork (bpstat bs)
7464 {
7465   struct ui_out *uiout = current_uiout;
7466   struct breakpoint *b = bs->breakpoint_at;
7467   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7468
7469   annotate_catchpoint (b->number);
7470   if (b->disposition == disp_del)
7471     ui_out_text (uiout, "\nTemporary catchpoint ");
7472   else
7473     ui_out_text (uiout, "\nCatchpoint ");
7474   if (ui_out_is_mi_like_p (uiout))
7475     {
7476       ui_out_field_string (uiout, "reason",
7477                            async_reason_lookup (EXEC_ASYNC_FORK));
7478       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7479     }
7480   ui_out_field_int (uiout, "bkptno", b->number);
7481   ui_out_text (uiout, " (forked process ");
7482   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7483   ui_out_text (uiout, "), ");
7484   return PRINT_SRC_AND_LOC;
7485 }
7486
7487 /* Implement the "print_one" breakpoint_ops method for fork
7488    catchpoints.  */
7489
7490 static void
7491 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7492 {
7493   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7494   struct value_print_options opts;
7495   struct ui_out *uiout = current_uiout;
7496
7497   get_user_print_options (&opts);
7498
7499   /* Field 4, the address, is omitted (which makes the columns not
7500      line up too nicely with the headers, but the effect is relatively
7501      readable).  */
7502   if (opts.addressprint)
7503     ui_out_field_skip (uiout, "addr");
7504   annotate_field (5);
7505   ui_out_text (uiout, "fork");
7506   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7507     {
7508       ui_out_text (uiout, ", process ");
7509       ui_out_field_int (uiout, "what",
7510                         ptid_get_pid (c->forked_inferior_pid));
7511       ui_out_spaces (uiout, 1);
7512     }
7513 }
7514
7515 /* Implement the "print_mention" breakpoint_ops method for fork
7516    catchpoints.  */
7517
7518 static void
7519 print_mention_catch_fork (struct breakpoint *b)
7520 {
7521   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7522 }
7523
7524 /* Implement the "print_recreate" breakpoint_ops method for fork
7525    catchpoints.  */
7526
7527 static void
7528 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7529 {
7530   fprintf_unfiltered (fp, "catch fork");
7531   print_recreate_thread (b, fp);
7532 }
7533
7534 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7535
7536 static struct breakpoint_ops catch_fork_breakpoint_ops;
7537
7538 /* Implement the "insert" breakpoint_ops method for vfork
7539    catchpoints.  */
7540
7541 static int
7542 insert_catch_vfork (struct bp_location *bl)
7543 {
7544   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7545 }
7546
7547 /* Implement the "remove" breakpoint_ops method for vfork
7548    catchpoints.  */
7549
7550 static int
7551 remove_catch_vfork (struct bp_location *bl)
7552 {
7553   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7554 }
7555
7556 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7557    catchpoints.  */
7558
7559 static int
7560 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7561                             struct address_space *aspace, CORE_ADDR bp_addr,
7562                             const struct target_waitstatus *ws)
7563 {
7564   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7565
7566   if (ws->kind != TARGET_WAITKIND_VFORKED)
7567     return 0;
7568
7569   c->forked_inferior_pid = ws->value.related_pid;
7570   return 1;
7571 }
7572
7573 /* Implement the "print_it" breakpoint_ops method for vfork
7574    catchpoints.  */
7575
7576 static enum print_stop_action
7577 print_it_catch_vfork (bpstat bs)
7578 {
7579   struct ui_out *uiout = current_uiout;
7580   struct breakpoint *b = bs->breakpoint_at;
7581   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7582
7583   annotate_catchpoint (b->number);
7584   if (b->disposition == disp_del)
7585     ui_out_text (uiout, "\nTemporary catchpoint ");
7586   else
7587     ui_out_text (uiout, "\nCatchpoint ");
7588   if (ui_out_is_mi_like_p (uiout))
7589     {
7590       ui_out_field_string (uiout, "reason",
7591                            async_reason_lookup (EXEC_ASYNC_VFORK));
7592       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7593     }
7594   ui_out_field_int (uiout, "bkptno", b->number);
7595   ui_out_text (uiout, " (vforked process ");
7596   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7597   ui_out_text (uiout, "), ");
7598   return PRINT_SRC_AND_LOC;
7599 }
7600
7601 /* Implement the "print_one" breakpoint_ops method for vfork
7602    catchpoints.  */
7603
7604 static void
7605 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7606 {
7607   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7608   struct value_print_options opts;
7609   struct ui_out *uiout = current_uiout;
7610
7611   get_user_print_options (&opts);
7612   /* Field 4, the address, is omitted (which makes the columns not
7613      line up too nicely with the headers, but the effect is relatively
7614      readable).  */
7615   if (opts.addressprint)
7616     ui_out_field_skip (uiout, "addr");
7617   annotate_field (5);
7618   ui_out_text (uiout, "vfork");
7619   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7620     {
7621       ui_out_text (uiout, ", process ");
7622       ui_out_field_int (uiout, "what",
7623                         ptid_get_pid (c->forked_inferior_pid));
7624       ui_out_spaces (uiout, 1);
7625     }
7626 }
7627
7628 /* Implement the "print_mention" breakpoint_ops method for vfork
7629    catchpoints.  */
7630
7631 static void
7632 print_mention_catch_vfork (struct breakpoint *b)
7633 {
7634   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7635 }
7636
7637 /* Implement the "print_recreate" breakpoint_ops method for vfork
7638    catchpoints.  */
7639
7640 static void
7641 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7642 {
7643   fprintf_unfiltered (fp, "catch vfork");
7644   print_recreate_thread (b, fp);
7645 }
7646
7647 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7648
7649 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7650
7651 /* An instance of this type is used to represent an solib catchpoint.
7652    It includes a "struct breakpoint" as a kind of base class; users
7653    downcast to "struct breakpoint *" when needed.  A breakpoint is
7654    really of this type iff its ops pointer points to
7655    CATCH_SOLIB_BREAKPOINT_OPS.  */
7656
7657 struct solib_catchpoint
7658 {
7659   /* The base class.  */
7660   struct breakpoint base;
7661
7662   /* True for "catch load", false for "catch unload".  */
7663   unsigned char is_load;
7664
7665   /* Regular expression to match, if any.  COMPILED is only valid when
7666      REGEX is non-NULL.  */
7667   char *regex;
7668   regex_t compiled;
7669 };
7670
7671 static void
7672 dtor_catch_solib (struct breakpoint *b)
7673 {
7674   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7675
7676   if (self->regex)
7677     regfree (&self->compiled);
7678   xfree (self->regex);
7679
7680   base_breakpoint_ops.dtor (b);
7681 }
7682
7683 static int
7684 insert_catch_solib (struct bp_location *ignore)
7685 {
7686   return 0;
7687 }
7688
7689 static int
7690 remove_catch_solib (struct bp_location *ignore)
7691 {
7692   return 0;
7693 }
7694
7695 static int
7696 breakpoint_hit_catch_solib (const struct bp_location *bl,
7697                             struct address_space *aspace,
7698                             CORE_ADDR bp_addr,
7699                             const struct target_waitstatus *ws)
7700 {
7701   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7702   struct breakpoint *other;
7703
7704   if (ws->kind == TARGET_WAITKIND_LOADED)
7705     return 1;
7706
7707   ALL_BREAKPOINTS (other)
7708   {
7709     struct bp_location *other_bl;
7710
7711     if (other == bl->owner)
7712       continue;
7713
7714     if (other->type != bp_shlib_event)
7715       continue;
7716
7717     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7718       continue;
7719
7720     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7721       {
7722         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7723           return 1;
7724       }
7725   }
7726
7727   return 0;
7728 }
7729
7730 static void
7731 check_status_catch_solib (struct bpstats *bs)
7732 {
7733   struct solib_catchpoint *self
7734     = (struct solib_catchpoint *) bs->breakpoint_at;
7735   int ix;
7736
7737   if (self->is_load)
7738     {
7739       struct so_list *iter;
7740
7741       for (ix = 0;
7742            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7743                         ix, iter);
7744            ++ix)
7745         {
7746           if (!self->regex
7747               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7748             return;
7749         }
7750     }
7751   else
7752     {
7753       char *iter;
7754
7755       for (ix = 0;
7756            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7757                         ix, iter);
7758            ++ix)
7759         {
7760           if (!self->regex
7761               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7762             return;
7763         }
7764     }
7765
7766   bs->stop = 0;
7767   bs->print_it = print_it_noop;
7768 }
7769
7770 static enum print_stop_action
7771 print_it_catch_solib (bpstat bs)
7772 {
7773   struct breakpoint *b = bs->breakpoint_at;
7774   struct ui_out *uiout = current_uiout;
7775
7776   annotate_catchpoint (b->number);
7777   if (b->disposition == disp_del)
7778     ui_out_text (uiout, "\nTemporary catchpoint ");
7779   else
7780     ui_out_text (uiout, "\nCatchpoint ");
7781   ui_out_field_int (uiout, "bkptno", b->number);
7782   ui_out_text (uiout, "\n");
7783   if (ui_out_is_mi_like_p (uiout))
7784     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7785   print_solib_event (1);
7786   return PRINT_SRC_AND_LOC;
7787 }
7788
7789 static void
7790 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7791 {
7792   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7793   struct value_print_options opts;
7794   struct ui_out *uiout = current_uiout;
7795   char *msg;
7796
7797   get_user_print_options (&opts);
7798   /* Field 4, the address, is omitted (which makes the columns not
7799      line up too nicely with the headers, but the effect is relatively
7800      readable).  */
7801   if (opts.addressprint)
7802     {
7803       annotate_field (4);
7804       ui_out_field_skip (uiout, "addr");
7805     }
7806
7807   annotate_field (5);
7808   if (self->is_load)
7809     {
7810       if (self->regex)
7811         msg = xstrprintf (_("load of library matching %s"), self->regex);
7812       else
7813         msg = xstrdup (_("load of library"));
7814     }
7815   else
7816     {
7817       if (self->regex)
7818         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7819       else
7820         msg = xstrdup (_("unload of library"));
7821     }
7822   ui_out_field_string (uiout, "what", msg);
7823   xfree (msg);
7824 }
7825
7826 static void
7827 print_mention_catch_solib (struct breakpoint *b)
7828 {
7829   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7830
7831   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7832                    self->is_load ? "load" : "unload");
7833 }
7834
7835 static void
7836 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7837 {
7838   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7839
7840   fprintf_unfiltered (fp, "%s %s",
7841                       b->disposition == disp_del ? "tcatch" : "catch",
7842                       self->is_load ? "load" : "unload");
7843   if (self->regex)
7844     fprintf_unfiltered (fp, " %s", self->regex);
7845   fprintf_unfiltered (fp, "\n");
7846 }
7847
7848 static struct breakpoint_ops catch_solib_breakpoint_ops;
7849
7850 /* A helper function that does all the work for "catch load" and
7851    "catch unload".  */
7852
7853 static void
7854 catch_load_or_unload (char *arg, int from_tty, int is_load,
7855                       struct cmd_list_element *command)
7856 {
7857   struct solib_catchpoint *c;
7858   struct gdbarch *gdbarch = get_current_arch ();
7859   int tempflag;
7860   struct cleanup *cleanup;
7861
7862   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7863
7864   if (!arg)
7865     arg = "";
7866   arg = skip_spaces (arg);
7867
7868   c = XCNEW (struct solib_catchpoint);
7869   cleanup = make_cleanup (xfree, c);
7870
7871   if (*arg != '\0')
7872     {
7873       int errcode;
7874
7875       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7876       if (errcode != 0)
7877         {
7878           char *err = get_regcomp_error (errcode, &c->compiled);
7879
7880           make_cleanup (xfree, err);
7881           error (_("Invalid regexp (%s): %s"), err, arg);
7882         }
7883       c->regex = xstrdup (arg);
7884     }
7885
7886   c->is_load = is_load;
7887   init_catchpoint (&c->base, gdbarch, tempflag, NULL,
7888                    &catch_solib_breakpoint_ops);
7889
7890   discard_cleanups (cleanup);
7891   install_breakpoint (0, &c->base, 1);
7892 }
7893
7894 static void
7895 catch_load_command_1 (char *arg, int from_tty,
7896                       struct cmd_list_element *command)
7897 {
7898   catch_load_or_unload (arg, from_tty, 1, command);
7899 }
7900
7901 static void
7902 catch_unload_command_1 (char *arg, int from_tty,
7903                         struct cmd_list_element *command)
7904 {
7905   catch_load_or_unload (arg, from_tty, 0, command);
7906 }
7907
7908 DEF_VEC_I(int);
7909
7910 /* An instance of this type is used to represent a syscall catchpoint.
7911    It includes a "struct breakpoint" as a kind of base class; users
7912    downcast to "struct breakpoint *" when needed.  A breakpoint is
7913    really of this type iff its ops pointer points to
7914    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7915
7916 struct syscall_catchpoint
7917 {
7918   /* The base class.  */
7919   struct breakpoint base;
7920
7921   /* Syscall numbers used for the 'catch syscall' feature.  If no
7922      syscall has been specified for filtering, its value is NULL.
7923      Otherwise, it holds a list of all syscalls to be caught.  The
7924      list elements are allocated with xmalloc.  */
7925   VEC(int) *syscalls_to_be_caught;
7926 };
7927
7928 /* Implement the "dtor" breakpoint_ops method for syscall
7929    catchpoints.  */
7930
7931 static void
7932 dtor_catch_syscall (struct breakpoint *b)
7933 {
7934   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7935
7936   VEC_free (int, c->syscalls_to_be_caught);
7937
7938   base_breakpoint_ops.dtor (b);
7939 }
7940
7941 static const struct inferior_data *catch_syscall_inferior_data = NULL;
7942
7943 struct catch_syscall_inferior_data
7944 {
7945   /* We keep a count of the number of times the user has requested a
7946      particular syscall to be tracked, and pass this information to the
7947      target.  This lets capable targets implement filtering directly.  */
7948
7949   /* Number of times that "any" syscall is requested.  */
7950   int any_syscall_count;
7951
7952   /* Count of each system call.  */
7953   VEC(int) *syscalls_counts;
7954
7955   /* This counts all syscall catch requests, so we can readily determine
7956      if any catching is necessary.  */
7957   int total_syscalls_count;
7958 };
7959
7960 static struct catch_syscall_inferior_data*
7961 get_catch_syscall_inferior_data (struct inferior *inf)
7962 {
7963   struct catch_syscall_inferior_data *inf_data;
7964
7965   inf_data = inferior_data (inf, catch_syscall_inferior_data);
7966   if (inf_data == NULL)
7967     {
7968       inf_data = XZALLOC (struct catch_syscall_inferior_data);
7969       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
7970     }
7971
7972   return inf_data;
7973 }
7974
7975 static void
7976 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
7977 {
7978   xfree (arg);
7979 }
7980
7981
7982 /* Implement the "insert" breakpoint_ops method for syscall
7983    catchpoints.  */
7984
7985 static int
7986 insert_catch_syscall (struct bp_location *bl)
7987 {
7988   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7989   struct inferior *inf = current_inferior ();
7990   struct catch_syscall_inferior_data *inf_data
7991     = get_catch_syscall_inferior_data (inf);
7992
7993   ++inf_data->total_syscalls_count;
7994   if (!c->syscalls_to_be_caught)
7995     ++inf_data->any_syscall_count;
7996   else
7997     {
7998       int i, iter;
7999
8000       for (i = 0;
8001            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8002            i++)
8003         {
8004           int elem;
8005
8006           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8007             {
8008               int old_size = VEC_length (int, inf_data->syscalls_counts);
8009               uintptr_t vec_addr_offset
8010                 = old_size * ((uintptr_t) sizeof (int));
8011               uintptr_t vec_addr;
8012               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8013               vec_addr = ((uintptr_t) VEC_address (int,
8014                                                   inf_data->syscalls_counts)
8015                           + vec_addr_offset);
8016               memset ((void *) vec_addr, 0,
8017                       (iter + 1 - old_size) * sizeof (int));
8018             }
8019           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8020           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8021         }
8022     }
8023
8024   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8025                                         inf_data->total_syscalls_count != 0,
8026                                         inf_data->any_syscall_count,
8027                                         VEC_length (int,
8028                                                     inf_data->syscalls_counts),
8029                                         VEC_address (int,
8030                                                      inf_data->syscalls_counts));
8031 }
8032
8033 /* Implement the "remove" breakpoint_ops method for syscall
8034    catchpoints.  */
8035
8036 static int
8037 remove_catch_syscall (struct bp_location *bl)
8038 {
8039   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8040   struct inferior *inf = current_inferior ();
8041   struct catch_syscall_inferior_data *inf_data
8042     = get_catch_syscall_inferior_data (inf);
8043
8044   --inf_data->total_syscalls_count;
8045   if (!c->syscalls_to_be_caught)
8046     --inf_data->any_syscall_count;
8047   else
8048     {
8049       int i, iter;
8050
8051       for (i = 0;
8052            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8053            i++)
8054         {
8055           int elem;
8056           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8057             /* Shouldn't happen.  */
8058             continue;
8059           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8060           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8061         }
8062     }
8063
8064   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8065                                         inf_data->total_syscalls_count != 0,
8066                                         inf_data->any_syscall_count,
8067                                         VEC_length (int,
8068                                                     inf_data->syscalls_counts),
8069                                         VEC_address (int,
8070                                                      inf_data->syscalls_counts));
8071 }
8072
8073 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8074    catchpoints.  */
8075
8076 static int
8077 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8078                               struct address_space *aspace, CORE_ADDR bp_addr,
8079                               const struct target_waitstatus *ws)
8080 {
8081   /* We must check if we are catching specific syscalls in this
8082      breakpoint.  If we are, then we must guarantee that the called
8083      syscall is the same syscall we are catching.  */
8084   int syscall_number = 0;
8085   const struct syscall_catchpoint *c
8086     = (const struct syscall_catchpoint *) bl->owner;
8087
8088   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8089       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8090     return 0;
8091
8092   syscall_number = ws->value.syscall_number;
8093
8094   /* Now, checking if the syscall is the same.  */
8095   if (c->syscalls_to_be_caught)
8096     {
8097       int i, iter;
8098
8099       for (i = 0;
8100            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8101            i++)
8102         if (syscall_number == iter)
8103           break;
8104       /* Not the same.  */
8105       if (!iter)
8106         return 0;
8107     }
8108
8109   return 1;
8110 }
8111
8112 /* Implement the "print_it" breakpoint_ops method for syscall
8113    catchpoints.  */
8114
8115 static enum print_stop_action
8116 print_it_catch_syscall (bpstat bs)
8117 {
8118   struct ui_out *uiout = current_uiout;
8119   struct breakpoint *b = bs->breakpoint_at;
8120   /* These are needed because we want to know in which state a
8121      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8122      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8123      must print "called syscall" or "returned from syscall".  */
8124   ptid_t ptid;
8125   struct target_waitstatus last;
8126   struct syscall s;
8127
8128   get_last_target_status (&ptid, &last);
8129
8130   get_syscall_by_number (last.value.syscall_number, &s);
8131
8132   annotate_catchpoint (b->number);
8133
8134   if (b->disposition == disp_del)
8135     ui_out_text (uiout, "\nTemporary catchpoint ");
8136   else
8137     ui_out_text (uiout, "\nCatchpoint ");
8138   if (ui_out_is_mi_like_p (uiout))
8139     {
8140       ui_out_field_string (uiout, "reason",
8141                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8142                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8143                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8144       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8145     }
8146   ui_out_field_int (uiout, "bkptno", b->number);
8147
8148   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8149     ui_out_text (uiout, " (call to syscall ");
8150   else
8151     ui_out_text (uiout, " (returned from syscall ");
8152
8153   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8154     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8155   if (s.name != NULL)
8156     ui_out_field_string (uiout, "syscall-name", s.name);
8157
8158   ui_out_text (uiout, "), ");
8159
8160   return PRINT_SRC_AND_LOC;
8161 }
8162
8163 /* Implement the "print_one" breakpoint_ops method for syscall
8164    catchpoints.  */
8165
8166 static void
8167 print_one_catch_syscall (struct breakpoint *b,
8168                          struct bp_location **last_loc)
8169 {
8170   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8171   struct value_print_options opts;
8172   struct ui_out *uiout = current_uiout;
8173
8174   get_user_print_options (&opts);
8175   /* Field 4, the address, is omitted (which makes the columns not
8176      line up too nicely with the headers, but the effect is relatively
8177      readable).  */
8178   if (opts.addressprint)
8179     ui_out_field_skip (uiout, "addr");
8180   annotate_field (5);
8181
8182   if (c->syscalls_to_be_caught
8183       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8184     ui_out_text (uiout, "syscalls \"");
8185   else
8186     ui_out_text (uiout, "syscall \"");
8187
8188   if (c->syscalls_to_be_caught)
8189     {
8190       int i, iter;
8191       char *text = xstrprintf ("%s", "");
8192
8193       for (i = 0;
8194            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8195            i++)
8196         {
8197           char *x = text;
8198           struct syscall s;
8199           get_syscall_by_number (iter, &s);
8200
8201           if (s.name != NULL)
8202             text = xstrprintf ("%s%s, ", text, s.name);
8203           else
8204             text = xstrprintf ("%s%d, ", text, iter);
8205
8206           /* We have to xfree the last 'text' (now stored at 'x')
8207              because xstrprintf dynamically allocates new space for it
8208              on every call.  */
8209           xfree (x);
8210         }
8211       /* Remove the last comma.  */
8212       text[strlen (text) - 2] = '\0';
8213       ui_out_field_string (uiout, "what", text);
8214     }
8215   else
8216     ui_out_field_string (uiout, "what", "<any syscall>");
8217   ui_out_text (uiout, "\" ");
8218 }
8219
8220 /* Implement the "print_mention" breakpoint_ops method for syscall
8221    catchpoints.  */
8222
8223 static void
8224 print_mention_catch_syscall (struct breakpoint *b)
8225 {
8226   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8227
8228   if (c->syscalls_to_be_caught)
8229     {
8230       int i, iter;
8231
8232       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8233         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8234       else
8235         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8236
8237       for (i = 0;
8238            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8239            i++)
8240         {
8241           struct syscall s;
8242           get_syscall_by_number (iter, &s);
8243
8244           if (s.name)
8245             printf_filtered (" '%s' [%d]", s.name, s.number);
8246           else
8247             printf_filtered (" %d", s.number);
8248         }
8249       printf_filtered (")");
8250     }
8251   else
8252     printf_filtered (_("Catchpoint %d (any syscall)"),
8253                      b->number);
8254 }
8255
8256 /* Implement the "print_recreate" breakpoint_ops method for syscall
8257    catchpoints.  */
8258
8259 static void
8260 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8261 {
8262   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8263
8264   fprintf_unfiltered (fp, "catch syscall");
8265
8266   if (c->syscalls_to_be_caught)
8267     {
8268       int i, iter;
8269
8270       for (i = 0;
8271            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8272            i++)
8273         {
8274           struct syscall s;
8275
8276           get_syscall_by_number (iter, &s);
8277           if (s.name)
8278             fprintf_unfiltered (fp, " %s", s.name);
8279           else
8280             fprintf_unfiltered (fp, " %d", s.number);
8281         }
8282     }
8283   print_recreate_thread (b, fp);
8284 }
8285
8286 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8287
8288 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8289
8290 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8291
8292 static int
8293 syscall_catchpoint_p (struct breakpoint *b)
8294 {
8295   return (b->ops == &catch_syscall_breakpoint_ops);
8296 }
8297
8298 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8299    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8300    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8301    the breakpoint_ops structure associated to the catchpoint.  */
8302
8303 static void
8304 init_catchpoint (struct breakpoint *b,
8305                  struct gdbarch *gdbarch, int tempflag,
8306                  char *cond_string,
8307                  const struct breakpoint_ops *ops)
8308 {
8309   struct symtab_and_line sal;
8310
8311   init_sal (&sal);
8312   sal.pspace = current_program_space;
8313
8314   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8315
8316   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8317   b->disposition = tempflag ? disp_del : disp_donttouch;
8318 }
8319
8320 void
8321 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8322 {
8323   add_to_breakpoint_chain (b);
8324   set_breakpoint_number (internal, b);
8325   if (is_tracepoint (b))
8326     set_tracepoint_count (breakpoint_count);
8327   if (!internal)
8328     mention (b);
8329   observer_notify_breakpoint_created (b);
8330
8331   if (update_gll)
8332     update_global_location_list (1);
8333 }
8334
8335 static void
8336 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8337                                     int tempflag, char *cond_string,
8338                                     const struct breakpoint_ops *ops)
8339 {
8340   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8341
8342   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8343
8344   c->forked_inferior_pid = null_ptid;
8345
8346   install_breakpoint (0, &c->base, 1);
8347 }
8348
8349 /* Exec catchpoints.  */
8350
8351 /* An instance of this type is used to represent an exec catchpoint.
8352    It includes a "struct breakpoint" as a kind of base class; users
8353    downcast to "struct breakpoint *" when needed.  A breakpoint is
8354    really of this type iff its ops pointer points to
8355    CATCH_EXEC_BREAKPOINT_OPS.  */
8356
8357 struct exec_catchpoint
8358 {
8359   /* The base class.  */
8360   struct breakpoint base;
8361
8362   /* Filename of a program whose exec triggered this catchpoint.
8363      This field is only valid immediately after this catchpoint has
8364      triggered.  */
8365   char *exec_pathname;
8366 };
8367
8368 /* Implement the "dtor" breakpoint_ops method for exec
8369    catchpoints.  */
8370
8371 static void
8372 dtor_catch_exec (struct breakpoint *b)
8373 {
8374   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8375
8376   xfree (c->exec_pathname);
8377
8378   base_breakpoint_ops.dtor (b);
8379 }
8380
8381 static int
8382 insert_catch_exec (struct bp_location *bl)
8383 {
8384   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8385 }
8386
8387 static int
8388 remove_catch_exec (struct bp_location *bl)
8389 {
8390   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8391 }
8392
8393 static int
8394 breakpoint_hit_catch_exec (const struct bp_location *bl,
8395                            struct address_space *aspace, CORE_ADDR bp_addr,
8396                            const struct target_waitstatus *ws)
8397 {
8398   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8399
8400   if (ws->kind != TARGET_WAITKIND_EXECD)
8401     return 0;
8402
8403   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8404   return 1;
8405 }
8406
8407 static enum print_stop_action
8408 print_it_catch_exec (bpstat bs)
8409 {
8410   struct ui_out *uiout = current_uiout;
8411   struct breakpoint *b = bs->breakpoint_at;
8412   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8413
8414   annotate_catchpoint (b->number);
8415   if (b->disposition == disp_del)
8416     ui_out_text (uiout, "\nTemporary catchpoint ");
8417   else
8418     ui_out_text (uiout, "\nCatchpoint ");
8419   if (ui_out_is_mi_like_p (uiout))
8420     {
8421       ui_out_field_string (uiout, "reason",
8422                            async_reason_lookup (EXEC_ASYNC_EXEC));
8423       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8424     }
8425   ui_out_field_int (uiout, "bkptno", b->number);
8426   ui_out_text (uiout, " (exec'd ");
8427   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8428   ui_out_text (uiout, "), ");
8429
8430   return PRINT_SRC_AND_LOC;
8431 }
8432
8433 static void
8434 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8435 {
8436   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8437   struct value_print_options opts;
8438   struct ui_out *uiout = current_uiout;
8439
8440   get_user_print_options (&opts);
8441
8442   /* Field 4, the address, is omitted (which makes the columns
8443      not line up too nicely with the headers, but the effect
8444      is relatively readable).  */
8445   if (opts.addressprint)
8446     ui_out_field_skip (uiout, "addr");
8447   annotate_field (5);
8448   ui_out_text (uiout, "exec");
8449   if (c->exec_pathname != NULL)
8450     {
8451       ui_out_text (uiout, ", program \"");
8452       ui_out_field_string (uiout, "what", c->exec_pathname);
8453       ui_out_text (uiout, "\" ");
8454     }
8455 }
8456
8457 static void
8458 print_mention_catch_exec (struct breakpoint *b)
8459 {
8460   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8461 }
8462
8463 /* Implement the "print_recreate" breakpoint_ops method for exec
8464    catchpoints.  */
8465
8466 static void
8467 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8468 {
8469   fprintf_unfiltered (fp, "catch exec");
8470   print_recreate_thread (b, fp);
8471 }
8472
8473 static struct breakpoint_ops catch_exec_breakpoint_ops;
8474
8475 static void
8476 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8477                                  const struct breakpoint_ops *ops)
8478 {
8479   struct syscall_catchpoint *c;
8480   struct gdbarch *gdbarch = get_current_arch ();
8481
8482   c = XNEW (struct syscall_catchpoint);
8483   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8484   c->syscalls_to_be_caught = filter;
8485
8486   install_breakpoint (0, &c->base, 1);
8487 }
8488
8489 static int
8490 hw_breakpoint_used_count (void)
8491 {
8492   int i = 0;
8493   struct breakpoint *b;
8494   struct bp_location *bl;
8495
8496   ALL_BREAKPOINTS (b)
8497   {
8498     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8499       for (bl = b->loc; bl; bl = bl->next)
8500         {
8501           /* Special types of hardware breakpoints may use more than
8502              one register.  */
8503           i += b->ops->resources_needed (bl);
8504         }
8505   }
8506
8507   return i;
8508 }
8509
8510 /* Returns the resources B would use if it were a hardware
8511    watchpoint.  */
8512
8513 static int
8514 hw_watchpoint_use_count (struct breakpoint *b)
8515 {
8516   int i = 0;
8517   struct bp_location *bl;
8518
8519   if (!breakpoint_enabled (b))
8520     return 0;
8521
8522   for (bl = b->loc; bl; bl = bl->next)
8523     {
8524       /* Special types of hardware watchpoints may use more than
8525          one register.  */
8526       i += b->ops->resources_needed (bl);
8527     }
8528
8529   return i;
8530 }
8531
8532 /* Returns the sum the used resources of all hardware watchpoints of
8533    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8534    the sum of the used resources of all hardware watchpoints of other
8535    types _not_ TYPE.  */
8536
8537 static int
8538 hw_watchpoint_used_count_others (struct breakpoint *except,
8539                                  enum bptype type, int *other_type_used)
8540 {
8541   int i = 0;
8542   struct breakpoint *b;
8543
8544   *other_type_used = 0;
8545   ALL_BREAKPOINTS (b)
8546     {
8547       if (b == except)
8548         continue;
8549       if (!breakpoint_enabled (b))
8550         continue;
8551
8552       if (b->type == type)
8553         i += hw_watchpoint_use_count (b);
8554       else if (is_hardware_watchpoint (b))
8555         *other_type_used = 1;
8556     }
8557
8558   return i;
8559 }
8560
8561 void
8562 disable_watchpoints_before_interactive_call_start (void)
8563 {
8564   struct breakpoint *b;
8565
8566   ALL_BREAKPOINTS (b)
8567   {
8568     if (is_watchpoint (b) && breakpoint_enabled (b))
8569       {
8570         b->enable_state = bp_call_disabled;
8571         update_global_location_list (0);
8572       }
8573   }
8574 }
8575
8576 void
8577 enable_watchpoints_after_interactive_call_stop (void)
8578 {
8579   struct breakpoint *b;
8580
8581   ALL_BREAKPOINTS (b)
8582   {
8583     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8584       {
8585         b->enable_state = bp_enabled;
8586         update_global_location_list (1);
8587       }
8588   }
8589 }
8590
8591 void
8592 disable_breakpoints_before_startup (void)
8593 {
8594   current_program_space->executing_startup = 1;
8595   update_global_location_list (0);
8596 }
8597
8598 void
8599 enable_breakpoints_after_startup (void)
8600 {
8601   current_program_space->executing_startup = 0;
8602   breakpoint_re_set ();
8603 }
8604
8605
8606 /* Set a breakpoint that will evaporate an end of command
8607    at address specified by SAL.
8608    Restrict it to frame FRAME if FRAME is nonzero.  */
8609
8610 struct breakpoint *
8611 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8612                           struct frame_id frame_id, enum bptype type)
8613 {
8614   struct breakpoint *b;
8615
8616   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8617      tail-called one.  */
8618   gdb_assert (!frame_id_artificial_p (frame_id));
8619
8620   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8621   b->enable_state = bp_enabled;
8622   b->disposition = disp_donttouch;
8623   b->frame_id = frame_id;
8624
8625   /* If we're debugging a multi-threaded program, then we want
8626      momentary breakpoints to be active in only a single thread of
8627      control.  */
8628   if (in_thread_list (inferior_ptid))
8629     b->thread = pid_to_thread_id (inferior_ptid);
8630
8631   update_global_location_list_nothrow (1);
8632
8633   return b;
8634 }
8635
8636 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8637    The new breakpoint will have type TYPE, and use OPS as it
8638    breakpoint_ops.  */
8639
8640 static struct breakpoint *
8641 momentary_breakpoint_from_master (struct breakpoint *orig,
8642                                   enum bptype type,
8643                                   const struct breakpoint_ops *ops)
8644 {
8645   struct breakpoint *copy;
8646
8647   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8648   copy->loc = allocate_bp_location (copy);
8649   set_breakpoint_location_function (copy->loc, 1);
8650
8651   copy->loc->gdbarch = orig->loc->gdbarch;
8652   copy->loc->requested_address = orig->loc->requested_address;
8653   copy->loc->address = orig->loc->address;
8654   copy->loc->section = orig->loc->section;
8655   copy->loc->pspace = orig->loc->pspace;
8656   copy->loc->probe = orig->loc->probe;
8657
8658   if (orig->loc->source_file != NULL)
8659     copy->loc->source_file = xstrdup (orig->loc->source_file);
8660
8661   copy->loc->line_number = orig->loc->line_number;
8662   copy->frame_id = orig->frame_id;
8663   copy->thread = orig->thread;
8664   copy->pspace = orig->pspace;
8665
8666   copy->enable_state = bp_enabled;
8667   copy->disposition = disp_donttouch;
8668   copy->number = internal_breakpoint_number--;
8669
8670   update_global_location_list_nothrow (0);
8671   return copy;
8672 }
8673
8674 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8675    ORIG is NULL.  */
8676
8677 struct breakpoint *
8678 clone_momentary_breakpoint (struct breakpoint *orig)
8679 {
8680   /* If there's nothing to clone, then return nothing.  */
8681   if (orig == NULL)
8682     return NULL;
8683
8684   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8685 }
8686
8687 struct breakpoint *
8688 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8689                                 enum bptype type)
8690 {
8691   struct symtab_and_line sal;
8692
8693   sal = find_pc_line (pc, 0);
8694   sal.pc = pc;
8695   sal.section = find_pc_overlay (pc);
8696   sal.explicit_pc = 1;
8697
8698   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8699 }
8700 \f
8701
8702 /* Tell the user we have just set a breakpoint B.  */
8703
8704 static void
8705 mention (struct breakpoint *b)
8706 {
8707   b->ops->print_mention (b);
8708   if (ui_out_is_mi_like_p (current_uiout))
8709     return;
8710   printf_filtered ("\n");
8711 }
8712 \f
8713
8714 static struct bp_location *
8715 add_location_to_breakpoint (struct breakpoint *b,
8716                             const struct symtab_and_line *sal)
8717 {
8718   struct bp_location *loc, **tmp;
8719   CORE_ADDR adjusted_address;
8720   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8721
8722   if (loc_gdbarch == NULL)
8723     loc_gdbarch = b->gdbarch;
8724
8725   /* Adjust the breakpoint's address prior to allocating a location.
8726      Once we call allocate_bp_location(), that mostly uninitialized
8727      location will be placed on the location chain.  Adjustment of the
8728      breakpoint may cause target_read_memory() to be called and we do
8729      not want its scan of the location chain to find a breakpoint and
8730      location that's only been partially initialized.  */
8731   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8732                                                 sal->pc, b->type);
8733
8734   loc = allocate_bp_location (b);
8735   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8736     ;
8737   *tmp = loc;
8738
8739   loc->requested_address = sal->pc;
8740   loc->address = adjusted_address;
8741   loc->pspace = sal->pspace;
8742   loc->probe = sal->probe;
8743   gdb_assert (loc->pspace != NULL);
8744   loc->section = sal->section;
8745   loc->gdbarch = loc_gdbarch;
8746
8747   if (sal->symtab != NULL)
8748     loc->source_file = xstrdup (sal->symtab->filename);
8749   loc->line_number = sal->line;
8750
8751   set_breakpoint_location_function (loc,
8752                                     sal->explicit_pc || sal->explicit_line);
8753   return loc;
8754 }
8755 \f
8756
8757 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8758    return 0 otherwise.  */
8759
8760 static int
8761 bp_loc_is_permanent (struct bp_location *loc)
8762 {
8763   int len;
8764   CORE_ADDR addr;
8765   const gdb_byte *bpoint;
8766   gdb_byte *target_mem;
8767   struct cleanup *cleanup;
8768   int retval = 0;
8769
8770   gdb_assert (loc != NULL);
8771
8772   addr = loc->address;
8773   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8774
8775   /* Software breakpoints unsupported?  */
8776   if (bpoint == NULL)
8777     return 0;
8778
8779   target_mem = alloca (len);
8780
8781   /* Enable the automatic memory restoration from breakpoints while
8782      we read the memory.  Otherwise we could say about our temporary
8783      breakpoints they are permanent.  */
8784   cleanup = save_current_space_and_thread ();
8785
8786   switch_to_program_space_and_thread (loc->pspace);
8787   make_show_memory_breakpoints_cleanup (0);
8788
8789   if (target_read_memory (loc->address, target_mem, len) == 0
8790       && memcmp (target_mem, bpoint, len) == 0)
8791     retval = 1;
8792
8793   do_cleanups (cleanup);
8794
8795   return retval;
8796 }
8797
8798 /* Build a command list for the dprintf corresponding to the current
8799    settings of the dprintf style options.  */
8800
8801 static void
8802 update_dprintf_command_list (struct breakpoint *b)
8803 {
8804   char *dprintf_args = b->extra_string;
8805   char *printf_line = NULL;
8806
8807   if (!dprintf_args)
8808     return;
8809
8810   dprintf_args = skip_spaces (dprintf_args);
8811
8812   /* Allow a comma, as it may have terminated a location, but don't
8813      insist on it.  */
8814   if (*dprintf_args == ',')
8815     ++dprintf_args;
8816   dprintf_args = skip_spaces (dprintf_args);
8817
8818   if (*dprintf_args != '"')
8819     error (_("Bad format string, missing '\"'."));
8820
8821   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8822     printf_line = xstrprintf ("printf %s", dprintf_args);
8823   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8824     {
8825       if (!dprintf_function)
8826         error (_("No function supplied for dprintf call"));
8827
8828       if (dprintf_channel && strlen (dprintf_channel) > 0)
8829         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8830                                   dprintf_function,
8831                                   dprintf_channel,
8832                                   dprintf_args);
8833       else
8834         printf_line = xstrprintf ("call (void) %s (%s)",
8835                                   dprintf_function,
8836                                   dprintf_args);
8837     }
8838   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8839     {
8840       if (target_can_run_breakpoint_commands ())
8841         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8842       else
8843         {
8844           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8845           printf_line = xstrprintf ("printf %s", dprintf_args);
8846         }
8847     }
8848   else
8849     internal_error (__FILE__, __LINE__,
8850                     _("Invalid dprintf style."));
8851
8852   /* Manufacture a printf/continue sequence.  */
8853   if (printf_line)
8854     {
8855       struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8856
8857       if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8858         {
8859           cont_cmd_line = xmalloc (sizeof (struct command_line));
8860           cont_cmd_line->control_type = simple_control;
8861           cont_cmd_line->body_count = 0;
8862           cont_cmd_line->body_list = NULL;
8863           cont_cmd_line->next = NULL;
8864           cont_cmd_line->line = xstrdup ("continue");
8865         }
8866
8867       printf_cmd_line = xmalloc (sizeof (struct command_line));
8868       printf_cmd_line->control_type = simple_control;
8869       printf_cmd_line->body_count = 0;
8870       printf_cmd_line->body_list = NULL;
8871       printf_cmd_line->next = cont_cmd_line;
8872       printf_cmd_line->line = printf_line;
8873
8874       breakpoint_set_commands (b, printf_cmd_line);
8875     }
8876 }
8877
8878 /* Update all dprintf commands, making their command lists reflect
8879    current style settings.  */
8880
8881 static void
8882 update_dprintf_commands (char *args, int from_tty,
8883                          struct cmd_list_element *c)
8884 {
8885   struct breakpoint *b;
8886
8887   ALL_BREAKPOINTS (b)
8888     {
8889       if (b->type == bp_dprintf)
8890         update_dprintf_command_list (b);
8891     }
8892 }
8893
8894 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8895    as textual description of the location, and COND_STRING
8896    as condition expression.  */
8897
8898 static void
8899 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8900                      struct symtabs_and_lines sals, char *addr_string,
8901                      char *filter, char *cond_string,
8902                      char *extra_string,
8903                      enum bptype type, enum bpdisp disposition,
8904                      int thread, int task, int ignore_count,
8905                      const struct breakpoint_ops *ops, int from_tty,
8906                      int enabled, int internal, unsigned flags,
8907                      int display_canonical)
8908 {
8909   int i;
8910
8911   if (type == bp_hardware_breakpoint)
8912     {
8913       int target_resources_ok;
8914
8915       i = hw_breakpoint_used_count ();
8916       target_resources_ok =
8917         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8918                                             i + 1, 0);
8919       if (target_resources_ok == 0)
8920         error (_("No hardware breakpoint support in the target."));
8921       else if (target_resources_ok < 0)
8922         error (_("Hardware breakpoints used exceeds limit."));
8923     }
8924
8925   gdb_assert (sals.nelts > 0);
8926
8927   for (i = 0; i < sals.nelts; ++i)
8928     {
8929       struct symtab_and_line sal = sals.sals[i];
8930       struct bp_location *loc;
8931
8932       if (from_tty)
8933         {
8934           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8935           if (!loc_gdbarch)
8936             loc_gdbarch = gdbarch;
8937
8938           describe_other_breakpoints (loc_gdbarch,
8939                                       sal.pspace, sal.pc, sal.section, thread);
8940         }
8941
8942       if (i == 0)
8943         {
8944           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8945           b->thread = thread;
8946           b->task = task;
8947
8948           b->cond_string = cond_string;
8949           b->extra_string = extra_string;
8950           b->ignore_count = ignore_count;
8951           b->enable_state = enabled ? bp_enabled : bp_disabled;
8952           b->disposition = disposition;
8953
8954           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8955             b->loc->inserted = 1;
8956
8957           if (type == bp_static_tracepoint)
8958             {
8959               struct tracepoint *t = (struct tracepoint *) b;
8960               struct static_tracepoint_marker marker;
8961
8962               if (strace_marker_p (b))
8963                 {
8964                   /* We already know the marker exists, otherwise, we
8965                      wouldn't see a sal for it.  */
8966                   char *p = &addr_string[3];
8967                   char *endp;
8968                   char *marker_str;
8969
8970                   p = skip_spaces (p);
8971
8972                   endp = skip_to_space (p);
8973
8974                   marker_str = savestring (p, endp - p);
8975                   t->static_trace_marker_id = marker_str;
8976
8977                   printf_filtered (_("Probed static tracepoint "
8978                                      "marker \"%s\"\n"),
8979                                    t->static_trace_marker_id);
8980                 }
8981               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8982                 {
8983                   t->static_trace_marker_id = xstrdup (marker.str_id);
8984                   release_static_tracepoint_marker (&marker);
8985
8986                   printf_filtered (_("Probed static tracepoint "
8987                                      "marker \"%s\"\n"),
8988                                    t->static_trace_marker_id);
8989                 }
8990               else
8991                 warning (_("Couldn't determine the static "
8992                            "tracepoint marker to probe"));
8993             }
8994
8995           loc = b->loc;
8996         }
8997       else
8998         {
8999           loc = add_location_to_breakpoint (b, &sal);
9000           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9001             loc->inserted = 1;
9002         }
9003
9004       if (bp_loc_is_permanent (loc))
9005         make_breakpoint_permanent (b);
9006
9007       if (b->cond_string)
9008         {
9009           char *arg = b->cond_string;
9010           loc->cond = parse_exp_1 (&arg, loc->address,
9011                                    block_for_pc (loc->address), 0);
9012           if (*arg)
9013               error (_("Garbage '%s' follows condition"), arg);
9014         }
9015
9016       /* Dynamic printf requires and uses additional arguments on the
9017          command line, otherwise it's an error.  */
9018       if (type == bp_dprintf)
9019         {
9020           if (b->extra_string)
9021             update_dprintf_command_list (b);
9022           else
9023             error (_("Format string required"));
9024         }
9025       else if (b->extra_string)
9026         error (_("Garbage '%s' at end of command"), b->extra_string);
9027     }
9028
9029   b->display_canonical = display_canonical;
9030   if (addr_string)
9031     b->addr_string = addr_string;
9032   else
9033     /* addr_string has to be used or breakpoint_re_set will delete
9034        me.  */
9035     b->addr_string
9036       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9037   b->filter = filter;
9038 }
9039
9040 static void
9041 create_breakpoint_sal (struct gdbarch *gdbarch,
9042                        struct symtabs_and_lines sals, char *addr_string,
9043                        char *filter, char *cond_string,
9044                        char *extra_string,
9045                        enum bptype type, enum bpdisp disposition,
9046                        int thread, int task, int ignore_count,
9047                        const struct breakpoint_ops *ops, int from_tty,
9048                        int enabled, int internal, unsigned flags,
9049                        int display_canonical)
9050 {
9051   struct breakpoint *b;
9052   struct cleanup *old_chain;
9053
9054   if (is_tracepoint_type (type))
9055     {
9056       struct tracepoint *t;
9057
9058       t = XCNEW (struct tracepoint);
9059       b = &t->base;
9060     }
9061   else
9062     b = XNEW (struct breakpoint);
9063
9064   old_chain = make_cleanup (xfree, b);
9065
9066   init_breakpoint_sal (b, gdbarch,
9067                        sals, addr_string,
9068                        filter, cond_string, extra_string,
9069                        type, disposition,
9070                        thread, task, ignore_count,
9071                        ops, from_tty,
9072                        enabled, internal, flags,
9073                        display_canonical);
9074   discard_cleanups (old_chain);
9075
9076   install_breakpoint (internal, b, 0);
9077 }
9078
9079 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9080    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9081    value.  COND_STRING, if not NULL, specified the condition to be
9082    used for all breakpoints.  Essentially the only case where
9083    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9084    function.  In that case, it's still not possible to specify
9085    separate conditions for different overloaded functions, so
9086    we take just a single condition string.
9087    
9088    NOTE: If the function succeeds, the caller is expected to cleanup
9089    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9090    array contents).  If the function fails (error() is called), the
9091    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9092    COND and SALS arrays and each of those arrays contents.  */
9093
9094 static void
9095 create_breakpoints_sal (struct gdbarch *gdbarch,
9096                         struct linespec_result *canonical,
9097                         char *cond_string, char *extra_string,
9098                         enum bptype type, enum bpdisp disposition,
9099                         int thread, int task, int ignore_count,
9100                         const struct breakpoint_ops *ops, int from_tty,
9101                         int enabled, int internal, unsigned flags)
9102 {
9103   int i;
9104   struct linespec_sals *lsal;
9105
9106   if (canonical->pre_expanded)
9107     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9108
9109   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9110     {
9111       /* Note that 'addr_string' can be NULL in the case of a plain
9112          'break', without arguments.  */
9113       char *addr_string = (canonical->addr_string
9114                            ? xstrdup (canonical->addr_string)
9115                            : NULL);
9116       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9117       struct cleanup *inner = make_cleanup (xfree, addr_string);
9118
9119       make_cleanup (xfree, filter_string);
9120       create_breakpoint_sal (gdbarch, lsal->sals,
9121                              addr_string,
9122                              filter_string,
9123                              cond_string, extra_string,
9124                              type, disposition,
9125                              thread, task, ignore_count, ops,
9126                              from_tty, enabled, internal, flags,
9127                              canonical->special_display);
9128       discard_cleanups (inner);
9129     }
9130 }
9131
9132 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9133    followed by conditionals.  On return, SALS contains an array of SAL
9134    addresses found.  ADDR_STRING contains a vector of (canonical)
9135    address strings.  ADDRESS points to the end of the SAL.
9136
9137    The array and the line spec strings are allocated on the heap, it is
9138    the caller's responsibility to free them.  */
9139
9140 static void
9141 parse_breakpoint_sals (char **address,
9142                        struct linespec_result *canonical)
9143 {
9144   /* If no arg given, or if first arg is 'if ', use the default
9145      breakpoint.  */
9146   if ((*address) == NULL
9147       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9148     {
9149       /* The last displayed codepoint, if it's valid, is our default breakpoint
9150          address.  */
9151       if (last_displayed_sal_is_valid ())
9152         {
9153           struct linespec_sals lsal;
9154           struct symtab_and_line sal;
9155           CORE_ADDR pc;
9156
9157           init_sal (&sal);              /* Initialize to zeroes.  */
9158           lsal.sals.sals = (struct symtab_and_line *)
9159             xmalloc (sizeof (struct symtab_and_line));
9160
9161           /* Set sal's pspace, pc, symtab, and line to the values
9162              corresponding to the last call to print_frame_info.
9163              Be sure to reinitialize LINE with NOTCURRENT == 0
9164              as the breakpoint line number is inappropriate otherwise.
9165              find_pc_line would adjust PC, re-set it back.  */
9166           get_last_displayed_sal (&sal);
9167           pc = sal.pc;
9168           sal = find_pc_line (pc, 0);
9169
9170           /* "break" without arguments is equivalent to "break *PC"
9171              where PC is the last displayed codepoint's address.  So
9172              make sure to set sal.explicit_pc to prevent GDB from
9173              trying to expand the list of sals to include all other
9174              instances with the same symtab and line.  */
9175           sal.pc = pc;
9176           sal.explicit_pc = 1;
9177
9178           lsal.sals.sals[0] = sal;
9179           lsal.sals.nelts = 1;
9180           lsal.canonical = NULL;
9181
9182           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9183         }
9184       else
9185         error (_("No default breakpoint address now."));
9186     }
9187   else
9188     {
9189       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9190
9191       /* Force almost all breakpoints to be in terms of the
9192          current_source_symtab (which is decode_line_1's default).
9193          This should produce the results we want almost all of the
9194          time while leaving default_breakpoint_* alone.
9195
9196          ObjC: However, don't match an Objective-C method name which
9197          may have a '+' or '-' succeeded by a '['.  */
9198       if (last_displayed_sal_is_valid ()
9199           && (!cursal.symtab
9200               || ((strchr ("+-", (*address)[0]) != NULL)
9201                   && ((*address)[1] != '['))))
9202         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9203                           get_last_displayed_symtab (),
9204                           get_last_displayed_line (),
9205                           canonical, NULL, NULL);
9206       else
9207         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9208                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9209     }
9210 }
9211
9212
9213 /* Convert each SAL into a real PC.  Verify that the PC can be
9214    inserted as a breakpoint.  If it can't throw an error.  */
9215
9216 static void
9217 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9218 {    
9219   int i;
9220
9221   for (i = 0; i < sals->nelts; i++)
9222     resolve_sal_pc (&sals->sals[i]);
9223 }
9224
9225 /* Fast tracepoints may have restrictions on valid locations.  For
9226    instance, a fast tracepoint using a jump instead of a trap will
9227    likely have to overwrite more bytes than a trap would, and so can
9228    only be placed where the instruction is longer than the jump, or a
9229    multi-instruction sequence does not have a jump into the middle of
9230    it, etc.  */
9231
9232 static void
9233 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9234                             struct symtabs_and_lines *sals)
9235 {
9236   int i, rslt;
9237   struct symtab_and_line *sal;
9238   char *msg;
9239   struct cleanup *old_chain;
9240
9241   for (i = 0; i < sals->nelts; i++)
9242     {
9243       struct gdbarch *sarch;
9244
9245       sal = &sals->sals[i];
9246
9247       sarch = get_sal_arch (*sal);
9248       /* We fall back to GDBARCH if there is no architecture
9249          associated with SAL.  */
9250       if (sarch == NULL)
9251         sarch = gdbarch;
9252       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9253                                                NULL, &msg);
9254       old_chain = make_cleanup (xfree, msg);
9255
9256       if (!rslt)
9257         error (_("May not have a fast tracepoint at 0x%s%s"),
9258                paddress (sarch, sal->pc), (msg ? msg : ""));
9259
9260       do_cleanups (old_chain);
9261     }
9262 }
9263
9264 /* Issue an invalid thread ID error.  */
9265
9266 static void ATTRIBUTE_NORETURN
9267 invalid_thread_id_error (int id)
9268 {
9269   error (_("Unknown thread %d."), id);
9270 }
9271
9272 /* Given TOK, a string specification of condition and thread, as
9273    accepted by the 'break' command, extract the condition
9274    string and thread number and set *COND_STRING and *THREAD.
9275    PC identifies the context at which the condition should be parsed.
9276    If no condition is found, *COND_STRING is set to NULL.
9277    If no thread is found, *THREAD is set to -1.  */
9278
9279 static void
9280 find_condition_and_thread (char *tok, CORE_ADDR pc,
9281                            char **cond_string, int *thread, int *task,
9282                            char **rest)
9283 {
9284   *cond_string = NULL;
9285   *thread = -1;
9286   *task = 0;
9287   *rest = NULL;
9288
9289   while (tok && *tok)
9290     {
9291       char *end_tok;
9292       int toklen;
9293       char *cond_start = NULL;
9294       char *cond_end = NULL;
9295
9296       tok = skip_spaces (tok);
9297
9298       if ((*tok == '"' || *tok == ',') && rest)
9299         {
9300           *rest = savestring (tok, strlen (tok));
9301           return;
9302         }
9303
9304       end_tok = skip_to_space (tok);
9305
9306       toklen = end_tok - tok;
9307
9308       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9309         {
9310           struct expression *expr;
9311
9312           tok = cond_start = end_tok + 1;
9313           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9314           xfree (expr);
9315           cond_end = tok;
9316           *cond_string = savestring (cond_start, cond_end - cond_start);
9317         }
9318       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9319         {
9320           char *tmptok;
9321
9322           tok = end_tok + 1;
9323           tmptok = tok;
9324           *thread = strtol (tok, &tok, 0);
9325           if (tok == tmptok)
9326             error (_("Junk after thread keyword."));
9327           if (!valid_thread_id (*thread))
9328             invalid_thread_id_error (*thread);
9329         }
9330       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9331         {
9332           char *tmptok;
9333
9334           tok = end_tok + 1;
9335           tmptok = tok;
9336           *task = strtol (tok, &tok, 0);
9337           if (tok == tmptok)
9338             error (_("Junk after task keyword."));
9339           if (!valid_task_id (*task))
9340             error (_("Unknown task %d."), *task);
9341         }
9342       else if (rest)
9343         {
9344           *rest = savestring (tok, strlen (tok));
9345           return;
9346         }
9347       else
9348         error (_("Junk at end of arguments."));
9349     }
9350 }
9351
9352 /* Decode a static tracepoint marker spec.  */
9353
9354 static struct symtabs_and_lines
9355 decode_static_tracepoint_spec (char **arg_p)
9356 {
9357   VEC(static_tracepoint_marker_p) *markers = NULL;
9358   struct symtabs_and_lines sals;
9359   struct cleanup *old_chain;
9360   char *p = &(*arg_p)[3];
9361   char *endp;
9362   char *marker_str;
9363   int i;
9364
9365   p = skip_spaces (p);
9366
9367   endp = skip_to_space (p);
9368
9369   marker_str = savestring (p, endp - p);
9370   old_chain = make_cleanup (xfree, marker_str);
9371
9372   markers = target_static_tracepoint_markers_by_strid (marker_str);
9373   if (VEC_empty(static_tracepoint_marker_p, markers))
9374     error (_("No known static tracepoint marker named %s"), marker_str);
9375
9376   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9377   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9378
9379   for (i = 0; i < sals.nelts; i++)
9380     {
9381       struct static_tracepoint_marker *marker;
9382
9383       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9384
9385       init_sal (&sals.sals[i]);
9386
9387       sals.sals[i] = find_pc_line (marker->address, 0);
9388       sals.sals[i].pc = marker->address;
9389
9390       release_static_tracepoint_marker (marker);
9391     }
9392
9393   do_cleanups (old_chain);
9394
9395   *arg_p = endp;
9396   return sals;
9397 }
9398
9399 /* Set a breakpoint.  This function is shared between CLI and MI
9400    functions for setting a breakpoint.  This function has two major
9401    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9402    parameter.  If non-zero, the function will parse arg, extracting
9403    breakpoint location, address and thread.  Otherwise, ARG is just
9404    the location of breakpoint, with condition and thread specified by
9405    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9406    the breakpoint number will be allocated from the internal
9407    breakpoint count.  Returns true if any breakpoint was created;
9408    false otherwise.  */
9409
9410 int
9411 create_breakpoint (struct gdbarch *gdbarch,
9412                    char *arg, char *cond_string,
9413                    int thread, char *extra_string,
9414                    int parse_condition_and_thread,
9415                    int tempflag, enum bptype type_wanted,
9416                    int ignore_count,
9417                    enum auto_boolean pending_break_support,
9418                    const struct breakpoint_ops *ops,
9419                    int from_tty, int enabled, int internal,
9420                    unsigned flags)
9421 {
9422   volatile struct gdb_exception e;
9423   char *copy_arg = NULL;
9424   char *addr_start = arg;
9425   struct linespec_result canonical;
9426   struct cleanup *old_chain;
9427   struct cleanup *bkpt_chain = NULL;
9428   int pending = 0;
9429   int task = 0;
9430   int prev_bkpt_count = breakpoint_count;
9431
9432   gdb_assert (ops != NULL);
9433
9434   init_linespec_result (&canonical);
9435
9436   TRY_CATCH (e, RETURN_MASK_ALL)
9437     {
9438       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9439                                      addr_start, &copy_arg);
9440     }
9441
9442   /* If caller is interested in rc value from parse, set value.  */
9443   switch (e.reason)
9444     {
9445     case GDB_NO_ERROR:
9446       if (VEC_empty (linespec_sals, canonical.sals))
9447         return 0;
9448       break;
9449     case RETURN_ERROR:
9450       switch (e.error)
9451         {
9452         case NOT_FOUND_ERROR:
9453
9454           /* If pending breakpoint support is turned off, throw
9455              error.  */
9456
9457           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9458             throw_exception (e);
9459
9460           exception_print (gdb_stderr, e);
9461
9462           /* If pending breakpoint support is auto query and the user
9463              selects no, then simply return the error code.  */
9464           if (pending_break_support == AUTO_BOOLEAN_AUTO
9465               && !nquery (_("Make %s pending on future shared library load? "),
9466                           bptype_string (type_wanted)))
9467             return 0;
9468
9469           /* At this point, either the user was queried about setting
9470              a pending breakpoint and selected yes, or pending
9471              breakpoint behavior is on and thus a pending breakpoint
9472              is defaulted on behalf of the user.  */
9473           {
9474             struct linespec_sals lsal;
9475
9476             copy_arg = xstrdup (addr_start);
9477             lsal.canonical = xstrdup (copy_arg);
9478             lsal.sals.nelts = 1;
9479             lsal.sals.sals = XNEW (struct symtab_and_line);
9480             init_sal (&lsal.sals.sals[0]);
9481             pending = 1;
9482             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9483           }
9484           break;
9485         default:
9486           throw_exception (e);
9487         }
9488       break;
9489     default:
9490       throw_exception (e);
9491     }
9492
9493   /* Create a chain of things that always need to be cleaned up.  */
9494   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9495
9496   /* ----------------------------- SNIP -----------------------------
9497      Anything added to the cleanup chain beyond this point is assumed
9498      to be part of a breakpoint.  If the breakpoint create succeeds
9499      then the memory is not reclaimed.  */
9500   bkpt_chain = make_cleanup (null_cleanup, 0);
9501
9502   /* Resolve all line numbers to PC's and verify that the addresses
9503      are ok for the target.  */
9504   if (!pending)
9505     {
9506       int ix;
9507       struct linespec_sals *iter;
9508
9509       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9510         breakpoint_sals_to_pc (&iter->sals);
9511     }
9512
9513   /* Fast tracepoints may have additional restrictions on location.  */
9514   if (!pending && type_wanted == bp_fast_tracepoint)
9515     {
9516       int ix;
9517       struct linespec_sals *iter;
9518
9519       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9520         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9521     }
9522
9523   /* Verify that condition can be parsed, before setting any
9524      breakpoints.  Allocate a separate condition expression for each
9525      breakpoint.  */
9526   if (!pending)
9527     {
9528       struct linespec_sals *lsal;
9529
9530       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9531
9532       if (parse_condition_and_thread)
9533         {
9534             char *rest;
9535             /* Here we only parse 'arg' to separate condition
9536                from thread number, so parsing in context of first
9537                sal is OK.  When setting the breakpoint we'll 
9538                re-parse it in context of each sal.  */
9539
9540             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9541                                        &thread, &task, &rest);
9542             if (cond_string)
9543                 make_cleanup (xfree, cond_string);
9544             if (rest)
9545               make_cleanup (xfree, rest);
9546             if (rest)
9547               extra_string = rest;
9548         }
9549       else
9550         {
9551             /* Create a private copy of condition string.  */
9552             if (cond_string)
9553             {
9554                 cond_string = xstrdup (cond_string);
9555                 make_cleanup (xfree, cond_string);
9556             }
9557             /* Create a private copy of any extra string.  */
9558             if (extra_string)
9559               {
9560                 extra_string = xstrdup (extra_string);
9561                 make_cleanup (xfree, extra_string);
9562               }
9563         }
9564
9565       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9566                                    cond_string, extra_string, type_wanted,
9567                                    tempflag ? disp_del : disp_donttouch,
9568                                    thread, task, ignore_count, ops,
9569                                    from_tty, enabled, internal, flags);
9570     }
9571   else
9572     {
9573       struct breakpoint *b;
9574
9575       make_cleanup (xfree, copy_arg);
9576
9577       if (is_tracepoint_type (type_wanted))
9578         {
9579           struct tracepoint *t;
9580
9581           t = XCNEW (struct tracepoint);
9582           b = &t->base;
9583         }
9584       else
9585         b = XNEW (struct breakpoint);
9586
9587       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9588
9589       b->addr_string = copy_arg;
9590       if (parse_condition_and_thread)
9591         b->cond_string = NULL;
9592       else
9593         {
9594           /* Create a private copy of condition string.  */
9595           if (cond_string)
9596             {
9597               cond_string = xstrdup (cond_string);
9598               make_cleanup (xfree, cond_string);
9599             }
9600           b->cond_string = cond_string;
9601         }
9602       b->extra_string = NULL;
9603       b->ignore_count = ignore_count;
9604       b->disposition = tempflag ? disp_del : disp_donttouch;
9605       b->condition_not_parsed = 1;
9606       b->enable_state = enabled ? bp_enabled : bp_disabled;
9607       if ((type_wanted != bp_breakpoint
9608            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9609         b->pspace = current_program_space;
9610
9611       install_breakpoint (internal, b, 0);
9612     }
9613   
9614   if (VEC_length (linespec_sals, canonical.sals) > 1)
9615     {
9616       warning (_("Multiple breakpoints were set.\nUse the "
9617                  "\"delete\" command to delete unwanted breakpoints."));
9618       prev_breakpoint_count = prev_bkpt_count;
9619     }
9620
9621   /* That's it.  Discard the cleanups for data inserted into the
9622      breakpoint.  */
9623   discard_cleanups (bkpt_chain);
9624   /* But cleanup everything else.  */
9625   do_cleanups (old_chain);
9626
9627   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9628   update_global_location_list (1);
9629
9630   return 1;
9631 }
9632
9633 /* Set a breakpoint.
9634    ARG is a string describing breakpoint address,
9635    condition, and thread.
9636    FLAG specifies if a breakpoint is hardware on,
9637    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9638    and BP_TEMPFLAG.  */
9639
9640 static void
9641 break_command_1 (char *arg, int flag, int from_tty)
9642 {
9643   int tempflag = flag & BP_TEMPFLAG;
9644   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9645                              ? bp_hardware_breakpoint
9646                              : bp_breakpoint);
9647   struct breakpoint_ops *ops;
9648   const char *arg_cp = arg;
9649
9650   /* Matching breakpoints on probes.  */
9651   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9652     ops = &bkpt_probe_breakpoint_ops;
9653   else
9654     ops = &bkpt_breakpoint_ops;
9655
9656   create_breakpoint (get_current_arch (),
9657                      arg,
9658                      NULL, 0, NULL, 1 /* parse arg */,
9659                      tempflag, type_wanted,
9660                      0 /* Ignore count */,
9661                      pending_break_support,
9662                      ops,
9663                      from_tty,
9664                      1 /* enabled */,
9665                      0 /* internal */,
9666                      0);
9667 }
9668
9669 /* Helper function for break_command_1 and disassemble_command.  */
9670
9671 void
9672 resolve_sal_pc (struct symtab_and_line *sal)
9673 {
9674   CORE_ADDR pc;
9675
9676   if (sal->pc == 0 && sal->symtab != NULL)
9677     {
9678       if (!find_line_pc (sal->symtab, sal->line, &pc))
9679         error (_("No line %d in file \"%s\"."),
9680                sal->line, sal->symtab->filename);
9681       sal->pc = pc;
9682
9683       /* If this SAL corresponds to a breakpoint inserted using a line
9684          number, then skip the function prologue if necessary.  */
9685       if (sal->explicit_line)
9686         skip_prologue_sal (sal);
9687     }
9688
9689   if (sal->section == 0 && sal->symtab != NULL)
9690     {
9691       struct blockvector *bv;
9692       struct block *b;
9693       struct symbol *sym;
9694
9695       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9696       if (bv != NULL)
9697         {
9698           sym = block_linkage_function (b);
9699           if (sym != NULL)
9700             {
9701               fixup_symbol_section (sym, sal->symtab->objfile);
9702               sal->section = SYMBOL_OBJ_SECTION (sym);
9703             }
9704           else
9705             {
9706               /* It really is worthwhile to have the section, so we'll
9707                  just have to look harder. This case can be executed
9708                  if we have line numbers but no functions (as can
9709                  happen in assembly source).  */
9710
9711               struct minimal_symbol *msym;
9712               struct cleanup *old_chain = save_current_space_and_thread ();
9713
9714               switch_to_program_space_and_thread (sal->pspace);
9715
9716               msym = lookup_minimal_symbol_by_pc (sal->pc);
9717               if (msym)
9718                 sal->section = SYMBOL_OBJ_SECTION (msym);
9719
9720               do_cleanups (old_chain);
9721             }
9722         }
9723     }
9724 }
9725
9726 void
9727 break_command (char *arg, int from_tty)
9728 {
9729   break_command_1 (arg, 0, from_tty);
9730 }
9731
9732 void
9733 tbreak_command (char *arg, int from_tty)
9734 {
9735   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9736 }
9737
9738 static void
9739 hbreak_command (char *arg, int from_tty)
9740 {
9741   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9742 }
9743
9744 static void
9745 thbreak_command (char *arg, int from_tty)
9746 {
9747   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9748 }
9749
9750 static void
9751 stop_command (char *arg, int from_tty)
9752 {
9753   printf_filtered (_("Specify the type of breakpoint to set.\n\
9754 Usage: stop in <function | address>\n\
9755        stop at <line>\n"));
9756 }
9757
9758 static void
9759 stopin_command (char *arg, int from_tty)
9760 {
9761   int badInput = 0;
9762
9763   if (arg == (char *) NULL)
9764     badInput = 1;
9765   else if (*arg != '*')
9766     {
9767       char *argptr = arg;
9768       int hasColon = 0;
9769
9770       /* Look for a ':'.  If this is a line number specification, then
9771          say it is bad, otherwise, it should be an address or
9772          function/method name.  */
9773       while (*argptr && !hasColon)
9774         {
9775           hasColon = (*argptr == ':');
9776           argptr++;
9777         }
9778
9779       if (hasColon)
9780         badInput = (*argptr != ':');    /* Not a class::method */
9781       else
9782         badInput = isdigit (*arg);      /* a simple line number */
9783     }
9784
9785   if (badInput)
9786     printf_filtered (_("Usage: stop in <function | address>\n"));
9787   else
9788     break_command_1 (arg, 0, from_tty);
9789 }
9790
9791 static void
9792 stopat_command (char *arg, int from_tty)
9793 {
9794   int badInput = 0;
9795
9796   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9797     badInput = 1;
9798   else
9799     {
9800       char *argptr = arg;
9801       int hasColon = 0;
9802
9803       /* Look for a ':'.  If there is a '::' then get out, otherwise
9804          it is probably a line number.  */
9805       while (*argptr && !hasColon)
9806         {
9807           hasColon = (*argptr == ':');
9808           argptr++;
9809         }
9810
9811       if (hasColon)
9812         badInput = (*argptr == ':');    /* we have class::method */
9813       else
9814         badInput = !isdigit (*arg);     /* not a line number */
9815     }
9816
9817   if (badInput)
9818     printf_filtered (_("Usage: stop at <line>\n"));
9819   else
9820     break_command_1 (arg, 0, from_tty);
9821 }
9822
9823 void dprintf_command (char *arg, int from_tty);
9824
9825 /* The dynamic printf command is mostly like a regular breakpoint, but
9826    with a prewired command list consisting of a single output command,
9827    built from extra arguments supplied on the dprintf command
9828    line.  */
9829
9830 void
9831 dprintf_command (char *arg, int from_tty)
9832 {
9833   create_breakpoint (get_current_arch (),
9834                      arg,
9835                      NULL, 0, NULL, 1 /* parse arg */,
9836                      0, bp_dprintf,
9837                      0 /* Ignore count */,
9838                      pending_break_support,
9839                      &dprintf_breakpoint_ops,
9840                      from_tty,
9841                      1 /* enabled */,
9842                      0 /* internal */,
9843                      0);
9844 }
9845
9846 static void
9847 agent_printf_command (char *arg, int from_tty)
9848 {
9849   error (_("May only run agent-printf on the target"));
9850 }
9851
9852 /* Implement the "breakpoint_hit" breakpoint_ops method for
9853    ranged breakpoints.  */
9854
9855 static int
9856 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9857                                   struct address_space *aspace,
9858                                   CORE_ADDR bp_addr,
9859                                   const struct target_waitstatus *ws)
9860 {
9861   if (ws->kind != TARGET_WAITKIND_STOPPED
9862       || ws->value.sig != GDB_SIGNAL_TRAP)
9863     return 0;
9864
9865   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9866                                          bl->length, aspace, bp_addr);
9867 }
9868
9869 /* Implement the "resources_needed" breakpoint_ops method for
9870    ranged breakpoints.  */
9871
9872 static int
9873 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9874 {
9875   return target_ranged_break_num_registers ();
9876 }
9877
9878 /* Implement the "print_it" breakpoint_ops method for
9879    ranged breakpoints.  */
9880
9881 static enum print_stop_action
9882 print_it_ranged_breakpoint (bpstat bs)
9883 {
9884   struct breakpoint *b = bs->breakpoint_at;
9885   struct bp_location *bl = b->loc;
9886   struct ui_out *uiout = current_uiout;
9887
9888   gdb_assert (b->type == bp_hardware_breakpoint);
9889
9890   /* Ranged breakpoints have only one location.  */
9891   gdb_assert (bl && bl->next == NULL);
9892
9893   annotate_breakpoint (b->number);
9894   if (b->disposition == disp_del)
9895     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9896   else
9897     ui_out_text (uiout, "\nRanged breakpoint ");
9898   if (ui_out_is_mi_like_p (uiout))
9899     {
9900       ui_out_field_string (uiout, "reason",
9901                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9902       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9903     }
9904   ui_out_field_int (uiout, "bkptno", b->number);
9905   ui_out_text (uiout, ", ");
9906
9907   return PRINT_SRC_AND_LOC;
9908 }
9909
9910 /* Implement the "print_one" breakpoint_ops method for
9911    ranged breakpoints.  */
9912
9913 static void
9914 print_one_ranged_breakpoint (struct breakpoint *b,
9915                              struct bp_location **last_loc)
9916 {
9917   struct bp_location *bl = b->loc;
9918   struct value_print_options opts;
9919   struct ui_out *uiout = current_uiout;
9920
9921   /* Ranged breakpoints have only one location.  */
9922   gdb_assert (bl && bl->next == NULL);
9923
9924   get_user_print_options (&opts);
9925
9926   if (opts.addressprint)
9927     /* We don't print the address range here, it will be printed later
9928        by print_one_detail_ranged_breakpoint.  */
9929     ui_out_field_skip (uiout, "addr");
9930   annotate_field (5);
9931   print_breakpoint_location (b, bl);
9932   *last_loc = bl;
9933 }
9934
9935 /* Implement the "print_one_detail" breakpoint_ops method for
9936    ranged breakpoints.  */
9937
9938 static void
9939 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9940                                     struct ui_out *uiout)
9941 {
9942   CORE_ADDR address_start, address_end;
9943   struct bp_location *bl = b->loc;
9944   struct ui_file *stb = mem_fileopen ();
9945   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
9946
9947   gdb_assert (bl);
9948
9949   address_start = bl->address;
9950   address_end = address_start + bl->length - 1;
9951
9952   ui_out_text (uiout, "\taddress range: ");
9953   fprintf_unfiltered (stb, "[%s, %s]",
9954                       print_core_address (bl->gdbarch, address_start),
9955                       print_core_address (bl->gdbarch, address_end));
9956   ui_out_field_stream (uiout, "addr", stb);
9957   ui_out_text (uiout, "\n");
9958
9959   do_cleanups (cleanup);
9960 }
9961
9962 /* Implement the "print_mention" breakpoint_ops method for
9963    ranged breakpoints.  */
9964
9965 static void
9966 print_mention_ranged_breakpoint (struct breakpoint *b)
9967 {
9968   struct bp_location *bl = b->loc;
9969   struct ui_out *uiout = current_uiout;
9970
9971   gdb_assert (bl);
9972   gdb_assert (b->type == bp_hardware_breakpoint);
9973
9974   if (ui_out_is_mi_like_p (uiout))
9975     return;
9976
9977   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9978                    b->number, paddress (bl->gdbarch, bl->address),
9979                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9980 }
9981
9982 /* Implement the "print_recreate" breakpoint_ops method for
9983    ranged breakpoints.  */
9984
9985 static void
9986 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9987 {
9988   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9989                       b->addr_string_range_end);
9990   print_recreate_thread (b, fp);
9991 }
9992
9993 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9994
9995 static struct breakpoint_ops ranged_breakpoint_ops;
9996
9997 /* Find the address where the end of the breakpoint range should be
9998    placed, given the SAL of the end of the range.  This is so that if
9999    the user provides a line number, the end of the range is set to the
10000    last instruction of the given line.  */
10001
10002 static CORE_ADDR
10003 find_breakpoint_range_end (struct symtab_and_line sal)
10004 {
10005   CORE_ADDR end;
10006
10007   /* If the user provided a PC value, use it.  Otherwise,
10008      find the address of the end of the given location.  */
10009   if (sal.explicit_pc)
10010     end = sal.pc;
10011   else
10012     {
10013       int ret;
10014       CORE_ADDR start;
10015
10016       ret = find_line_pc_range (sal, &start, &end);
10017       if (!ret)
10018         error (_("Could not find location of the end of the range."));
10019
10020       /* find_line_pc_range returns the start of the next line.  */
10021       end--;
10022     }
10023
10024   return end;
10025 }
10026
10027 /* Implement the "break-range" CLI command.  */
10028
10029 static void
10030 break_range_command (char *arg, int from_tty)
10031 {
10032   char *arg_start, *addr_string_start, *addr_string_end;
10033   struct linespec_result canonical_start, canonical_end;
10034   int bp_count, can_use_bp, length;
10035   CORE_ADDR end;
10036   struct breakpoint *b;
10037   struct symtab_and_line sal_start, sal_end;
10038   struct cleanup *cleanup_bkpt;
10039   struct linespec_sals *lsal_start, *lsal_end;
10040
10041   /* We don't support software ranged breakpoints.  */
10042   if (target_ranged_break_num_registers () < 0)
10043     error (_("This target does not support hardware ranged breakpoints."));
10044
10045   bp_count = hw_breakpoint_used_count ();
10046   bp_count += target_ranged_break_num_registers ();
10047   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10048                                                    bp_count, 0);
10049   if (can_use_bp < 0)
10050     error (_("Hardware breakpoints used exceeds limit."));
10051
10052   arg = skip_spaces (arg);
10053   if (arg == NULL || arg[0] == '\0')
10054     error(_("No address range specified."));
10055
10056   init_linespec_result (&canonical_start);
10057
10058   arg_start = arg;
10059   parse_breakpoint_sals (&arg, &canonical_start);
10060
10061   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10062
10063   if (arg[0] != ',')
10064     error (_("Too few arguments."));
10065   else if (VEC_empty (linespec_sals, canonical_start.sals))
10066     error (_("Could not find location of the beginning of the range."));
10067
10068   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10069
10070   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10071       || lsal_start->sals.nelts != 1)
10072     error (_("Cannot create a ranged breakpoint with multiple locations."));
10073
10074   sal_start = lsal_start->sals.sals[0];
10075   addr_string_start = savestring (arg_start, arg - arg_start);
10076   make_cleanup (xfree, addr_string_start);
10077
10078   arg++;        /* Skip the comma.  */
10079   arg = skip_spaces (arg);
10080
10081   /* Parse the end location.  */
10082
10083   init_linespec_result (&canonical_end);
10084   arg_start = arg;
10085
10086   /* We call decode_line_full directly here instead of using
10087      parse_breakpoint_sals because we need to specify the start location's
10088      symtab and line as the default symtab and line for the end of the
10089      range.  This makes it possible to have ranges like "foo.c:27, +14",
10090      where +14 means 14 lines from the start location.  */
10091   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10092                     sal_start.symtab, sal_start.line,
10093                     &canonical_end, NULL, NULL);
10094
10095   make_cleanup_destroy_linespec_result (&canonical_end);
10096
10097   if (VEC_empty (linespec_sals, canonical_end.sals))
10098     error (_("Could not find location of the end of the range."));
10099
10100   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10101   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10102       || lsal_end->sals.nelts != 1)
10103     error (_("Cannot create a ranged breakpoint with multiple locations."));
10104
10105   sal_end = lsal_end->sals.sals[0];
10106   addr_string_end = savestring (arg_start, arg - arg_start);
10107   make_cleanup (xfree, addr_string_end);
10108
10109   end = find_breakpoint_range_end (sal_end);
10110   if (sal_start.pc > end)
10111     error (_("Invalid address range, end precedes start."));
10112
10113   length = end - sal_start.pc + 1;
10114   if (length < 0)
10115     /* Length overflowed.  */
10116     error (_("Address range too large."));
10117   else if (length == 1)
10118     {
10119       /* This range is simple enough to be handled by
10120          the `hbreak' command.  */
10121       hbreak_command (addr_string_start, 1);
10122
10123       do_cleanups (cleanup_bkpt);
10124
10125       return;
10126     }
10127
10128   /* Now set up the breakpoint.  */
10129   b = set_raw_breakpoint (get_current_arch (), sal_start,
10130                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10131   set_breakpoint_count (breakpoint_count + 1);
10132   b->number = breakpoint_count;
10133   b->disposition = disp_donttouch;
10134   b->addr_string = xstrdup (addr_string_start);
10135   b->addr_string_range_end = xstrdup (addr_string_end);
10136   b->loc->length = length;
10137
10138   do_cleanups (cleanup_bkpt);
10139
10140   mention (b);
10141   observer_notify_breakpoint_created (b);
10142   update_global_location_list (1);
10143 }
10144
10145 /*  Return non-zero if EXP is verified as constant.  Returned zero
10146     means EXP is variable.  Also the constant detection may fail for
10147     some constant expressions and in such case still falsely return
10148     zero.  */
10149
10150 static int
10151 watchpoint_exp_is_const (const struct expression *exp)
10152 {
10153   int i = exp->nelts;
10154
10155   while (i > 0)
10156     {
10157       int oplenp, argsp;
10158
10159       /* We are only interested in the descriptor of each element.  */
10160       operator_length (exp, i, &oplenp, &argsp);
10161       i -= oplenp;
10162
10163       switch (exp->elts[i].opcode)
10164         {
10165         case BINOP_ADD:
10166         case BINOP_SUB:
10167         case BINOP_MUL:
10168         case BINOP_DIV:
10169         case BINOP_REM:
10170         case BINOP_MOD:
10171         case BINOP_LSH:
10172         case BINOP_RSH:
10173         case BINOP_LOGICAL_AND:
10174         case BINOP_LOGICAL_OR:
10175         case BINOP_BITWISE_AND:
10176         case BINOP_BITWISE_IOR:
10177         case BINOP_BITWISE_XOR:
10178         case BINOP_EQUAL:
10179         case BINOP_NOTEQUAL:
10180         case BINOP_LESS:
10181         case BINOP_GTR:
10182         case BINOP_LEQ:
10183         case BINOP_GEQ:
10184         case BINOP_REPEAT:
10185         case BINOP_COMMA:
10186         case BINOP_EXP:
10187         case BINOP_MIN:
10188         case BINOP_MAX:
10189         case BINOP_INTDIV:
10190         case BINOP_CONCAT:
10191         case BINOP_IN:
10192         case BINOP_RANGE:
10193         case TERNOP_COND:
10194         case TERNOP_SLICE:
10195
10196         case OP_LONG:
10197         case OP_DOUBLE:
10198         case OP_DECFLOAT:
10199         case OP_LAST:
10200         case OP_COMPLEX:
10201         case OP_STRING:
10202         case OP_ARRAY:
10203         case OP_TYPE:
10204         case OP_TYPEOF:
10205         case OP_DECLTYPE:
10206         case OP_NAME:
10207         case OP_OBJC_NSSTRING:
10208
10209         case UNOP_NEG:
10210         case UNOP_LOGICAL_NOT:
10211         case UNOP_COMPLEMENT:
10212         case UNOP_ADDR:
10213         case UNOP_HIGH:
10214         case UNOP_CAST:
10215
10216         case UNOP_CAST_TYPE:
10217         case UNOP_REINTERPRET_CAST:
10218         case UNOP_DYNAMIC_CAST:
10219           /* Unary, binary and ternary operators: We have to check
10220              their operands.  If they are constant, then so is the
10221              result of that operation.  For instance, if A and B are
10222              determined to be constants, then so is "A + B".
10223
10224              UNOP_IND is one exception to the rule above, because the
10225              value of *ADDR is not necessarily a constant, even when
10226              ADDR is.  */
10227           break;
10228
10229         case OP_VAR_VALUE:
10230           /* Check whether the associated symbol is a constant.
10231
10232              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10233              possible that a buggy compiler could mark a variable as
10234              constant even when it is not, and TYPE_CONST would return
10235              true in this case, while SYMBOL_CLASS wouldn't.
10236
10237              We also have to check for function symbols because they
10238              are always constant.  */
10239           {
10240             struct symbol *s = exp->elts[i + 2].symbol;
10241
10242             if (SYMBOL_CLASS (s) != LOC_BLOCK
10243                 && SYMBOL_CLASS (s) != LOC_CONST
10244                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10245               return 0;
10246             break;
10247           }
10248
10249         /* The default action is to return 0 because we are using
10250            the optimistic approach here: If we don't know something,
10251            then it is not a constant.  */
10252         default:
10253           return 0;
10254         }
10255     }
10256
10257   return 1;
10258 }
10259
10260 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10261
10262 static void
10263 dtor_watchpoint (struct breakpoint *self)
10264 {
10265   struct watchpoint *w = (struct watchpoint *) self;
10266
10267   xfree (w->cond_exp);
10268   xfree (w->exp);
10269   xfree (w->exp_string);
10270   xfree (w->exp_string_reparse);
10271   value_free (w->val);
10272
10273   base_breakpoint_ops.dtor (self);
10274 }
10275
10276 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10277
10278 static void
10279 re_set_watchpoint (struct breakpoint *b)
10280 {
10281   struct watchpoint *w = (struct watchpoint *) b;
10282
10283   /* Watchpoint can be either on expression using entirely global
10284      variables, or it can be on local variables.
10285
10286      Watchpoints of the first kind are never auto-deleted, and even
10287      persist across program restarts.  Since they can use variables
10288      from shared libraries, we need to reparse expression as libraries
10289      are loaded and unloaded.
10290
10291      Watchpoints on local variables can also change meaning as result
10292      of solib event.  For example, if a watchpoint uses both a local
10293      and a global variables in expression, it's a local watchpoint,
10294      but unloading of a shared library will make the expression
10295      invalid.  This is not a very common use case, but we still
10296      re-evaluate expression, to avoid surprises to the user.
10297
10298      Note that for local watchpoints, we re-evaluate it only if
10299      watchpoints frame id is still valid.  If it's not, it means the
10300      watchpoint is out of scope and will be deleted soon.  In fact,
10301      I'm not sure we'll ever be called in this case.
10302
10303      If a local watchpoint's frame id is still valid, then
10304      w->exp_valid_block is likewise valid, and we can safely use it.
10305
10306      Don't do anything about disabled watchpoints, since they will be
10307      reevaluated again when enabled.  */
10308   update_watchpoint (w, 1 /* reparse */);
10309 }
10310
10311 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10312
10313 static int
10314 insert_watchpoint (struct bp_location *bl)
10315 {
10316   struct watchpoint *w = (struct watchpoint *) bl->owner;
10317   int length = w->exact ? 1 : bl->length;
10318
10319   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10320                                    w->cond_exp);
10321 }
10322
10323 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10324
10325 static int
10326 remove_watchpoint (struct bp_location *bl)
10327 {
10328   struct watchpoint *w = (struct watchpoint *) bl->owner;
10329   int length = w->exact ? 1 : bl->length;
10330
10331   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10332                                    w->cond_exp);
10333 }
10334
10335 static int
10336 breakpoint_hit_watchpoint (const struct bp_location *bl,
10337                            struct address_space *aspace, CORE_ADDR bp_addr,
10338                            const struct target_waitstatus *ws)
10339 {
10340   struct breakpoint *b = bl->owner;
10341   struct watchpoint *w = (struct watchpoint *) b;
10342
10343   /* Continuable hardware watchpoints are treated as non-existent if the
10344      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10345      some data address).  Otherwise gdb won't stop on a break instruction
10346      in the code (not from a breakpoint) when a hardware watchpoint has
10347      been defined.  Also skip watchpoints which we know did not trigger
10348      (did not match the data address).  */
10349   if (is_hardware_watchpoint (b)
10350       && w->watchpoint_triggered == watch_triggered_no)
10351     return 0;
10352
10353   return 1;
10354 }
10355
10356 static void
10357 check_status_watchpoint (bpstat bs)
10358 {
10359   gdb_assert (is_watchpoint (bs->breakpoint_at));
10360
10361   bpstat_check_watchpoint (bs);
10362 }
10363
10364 /* Implement the "resources_needed" breakpoint_ops method for
10365    hardware watchpoints.  */
10366
10367 static int
10368 resources_needed_watchpoint (const struct bp_location *bl)
10369 {
10370   struct watchpoint *w = (struct watchpoint *) bl->owner;
10371   int length = w->exact? 1 : bl->length;
10372
10373   return target_region_ok_for_hw_watchpoint (bl->address, length);
10374 }
10375
10376 /* Implement the "works_in_software_mode" breakpoint_ops method for
10377    hardware watchpoints.  */
10378
10379 static int
10380 works_in_software_mode_watchpoint (const struct breakpoint *b)
10381 {
10382   /* Read and access watchpoints only work with hardware support.  */
10383   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10384 }
10385
10386 static enum print_stop_action
10387 print_it_watchpoint (bpstat bs)
10388 {
10389   struct cleanup *old_chain;
10390   struct breakpoint *b;
10391   const struct bp_location *bl;
10392   struct ui_file *stb;
10393   enum print_stop_action result;
10394   struct watchpoint *w;
10395   struct ui_out *uiout = current_uiout;
10396
10397   gdb_assert (bs->bp_location_at != NULL);
10398
10399   bl = bs->bp_location_at;
10400   b = bs->breakpoint_at;
10401   w = (struct watchpoint *) b;
10402
10403   stb = mem_fileopen ();
10404   old_chain = make_cleanup_ui_file_delete (stb);
10405
10406   switch (b->type)
10407     {
10408     case bp_watchpoint:
10409     case bp_hardware_watchpoint:
10410       annotate_watchpoint (b->number);
10411       if (ui_out_is_mi_like_p (uiout))
10412         ui_out_field_string
10413           (uiout, "reason",
10414            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10415       mention (b);
10416       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10417       ui_out_text (uiout, "\nOld value = ");
10418       watchpoint_value_print (bs->old_val, stb);
10419       ui_out_field_stream (uiout, "old", stb);
10420       ui_out_text (uiout, "\nNew value = ");
10421       watchpoint_value_print (w->val, stb);
10422       ui_out_field_stream (uiout, "new", stb);
10423       ui_out_text (uiout, "\n");
10424       /* More than one watchpoint may have been triggered.  */
10425       result = PRINT_UNKNOWN;
10426       break;
10427
10428     case bp_read_watchpoint:
10429       if (ui_out_is_mi_like_p (uiout))
10430         ui_out_field_string
10431           (uiout, "reason",
10432            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10433       mention (b);
10434       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10435       ui_out_text (uiout, "\nValue = ");
10436       watchpoint_value_print (w->val, stb);
10437       ui_out_field_stream (uiout, "value", stb);
10438       ui_out_text (uiout, "\n");
10439       result = PRINT_UNKNOWN;
10440       break;
10441
10442     case bp_access_watchpoint:
10443       if (bs->old_val != NULL)
10444         {
10445           annotate_watchpoint (b->number);
10446           if (ui_out_is_mi_like_p (uiout))
10447             ui_out_field_string
10448               (uiout, "reason",
10449                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10450           mention (b);
10451           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10452           ui_out_text (uiout, "\nOld value = ");
10453           watchpoint_value_print (bs->old_val, stb);
10454           ui_out_field_stream (uiout, "old", stb);
10455           ui_out_text (uiout, "\nNew value = ");
10456         }
10457       else
10458         {
10459           mention (b);
10460           if (ui_out_is_mi_like_p (uiout))
10461             ui_out_field_string
10462               (uiout, "reason",
10463                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10464           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10465           ui_out_text (uiout, "\nValue = ");
10466         }
10467       watchpoint_value_print (w->val, stb);
10468       ui_out_field_stream (uiout, "new", stb);
10469       ui_out_text (uiout, "\n");
10470       result = PRINT_UNKNOWN;
10471       break;
10472     default:
10473       result = PRINT_UNKNOWN;
10474     }
10475
10476   do_cleanups (old_chain);
10477   return result;
10478 }
10479
10480 /* Implement the "print_mention" breakpoint_ops method for hardware
10481    watchpoints.  */
10482
10483 static void
10484 print_mention_watchpoint (struct breakpoint *b)
10485 {
10486   struct cleanup *ui_out_chain;
10487   struct watchpoint *w = (struct watchpoint *) b;
10488   struct ui_out *uiout = current_uiout;
10489
10490   switch (b->type)
10491     {
10492     case bp_watchpoint:
10493       ui_out_text (uiout, "Watchpoint ");
10494       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10495       break;
10496     case bp_hardware_watchpoint:
10497       ui_out_text (uiout, "Hardware watchpoint ");
10498       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10499       break;
10500     case bp_read_watchpoint:
10501       ui_out_text (uiout, "Hardware read watchpoint ");
10502       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10503       break;
10504     case bp_access_watchpoint:
10505       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10506       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10507       break;
10508     default:
10509       internal_error (__FILE__, __LINE__,
10510                       _("Invalid hardware watchpoint type."));
10511     }
10512
10513   ui_out_field_int (uiout, "number", b->number);
10514   ui_out_text (uiout, ": ");
10515   ui_out_field_string (uiout, "exp", w->exp_string);
10516   do_cleanups (ui_out_chain);
10517 }
10518
10519 /* Implement the "print_recreate" breakpoint_ops method for
10520    watchpoints.  */
10521
10522 static void
10523 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10524 {
10525   struct watchpoint *w = (struct watchpoint *) b;
10526
10527   switch (b->type)
10528     {
10529     case bp_watchpoint:
10530     case bp_hardware_watchpoint:
10531       fprintf_unfiltered (fp, "watch");
10532       break;
10533     case bp_read_watchpoint:
10534       fprintf_unfiltered (fp, "rwatch");
10535       break;
10536     case bp_access_watchpoint:
10537       fprintf_unfiltered (fp, "awatch");
10538       break;
10539     default:
10540       internal_error (__FILE__, __LINE__,
10541                       _("Invalid watchpoint type."));
10542     }
10543
10544   fprintf_unfiltered (fp, " %s", w->exp_string);
10545   print_recreate_thread (b, fp);
10546 }
10547
10548 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10549
10550 static struct breakpoint_ops watchpoint_breakpoint_ops;
10551
10552 /* Implement the "insert" breakpoint_ops method for
10553    masked hardware watchpoints.  */
10554
10555 static int
10556 insert_masked_watchpoint (struct bp_location *bl)
10557 {
10558   struct watchpoint *w = (struct watchpoint *) bl->owner;
10559
10560   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10561                                         bl->watchpoint_type);
10562 }
10563
10564 /* Implement the "remove" breakpoint_ops method for
10565    masked hardware watchpoints.  */
10566
10567 static int
10568 remove_masked_watchpoint (struct bp_location *bl)
10569 {
10570   struct watchpoint *w = (struct watchpoint *) bl->owner;
10571
10572   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10573                                         bl->watchpoint_type);
10574 }
10575
10576 /* Implement the "resources_needed" breakpoint_ops method for
10577    masked hardware watchpoints.  */
10578
10579 static int
10580 resources_needed_masked_watchpoint (const struct bp_location *bl)
10581 {
10582   struct watchpoint *w = (struct watchpoint *) bl->owner;
10583
10584   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10585 }
10586
10587 /* Implement the "works_in_software_mode" breakpoint_ops method for
10588    masked hardware watchpoints.  */
10589
10590 static int
10591 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10592 {
10593   return 0;
10594 }
10595
10596 /* Implement the "print_it" breakpoint_ops method for
10597    masked hardware watchpoints.  */
10598
10599 static enum print_stop_action
10600 print_it_masked_watchpoint (bpstat bs)
10601 {
10602   struct breakpoint *b = bs->breakpoint_at;
10603   struct ui_out *uiout = current_uiout;
10604
10605   /* Masked watchpoints have only one location.  */
10606   gdb_assert (b->loc && b->loc->next == NULL);
10607
10608   switch (b->type)
10609     {
10610     case bp_hardware_watchpoint:
10611       annotate_watchpoint (b->number);
10612       if (ui_out_is_mi_like_p (uiout))
10613         ui_out_field_string
10614           (uiout, "reason",
10615            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10616       break;
10617
10618     case bp_read_watchpoint:
10619       if (ui_out_is_mi_like_p (uiout))
10620         ui_out_field_string
10621           (uiout, "reason",
10622            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10623       break;
10624
10625     case bp_access_watchpoint:
10626       if (ui_out_is_mi_like_p (uiout))
10627         ui_out_field_string
10628           (uiout, "reason",
10629            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10630       break;
10631     default:
10632       internal_error (__FILE__, __LINE__,
10633                       _("Invalid hardware watchpoint type."));
10634     }
10635
10636   mention (b);
10637   ui_out_text (uiout, _("\n\
10638 Check the underlying instruction at PC for the memory\n\
10639 address and value which triggered this watchpoint.\n"));
10640   ui_out_text (uiout, "\n");
10641
10642   /* More than one watchpoint may have been triggered.  */
10643   return PRINT_UNKNOWN;
10644 }
10645
10646 /* Implement the "print_one_detail" breakpoint_ops method for
10647    masked hardware watchpoints.  */
10648
10649 static void
10650 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10651                                     struct ui_out *uiout)
10652 {
10653   struct watchpoint *w = (struct watchpoint *) b;
10654
10655   /* Masked watchpoints have only one location.  */
10656   gdb_assert (b->loc && b->loc->next == NULL);
10657
10658   ui_out_text (uiout, "\tmask ");
10659   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10660   ui_out_text (uiout, "\n");
10661 }
10662
10663 /* Implement the "print_mention" breakpoint_ops method for
10664    masked hardware watchpoints.  */
10665
10666 static void
10667 print_mention_masked_watchpoint (struct breakpoint *b)
10668 {
10669   struct watchpoint *w = (struct watchpoint *) b;
10670   struct ui_out *uiout = current_uiout;
10671   struct cleanup *ui_out_chain;
10672
10673   switch (b->type)
10674     {
10675     case bp_hardware_watchpoint:
10676       ui_out_text (uiout, "Masked hardware watchpoint ");
10677       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10678       break;
10679     case bp_read_watchpoint:
10680       ui_out_text (uiout, "Masked hardware read watchpoint ");
10681       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10682       break;
10683     case bp_access_watchpoint:
10684       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10685       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10686       break;
10687     default:
10688       internal_error (__FILE__, __LINE__,
10689                       _("Invalid hardware watchpoint type."));
10690     }
10691
10692   ui_out_field_int (uiout, "number", b->number);
10693   ui_out_text (uiout, ": ");
10694   ui_out_field_string (uiout, "exp", w->exp_string);
10695   do_cleanups (ui_out_chain);
10696 }
10697
10698 /* Implement the "print_recreate" breakpoint_ops method for
10699    masked hardware watchpoints.  */
10700
10701 static void
10702 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10703 {
10704   struct watchpoint *w = (struct watchpoint *) b;
10705   char tmp[40];
10706
10707   switch (b->type)
10708     {
10709     case bp_hardware_watchpoint:
10710       fprintf_unfiltered (fp, "watch");
10711       break;
10712     case bp_read_watchpoint:
10713       fprintf_unfiltered (fp, "rwatch");
10714       break;
10715     case bp_access_watchpoint:
10716       fprintf_unfiltered (fp, "awatch");
10717       break;
10718     default:
10719       internal_error (__FILE__, __LINE__,
10720                       _("Invalid hardware watchpoint type."));
10721     }
10722
10723   sprintf_vma (tmp, w->hw_wp_mask);
10724   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10725   print_recreate_thread (b, fp);
10726 }
10727
10728 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10729
10730 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10731
10732 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10733
10734 static int
10735 is_masked_watchpoint (const struct breakpoint *b)
10736 {
10737   return b->ops == &masked_watchpoint_breakpoint_ops;
10738 }
10739
10740 /* accessflag:  hw_write:  watch write, 
10741                 hw_read:   watch read, 
10742                 hw_access: watch access (read or write) */
10743 static void
10744 watch_command_1 (char *arg, int accessflag, int from_tty,
10745                  int just_location, int internal)
10746 {
10747   volatile struct gdb_exception e;
10748   struct breakpoint *b, *scope_breakpoint = NULL;
10749   struct expression *exp;
10750   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10751   struct value *val, *mark, *result;
10752   struct frame_info *frame;
10753   char *exp_start = NULL;
10754   char *exp_end = NULL;
10755   char *tok, *end_tok;
10756   int toklen = -1;
10757   char *cond_start = NULL;
10758   char *cond_end = NULL;
10759   enum bptype bp_type;
10760   int thread = -1;
10761   int pc = 0;
10762   /* Flag to indicate whether we are going to use masks for
10763      the hardware watchpoint.  */
10764   int use_mask = 0;
10765   CORE_ADDR mask = 0;
10766   struct watchpoint *w;
10767
10768   /* Make sure that we actually have parameters to parse.  */
10769   if (arg != NULL && arg[0] != '\0')
10770     {
10771       char *value_start;
10772
10773       /* Look for "parameter value" pairs at the end
10774          of the arguments string.  */
10775       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10776         {
10777           /* Skip whitespace at the end of the argument list.  */
10778           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10779             tok--;
10780
10781           /* Find the beginning of the last token.
10782              This is the value of the parameter.  */
10783           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10784             tok--;
10785           value_start = tok + 1;
10786
10787           /* Skip whitespace.  */
10788           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10789             tok--;
10790
10791           end_tok = tok;
10792
10793           /* Find the beginning of the second to last token.
10794              This is the parameter itself.  */
10795           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10796             tok--;
10797           tok++;
10798           toklen = end_tok - tok + 1;
10799
10800           if (toklen == 6 && !strncmp (tok, "thread", 6))
10801             {
10802               /* At this point we've found a "thread" token, which means
10803                  the user is trying to set a watchpoint that triggers
10804                  only in a specific thread.  */
10805               char *endp;
10806
10807               if (thread != -1)
10808                 error(_("You can specify only one thread."));
10809
10810               /* Extract the thread ID from the next token.  */
10811               thread = strtol (value_start, &endp, 0);
10812
10813               /* Check if the user provided a valid numeric value for the
10814                  thread ID.  */
10815               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10816                 error (_("Invalid thread ID specification %s."), value_start);
10817
10818               /* Check if the thread actually exists.  */
10819               if (!valid_thread_id (thread))
10820                 invalid_thread_id_error (thread);
10821             }
10822           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10823             {
10824               /* We've found a "mask" token, which means the user wants to
10825                  create a hardware watchpoint that is going to have the mask
10826                  facility.  */
10827               struct value *mask_value, *mark;
10828
10829               if (use_mask)
10830                 error(_("You can specify only one mask."));
10831
10832               use_mask = just_location = 1;
10833
10834               mark = value_mark ();
10835               mask_value = parse_to_comma_and_eval (&value_start);
10836               mask = value_as_address (mask_value);
10837               value_free_to_mark (mark);
10838             }
10839           else
10840             /* We didn't recognize what we found.  We should stop here.  */
10841             break;
10842
10843           /* Truncate the string and get rid of the "parameter value" pair before
10844              the arguments string is parsed by the parse_exp_1 function.  */
10845           *tok = '\0';
10846         }
10847     }
10848
10849   /* Parse the rest of the arguments.  */
10850   innermost_block = NULL;
10851   exp_start = arg;
10852   exp = parse_exp_1 (&arg, 0, 0, 0);
10853   exp_end = arg;
10854   /* Remove trailing whitespace from the expression before saving it.
10855      This makes the eventual display of the expression string a bit
10856      prettier.  */
10857   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10858     --exp_end;
10859
10860   /* Checking if the expression is not constant.  */
10861   if (watchpoint_exp_is_const (exp))
10862     {
10863       int len;
10864
10865       len = exp_end - exp_start;
10866       while (len > 0 && isspace (exp_start[len - 1]))
10867         len--;
10868       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10869     }
10870
10871   exp_valid_block = innermost_block;
10872   mark = value_mark ();
10873   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10874
10875   if (just_location)
10876     {
10877       int ret;
10878
10879       exp_valid_block = NULL;
10880       val = value_addr (result);
10881       release_value (val);
10882       value_free_to_mark (mark);
10883
10884       if (use_mask)
10885         {
10886           ret = target_masked_watch_num_registers (value_as_address (val),
10887                                                    mask);
10888           if (ret == -1)
10889             error (_("This target does not support masked watchpoints."));
10890           else if (ret == -2)
10891             error (_("Invalid mask or memory region."));
10892         }
10893     }
10894   else if (val != NULL)
10895     release_value (val);
10896
10897   tok = skip_spaces (arg);
10898   end_tok = skip_to_space (tok);
10899
10900   toklen = end_tok - tok;
10901   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10902     {
10903       struct expression *cond;
10904
10905       innermost_block = NULL;
10906       tok = cond_start = end_tok + 1;
10907       cond = parse_exp_1 (&tok, 0, 0, 0);
10908
10909       /* The watchpoint expression may not be local, but the condition
10910          may still be.  E.g.: `watch global if local > 0'.  */
10911       cond_exp_valid_block = innermost_block;
10912
10913       xfree (cond);
10914       cond_end = tok;
10915     }
10916   if (*tok)
10917     error (_("Junk at end of command."));
10918
10919   if (accessflag == hw_read)
10920     bp_type = bp_read_watchpoint;
10921   else if (accessflag == hw_access)
10922     bp_type = bp_access_watchpoint;
10923   else
10924     bp_type = bp_hardware_watchpoint;
10925
10926   frame = block_innermost_frame (exp_valid_block);
10927
10928   /* If the expression is "local", then set up a "watchpoint scope"
10929      breakpoint at the point where we've left the scope of the watchpoint
10930      expression.  Create the scope breakpoint before the watchpoint, so
10931      that we will encounter it first in bpstat_stop_status.  */
10932   if (exp_valid_block && frame)
10933     {
10934       if (frame_id_p (frame_unwind_caller_id (frame)))
10935         {
10936           scope_breakpoint
10937             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10938                                           frame_unwind_caller_pc (frame),
10939                                           bp_watchpoint_scope,
10940                                           &momentary_breakpoint_ops);
10941
10942           scope_breakpoint->enable_state = bp_enabled;
10943
10944           /* Automatically delete the breakpoint when it hits.  */
10945           scope_breakpoint->disposition = disp_del;
10946
10947           /* Only break in the proper frame (help with recursion).  */
10948           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10949
10950           /* Set the address at which we will stop.  */
10951           scope_breakpoint->loc->gdbarch
10952             = frame_unwind_caller_arch (frame);
10953           scope_breakpoint->loc->requested_address
10954             = frame_unwind_caller_pc (frame);
10955           scope_breakpoint->loc->address
10956             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10957                                          scope_breakpoint->loc->requested_address,
10958                                          scope_breakpoint->type);
10959         }
10960     }
10961
10962   /* Now set up the breakpoint.  */
10963
10964   w = XCNEW (struct watchpoint);
10965   b = &w->base;
10966   if (use_mask)
10967     init_raw_breakpoint_without_location (b, NULL, bp_type,
10968                                           &masked_watchpoint_breakpoint_ops);
10969   else
10970     init_raw_breakpoint_without_location (b, NULL, bp_type,
10971                                           &watchpoint_breakpoint_ops);
10972   b->thread = thread;
10973   b->disposition = disp_donttouch;
10974   b->pspace = current_program_space;
10975   w->exp = exp;
10976   w->exp_valid_block = exp_valid_block;
10977   w->cond_exp_valid_block = cond_exp_valid_block;
10978   if (just_location)
10979     {
10980       struct type *t = value_type (val);
10981       CORE_ADDR addr = value_as_address (val);
10982       char *name;
10983
10984       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10985       name = type_to_string (t);
10986
10987       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10988                                           core_addr_to_string (addr));
10989       xfree (name);
10990
10991       w->exp_string = xstrprintf ("-location %.*s",
10992                                   (int) (exp_end - exp_start), exp_start);
10993
10994       /* The above expression is in C.  */
10995       b->language = language_c;
10996     }
10997   else
10998     w->exp_string = savestring (exp_start, exp_end - exp_start);
10999
11000   if (use_mask)
11001     {
11002       w->hw_wp_mask = mask;
11003     }
11004   else
11005     {
11006       w->val = val;
11007       w->val_valid = 1;
11008     }
11009
11010   if (cond_start)
11011     b->cond_string = savestring (cond_start, cond_end - cond_start);
11012   else
11013     b->cond_string = 0;
11014
11015   if (frame)
11016     {
11017       w->watchpoint_frame = get_frame_id (frame);
11018       w->watchpoint_thread = inferior_ptid;
11019     }
11020   else
11021     {
11022       w->watchpoint_frame = null_frame_id;
11023       w->watchpoint_thread = null_ptid;
11024     }
11025
11026   if (scope_breakpoint != NULL)
11027     {
11028       /* The scope breakpoint is related to the watchpoint.  We will
11029          need to act on them together.  */
11030       b->related_breakpoint = scope_breakpoint;
11031       scope_breakpoint->related_breakpoint = b;
11032     }
11033
11034   if (!just_location)
11035     value_free_to_mark (mark);
11036
11037   TRY_CATCH (e, RETURN_MASK_ALL)
11038     {
11039       /* Finally update the new watchpoint.  This creates the locations
11040          that should be inserted.  */
11041       update_watchpoint (w, 1);
11042     }
11043   if (e.reason < 0)
11044     {
11045       delete_breakpoint (b);
11046       throw_exception (e);
11047     }
11048
11049   install_breakpoint (internal, b, 1);
11050 }
11051
11052 /* Return count of debug registers needed to watch the given expression.
11053    If the watchpoint cannot be handled in hardware return zero.  */
11054
11055 static int
11056 can_use_hardware_watchpoint (struct value *v)
11057 {
11058   int found_memory_cnt = 0;
11059   struct value *head = v;
11060
11061   /* Did the user specifically forbid us to use hardware watchpoints? */
11062   if (!can_use_hw_watchpoints)
11063     return 0;
11064
11065   /* Make sure that the value of the expression depends only upon
11066      memory contents, and values computed from them within GDB.  If we
11067      find any register references or function calls, we can't use a
11068      hardware watchpoint.
11069
11070      The idea here is that evaluating an expression generates a series
11071      of values, one holding the value of every subexpression.  (The
11072      expression a*b+c has five subexpressions: a, b, a*b, c, and
11073      a*b+c.)  GDB's values hold almost enough information to establish
11074      the criteria given above --- they identify memory lvalues,
11075      register lvalues, computed values, etcetera.  So we can evaluate
11076      the expression, and then scan the chain of values that leaves
11077      behind to decide whether we can detect any possible change to the
11078      expression's final value using only hardware watchpoints.
11079
11080      However, I don't think that the values returned by inferior
11081      function calls are special in any way.  So this function may not
11082      notice that an expression involving an inferior function call
11083      can't be watched with hardware watchpoints.  FIXME.  */
11084   for (; v; v = value_next (v))
11085     {
11086       if (VALUE_LVAL (v) == lval_memory)
11087         {
11088           if (v != head && value_lazy (v))
11089             /* A lazy memory lvalue in the chain is one that GDB never
11090                needed to fetch; we either just used its address (e.g.,
11091                `a' in `a.b') or we never needed it at all (e.g., `a'
11092                in `a,b').  This doesn't apply to HEAD; if that is
11093                lazy then it was not readable, but watch it anyway.  */
11094             ;
11095           else
11096             {
11097               /* Ahh, memory we actually used!  Check if we can cover
11098                  it with hardware watchpoints.  */
11099               struct type *vtype = check_typedef (value_type (v));
11100
11101               /* We only watch structs and arrays if user asked for it
11102                  explicitly, never if they just happen to appear in a
11103                  middle of some value chain.  */
11104               if (v == head
11105                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11106                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11107                 {
11108                   CORE_ADDR vaddr = value_address (v);
11109                   int len;
11110                   int num_regs;
11111
11112                   len = (target_exact_watchpoints
11113                          && is_scalar_type_recursive (vtype))?
11114                     1 : TYPE_LENGTH (value_type (v));
11115
11116                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11117                   if (!num_regs)
11118                     return 0;
11119                   else
11120                     found_memory_cnt += num_regs;
11121                 }
11122             }
11123         }
11124       else if (VALUE_LVAL (v) != not_lval
11125                && deprecated_value_modifiable (v) == 0)
11126         return 0;       /* These are values from the history (e.g., $1).  */
11127       else if (VALUE_LVAL (v) == lval_register)
11128         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11129     }
11130
11131   /* The expression itself looks suitable for using a hardware
11132      watchpoint, but give the target machine a chance to reject it.  */
11133   return found_memory_cnt;
11134 }
11135
11136 void
11137 watch_command_wrapper (char *arg, int from_tty, int internal)
11138 {
11139   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11140 }
11141
11142 /* A helper function that looks for the "-location" argument and then
11143    calls watch_command_1.  */
11144
11145 static void
11146 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11147 {
11148   int just_location = 0;
11149
11150   if (arg
11151       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11152           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11153     {
11154       arg = skip_spaces (arg);
11155       just_location = 1;
11156     }
11157
11158   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11159 }
11160
11161 static void
11162 watch_command (char *arg, int from_tty)
11163 {
11164   watch_maybe_just_location (arg, hw_write, from_tty);
11165 }
11166
11167 void
11168 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11169 {
11170   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11171 }
11172
11173 static void
11174 rwatch_command (char *arg, int from_tty)
11175 {
11176   watch_maybe_just_location (arg, hw_read, from_tty);
11177 }
11178
11179 void
11180 awatch_command_wrapper (char *arg, int from_tty, int internal)
11181 {
11182   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11183 }
11184
11185 static void
11186 awatch_command (char *arg, int from_tty)
11187 {
11188   watch_maybe_just_location (arg, hw_access, from_tty);
11189 }
11190 \f
11191
11192 /* Helper routines for the until_command routine in infcmd.c.  Here
11193    because it uses the mechanisms of breakpoints.  */
11194
11195 struct until_break_command_continuation_args
11196 {
11197   struct breakpoint *breakpoint;
11198   struct breakpoint *breakpoint2;
11199   int thread_num;
11200 };
11201
11202 /* This function is called by fetch_inferior_event via the
11203    cmd_continuation pointer, to complete the until command.  It takes
11204    care of cleaning up the temporary breakpoints set up by the until
11205    command.  */
11206 static void
11207 until_break_command_continuation (void *arg, int err)
11208 {
11209   struct until_break_command_continuation_args *a = arg;
11210
11211   delete_breakpoint (a->breakpoint);
11212   if (a->breakpoint2)
11213     delete_breakpoint (a->breakpoint2);
11214   delete_longjmp_breakpoint (a->thread_num);
11215 }
11216
11217 void
11218 until_break_command (char *arg, int from_tty, int anywhere)
11219 {
11220   struct symtabs_and_lines sals;
11221   struct symtab_and_line sal;
11222   struct frame_info *frame;
11223   struct gdbarch *frame_gdbarch;
11224   struct frame_id stack_frame_id;
11225   struct frame_id caller_frame_id;
11226   struct breakpoint *breakpoint;
11227   struct breakpoint *breakpoint2 = NULL;
11228   struct cleanup *old_chain;
11229   int thread;
11230   struct thread_info *tp;
11231
11232   clear_proceed_status ();
11233
11234   /* Set a breakpoint where the user wants it and at return from
11235      this function.  */
11236
11237   if (last_displayed_sal_is_valid ())
11238     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11239                           get_last_displayed_symtab (),
11240                           get_last_displayed_line ());
11241   else
11242     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11243                           (struct symtab *) NULL, 0);
11244
11245   if (sals.nelts != 1)
11246     error (_("Couldn't get information on specified line."));
11247
11248   sal = sals.sals[0];
11249   xfree (sals.sals);    /* malloc'd, so freed.  */
11250
11251   if (*arg)
11252     error (_("Junk at end of arguments."));
11253
11254   resolve_sal_pc (&sal);
11255
11256   tp = inferior_thread ();
11257   thread = tp->num;
11258
11259   old_chain = make_cleanup (null_cleanup, NULL);
11260
11261   /* Note linespec handling above invalidates the frame chain.
11262      Installing a breakpoint also invalidates the frame chain (as it
11263      may need to switch threads), so do any frame handling before
11264      that.  */
11265
11266   frame = get_selected_frame (NULL);
11267   frame_gdbarch = get_frame_arch (frame);
11268   stack_frame_id = get_stack_frame_id (frame);
11269   caller_frame_id = frame_unwind_caller_id (frame);
11270
11271   /* Keep within the current frame, or in frames called by the current
11272      one.  */
11273
11274   if (frame_id_p (caller_frame_id))
11275     {
11276       struct symtab_and_line sal2;
11277
11278       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11279       sal2.pc = frame_unwind_caller_pc (frame);
11280       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11281                                               sal2,
11282                                               caller_frame_id,
11283                                               bp_until);
11284       make_cleanup_delete_breakpoint (breakpoint2);
11285
11286       set_longjmp_breakpoint (tp, caller_frame_id);
11287       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11288     }
11289
11290   /* set_momentary_breakpoint could invalidate FRAME.  */
11291   frame = NULL;
11292
11293   if (anywhere)
11294     /* If the user told us to continue until a specified location,
11295        we don't specify a frame at which we need to stop.  */
11296     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11297                                            null_frame_id, bp_until);
11298   else
11299     /* Otherwise, specify the selected frame, because we want to stop
11300        only at the very same frame.  */
11301     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11302                                            stack_frame_id, bp_until);
11303   make_cleanup_delete_breakpoint (breakpoint);
11304
11305   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11306
11307   /* If we are running asynchronously, and proceed call above has
11308      actually managed to start the target, arrange for breakpoints to
11309      be deleted when the target stops.  Otherwise, we're already
11310      stopped and delete breakpoints via cleanup chain.  */
11311
11312   if (target_can_async_p () && is_running (inferior_ptid))
11313     {
11314       struct until_break_command_continuation_args *args;
11315       args = xmalloc (sizeof (*args));
11316
11317       args->breakpoint = breakpoint;
11318       args->breakpoint2 = breakpoint2;
11319       args->thread_num = thread;
11320
11321       discard_cleanups (old_chain);
11322       add_continuation (inferior_thread (),
11323                         until_break_command_continuation, args,
11324                         xfree);
11325     }
11326   else
11327     do_cleanups (old_chain);
11328 }
11329
11330 /* This function attempts to parse an optional "if <cond>" clause
11331    from the arg string.  If one is not found, it returns NULL.
11332
11333    Else, it returns a pointer to the condition string.  (It does not
11334    attempt to evaluate the string against a particular block.)  And,
11335    it updates arg to point to the first character following the parsed
11336    if clause in the arg string.  */
11337
11338 static char *
11339 ep_parse_optional_if_clause (char **arg)
11340 {
11341   char *cond_string;
11342
11343   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11344     return NULL;
11345
11346   /* Skip the "if" keyword.  */
11347   (*arg) += 2;
11348
11349   /* Skip any extra leading whitespace, and record the start of the
11350      condition string.  */
11351   *arg = skip_spaces (*arg);
11352   cond_string = *arg;
11353
11354   /* Assume that the condition occupies the remainder of the arg
11355      string.  */
11356   (*arg) += strlen (cond_string);
11357
11358   return cond_string;
11359 }
11360
11361 /* Commands to deal with catching events, such as signals, exceptions,
11362    process start/exit, etc.  */
11363
11364 typedef enum
11365 {
11366   catch_fork_temporary, catch_vfork_temporary,
11367   catch_fork_permanent, catch_vfork_permanent
11368 }
11369 catch_fork_kind;
11370
11371 static void
11372 catch_fork_command_1 (char *arg, int from_tty, 
11373                       struct cmd_list_element *command)
11374 {
11375   struct gdbarch *gdbarch = get_current_arch ();
11376   char *cond_string = NULL;
11377   catch_fork_kind fork_kind;
11378   int tempflag;
11379
11380   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11381   tempflag = (fork_kind == catch_fork_temporary
11382               || fork_kind == catch_vfork_temporary);
11383
11384   if (!arg)
11385     arg = "";
11386   arg = skip_spaces (arg);
11387
11388   /* The allowed syntax is:
11389      catch [v]fork
11390      catch [v]fork if <cond>
11391
11392      First, check if there's an if clause.  */
11393   cond_string = ep_parse_optional_if_clause (&arg);
11394
11395   if ((*arg != '\0') && !isspace (*arg))
11396     error (_("Junk at end of arguments."));
11397
11398   /* If this target supports it, create a fork or vfork catchpoint
11399      and enable reporting of such events.  */
11400   switch (fork_kind)
11401     {
11402     case catch_fork_temporary:
11403     case catch_fork_permanent:
11404       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11405                                           &catch_fork_breakpoint_ops);
11406       break;
11407     case catch_vfork_temporary:
11408     case catch_vfork_permanent:
11409       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11410                                           &catch_vfork_breakpoint_ops);
11411       break;
11412     default:
11413       error (_("unsupported or unknown fork kind; cannot catch it"));
11414       break;
11415     }
11416 }
11417
11418 static void
11419 catch_exec_command_1 (char *arg, int from_tty, 
11420                       struct cmd_list_element *command)
11421 {
11422   struct exec_catchpoint *c;
11423   struct gdbarch *gdbarch = get_current_arch ();
11424   int tempflag;
11425   char *cond_string = NULL;
11426
11427   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11428
11429   if (!arg)
11430     arg = "";
11431   arg = skip_spaces (arg);
11432
11433   /* The allowed syntax is:
11434      catch exec
11435      catch exec if <cond>
11436
11437      First, check if there's an if clause.  */
11438   cond_string = ep_parse_optional_if_clause (&arg);
11439
11440   if ((*arg != '\0') && !isspace (*arg))
11441     error (_("Junk at end of arguments."));
11442
11443   c = XNEW (struct exec_catchpoint);
11444   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11445                    &catch_exec_breakpoint_ops);
11446   c->exec_pathname = NULL;
11447
11448   install_breakpoint (0, &c->base, 1);
11449 }
11450
11451 static enum print_stop_action
11452 print_it_exception_catchpoint (bpstat bs)
11453 {
11454   struct ui_out *uiout = current_uiout;
11455   struct breakpoint *b = bs->breakpoint_at;
11456   int bp_temp, bp_throw;
11457
11458   annotate_catchpoint (b->number);
11459
11460   bp_throw = strstr (b->addr_string, "throw") != NULL;
11461   if (b->loc->address != b->loc->requested_address)
11462     breakpoint_adjustment_warning (b->loc->requested_address,
11463                                    b->loc->address,
11464                                    b->number, 1);
11465   bp_temp = b->disposition == disp_del;
11466   ui_out_text (uiout, 
11467                bp_temp ? "Temporary catchpoint "
11468                        : "Catchpoint ");
11469   if (!ui_out_is_mi_like_p (uiout))
11470     ui_out_field_int (uiout, "bkptno", b->number);
11471   ui_out_text (uiout,
11472                bp_throw ? " (exception thrown), "
11473                         : " (exception caught), ");
11474   if (ui_out_is_mi_like_p (uiout))
11475     {
11476       ui_out_field_string (uiout, "reason", 
11477                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11478       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11479       ui_out_field_int (uiout, "bkptno", b->number);
11480     }
11481   return PRINT_SRC_AND_LOC;
11482 }
11483
11484 static void
11485 print_one_exception_catchpoint (struct breakpoint *b, 
11486                                 struct bp_location **last_loc)
11487 {
11488   struct value_print_options opts;
11489   struct ui_out *uiout = current_uiout;
11490
11491   get_user_print_options (&opts);
11492   if (opts.addressprint)
11493     {
11494       annotate_field (4);
11495       if (b->loc == NULL || b->loc->shlib_disabled)
11496         ui_out_field_string (uiout, "addr", "<PENDING>");
11497       else
11498         ui_out_field_core_addr (uiout, "addr",
11499                                 b->loc->gdbarch, b->loc->address);
11500     }
11501   annotate_field (5);
11502   if (b->loc)
11503     *last_loc = b->loc;
11504   if (strstr (b->addr_string, "throw") != NULL)
11505     ui_out_field_string (uiout, "what", "exception throw");
11506   else
11507     ui_out_field_string (uiout, "what", "exception catch");
11508 }
11509
11510 static void
11511 print_mention_exception_catchpoint (struct breakpoint *b)
11512 {
11513   struct ui_out *uiout = current_uiout;
11514   int bp_temp;
11515   int bp_throw;
11516
11517   bp_temp = b->disposition == disp_del;
11518   bp_throw = strstr (b->addr_string, "throw") != NULL;
11519   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11520                               : _("Catchpoint "));
11521   ui_out_field_int (uiout, "bkptno", b->number);
11522   ui_out_text (uiout, bp_throw ? _(" (throw)")
11523                                : _(" (catch)"));
11524 }
11525
11526 /* Implement the "print_recreate" breakpoint_ops method for throw and
11527    catch catchpoints.  */
11528
11529 static void
11530 print_recreate_exception_catchpoint (struct breakpoint *b, 
11531                                      struct ui_file *fp)
11532 {
11533   int bp_temp;
11534   int bp_throw;
11535
11536   bp_temp = b->disposition == disp_del;
11537   bp_throw = strstr (b->addr_string, "throw") != NULL;
11538   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11539   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11540   print_recreate_thread (b, fp);
11541 }
11542
11543 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11544
11545 static int
11546 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11547                           enum exception_event_kind ex_event, int from_tty)
11548 {
11549   char *trigger_func_name;
11550  
11551   if (ex_event == EX_EVENT_CATCH)
11552     trigger_func_name = "__cxa_begin_catch";
11553   else
11554     trigger_func_name = "__cxa_throw";
11555
11556   create_breakpoint (get_current_arch (),
11557                      trigger_func_name, cond_string, -1, NULL,
11558                      0 /* condition and thread are valid.  */,
11559                      tempflag, bp_breakpoint,
11560                      0,
11561                      AUTO_BOOLEAN_TRUE /* pending */,
11562                      &gnu_v3_exception_catchpoint_ops, from_tty,
11563                      1 /* enabled */,
11564                      0 /* internal */,
11565                      0);
11566
11567   return 1;
11568 }
11569
11570 /* Deal with "catch catch" and "catch throw" commands.  */
11571
11572 static void
11573 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11574                            int tempflag, int from_tty)
11575 {
11576   char *cond_string = NULL;
11577
11578   if (!arg)
11579     arg = "";
11580   arg = skip_spaces (arg);
11581
11582   cond_string = ep_parse_optional_if_clause (&arg);
11583
11584   if ((*arg != '\0') && !isspace (*arg))
11585     error (_("Junk at end of arguments."));
11586
11587   if (ex_event != EX_EVENT_THROW
11588       && ex_event != EX_EVENT_CATCH)
11589     error (_("Unsupported or unknown exception event; cannot catch it"));
11590
11591   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11592     return;
11593
11594   warning (_("Unsupported with this platform/compiler combination."));
11595 }
11596
11597 /* Implementation of "catch catch" command.  */
11598
11599 static void
11600 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11601 {
11602   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11603
11604   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11605 }
11606
11607 /* Implementation of "catch throw" command.  */
11608
11609 static void
11610 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11611 {
11612   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11613
11614   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11615 }
11616
11617 void
11618 init_ada_exception_breakpoint (struct breakpoint *b,
11619                                struct gdbarch *gdbarch,
11620                                struct symtab_and_line sal,
11621                                char *addr_string,
11622                                const struct breakpoint_ops *ops,
11623                                int tempflag,
11624                                int from_tty)
11625 {
11626   if (from_tty)
11627     {
11628       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11629       if (!loc_gdbarch)
11630         loc_gdbarch = gdbarch;
11631
11632       describe_other_breakpoints (loc_gdbarch,
11633                                   sal.pspace, sal.pc, sal.section, -1);
11634       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11635          version for exception catchpoints, because two catchpoints
11636          used for different exception names will use the same address.
11637          In this case, a "breakpoint ... also set at..." warning is
11638          unproductive.  Besides, the warning phrasing is also a bit
11639          inappropriate, we should use the word catchpoint, and tell
11640          the user what type of catchpoint it is.  The above is good
11641          enough for now, though.  */
11642     }
11643
11644   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11645
11646   b->enable_state = bp_enabled;
11647   b->disposition = tempflag ? disp_del : disp_donttouch;
11648   b->addr_string = addr_string;
11649   b->language = language_ada;
11650 }
11651
11652 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11653    filter list, or NULL if no filtering is required.  */
11654 static VEC(int) *
11655 catch_syscall_split_args (char *arg)
11656 {
11657   VEC(int) *result = NULL;
11658   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11659
11660   while (*arg != '\0')
11661     {
11662       int i, syscall_number;
11663       char *endptr;
11664       char cur_name[128];
11665       struct syscall s;
11666
11667       /* Skip whitespace.  */
11668       while (isspace (*arg))
11669         arg++;
11670
11671       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11672         cur_name[i] = arg[i];
11673       cur_name[i] = '\0';
11674       arg += i;
11675
11676       /* Check if the user provided a syscall name or a number.  */
11677       syscall_number = (int) strtol (cur_name, &endptr, 0);
11678       if (*endptr == '\0')
11679         get_syscall_by_number (syscall_number, &s);
11680       else
11681         {
11682           /* We have a name.  Let's check if it's valid and convert it
11683              to a number.  */
11684           get_syscall_by_name (cur_name, &s);
11685
11686           if (s.number == UNKNOWN_SYSCALL)
11687             /* Here we have to issue an error instead of a warning,
11688                because GDB cannot do anything useful if there's no
11689                syscall number to be caught.  */
11690             error (_("Unknown syscall name '%s'."), cur_name);
11691         }
11692
11693       /* Ok, it's valid.  */
11694       VEC_safe_push (int, result, s.number);
11695     }
11696
11697   discard_cleanups (cleanup);
11698   return result;
11699 }
11700
11701 /* Implement the "catch syscall" command.  */
11702
11703 static void
11704 catch_syscall_command_1 (char *arg, int from_tty, 
11705                          struct cmd_list_element *command)
11706 {
11707   int tempflag;
11708   VEC(int) *filter;
11709   struct syscall s;
11710   struct gdbarch *gdbarch = get_current_arch ();
11711
11712   /* Checking if the feature if supported.  */
11713   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11714     error (_("The feature 'catch syscall' is not supported on \
11715 this architecture yet."));
11716
11717   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11718
11719   arg = skip_spaces (arg);
11720
11721   /* We need to do this first "dummy" translation in order
11722      to get the syscall XML file loaded or, most important,
11723      to display a warning to the user if there's no XML file
11724      for his/her architecture.  */
11725   get_syscall_by_number (0, &s);
11726
11727   /* The allowed syntax is:
11728      catch syscall
11729      catch syscall <name | number> [<name | number> ... <name | number>]
11730
11731      Let's check if there's a syscall name.  */
11732
11733   if (arg != NULL)
11734     filter = catch_syscall_split_args (arg);
11735   else
11736     filter = NULL;
11737
11738   create_syscall_event_catchpoint (tempflag, filter,
11739                                    &catch_syscall_breakpoint_ops);
11740 }
11741
11742 static void
11743 catch_command (char *arg, int from_tty)
11744 {
11745   error (_("Catch requires an event name."));
11746 }
11747 \f
11748
11749 static void
11750 tcatch_command (char *arg, int from_tty)
11751 {
11752   error (_("Catch requires an event name."));
11753 }
11754
11755 /* A qsort comparison function that sorts breakpoints in order.  */
11756
11757 static int
11758 compare_breakpoints (const void *a, const void *b)
11759 {
11760   const breakpoint_p *ba = a;
11761   uintptr_t ua = (uintptr_t) *ba;
11762   const breakpoint_p *bb = b;
11763   uintptr_t ub = (uintptr_t) *bb;
11764
11765   if ((*ba)->number < (*bb)->number)
11766     return -1;
11767   else if ((*ba)->number > (*bb)->number)
11768     return 1;
11769
11770   /* Now sort by address, in case we see, e..g, two breakpoints with
11771      the number 0.  */
11772   if (ua < ub)
11773     return -1;
11774   return ua > ub ? 1 : 0;
11775 }
11776
11777 /* Delete breakpoints by address or line.  */
11778
11779 static void
11780 clear_command (char *arg, int from_tty)
11781 {
11782   struct breakpoint *b, *prev;
11783   VEC(breakpoint_p) *found = 0;
11784   int ix;
11785   int default_match;
11786   struct symtabs_and_lines sals;
11787   struct symtab_and_line sal;
11788   int i;
11789   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11790
11791   if (arg)
11792     {
11793       sals = decode_line_with_current_source (arg,
11794                                               (DECODE_LINE_FUNFIRSTLINE
11795                                                | DECODE_LINE_LIST_MODE));
11796       make_cleanup (xfree, sals.sals);
11797       default_match = 0;
11798     }
11799   else
11800     {
11801       sals.sals = (struct symtab_and_line *)
11802         xmalloc (sizeof (struct symtab_and_line));
11803       make_cleanup (xfree, sals.sals);
11804       init_sal (&sal);          /* Initialize to zeroes.  */
11805
11806       /* Set sal's line, symtab, pc, and pspace to the values
11807          corresponding to the last call to print_frame_info.  If the
11808          codepoint is not valid, this will set all the fields to 0.  */
11809       get_last_displayed_sal (&sal);
11810       if (sal.symtab == 0)
11811         error (_("No source file specified."));
11812
11813       sals.sals[0] = sal;
11814       sals.nelts = 1;
11815
11816       default_match = 1;
11817     }
11818
11819   /* We don't call resolve_sal_pc here.  That's not as bad as it
11820      seems, because all existing breakpoints typically have both
11821      file/line and pc set.  So, if clear is given file/line, we can
11822      match this to existing breakpoint without obtaining pc at all.
11823
11824      We only support clearing given the address explicitly 
11825      present in breakpoint table.  Say, we've set breakpoint 
11826      at file:line.  There were several PC values for that file:line,
11827      due to optimization, all in one block.
11828
11829      We've picked one PC value.  If "clear" is issued with another
11830      PC corresponding to the same file:line, the breakpoint won't
11831      be cleared.  We probably can still clear the breakpoint, but 
11832      since the other PC value is never presented to user, user
11833      can only find it by guessing, and it does not seem important
11834      to support that.  */
11835
11836   /* For each line spec given, delete bps which correspond to it.  Do
11837      it in two passes, solely to preserve the current behavior that
11838      from_tty is forced true if we delete more than one
11839      breakpoint.  */
11840
11841   found = NULL;
11842   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11843   for (i = 0; i < sals.nelts; i++)
11844     {
11845       int is_abs, sal_name_len;
11846
11847       /* If exact pc given, clear bpts at that pc.
11848          If line given (pc == 0), clear all bpts on specified line.
11849          If defaulting, clear all bpts on default line
11850          or at default pc.
11851
11852          defaulting    sal.pc != 0    tests to do
11853
11854          0              1             pc
11855          1              1             pc _and_ line
11856          0              0             line
11857          1              0             <can't happen> */
11858
11859       sal = sals.sals[i];
11860       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11861       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11862
11863       /* Find all matching breakpoints and add them to 'found'.  */
11864       ALL_BREAKPOINTS (b)
11865         {
11866           int match = 0;
11867           /* Are we going to delete b?  */
11868           if (b->type != bp_none && !is_watchpoint (b))
11869             {
11870               struct bp_location *loc = b->loc;
11871               for (; loc; loc = loc->next)
11872                 {
11873                   /* If the user specified file:line, don't allow a PC
11874                      match.  This matches historical gdb behavior.  */
11875                   int pc_match = (!sal.explicit_line
11876                                   && sal.pc
11877                                   && (loc->pspace == sal.pspace)
11878                                   && (loc->address == sal.pc)
11879                                   && (!section_is_overlay (loc->section)
11880                                       || loc->section == sal.section));
11881                   int line_match = 0;
11882
11883                   if ((default_match || sal.explicit_line)
11884                       && loc->source_file != NULL
11885                       && sal.symtab != NULL
11886                       && sal.pspace == loc->pspace
11887                       && loc->line_number == sal.line)
11888                     {
11889                       if (filename_cmp (loc->source_file,
11890                                         sal.symtab->filename) == 0)
11891                         line_match = 1;
11892                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11893                                && compare_filenames_for_search (loc->source_file,
11894                                                                 sal.symtab->filename,
11895                                                                 sal_name_len))
11896                         line_match = 1;
11897                     }
11898
11899                   if (pc_match || line_match)
11900                     {
11901                       match = 1;
11902                       break;
11903                     }
11904                 }
11905             }
11906
11907           if (match)
11908             VEC_safe_push(breakpoint_p, found, b);
11909         }
11910     }
11911
11912   /* Now go thru the 'found' chain and delete them.  */
11913   if (VEC_empty(breakpoint_p, found))
11914     {
11915       if (arg)
11916         error (_("No breakpoint at %s."), arg);
11917       else
11918         error (_("No breakpoint at this line."));
11919     }
11920
11921   /* Remove duplicates from the vec.  */
11922   qsort (VEC_address (breakpoint_p, found),
11923          VEC_length (breakpoint_p, found),
11924          sizeof (breakpoint_p),
11925          compare_breakpoints);
11926   prev = VEC_index (breakpoint_p, found, 0);
11927   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11928     {
11929       if (b == prev)
11930         {
11931           VEC_ordered_remove (breakpoint_p, found, ix);
11932           --ix;
11933         }
11934     }
11935
11936   if (VEC_length(breakpoint_p, found) > 1)
11937     from_tty = 1;       /* Always report if deleted more than one.  */
11938   if (from_tty)
11939     {
11940       if (VEC_length(breakpoint_p, found) == 1)
11941         printf_unfiltered (_("Deleted breakpoint "));
11942       else
11943         printf_unfiltered (_("Deleted breakpoints "));
11944     }
11945   annotate_breakpoints_changed ();
11946
11947   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11948     {
11949       if (from_tty)
11950         printf_unfiltered ("%d ", b->number);
11951       delete_breakpoint (b);
11952     }
11953   if (from_tty)
11954     putchar_unfiltered ('\n');
11955
11956   do_cleanups (cleanups);
11957 }
11958 \f
11959 /* Delete breakpoint in BS if they are `delete' breakpoints and
11960    all breakpoints that are marked for deletion, whether hit or not.
11961    This is called after any breakpoint is hit, or after errors.  */
11962
11963 void
11964 breakpoint_auto_delete (bpstat bs)
11965 {
11966   struct breakpoint *b, *b_tmp;
11967
11968   for (; bs; bs = bs->next)
11969     if (bs->breakpoint_at
11970         && bs->breakpoint_at->disposition == disp_del
11971         && bs->stop)
11972       delete_breakpoint (bs->breakpoint_at);
11973
11974   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11975   {
11976     if (b->disposition == disp_del_at_next_stop)
11977       delete_breakpoint (b);
11978   }
11979 }
11980
11981 /* A comparison function for bp_location AP and BP being interfaced to
11982    qsort.  Sort elements primarily by their ADDRESS (no matter what
11983    does breakpoint_address_is_meaningful say for its OWNER),
11984    secondarily by ordering first bp_permanent OWNERed elements and
11985    terciarily just ensuring the array is sorted stable way despite
11986    qsort being an unstable algorithm.  */
11987
11988 static int
11989 bp_location_compare (const void *ap, const void *bp)
11990 {
11991   struct bp_location *a = *(void **) ap;
11992   struct bp_location *b = *(void **) bp;
11993   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11994   int a_perm = a->owner->enable_state == bp_permanent;
11995   int b_perm = b->owner->enable_state == bp_permanent;
11996
11997   if (a->address != b->address)
11998     return (a->address > b->address) - (a->address < b->address);
11999
12000   /* Sort locations at the same address by their pspace number, keeping
12001      locations of the same inferior (in a multi-inferior environment)
12002      grouped.  */
12003
12004   if (a->pspace->num != b->pspace->num)
12005     return ((a->pspace->num > b->pspace->num)
12006             - (a->pspace->num < b->pspace->num));
12007
12008   /* Sort permanent breakpoints first.  */
12009   if (a_perm != b_perm)
12010     return (a_perm < b_perm) - (a_perm > b_perm);
12011
12012   /* Make the internal GDB representation stable across GDB runs
12013      where A and B memory inside GDB can differ.  Breakpoint locations of
12014      the same type at the same address can be sorted in arbitrary order.  */
12015
12016   if (a->owner->number != b->owner->number)
12017     return ((a->owner->number > b->owner->number)
12018             - (a->owner->number < b->owner->number));
12019
12020   return (a > b) - (a < b);
12021 }
12022
12023 /* Set bp_location_placed_address_before_address_max and
12024    bp_location_shadow_len_after_address_max according to the current
12025    content of the bp_location array.  */
12026
12027 static void
12028 bp_location_target_extensions_update (void)
12029 {
12030   struct bp_location *bl, **blp_tmp;
12031
12032   bp_location_placed_address_before_address_max = 0;
12033   bp_location_shadow_len_after_address_max = 0;
12034
12035   ALL_BP_LOCATIONS (bl, blp_tmp)
12036     {
12037       CORE_ADDR start, end, addr;
12038
12039       if (!bp_location_has_shadow (bl))
12040         continue;
12041
12042       start = bl->target_info.placed_address;
12043       end = start + bl->target_info.shadow_len;
12044
12045       gdb_assert (bl->address >= start);
12046       addr = bl->address - start;
12047       if (addr > bp_location_placed_address_before_address_max)
12048         bp_location_placed_address_before_address_max = addr;
12049
12050       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12051
12052       gdb_assert (bl->address < end);
12053       addr = end - bl->address;
12054       if (addr > bp_location_shadow_len_after_address_max)
12055         bp_location_shadow_len_after_address_max = addr;
12056     }
12057 }
12058
12059 /* Download tracepoint locations if they haven't been.  */
12060
12061 static void
12062 download_tracepoint_locations (void)
12063 {
12064   struct bp_location *bl, **blp_tmp;
12065   struct cleanup *old_chain;
12066
12067   if (!target_can_download_tracepoint ())
12068     return;
12069
12070   old_chain = save_current_space_and_thread ();
12071
12072   ALL_BP_LOCATIONS (bl, blp_tmp)
12073     {
12074       struct tracepoint *t;
12075
12076       if (!is_tracepoint (bl->owner))
12077         continue;
12078
12079       if ((bl->owner->type == bp_fast_tracepoint
12080            ? !may_insert_fast_tracepoints
12081            : !may_insert_tracepoints))
12082         continue;
12083
12084       /* In tracepoint, locations are _never_ duplicated, so
12085          should_be_inserted is equivalent to
12086          unduplicated_should_be_inserted.  */
12087       if (!should_be_inserted (bl) || bl->inserted)
12088         continue;
12089
12090       switch_to_program_space_and_thread (bl->pspace);
12091
12092       target_download_tracepoint (bl);
12093
12094       bl->inserted = 1;
12095       t = (struct tracepoint *) bl->owner;
12096       t->number_on_target = bl->owner->number;
12097     }
12098
12099   do_cleanups (old_chain);
12100 }
12101
12102 /* Swap the insertion/duplication state between two locations.  */
12103
12104 static void
12105 swap_insertion (struct bp_location *left, struct bp_location *right)
12106 {
12107   const int left_inserted = left->inserted;
12108   const int left_duplicate = left->duplicate;
12109   const int left_needs_update = left->needs_update;
12110   const struct bp_target_info left_target_info = left->target_info;
12111
12112   /* Locations of tracepoints can never be duplicated.  */
12113   if (is_tracepoint (left->owner))
12114     gdb_assert (!left->duplicate);
12115   if (is_tracepoint (right->owner))
12116     gdb_assert (!right->duplicate);
12117
12118   left->inserted = right->inserted;
12119   left->duplicate = right->duplicate;
12120   left->needs_update = right->needs_update;
12121   left->target_info = right->target_info;
12122   right->inserted = left_inserted;
12123   right->duplicate = left_duplicate;
12124   right->needs_update = left_needs_update;
12125   right->target_info = left_target_info;
12126 }
12127
12128 /* Force the re-insertion of the locations at ADDRESS.  This is called
12129    once a new/deleted/modified duplicate location is found and we are evaluating
12130    conditions on the target's side.  Such conditions need to be updated on
12131    the target.  */
12132
12133 static void
12134 force_breakpoint_reinsertion (struct bp_location *bl)
12135 {
12136   struct bp_location **locp = NULL, **loc2p;
12137   struct bp_location *loc;
12138   CORE_ADDR address = 0;
12139   int pspace_num;
12140
12141   address = bl->address;
12142   pspace_num = bl->pspace->num;
12143
12144   /* This is only meaningful if the target is
12145      evaluating conditions and if the user has
12146      opted for condition evaluation on the target's
12147      side.  */
12148   if (gdb_evaluates_breakpoint_condition_p ()
12149       || !target_supports_evaluation_of_breakpoint_conditions ())
12150     return;
12151
12152   /* Flag all breakpoint locations with this address and
12153      the same program space as the location
12154      as "its condition has changed".  We need to
12155      update the conditions on the target's side.  */
12156   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12157     {
12158       loc = *loc2p;
12159
12160       if (!is_breakpoint (loc->owner)
12161           || pspace_num != loc->pspace->num)
12162         continue;
12163
12164       /* Flag the location appropriately.  We use a different state to
12165          let everyone know that we already updated the set of locations
12166          with addr bl->address and program space bl->pspace.  This is so
12167          we don't have to keep calling these functions just to mark locations
12168          that have already been marked.  */
12169       loc->condition_changed = condition_updated;
12170
12171       /* Free the agent expression bytecode as well.  We will compute
12172          it later on.  */
12173       if (loc->cond_bytecode)
12174         {
12175           free_agent_expr (loc->cond_bytecode);
12176           loc->cond_bytecode = NULL;
12177         }
12178     }
12179 }
12180
12181 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12182    into the inferior, only remove already-inserted locations that no
12183    longer should be inserted.  Functions that delete a breakpoint or
12184    breakpoints should pass false, so that deleting a breakpoint
12185    doesn't have the side effect of inserting the locations of other
12186    breakpoints that are marked not-inserted, but should_be_inserted
12187    returns true on them.
12188
12189    This behaviour is useful is situations close to tear-down -- e.g.,
12190    after an exec, while the target still has execution, but breakpoint
12191    shadows of the previous executable image should *NOT* be restored
12192    to the new image; or before detaching, where the target still has
12193    execution and wants to delete breakpoints from GDB's lists, and all
12194    breakpoints had already been removed from the inferior.  */
12195
12196 static void
12197 update_global_location_list (int should_insert)
12198 {
12199   struct breakpoint *b;
12200   struct bp_location **locp, *loc;
12201   struct cleanup *cleanups;
12202   /* Last breakpoint location address that was marked for update.  */
12203   CORE_ADDR last_addr = 0;
12204   /* Last breakpoint location program space that was marked for update.  */
12205   int last_pspace_num = -1;
12206
12207   /* Used in the duplicates detection below.  When iterating over all
12208      bp_locations, points to the first bp_location of a given address.
12209      Breakpoints and watchpoints of different types are never
12210      duplicates of each other.  Keep one pointer for each type of
12211      breakpoint/watchpoint, so we only need to loop over all locations
12212      once.  */
12213   struct bp_location *bp_loc_first;  /* breakpoint */
12214   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12215   struct bp_location *awp_loc_first; /* access watchpoint */
12216   struct bp_location *rwp_loc_first; /* read watchpoint */
12217
12218   /* Saved former bp_location array which we compare against the newly
12219      built bp_location from the current state of ALL_BREAKPOINTS.  */
12220   struct bp_location **old_location, **old_locp;
12221   unsigned old_location_count;
12222
12223   old_location = bp_location;
12224   old_location_count = bp_location_count;
12225   bp_location = NULL;
12226   bp_location_count = 0;
12227   cleanups = make_cleanup (xfree, old_location);
12228
12229   ALL_BREAKPOINTS (b)
12230     for (loc = b->loc; loc; loc = loc->next)
12231       bp_location_count++;
12232
12233   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12234   locp = bp_location;
12235   ALL_BREAKPOINTS (b)
12236     for (loc = b->loc; loc; loc = loc->next)
12237       *locp++ = loc;
12238   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12239          bp_location_compare);
12240
12241   bp_location_target_extensions_update ();
12242
12243   /* Identify bp_location instances that are no longer present in the
12244      new list, and therefore should be freed.  Note that it's not
12245      necessary that those locations should be removed from inferior --
12246      if there's another location at the same address (previously
12247      marked as duplicate), we don't need to remove/insert the
12248      location.
12249      
12250      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12251      and former bp_location array state respectively.  */
12252
12253   locp = bp_location;
12254   for (old_locp = old_location; old_locp < old_location + old_location_count;
12255        old_locp++)
12256     {
12257       struct bp_location *old_loc = *old_locp;
12258       struct bp_location **loc2p;
12259
12260       /* Tells if 'old_loc' is found among the new locations.  If
12261          not, we have to free it.  */
12262       int found_object = 0;
12263       /* Tells if the location should remain inserted in the target.  */
12264       int keep_in_target = 0;
12265       int removed = 0;
12266
12267       /* Skip LOCP entries which will definitely never be needed.
12268          Stop either at or being the one matching OLD_LOC.  */
12269       while (locp < bp_location + bp_location_count
12270              && (*locp)->address < old_loc->address)
12271         locp++;
12272
12273       for (loc2p = locp;
12274            (loc2p < bp_location + bp_location_count
12275             && (*loc2p)->address == old_loc->address);
12276            loc2p++)
12277         {
12278           /* Check if this is a new/duplicated location or a duplicated
12279              location that had its condition modified.  If so, we want to send
12280              its condition to the target if evaluation of conditions is taking
12281              place there.  */
12282           if ((*loc2p)->condition_changed == condition_modified
12283               && (last_addr != old_loc->address
12284                   || last_pspace_num != old_loc->pspace->num))
12285             {
12286               force_breakpoint_reinsertion (*loc2p);
12287               last_pspace_num = old_loc->pspace->num;
12288             }
12289
12290           if (*loc2p == old_loc)
12291             found_object = 1;
12292         }
12293
12294       /* We have already handled this address, update it so that we don't
12295          have to go through updates again.  */
12296       last_addr = old_loc->address;
12297
12298       /* Target-side condition evaluation: Handle deleted locations.  */
12299       if (!found_object)
12300         force_breakpoint_reinsertion (old_loc);
12301
12302       /* If this location is no longer present, and inserted, look if
12303          there's maybe a new location at the same address.  If so,
12304          mark that one inserted, and don't remove this one.  This is
12305          needed so that we don't have a time window where a breakpoint
12306          at certain location is not inserted.  */
12307
12308       if (old_loc->inserted)
12309         {
12310           /* If the location is inserted now, we might have to remove
12311              it.  */
12312
12313           if (found_object && should_be_inserted (old_loc))
12314             {
12315               /* The location is still present in the location list,
12316                  and still should be inserted.  Don't do anything.  */
12317               keep_in_target = 1;
12318             }
12319           else
12320             {
12321               /* This location still exists, but it won't be kept in the
12322                  target since it may have been disabled.  We proceed to
12323                  remove its target-side condition.  */
12324
12325               /* The location is either no longer present, or got
12326                  disabled.  See if there's another location at the
12327                  same address, in which case we don't need to remove
12328                  this one from the target.  */
12329
12330               /* OLD_LOC comes from existing struct breakpoint.  */
12331               if (breakpoint_address_is_meaningful (old_loc->owner))
12332                 {
12333                   for (loc2p = locp;
12334                        (loc2p < bp_location + bp_location_count
12335                         && (*loc2p)->address == old_loc->address);
12336                        loc2p++)
12337                     {
12338                       struct bp_location *loc2 = *loc2p;
12339
12340                       if (breakpoint_locations_match (loc2, old_loc))
12341                         {
12342                           /* Read watchpoint locations are switched to
12343                              access watchpoints, if the former are not
12344                              supported, but the latter are.  */
12345                           if (is_hardware_watchpoint (old_loc->owner))
12346                             {
12347                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12348                               loc2->watchpoint_type = old_loc->watchpoint_type;
12349                             }
12350
12351                           /* loc2 is a duplicated location. We need to check
12352                              if it should be inserted in case it will be
12353                              unduplicated.  */
12354                           if (loc2 != old_loc
12355                               && unduplicated_should_be_inserted (loc2))
12356                             {
12357                               swap_insertion (old_loc, loc2);
12358                               keep_in_target = 1;
12359                               break;
12360                             }
12361                         }
12362                     }
12363                 }
12364             }
12365
12366           if (!keep_in_target)
12367             {
12368               if (remove_breakpoint (old_loc, mark_uninserted))
12369                 {
12370                   /* This is just about all we can do.  We could keep
12371                      this location on the global list, and try to
12372                      remove it next time, but there's no particular
12373                      reason why we will succeed next time.
12374                      
12375                      Note that at this point, old_loc->owner is still
12376                      valid, as delete_breakpoint frees the breakpoint
12377                      only after calling us.  */
12378                   printf_filtered (_("warning: Error removing "
12379                                      "breakpoint %d\n"), 
12380                                    old_loc->owner->number);
12381                 }
12382               removed = 1;
12383             }
12384         }
12385
12386       if (!found_object)
12387         {
12388           if (removed && non_stop
12389               && breakpoint_address_is_meaningful (old_loc->owner)
12390               && !is_hardware_watchpoint (old_loc->owner))
12391             {
12392               /* This location was removed from the target.  In
12393                  non-stop mode, a race condition is possible where
12394                  we've removed a breakpoint, but stop events for that
12395                  breakpoint are already queued and will arrive later.
12396                  We apply an heuristic to be able to distinguish such
12397                  SIGTRAPs from other random SIGTRAPs: we keep this
12398                  breakpoint location for a bit, and will retire it
12399                  after we see some number of events.  The theory here
12400                  is that reporting of events should, "on the average",
12401                  be fair, so after a while we'll see events from all
12402                  threads that have anything of interest, and no longer
12403                  need to keep this breakpoint location around.  We
12404                  don't hold locations forever so to reduce chances of
12405                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12406                  SIGTRAP.
12407
12408                  The heuristic failing can be disastrous on
12409                  decr_pc_after_break targets.
12410
12411                  On decr_pc_after_break targets, like e.g., x86-linux,
12412                  if we fail to recognize a late breakpoint SIGTRAP,
12413                  because events_till_retirement has reached 0 too
12414                  soon, we'll fail to do the PC adjustment, and report
12415                  a random SIGTRAP to the user.  When the user resumes
12416                  the inferior, it will most likely immediately crash
12417                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12418                  corrupted, because of being resumed e.g., in the
12419                  middle of a multi-byte instruction, or skipped a
12420                  one-byte instruction.  This was actually seen happen
12421                  on native x86-linux, and should be less rare on
12422                  targets that do not support new thread events, like
12423                  remote, due to the heuristic depending on
12424                  thread_count.
12425
12426                  Mistaking a random SIGTRAP for a breakpoint trap
12427                  causes similar symptoms (PC adjustment applied when
12428                  it shouldn't), but then again, playing with SIGTRAPs
12429                  behind the debugger's back is asking for trouble.
12430
12431                  Since hardware watchpoint traps are always
12432                  distinguishable from other traps, so we don't need to
12433                  apply keep hardware watchpoint moribund locations
12434                  around.  We simply always ignore hardware watchpoint
12435                  traps we can no longer explain.  */
12436
12437               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12438               old_loc->owner = NULL;
12439
12440               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12441             }
12442           else
12443             {
12444               old_loc->owner = NULL;
12445               decref_bp_location (&old_loc);
12446             }
12447         }
12448     }
12449
12450   /* Rescan breakpoints at the same address and section, marking the
12451      first one as "first" and any others as "duplicates".  This is so
12452      that the bpt instruction is only inserted once.  If we have a
12453      permanent breakpoint at the same place as BPT, make that one the
12454      official one, and the rest as duplicates.  Permanent breakpoints
12455      are sorted first for the same address.
12456
12457      Do the same for hardware watchpoints, but also considering the
12458      watchpoint's type (regular/access/read) and length.  */
12459
12460   bp_loc_first = NULL;
12461   wp_loc_first = NULL;
12462   awp_loc_first = NULL;
12463   rwp_loc_first = NULL;
12464   ALL_BP_LOCATIONS (loc, locp)
12465     {
12466       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12467          non-NULL.  */
12468       struct bp_location **loc_first_p;
12469       b = loc->owner;
12470
12471       if (!unduplicated_should_be_inserted (loc)
12472           || !breakpoint_address_is_meaningful (b)
12473           /* Don't detect duplicate for tracepoint locations because they are
12474            never duplicated.  See the comments in field `duplicate' of
12475            `struct bp_location'.  */
12476           || is_tracepoint (b))
12477         {
12478           /* Clear the condition modification flag.  */
12479           loc->condition_changed = condition_unchanged;
12480           continue;
12481         }
12482
12483       /* Permanent breakpoint should always be inserted.  */
12484       if (b->enable_state == bp_permanent && ! loc->inserted)
12485         internal_error (__FILE__, __LINE__,
12486                         _("allegedly permanent breakpoint is not "
12487                         "actually inserted"));
12488
12489       if (b->type == bp_hardware_watchpoint)
12490         loc_first_p = &wp_loc_first;
12491       else if (b->type == bp_read_watchpoint)
12492         loc_first_p = &rwp_loc_first;
12493       else if (b->type == bp_access_watchpoint)
12494         loc_first_p = &awp_loc_first;
12495       else
12496         loc_first_p = &bp_loc_first;
12497
12498       if (*loc_first_p == NULL
12499           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12500           || !breakpoint_locations_match (loc, *loc_first_p))
12501         {
12502           *loc_first_p = loc;
12503           loc->duplicate = 0;
12504
12505           if (is_breakpoint (loc->owner) && loc->condition_changed)
12506             {
12507               loc->needs_update = 1;
12508               /* Clear the condition modification flag.  */
12509               loc->condition_changed = condition_unchanged;
12510             }
12511           continue;
12512         }
12513
12514
12515       /* This and the above ensure the invariant that the first location
12516          is not duplicated, and is the inserted one.
12517          All following are marked as duplicated, and are not inserted.  */
12518       if (loc->inserted)
12519         swap_insertion (loc, *loc_first_p);
12520       loc->duplicate = 1;
12521
12522       /* Clear the condition modification flag.  */
12523       loc->condition_changed = condition_unchanged;
12524
12525       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12526           && b->enable_state != bp_permanent)
12527         internal_error (__FILE__, __LINE__,
12528                         _("another breakpoint was inserted on top of "
12529                         "a permanent breakpoint"));
12530     }
12531
12532   if (breakpoints_always_inserted_mode ()
12533       && (have_live_inferiors ()
12534           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12535     {
12536       if (should_insert)
12537         insert_breakpoint_locations ();
12538       else
12539         {
12540           /* Though should_insert is false, we may need to update conditions
12541              on the target's side if it is evaluating such conditions.  We
12542              only update conditions for locations that are marked
12543              "needs_update".  */
12544           update_inserted_breakpoint_locations ();
12545         }
12546     }
12547
12548   if (should_insert)
12549     download_tracepoint_locations ();
12550
12551   do_cleanups (cleanups);
12552 }
12553
12554 void
12555 breakpoint_retire_moribund (void)
12556 {
12557   struct bp_location *loc;
12558   int ix;
12559
12560   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12561     if (--(loc->events_till_retirement) == 0)
12562       {
12563         decref_bp_location (&loc);
12564         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12565         --ix;
12566       }
12567 }
12568
12569 static void
12570 update_global_location_list_nothrow (int inserting)
12571 {
12572   volatile struct gdb_exception e;
12573
12574   TRY_CATCH (e, RETURN_MASK_ERROR)
12575     update_global_location_list (inserting);
12576 }
12577
12578 /* Clear BKP from a BPS.  */
12579
12580 static void
12581 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12582 {
12583   bpstat bs;
12584
12585   for (bs = bps; bs; bs = bs->next)
12586     if (bs->breakpoint_at == bpt)
12587       {
12588         bs->breakpoint_at = NULL;
12589         bs->old_val = NULL;
12590         /* bs->commands will be freed later.  */
12591       }
12592 }
12593
12594 /* Callback for iterate_over_threads.  */
12595 static int
12596 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12597 {
12598   struct breakpoint *bpt = data;
12599
12600   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12601   return 0;
12602 }
12603
12604 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12605    callbacks.  */
12606
12607 static void
12608 say_where (struct breakpoint *b)
12609 {
12610   struct ui_out *uiout = current_uiout;
12611   struct value_print_options opts;
12612
12613   get_user_print_options (&opts);
12614
12615   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12616      single string.  */
12617   if (b->loc == NULL)
12618     {
12619       printf_filtered (_(" (%s) pending."), b->addr_string);
12620     }
12621   else
12622     {
12623       if (opts.addressprint || b->loc->source_file == NULL)
12624         {
12625           printf_filtered (" at ");
12626           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12627                           gdb_stdout);
12628         }
12629       if (b->loc->source_file)
12630         {
12631           /* If there is a single location, we can print the location
12632              more nicely.  */
12633           if (b->loc->next == NULL)
12634             printf_filtered (": file %s, line %d.",
12635                              b->loc->source_file, b->loc->line_number);
12636           else
12637             /* This is not ideal, but each location may have a
12638                different file name, and this at least reflects the
12639                real situation somewhat.  */
12640             printf_filtered (": %s.", b->addr_string);
12641         }
12642
12643       if (b->loc->next)
12644         {
12645           struct bp_location *loc = b->loc;
12646           int n = 0;
12647           for (; loc; loc = loc->next)
12648             ++n;
12649           printf_filtered (" (%d locations)", n);
12650         }
12651     }
12652 }
12653
12654 /* Default bp_location_ops methods.  */
12655
12656 static void
12657 bp_location_dtor (struct bp_location *self)
12658 {
12659   xfree (self->cond);
12660   if (self->cond_bytecode)
12661     free_agent_expr (self->cond_bytecode);
12662   xfree (self->function_name);
12663   xfree (self->source_file);
12664 }
12665
12666 static const struct bp_location_ops bp_location_ops =
12667 {
12668   bp_location_dtor
12669 };
12670
12671 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12672    inherit from.  */
12673
12674 static void
12675 base_breakpoint_dtor (struct breakpoint *self)
12676 {
12677   decref_counted_command_line (&self->commands);
12678   xfree (self->cond_string);
12679   xfree (self->addr_string);
12680   xfree (self->filter);
12681   xfree (self->addr_string_range_end);
12682 }
12683
12684 static struct bp_location *
12685 base_breakpoint_allocate_location (struct breakpoint *self)
12686 {
12687   struct bp_location *loc;
12688
12689   loc = XNEW (struct bp_location);
12690   init_bp_location (loc, &bp_location_ops, self);
12691   return loc;
12692 }
12693
12694 static void
12695 base_breakpoint_re_set (struct breakpoint *b)
12696 {
12697   /* Nothing to re-set. */
12698 }
12699
12700 #define internal_error_pure_virtual_called() \
12701   gdb_assert_not_reached ("pure virtual function called")
12702
12703 static int
12704 base_breakpoint_insert_location (struct bp_location *bl)
12705 {
12706   internal_error_pure_virtual_called ();
12707 }
12708
12709 static int
12710 base_breakpoint_remove_location (struct bp_location *bl)
12711 {
12712   internal_error_pure_virtual_called ();
12713 }
12714
12715 static int
12716 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12717                                 struct address_space *aspace,
12718                                 CORE_ADDR bp_addr,
12719                                 const struct target_waitstatus *ws)
12720 {
12721   internal_error_pure_virtual_called ();
12722 }
12723
12724 static void
12725 base_breakpoint_check_status (bpstat bs)
12726 {
12727   /* Always stop.   */
12728 }
12729
12730 /* A "works_in_software_mode" breakpoint_ops method that just internal
12731    errors.  */
12732
12733 static int
12734 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12735 {
12736   internal_error_pure_virtual_called ();
12737 }
12738
12739 /* A "resources_needed" breakpoint_ops method that just internal
12740    errors.  */
12741
12742 static int
12743 base_breakpoint_resources_needed (const struct bp_location *bl)
12744 {
12745   internal_error_pure_virtual_called ();
12746 }
12747
12748 static enum print_stop_action
12749 base_breakpoint_print_it (bpstat bs)
12750 {
12751   internal_error_pure_virtual_called ();
12752 }
12753
12754 static void
12755 base_breakpoint_print_one_detail (const struct breakpoint *self,
12756                                   struct ui_out *uiout)
12757 {
12758   /* nothing */
12759 }
12760
12761 static void
12762 base_breakpoint_print_mention (struct breakpoint *b)
12763 {
12764   internal_error_pure_virtual_called ();
12765 }
12766
12767 static void
12768 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12769 {
12770   internal_error_pure_virtual_called ();
12771 }
12772
12773 static void
12774 base_breakpoint_create_sals_from_address (char **arg,
12775                                           struct linespec_result *canonical,
12776                                           enum bptype type_wanted,
12777                                           char *addr_start,
12778                                           char **copy_arg)
12779 {
12780   internal_error_pure_virtual_called ();
12781 }
12782
12783 static void
12784 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12785                                         struct linespec_result *c,
12786                                         struct linespec_sals *lsal,
12787                                         char *cond_string,
12788                                         char *extra_string,
12789                                         enum bptype type_wanted,
12790                                         enum bpdisp disposition,
12791                                         int thread,
12792                                         int task, int ignore_count,
12793                                         const struct breakpoint_ops *o,
12794                                         int from_tty, int enabled,
12795                                         int internal, unsigned flags)
12796 {
12797   internal_error_pure_virtual_called ();
12798 }
12799
12800 static void
12801 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12802                                  struct symtabs_and_lines *sals)
12803 {
12804   internal_error_pure_virtual_called ();
12805 }
12806
12807 static struct breakpoint_ops base_breakpoint_ops =
12808 {
12809   base_breakpoint_dtor,
12810   base_breakpoint_allocate_location,
12811   base_breakpoint_re_set,
12812   base_breakpoint_insert_location,
12813   base_breakpoint_remove_location,
12814   base_breakpoint_breakpoint_hit,
12815   base_breakpoint_check_status,
12816   base_breakpoint_resources_needed,
12817   base_breakpoint_works_in_software_mode,
12818   base_breakpoint_print_it,
12819   NULL,
12820   base_breakpoint_print_one_detail,
12821   base_breakpoint_print_mention,
12822   base_breakpoint_print_recreate,
12823   base_breakpoint_create_sals_from_address,
12824   base_breakpoint_create_breakpoints_sal,
12825   base_breakpoint_decode_linespec,
12826 };
12827
12828 /* Default breakpoint_ops methods.  */
12829
12830 static void
12831 bkpt_re_set (struct breakpoint *b)
12832 {
12833   /* FIXME: is this still reachable?  */
12834   if (b->addr_string == NULL)
12835     {
12836       /* Anything without a string can't be re-set.  */
12837       delete_breakpoint (b);
12838       return;
12839     }
12840
12841   breakpoint_re_set_default (b);
12842 }
12843
12844 static int
12845 bkpt_insert_location (struct bp_location *bl)
12846 {
12847   if (bl->loc_type == bp_loc_hardware_breakpoint)
12848     return target_insert_hw_breakpoint (bl->gdbarch,
12849                                         &bl->target_info);
12850   else
12851     return target_insert_breakpoint (bl->gdbarch,
12852                                      &bl->target_info);
12853 }
12854
12855 static int
12856 bkpt_remove_location (struct bp_location *bl)
12857 {
12858   if (bl->loc_type == bp_loc_hardware_breakpoint)
12859     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12860   else
12861     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12862 }
12863
12864 static int
12865 bkpt_breakpoint_hit (const struct bp_location *bl,
12866                      struct address_space *aspace, CORE_ADDR bp_addr,
12867                      const struct target_waitstatus *ws)
12868 {
12869   struct breakpoint *b = bl->owner;
12870
12871   if (ws->kind != TARGET_WAITKIND_STOPPED
12872       || ws->value.sig != GDB_SIGNAL_TRAP)
12873     return 0;
12874
12875   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12876                                  aspace, bp_addr))
12877     return 0;
12878
12879   if (overlay_debugging         /* unmapped overlay section */
12880       && section_is_overlay (bl->section)
12881       && !section_is_mapped (bl->section))
12882     return 0;
12883
12884   return 1;
12885 }
12886
12887 static int
12888 bkpt_resources_needed (const struct bp_location *bl)
12889 {
12890   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12891
12892   return 1;
12893 }
12894
12895 static enum print_stop_action
12896 bkpt_print_it (bpstat bs)
12897 {
12898   struct breakpoint *b;
12899   const struct bp_location *bl;
12900   int bp_temp;
12901   struct ui_out *uiout = current_uiout;
12902
12903   gdb_assert (bs->bp_location_at != NULL);
12904
12905   bl = bs->bp_location_at;
12906   b = bs->breakpoint_at;
12907
12908   bp_temp = b->disposition == disp_del;
12909   if (bl->address != bl->requested_address)
12910     breakpoint_adjustment_warning (bl->requested_address,
12911                                    bl->address,
12912                                    b->number, 1);
12913   annotate_breakpoint (b->number);
12914   if (bp_temp)
12915     ui_out_text (uiout, "\nTemporary breakpoint ");
12916   else
12917     ui_out_text (uiout, "\nBreakpoint ");
12918   if (ui_out_is_mi_like_p (uiout))
12919     {
12920       ui_out_field_string (uiout, "reason",
12921                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12922       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12923     }
12924   ui_out_field_int (uiout, "bkptno", b->number);
12925   ui_out_text (uiout, ", ");
12926
12927   return PRINT_SRC_AND_LOC;
12928 }
12929
12930 static void
12931 bkpt_print_mention (struct breakpoint *b)
12932 {
12933   if (ui_out_is_mi_like_p (current_uiout))
12934     return;
12935
12936   switch (b->type)
12937     {
12938     case bp_breakpoint:
12939     case bp_gnu_ifunc_resolver:
12940       if (b->disposition == disp_del)
12941         printf_filtered (_("Temporary breakpoint"));
12942       else
12943         printf_filtered (_("Breakpoint"));
12944       printf_filtered (_(" %d"), b->number);
12945       if (b->type == bp_gnu_ifunc_resolver)
12946         printf_filtered (_(" at gnu-indirect-function resolver"));
12947       break;
12948     case bp_hardware_breakpoint:
12949       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12950       break;
12951     case bp_dprintf:
12952       printf_filtered (_("Dprintf %d"), b->number);
12953       break;
12954     }
12955
12956   say_where (b);
12957 }
12958
12959 static void
12960 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12961 {
12962   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12963     fprintf_unfiltered (fp, "tbreak");
12964   else if (tp->type == bp_breakpoint)
12965     fprintf_unfiltered (fp, "break");
12966   else if (tp->type == bp_hardware_breakpoint
12967            && tp->disposition == disp_del)
12968     fprintf_unfiltered (fp, "thbreak");
12969   else if (tp->type == bp_hardware_breakpoint)
12970     fprintf_unfiltered (fp, "hbreak");
12971   else
12972     internal_error (__FILE__, __LINE__,
12973                     _("unhandled breakpoint type %d"), (int) tp->type);
12974
12975   fprintf_unfiltered (fp, " %s", tp->addr_string);
12976   print_recreate_thread (tp, fp);
12977 }
12978
12979 static void
12980 bkpt_create_sals_from_address (char **arg,
12981                                struct linespec_result *canonical,
12982                                enum bptype type_wanted,
12983                                char *addr_start, char **copy_arg)
12984 {
12985   create_sals_from_address_default (arg, canonical, type_wanted,
12986                                     addr_start, copy_arg);
12987 }
12988
12989 static void
12990 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12991                              struct linespec_result *canonical,
12992                              struct linespec_sals *lsal,
12993                              char *cond_string,
12994                              char *extra_string,
12995                              enum bptype type_wanted,
12996                              enum bpdisp disposition,
12997                              int thread,
12998                              int task, int ignore_count,
12999                              const struct breakpoint_ops *ops,
13000                              int from_tty, int enabled,
13001                              int internal, unsigned flags)
13002 {
13003   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13004                                   cond_string, extra_string,
13005                                   type_wanted,
13006                                   disposition, thread, task,
13007                                   ignore_count, ops, from_tty,
13008                                   enabled, internal, flags);
13009 }
13010
13011 static void
13012 bkpt_decode_linespec (struct breakpoint *b, char **s,
13013                       struct symtabs_and_lines *sals)
13014 {
13015   decode_linespec_default (b, s, sals);
13016 }
13017
13018 /* Virtual table for internal breakpoints.  */
13019
13020 static void
13021 internal_bkpt_re_set (struct breakpoint *b)
13022 {
13023   switch (b->type)
13024     {
13025       /* Delete overlay event and longjmp master breakpoints; they
13026          will be reset later by breakpoint_re_set.  */
13027     case bp_overlay_event:
13028     case bp_longjmp_master:
13029     case bp_std_terminate_master:
13030     case bp_exception_master:
13031       delete_breakpoint (b);
13032       break;
13033
13034       /* This breakpoint is special, it's set up when the inferior
13035          starts and we really don't want to touch it.  */
13036     case bp_shlib_event:
13037
13038       /* Like bp_shlib_event, this breakpoint type is special.  Once
13039          it is set up, we do not want to touch it.  */
13040     case bp_thread_event:
13041       break;
13042     }
13043 }
13044
13045 static void
13046 internal_bkpt_check_status (bpstat bs)
13047 {
13048   if (bs->breakpoint_at->type == bp_shlib_event)
13049     {
13050       /* If requested, stop when the dynamic linker notifies GDB of
13051          events.  This allows the user to get control and place
13052          breakpoints in initializer routines for dynamically loaded
13053          objects (among other things).  */
13054       bs->stop = stop_on_solib_events;
13055       bs->print = stop_on_solib_events;
13056     }
13057   else
13058     bs->stop = 0;
13059 }
13060
13061 static enum print_stop_action
13062 internal_bkpt_print_it (bpstat bs)
13063 {
13064   struct ui_out *uiout = current_uiout;
13065   struct breakpoint *b;
13066
13067   b = bs->breakpoint_at;
13068
13069   switch (b->type)
13070     {
13071     case bp_shlib_event:
13072       /* Did we stop because the user set the stop_on_solib_events
13073          variable?  (If so, we report this as a generic, "Stopped due
13074          to shlib event" message.) */
13075       print_solib_event (0);
13076       break;
13077
13078     case bp_thread_event:
13079       /* Not sure how we will get here.
13080          GDB should not stop for these breakpoints.  */
13081       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13082       break;
13083
13084     case bp_overlay_event:
13085       /* By analogy with the thread event, GDB should not stop for these.  */
13086       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13087       break;
13088
13089     case bp_longjmp_master:
13090       /* These should never be enabled.  */
13091       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13092       break;
13093
13094     case bp_std_terminate_master:
13095       /* These should never be enabled.  */
13096       printf_filtered (_("std::terminate Master Breakpoint: "
13097                          "gdb should not stop!\n"));
13098       break;
13099
13100     case bp_exception_master:
13101       /* These should never be enabled.  */
13102       printf_filtered (_("Exception Master Breakpoint: "
13103                          "gdb should not stop!\n"));
13104       break;
13105     }
13106
13107   return PRINT_NOTHING;
13108 }
13109
13110 static void
13111 internal_bkpt_print_mention (struct breakpoint *b)
13112 {
13113   /* Nothing to mention.  These breakpoints are internal.  */
13114 }
13115
13116 /* Virtual table for momentary breakpoints  */
13117
13118 static void
13119 momentary_bkpt_re_set (struct breakpoint *b)
13120 {
13121   /* Keep temporary breakpoints, which can be encountered when we step
13122      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13123      Otherwise these should have been blown away via the cleanup chain
13124      or by breakpoint_init_inferior when we rerun the executable.  */
13125 }
13126
13127 static void
13128 momentary_bkpt_check_status (bpstat bs)
13129 {
13130   /* Nothing.  The point of these breakpoints is causing a stop.  */
13131 }
13132
13133 static enum print_stop_action
13134 momentary_bkpt_print_it (bpstat bs)
13135 {
13136   struct ui_out *uiout = current_uiout;
13137
13138   if (ui_out_is_mi_like_p (uiout))
13139     {
13140       struct breakpoint *b = bs->breakpoint_at;
13141
13142       switch (b->type)
13143         {
13144         case bp_finish:
13145           ui_out_field_string
13146             (uiout, "reason",
13147              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13148           break;
13149
13150         case bp_until:
13151           ui_out_field_string
13152             (uiout, "reason",
13153              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13154           break;
13155         }
13156     }
13157
13158   return PRINT_UNKNOWN;
13159 }
13160
13161 static void
13162 momentary_bkpt_print_mention (struct breakpoint *b)
13163 {
13164   /* Nothing to mention.  These breakpoints are internal.  */
13165 }
13166
13167 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13168
13169    It gets cleared already on the removal of the first one of such placed
13170    breakpoints.  This is OK as they get all removed altogether.  */
13171
13172 static void
13173 longjmp_bkpt_dtor (struct breakpoint *self)
13174 {
13175   struct thread_info *tp = find_thread_id (self->thread);
13176
13177   if (tp)
13178     tp->initiating_frame = null_frame_id;
13179
13180   momentary_breakpoint_ops.dtor (self);
13181 }
13182
13183 /* Specific methods for probe breakpoints.  */
13184
13185 static int
13186 bkpt_probe_insert_location (struct bp_location *bl)
13187 {
13188   int v = bkpt_insert_location (bl);
13189
13190   if (v == 0)
13191     {
13192       /* The insertion was successful, now let's set the probe's semaphore
13193          if needed.  */
13194       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13195     }
13196
13197   return v;
13198 }
13199
13200 static int
13201 bkpt_probe_remove_location (struct bp_location *bl)
13202 {
13203   /* Let's clear the semaphore before removing the location.  */
13204   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13205
13206   return bkpt_remove_location (bl);
13207 }
13208
13209 static void
13210 bkpt_probe_create_sals_from_address (char **arg,
13211                                      struct linespec_result *canonical,
13212                                      enum bptype type_wanted,
13213                                      char *addr_start, char **copy_arg)
13214 {
13215   struct linespec_sals lsal;
13216
13217   lsal.sals = parse_probes (arg, canonical);
13218
13219   *copy_arg = xstrdup (canonical->addr_string);
13220   lsal.canonical = xstrdup (*copy_arg);
13221
13222   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13223 }
13224
13225 static void
13226 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13227                             struct symtabs_and_lines *sals)
13228 {
13229   *sals = parse_probes (s, NULL);
13230   if (!sals->sals)
13231     error (_("probe not found"));
13232 }
13233
13234 /* The breakpoint_ops structure to be used in tracepoints.  */
13235
13236 static void
13237 tracepoint_re_set (struct breakpoint *b)
13238 {
13239   breakpoint_re_set_default (b);
13240 }
13241
13242 static int
13243 tracepoint_breakpoint_hit (const struct bp_location *bl,
13244                            struct address_space *aspace, CORE_ADDR bp_addr,
13245                            const struct target_waitstatus *ws)
13246 {
13247   /* By definition, the inferior does not report stops at
13248      tracepoints.  */
13249   return 0;
13250 }
13251
13252 static void
13253 tracepoint_print_one_detail (const struct breakpoint *self,
13254                              struct ui_out *uiout)
13255 {
13256   struct tracepoint *tp = (struct tracepoint *) self;
13257   if (tp->static_trace_marker_id)
13258     {
13259       gdb_assert (self->type == bp_static_tracepoint);
13260
13261       ui_out_text (uiout, "\tmarker id is ");
13262       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13263                            tp->static_trace_marker_id);
13264       ui_out_text (uiout, "\n");
13265     }
13266 }
13267
13268 static void
13269 tracepoint_print_mention (struct breakpoint *b)
13270 {
13271   if (ui_out_is_mi_like_p (current_uiout))
13272     return;
13273
13274   switch (b->type)
13275     {
13276     case bp_tracepoint:
13277       printf_filtered (_("Tracepoint"));
13278       printf_filtered (_(" %d"), b->number);
13279       break;
13280     case bp_fast_tracepoint:
13281       printf_filtered (_("Fast tracepoint"));
13282       printf_filtered (_(" %d"), b->number);
13283       break;
13284     case bp_static_tracepoint:
13285       printf_filtered (_("Static tracepoint"));
13286       printf_filtered (_(" %d"), b->number);
13287       break;
13288     default:
13289       internal_error (__FILE__, __LINE__,
13290                       _("unhandled tracepoint type %d"), (int) b->type);
13291     }
13292
13293   say_where (b);
13294 }
13295
13296 static void
13297 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13298 {
13299   struct tracepoint *tp = (struct tracepoint *) self;
13300
13301   if (self->type == bp_fast_tracepoint)
13302     fprintf_unfiltered (fp, "ftrace");
13303   if (self->type == bp_static_tracepoint)
13304     fprintf_unfiltered (fp, "strace");
13305   else if (self->type == bp_tracepoint)
13306     fprintf_unfiltered (fp, "trace");
13307   else
13308     internal_error (__FILE__, __LINE__,
13309                     _("unhandled tracepoint type %d"), (int) self->type);
13310
13311   fprintf_unfiltered (fp, " %s", self->addr_string);
13312   print_recreate_thread (self, fp);
13313
13314   if (tp->pass_count)
13315     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13316 }
13317
13318 static void
13319 tracepoint_create_sals_from_address (char **arg,
13320                                      struct linespec_result *canonical,
13321                                      enum bptype type_wanted,
13322                                      char *addr_start, char **copy_arg)
13323 {
13324   create_sals_from_address_default (arg, canonical, type_wanted,
13325                                     addr_start, copy_arg);
13326 }
13327
13328 static void
13329 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13330                                    struct linespec_result *canonical,
13331                                    struct linespec_sals *lsal,
13332                                    char *cond_string,
13333                                    char *extra_string,
13334                                    enum bptype type_wanted,
13335                                    enum bpdisp disposition,
13336                                    int thread,
13337                                    int task, int ignore_count,
13338                                    const struct breakpoint_ops *ops,
13339                                    int from_tty, int enabled,
13340                                    int internal, unsigned flags)
13341 {
13342   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13343                                   cond_string, extra_string,
13344                                   type_wanted,
13345                                   disposition, thread, task,
13346                                   ignore_count, ops, from_tty,
13347                                   enabled, internal, flags);
13348 }
13349
13350 static void
13351 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13352                             struct symtabs_and_lines *sals)
13353 {
13354   decode_linespec_default (b, s, sals);
13355 }
13356
13357 struct breakpoint_ops tracepoint_breakpoint_ops;
13358
13359 /* The breakpoint_ops structure to be use on tracepoints placed in a
13360    static probe.  */
13361
13362 static void
13363 tracepoint_probe_create_sals_from_address (char **arg,
13364                                            struct linespec_result *canonical,
13365                                            enum bptype type_wanted,
13366                                            char *addr_start, char **copy_arg)
13367 {
13368   /* We use the same method for breakpoint on probes.  */
13369   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13370                                        addr_start, copy_arg);
13371 }
13372
13373 static void
13374 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13375                                   struct symtabs_and_lines *sals)
13376 {
13377   /* We use the same method for breakpoint on probes.  */
13378   bkpt_probe_decode_linespec (b, s, sals);
13379 }
13380
13381 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13382
13383 /* The breakpoint_ops structure to be used on static tracepoints with
13384    markers (`-m').  */
13385
13386 static void
13387 strace_marker_create_sals_from_address (char **arg,
13388                                         struct linespec_result *canonical,
13389                                         enum bptype type_wanted,
13390                                         char *addr_start, char **copy_arg)
13391 {
13392   struct linespec_sals lsal;
13393
13394   lsal.sals = decode_static_tracepoint_spec (arg);
13395
13396   *copy_arg = savestring (addr_start, *arg - addr_start);
13397
13398   canonical->addr_string = xstrdup (*copy_arg);
13399   lsal.canonical = xstrdup (*copy_arg);
13400   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13401 }
13402
13403 static void
13404 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13405                                       struct linespec_result *canonical,
13406                                       struct linespec_sals *lsal,
13407                                       char *cond_string,
13408                                       char *extra_string,
13409                                       enum bptype type_wanted,
13410                                       enum bpdisp disposition,
13411                                       int thread,
13412                                       int task, int ignore_count,
13413                                       const struct breakpoint_ops *ops,
13414                                       int from_tty, int enabled,
13415                                       int internal, unsigned flags)
13416 {
13417   int i;
13418
13419   /* If the user is creating a static tracepoint by marker id
13420      (strace -m MARKER_ID), then store the sals index, so that
13421      breakpoint_re_set can try to match up which of the newly
13422      found markers corresponds to this one, and, don't try to
13423      expand multiple locations for each sal, given than SALS
13424      already should contain all sals for MARKER_ID.  */
13425
13426   for (i = 0; i < lsal->sals.nelts; ++i)
13427     {
13428       struct symtabs_and_lines expanded;
13429       struct tracepoint *tp;
13430       struct cleanup *old_chain;
13431       char *addr_string;
13432
13433       expanded.nelts = 1;
13434       expanded.sals = &lsal->sals.sals[i];
13435
13436       addr_string = xstrdup (canonical->addr_string);
13437       old_chain = make_cleanup (xfree, addr_string);
13438
13439       tp = XCNEW (struct tracepoint);
13440       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13441                            addr_string, NULL,
13442                            cond_string, extra_string,
13443                            type_wanted, disposition,
13444                            thread, task, ignore_count, ops,
13445                            from_tty, enabled, internal, flags,
13446                            canonical->special_display);
13447       /* Given that its possible to have multiple markers with
13448          the same string id, if the user is creating a static
13449          tracepoint by marker id ("strace -m MARKER_ID"), then
13450          store the sals index, so that breakpoint_re_set can
13451          try to match up which of the newly found markers
13452          corresponds to this one  */
13453       tp->static_trace_marker_id_idx = i;
13454
13455       install_breakpoint (internal, &tp->base, 0);
13456
13457       discard_cleanups (old_chain);
13458     }
13459 }
13460
13461 static void
13462 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13463                                struct symtabs_and_lines *sals)
13464 {
13465   struct tracepoint *tp = (struct tracepoint *) b;
13466
13467   *sals = decode_static_tracepoint_spec (s);
13468   if (sals->nelts > tp->static_trace_marker_id_idx)
13469     {
13470       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13471       sals->nelts = 1;
13472     }
13473   else
13474     error (_("marker %s not found"), tp->static_trace_marker_id);
13475 }
13476
13477 static struct breakpoint_ops strace_marker_breakpoint_ops;
13478
13479 static int
13480 strace_marker_p (struct breakpoint *b)
13481 {
13482   return b->ops == &strace_marker_breakpoint_ops;
13483 }
13484
13485 /* Delete a breakpoint and clean up all traces of it in the data
13486    structures.  */
13487
13488 void
13489 delete_breakpoint (struct breakpoint *bpt)
13490 {
13491   struct breakpoint *b;
13492
13493   gdb_assert (bpt != NULL);
13494
13495   /* Has this bp already been deleted?  This can happen because
13496      multiple lists can hold pointers to bp's.  bpstat lists are
13497      especial culprits.
13498
13499      One example of this happening is a watchpoint's scope bp.  When
13500      the scope bp triggers, we notice that the watchpoint is out of
13501      scope, and delete it.  We also delete its scope bp.  But the
13502      scope bp is marked "auto-deleting", and is already on a bpstat.
13503      That bpstat is then checked for auto-deleting bp's, which are
13504      deleted.
13505
13506      A real solution to this problem might involve reference counts in
13507      bp's, and/or giving them pointers back to their referencing
13508      bpstat's, and teaching delete_breakpoint to only free a bp's
13509      storage when no more references were extent.  A cheaper bandaid
13510      was chosen.  */
13511   if (bpt->type == bp_none)
13512     return;
13513
13514   /* At least avoid this stale reference until the reference counting
13515      of breakpoints gets resolved.  */
13516   if (bpt->related_breakpoint != bpt)
13517     {
13518       struct breakpoint *related;
13519       struct watchpoint *w;
13520
13521       if (bpt->type == bp_watchpoint_scope)
13522         w = (struct watchpoint *) bpt->related_breakpoint;
13523       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13524         w = (struct watchpoint *) bpt;
13525       else
13526         w = NULL;
13527       if (w != NULL)
13528         watchpoint_del_at_next_stop (w);
13529
13530       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13531       for (related = bpt; related->related_breakpoint != bpt;
13532            related = related->related_breakpoint);
13533       related->related_breakpoint = bpt->related_breakpoint;
13534       bpt->related_breakpoint = bpt;
13535     }
13536
13537   /* watch_command_1 creates a watchpoint but only sets its number if
13538      update_watchpoint succeeds in creating its bp_locations.  If there's
13539      a problem in that process, we'll be asked to delete the half-created
13540      watchpoint.  In that case, don't announce the deletion.  */
13541   if (bpt->number)
13542     observer_notify_breakpoint_deleted (bpt);
13543
13544   if (breakpoint_chain == bpt)
13545     breakpoint_chain = bpt->next;
13546
13547   ALL_BREAKPOINTS (b)
13548     if (b->next == bpt)
13549     {
13550       b->next = bpt->next;
13551       break;
13552     }
13553
13554   /* Be sure no bpstat's are pointing at the breakpoint after it's
13555      been freed.  */
13556   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13557      in all threads for now.  Note that we cannot just remove bpstats
13558      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13559      commands are associated with the bpstat; if we remove it here,
13560      then the later call to bpstat_do_actions (&stop_bpstat); in
13561      event-top.c won't do anything, and temporary breakpoints with
13562      commands won't work.  */
13563
13564   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13565
13566   /* Now that breakpoint is removed from breakpoint list, update the
13567      global location list.  This will remove locations that used to
13568      belong to this breakpoint.  Do this before freeing the breakpoint
13569      itself, since remove_breakpoint looks at location's owner.  It
13570      might be better design to have location completely
13571      self-contained, but it's not the case now.  */
13572   update_global_location_list (0);
13573
13574   bpt->ops->dtor (bpt);
13575   /* On the chance that someone will soon try again to delete this
13576      same bp, we mark it as deleted before freeing its storage.  */
13577   bpt->type = bp_none;
13578   xfree (bpt);
13579 }
13580
13581 static void
13582 do_delete_breakpoint_cleanup (void *b)
13583 {
13584   delete_breakpoint (b);
13585 }
13586
13587 struct cleanup *
13588 make_cleanup_delete_breakpoint (struct breakpoint *b)
13589 {
13590   return make_cleanup (do_delete_breakpoint_cleanup, b);
13591 }
13592
13593 /* Iterator function to call a user-provided callback function once
13594    for each of B and its related breakpoints.  */
13595
13596 static void
13597 iterate_over_related_breakpoints (struct breakpoint *b,
13598                                   void (*function) (struct breakpoint *,
13599                                                     void *),
13600                                   void *data)
13601 {
13602   struct breakpoint *related;
13603
13604   related = b;
13605   do
13606     {
13607       struct breakpoint *next;
13608
13609       /* FUNCTION may delete RELATED.  */
13610       next = related->related_breakpoint;
13611
13612       if (next == related)
13613         {
13614           /* RELATED is the last ring entry.  */
13615           function (related, data);
13616
13617           /* FUNCTION may have deleted it, so we'd never reach back to
13618              B.  There's nothing left to do anyway, so just break
13619              out.  */
13620           break;
13621         }
13622       else
13623         function (related, data);
13624
13625       related = next;
13626     }
13627   while (related != b);
13628 }
13629
13630 static void
13631 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13632 {
13633   delete_breakpoint (b);
13634 }
13635
13636 /* A callback for map_breakpoint_numbers that calls
13637    delete_breakpoint.  */
13638
13639 static void
13640 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13641 {
13642   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13643 }
13644
13645 void
13646 delete_command (char *arg, int from_tty)
13647 {
13648   struct breakpoint *b, *b_tmp;
13649
13650   dont_repeat ();
13651
13652   if (arg == 0)
13653     {
13654       int breaks_to_delete = 0;
13655
13656       /* Delete all breakpoints if no argument.  Do not delete
13657          internal breakpoints, these have to be deleted with an
13658          explicit breakpoint number argument.  */
13659       ALL_BREAKPOINTS (b)
13660         if (user_breakpoint_p (b))
13661           {
13662             breaks_to_delete = 1;
13663             break;
13664           }
13665
13666       /* Ask user only if there are some breakpoints to delete.  */
13667       if (!from_tty
13668           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13669         {
13670           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13671             if (user_breakpoint_p (b))
13672               delete_breakpoint (b);
13673         }
13674     }
13675   else
13676     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13677 }
13678
13679 static int
13680 all_locations_are_pending (struct bp_location *loc)
13681 {
13682   for (; loc; loc = loc->next)
13683     if (!loc->shlib_disabled
13684         && !loc->pspace->executing_startup)
13685       return 0;
13686   return 1;
13687 }
13688
13689 /* Subroutine of update_breakpoint_locations to simplify it.
13690    Return non-zero if multiple fns in list LOC have the same name.
13691    Null names are ignored.  */
13692
13693 static int
13694 ambiguous_names_p (struct bp_location *loc)
13695 {
13696   struct bp_location *l;
13697   htab_t htab = htab_create_alloc (13, htab_hash_string,
13698                                    (int (*) (const void *, 
13699                                              const void *)) streq,
13700                                    NULL, xcalloc, xfree);
13701
13702   for (l = loc; l != NULL; l = l->next)
13703     {
13704       const char **slot;
13705       const char *name = l->function_name;
13706
13707       /* Allow for some names to be NULL, ignore them.  */
13708       if (name == NULL)
13709         continue;
13710
13711       slot = (const char **) htab_find_slot (htab, (const void *) name,
13712                                              INSERT);
13713       /* NOTE: We can assume slot != NULL here because xcalloc never
13714          returns NULL.  */
13715       if (*slot != NULL)
13716         {
13717           htab_delete (htab);
13718           return 1;
13719         }
13720       *slot = name;
13721     }
13722
13723   htab_delete (htab);
13724   return 0;
13725 }
13726
13727 /* When symbols change, it probably means the sources changed as well,
13728    and it might mean the static tracepoint markers are no longer at
13729    the same address or line numbers they used to be at last we
13730    checked.  Losing your static tracepoints whenever you rebuild is
13731    undesirable.  This function tries to resync/rematch gdb static
13732    tracepoints with the markers on the target, for static tracepoints
13733    that have not been set by marker id.  Static tracepoint that have
13734    been set by marker id are reset by marker id in breakpoint_re_set.
13735    The heuristic is:
13736
13737    1) For a tracepoint set at a specific address, look for a marker at
13738    the old PC.  If one is found there, assume to be the same marker.
13739    If the name / string id of the marker found is different from the
13740    previous known name, assume that means the user renamed the marker
13741    in the sources, and output a warning.
13742
13743    2) For a tracepoint set at a given line number, look for a marker
13744    at the new address of the old line number.  If one is found there,
13745    assume to be the same marker.  If the name / string id of the
13746    marker found is different from the previous known name, assume that
13747    means the user renamed the marker in the sources, and output a
13748    warning.
13749
13750    3) If a marker is no longer found at the same address or line, it
13751    may mean the marker no longer exists.  But it may also just mean
13752    the code changed a bit.  Maybe the user added a few lines of code
13753    that made the marker move up or down (in line number terms).  Ask
13754    the target for info about the marker with the string id as we knew
13755    it.  If found, update line number and address in the matching
13756    static tracepoint.  This will get confused if there's more than one
13757    marker with the same ID (possible in UST, although unadvised
13758    precisely because it confuses tools).  */
13759
13760 static struct symtab_and_line
13761 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13762 {
13763   struct tracepoint *tp = (struct tracepoint *) b;
13764   struct static_tracepoint_marker marker;
13765   CORE_ADDR pc;
13766
13767   pc = sal.pc;
13768   if (sal.line)
13769     find_line_pc (sal.symtab, sal.line, &pc);
13770
13771   if (target_static_tracepoint_marker_at (pc, &marker))
13772     {
13773       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13774         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13775                  b->number,
13776                  tp->static_trace_marker_id, marker.str_id);
13777
13778       xfree (tp->static_trace_marker_id);
13779       tp->static_trace_marker_id = xstrdup (marker.str_id);
13780       release_static_tracepoint_marker (&marker);
13781
13782       return sal;
13783     }
13784
13785   /* Old marker wasn't found on target at lineno.  Try looking it up
13786      by string ID.  */
13787   if (!sal.explicit_pc
13788       && sal.line != 0
13789       && sal.symtab != NULL
13790       && tp->static_trace_marker_id != NULL)
13791     {
13792       VEC(static_tracepoint_marker_p) *markers;
13793
13794       markers
13795         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13796
13797       if (!VEC_empty(static_tracepoint_marker_p, markers))
13798         {
13799           struct symtab_and_line sal2;
13800           struct symbol *sym;
13801           struct static_tracepoint_marker *tpmarker;
13802           struct ui_out *uiout = current_uiout;
13803
13804           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13805
13806           xfree (tp->static_trace_marker_id);
13807           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13808
13809           warning (_("marker for static tracepoint %d (%s) not "
13810                      "found at previous line number"),
13811                    b->number, tp->static_trace_marker_id);
13812
13813           init_sal (&sal2);
13814
13815           sal2.pc = tpmarker->address;
13816
13817           sal2 = find_pc_line (tpmarker->address, 0);
13818           sym = find_pc_sect_function (tpmarker->address, NULL);
13819           ui_out_text (uiout, "Now in ");
13820           if (sym)
13821             {
13822               ui_out_field_string (uiout, "func",
13823                                    SYMBOL_PRINT_NAME (sym));
13824               ui_out_text (uiout, " at ");
13825             }
13826           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13827           ui_out_text (uiout, ":");
13828
13829           if (ui_out_is_mi_like_p (uiout))
13830             {
13831               const char *fullname = symtab_to_fullname (sal2.symtab);
13832
13833               if (fullname)
13834                 ui_out_field_string (uiout, "fullname", fullname);
13835             }
13836
13837           ui_out_field_int (uiout, "line", sal2.line);
13838           ui_out_text (uiout, "\n");
13839
13840           b->loc->line_number = sal2.line;
13841
13842           xfree (b->loc->source_file);
13843           if (sym)
13844             b->loc->source_file = xstrdup (sal2.symtab->filename);
13845           else
13846             b->loc->source_file = NULL;
13847
13848           xfree (b->addr_string);
13849           b->addr_string = xstrprintf ("%s:%d",
13850                                        sal2.symtab->filename,
13851                                        b->loc->line_number);
13852
13853           /* Might be nice to check if function changed, and warn if
13854              so.  */
13855
13856           release_static_tracepoint_marker (tpmarker);
13857         }
13858     }
13859   return sal;
13860 }
13861
13862 /* Returns 1 iff locations A and B are sufficiently same that
13863    we don't need to report breakpoint as changed.  */
13864
13865 static int
13866 locations_are_equal (struct bp_location *a, struct bp_location *b)
13867 {
13868   while (a && b)
13869     {
13870       if (a->address != b->address)
13871         return 0;
13872
13873       if (a->shlib_disabled != b->shlib_disabled)
13874         return 0;
13875
13876       if (a->enabled != b->enabled)
13877         return 0;
13878
13879       a = a->next;
13880       b = b->next;
13881     }
13882
13883   if ((a == NULL) != (b == NULL))
13884     return 0;
13885
13886   return 1;
13887 }
13888
13889 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13890    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13891    a ranged breakpoint.  */
13892
13893 void
13894 update_breakpoint_locations (struct breakpoint *b,
13895                              struct symtabs_and_lines sals,
13896                              struct symtabs_and_lines sals_end)
13897 {
13898   int i;
13899   struct bp_location *existing_locations = b->loc;
13900
13901   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13902     {
13903       /* Ranged breakpoints have only one start location and one end
13904          location.  */
13905       b->enable_state = bp_disabled;
13906       update_global_location_list (1);
13907       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13908                            "multiple locations found\n"),
13909                          b->number);
13910       return;
13911     }
13912
13913   /* If there's no new locations, and all existing locations are
13914      pending, don't do anything.  This optimizes the common case where
13915      all locations are in the same shared library, that was unloaded.
13916      We'd like to retain the location, so that when the library is
13917      loaded again, we don't loose the enabled/disabled status of the
13918      individual locations.  */
13919   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13920     return;
13921
13922   b->loc = NULL;
13923
13924   for (i = 0; i < sals.nelts; ++i)
13925     {
13926       struct bp_location *new_loc;
13927
13928       switch_to_program_space_and_thread (sals.sals[i].pspace);
13929
13930       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13931
13932       /* Reparse conditions, they might contain references to the
13933          old symtab.  */
13934       if (b->cond_string != NULL)
13935         {
13936           char *s;
13937           volatile struct gdb_exception e;
13938
13939           s = b->cond_string;
13940           TRY_CATCH (e, RETURN_MASK_ERROR)
13941             {
13942               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13943                                            block_for_pc (sals.sals[i].pc), 
13944                                            0);
13945             }
13946           if (e.reason < 0)
13947             {
13948               warning (_("failed to reevaluate condition "
13949                          "for breakpoint %d: %s"), 
13950                        b->number, e.message);
13951               new_loc->enabled = 0;
13952             }
13953         }
13954
13955       if (sals_end.nelts)
13956         {
13957           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13958
13959           new_loc->length = end - sals.sals[0].pc + 1;
13960         }
13961     }
13962
13963   /* Update locations of permanent breakpoints.  */
13964   if (b->enable_state == bp_permanent)
13965     make_breakpoint_permanent (b);
13966
13967   /* If possible, carry over 'disable' status from existing
13968      breakpoints.  */
13969   {
13970     struct bp_location *e = existing_locations;
13971     /* If there are multiple breakpoints with the same function name,
13972        e.g. for inline functions, comparing function names won't work.
13973        Instead compare pc addresses; this is just a heuristic as things
13974        may have moved, but in practice it gives the correct answer
13975        often enough until a better solution is found.  */
13976     int have_ambiguous_names = ambiguous_names_p (b->loc);
13977
13978     for (; e; e = e->next)
13979       {
13980         if (!e->enabled && e->function_name)
13981           {
13982             struct bp_location *l = b->loc;
13983             if (have_ambiguous_names)
13984               {
13985                 for (; l; l = l->next)
13986                   if (breakpoint_locations_match (e, l))
13987                     {
13988                       l->enabled = 0;
13989                       break;
13990                     }
13991               }
13992             else
13993               {
13994                 for (; l; l = l->next)
13995                   if (l->function_name
13996                       && strcmp (e->function_name, l->function_name) == 0)
13997                     {
13998                       l->enabled = 0;
13999                       break;
14000                     }
14001               }
14002           }
14003       }
14004   }
14005
14006   if (!locations_are_equal (existing_locations, b->loc))
14007     observer_notify_breakpoint_modified (b);
14008
14009   update_global_location_list (1);
14010 }
14011
14012 /* Find the SaL locations corresponding to the given ADDR_STRING.
14013    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14014
14015 static struct symtabs_and_lines
14016 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14017 {
14018   char *s;
14019   struct symtabs_and_lines sals = {0};
14020   volatile struct gdb_exception e;
14021
14022   gdb_assert (b->ops != NULL);
14023   s = addr_string;
14024
14025   TRY_CATCH (e, RETURN_MASK_ERROR)
14026     {
14027       b->ops->decode_linespec (b, &s, &sals);
14028     }
14029   if (e.reason < 0)
14030     {
14031       int not_found_and_ok = 0;
14032       /* For pending breakpoints, it's expected that parsing will
14033          fail until the right shared library is loaded.  User has
14034          already told to create pending breakpoints and don't need
14035          extra messages.  If breakpoint is in bp_shlib_disabled
14036          state, then user already saw the message about that
14037          breakpoint being disabled, and don't want to see more
14038          errors.  */
14039       if (e.error == NOT_FOUND_ERROR
14040           && (b->condition_not_parsed 
14041               || (b->loc && b->loc->shlib_disabled)
14042               || (b->loc && b->loc->pspace->executing_startup)
14043               || b->enable_state == bp_disabled))
14044         not_found_and_ok = 1;
14045
14046       if (!not_found_and_ok)
14047         {
14048           /* We surely don't want to warn about the same breakpoint
14049              10 times.  One solution, implemented here, is disable
14050              the breakpoint on error.  Another solution would be to
14051              have separate 'warning emitted' flag.  Since this
14052              happens only when a binary has changed, I don't know
14053              which approach is better.  */
14054           b->enable_state = bp_disabled;
14055           throw_exception (e);
14056         }
14057     }
14058
14059   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14060     {
14061       int i;
14062
14063       for (i = 0; i < sals.nelts; ++i)
14064         resolve_sal_pc (&sals.sals[i]);
14065       if (b->condition_not_parsed && s && s[0])
14066         {
14067           char *cond_string, *extra_string;
14068           int thread, task;
14069
14070           find_condition_and_thread (s, sals.sals[0].pc,
14071                                      &cond_string, &thread, &task,
14072                                      &extra_string);
14073           if (cond_string)
14074             b->cond_string = cond_string;
14075           b->thread = thread;
14076           b->task = task;
14077           if (extra_string)
14078             b->extra_string = extra_string;
14079           b->condition_not_parsed = 0;
14080         }
14081
14082       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14083         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14084
14085       *found = 1;
14086     }
14087   else
14088     *found = 0;
14089
14090   return sals;
14091 }
14092
14093 /* The default re_set method, for typical hardware or software
14094    breakpoints.  Reevaluate the breakpoint and recreate its
14095    locations.  */
14096
14097 static void
14098 breakpoint_re_set_default (struct breakpoint *b)
14099 {
14100   int found;
14101   struct symtabs_and_lines sals, sals_end;
14102   struct symtabs_and_lines expanded = {0};
14103   struct symtabs_and_lines expanded_end = {0};
14104
14105   sals = addr_string_to_sals (b, b->addr_string, &found);
14106   if (found)
14107     {
14108       make_cleanup (xfree, sals.sals);
14109       expanded = sals;
14110     }
14111
14112   if (b->addr_string_range_end)
14113     {
14114       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14115       if (found)
14116         {
14117           make_cleanup (xfree, sals_end.sals);
14118           expanded_end = sals_end;
14119         }
14120     }
14121
14122   update_breakpoint_locations (b, expanded, expanded_end);
14123 }
14124
14125 /* Default method for creating SALs from an address string.  It basically
14126    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14127
14128 static void
14129 create_sals_from_address_default (char **arg,
14130                                   struct linespec_result *canonical,
14131                                   enum bptype type_wanted,
14132                                   char *addr_start, char **copy_arg)
14133 {
14134   parse_breakpoint_sals (arg, canonical);
14135 }
14136
14137 /* Call create_breakpoints_sal for the given arguments.  This is the default
14138    function for the `create_breakpoints_sal' method of
14139    breakpoint_ops.  */
14140
14141 static void
14142 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14143                                 struct linespec_result *canonical,
14144                                 struct linespec_sals *lsal,
14145                                 char *cond_string,
14146                                 char *extra_string,
14147                                 enum bptype type_wanted,
14148                                 enum bpdisp disposition,
14149                                 int thread,
14150                                 int task, int ignore_count,
14151                                 const struct breakpoint_ops *ops,
14152                                 int from_tty, int enabled,
14153                                 int internal, unsigned flags)
14154 {
14155   create_breakpoints_sal (gdbarch, canonical, cond_string,
14156                           extra_string,
14157                           type_wanted, disposition,
14158                           thread, task, ignore_count, ops, from_tty,
14159                           enabled, internal, flags);
14160 }
14161
14162 /* Decode the line represented by S by calling decode_line_full.  This is the
14163    default function for the `decode_linespec' method of breakpoint_ops.  */
14164
14165 static void
14166 decode_linespec_default (struct breakpoint *b, char **s,
14167                          struct symtabs_and_lines *sals)
14168 {
14169   struct linespec_result canonical;
14170
14171   init_linespec_result (&canonical);
14172   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14173                     (struct symtab *) NULL, 0,
14174                     &canonical, multiple_symbols_all,
14175                     b->filter);
14176
14177   /* We should get 0 or 1 resulting SALs.  */
14178   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14179
14180   if (VEC_length (linespec_sals, canonical.sals) > 0)
14181     {
14182       struct linespec_sals *lsal;
14183
14184       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14185       *sals = lsal->sals;
14186       /* Arrange it so the destructor does not free the
14187          contents.  */
14188       lsal->sals.sals = NULL;
14189     }
14190
14191   destroy_linespec_result (&canonical);
14192 }
14193
14194 /* Prepare the global context for a re-set of breakpoint B.  */
14195
14196 static struct cleanup *
14197 prepare_re_set_context (struct breakpoint *b)
14198 {
14199   struct cleanup *cleanups;
14200
14201   input_radix = b->input_radix;
14202   cleanups = save_current_space_and_thread ();
14203   if (b->pspace != NULL)
14204     switch_to_program_space_and_thread (b->pspace);
14205   set_language (b->language);
14206
14207   return cleanups;
14208 }
14209
14210 /* Reset a breakpoint given it's struct breakpoint * BINT.
14211    The value we return ends up being the return value from catch_errors.
14212    Unused in this case.  */
14213
14214 static int
14215 breakpoint_re_set_one (void *bint)
14216 {
14217   /* Get past catch_errs.  */
14218   struct breakpoint *b = (struct breakpoint *) bint;
14219   struct cleanup *cleanups;
14220
14221   cleanups = prepare_re_set_context (b);
14222   b->ops->re_set (b);
14223   do_cleanups (cleanups);
14224   return 0;
14225 }
14226
14227 /* Re-set all breakpoints after symbols have been re-loaded.  */
14228 void
14229 breakpoint_re_set (void)
14230 {
14231   struct breakpoint *b, *b_tmp;
14232   enum language save_language;
14233   int save_input_radix;
14234   struct cleanup *old_chain;
14235
14236   save_language = current_language->la_language;
14237   save_input_radix = input_radix;
14238   old_chain = save_current_program_space ();
14239
14240   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14241   {
14242     /* Format possible error msg.  */
14243     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14244                                 b->number);
14245     struct cleanup *cleanups = make_cleanup (xfree, message);
14246     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14247     do_cleanups (cleanups);
14248   }
14249   set_language (save_language);
14250   input_radix = save_input_radix;
14251
14252   jit_breakpoint_re_set ();
14253
14254   do_cleanups (old_chain);
14255
14256   create_overlay_event_breakpoint ();
14257   create_longjmp_master_breakpoint ();
14258   create_std_terminate_master_breakpoint ();
14259   create_exception_master_breakpoint ();
14260
14261   /* While we're at it, reset the skip list too.  */
14262   skip_re_set ();
14263 }
14264 \f
14265 /* Reset the thread number of this breakpoint:
14266
14267    - If the breakpoint is for all threads, leave it as-is.
14268    - Else, reset it to the current thread for inferior_ptid.  */
14269 void
14270 breakpoint_re_set_thread (struct breakpoint *b)
14271 {
14272   if (b->thread != -1)
14273     {
14274       if (in_thread_list (inferior_ptid))
14275         b->thread = pid_to_thread_id (inferior_ptid);
14276
14277       /* We're being called after following a fork.  The new fork is
14278          selected as current, and unless this was a vfork will have a
14279          different program space from the original thread.  Reset that
14280          as well.  */
14281       b->loc->pspace = current_program_space;
14282     }
14283 }
14284
14285 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14286    If from_tty is nonzero, it prints a message to that effect,
14287    which ends with a period (no newline).  */
14288
14289 void
14290 set_ignore_count (int bptnum, int count, int from_tty)
14291 {
14292   struct breakpoint *b;
14293
14294   if (count < 0)
14295     count = 0;
14296
14297   ALL_BREAKPOINTS (b)
14298     if (b->number == bptnum)
14299     {
14300       if (is_tracepoint (b))
14301         {
14302           if (from_tty && count != 0)
14303             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14304                              bptnum);
14305           return;
14306         }
14307       
14308       b->ignore_count = count;
14309       if (from_tty)
14310         {
14311           if (count == 0)
14312             printf_filtered (_("Will stop next time "
14313                                "breakpoint %d is reached."),
14314                              bptnum);
14315           else if (count == 1)
14316             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14317                              bptnum);
14318           else
14319             printf_filtered (_("Will ignore next %d "
14320                                "crossings of breakpoint %d."),
14321                              count, bptnum);
14322         }
14323       annotate_breakpoints_changed ();
14324       observer_notify_breakpoint_modified (b);
14325       return;
14326     }
14327
14328   error (_("No breakpoint number %d."), bptnum);
14329 }
14330
14331 /* Command to set ignore-count of breakpoint N to COUNT.  */
14332
14333 static void
14334 ignore_command (char *args, int from_tty)
14335 {
14336   char *p = args;
14337   int num;
14338
14339   if (p == 0)
14340     error_no_arg (_("a breakpoint number"));
14341
14342   num = get_number (&p);
14343   if (num == 0)
14344     error (_("bad breakpoint number: '%s'"), args);
14345   if (*p == 0)
14346     error (_("Second argument (specified ignore-count) is missing."));
14347
14348   set_ignore_count (num,
14349                     longest_to_int (value_as_long (parse_and_eval (p))),
14350                     from_tty);
14351   if (from_tty)
14352     printf_filtered ("\n");
14353 }
14354 \f
14355 /* Call FUNCTION on each of the breakpoints
14356    whose numbers are given in ARGS.  */
14357
14358 static void
14359 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14360                                                       void *),
14361                         void *data)
14362 {
14363   int num;
14364   struct breakpoint *b, *tmp;
14365   int match;
14366   struct get_number_or_range_state state;
14367
14368   if (args == 0)
14369     error_no_arg (_("one or more breakpoint numbers"));
14370
14371   init_number_or_range (&state, args);
14372
14373   while (!state.finished)
14374     {
14375       char *p = state.string;
14376
14377       match = 0;
14378
14379       num = get_number_or_range (&state);
14380       if (num == 0)
14381         {
14382           warning (_("bad breakpoint number at or near '%s'"), p);
14383         }
14384       else
14385         {
14386           ALL_BREAKPOINTS_SAFE (b, tmp)
14387             if (b->number == num)
14388               {
14389                 match = 1;
14390                 function (b, data);
14391                 break;
14392               }
14393           if (match == 0)
14394             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14395         }
14396     }
14397 }
14398
14399 static struct bp_location *
14400 find_location_by_number (char *number)
14401 {
14402   char *dot = strchr (number, '.');
14403   char *p1;
14404   int bp_num;
14405   int loc_num;
14406   struct breakpoint *b;
14407   struct bp_location *loc;  
14408
14409   *dot = '\0';
14410
14411   p1 = number;
14412   bp_num = get_number (&p1);
14413   if (bp_num == 0)
14414     error (_("Bad breakpoint number '%s'"), number);
14415
14416   ALL_BREAKPOINTS (b)
14417     if (b->number == bp_num)
14418       {
14419         break;
14420       }
14421
14422   if (!b || b->number != bp_num)
14423     error (_("Bad breakpoint number '%s'"), number);
14424   
14425   p1 = dot+1;
14426   loc_num = get_number (&p1);
14427   if (loc_num == 0)
14428     error (_("Bad breakpoint location number '%s'"), number);
14429
14430   --loc_num;
14431   loc = b->loc;
14432   for (;loc_num && loc; --loc_num, loc = loc->next)
14433     ;
14434   if (!loc)
14435     error (_("Bad breakpoint location number '%s'"), dot+1);
14436     
14437   return loc;  
14438 }
14439
14440
14441 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14442    If from_tty is nonzero, it prints a message to that effect,
14443    which ends with a period (no newline).  */
14444
14445 void
14446 disable_breakpoint (struct breakpoint *bpt)
14447 {
14448   /* Never disable a watchpoint scope breakpoint; we want to
14449      hit them when we leave scope so we can delete both the
14450      watchpoint and its scope breakpoint at that time.  */
14451   if (bpt->type == bp_watchpoint_scope)
14452     return;
14453
14454   /* You can't disable permanent breakpoints.  */
14455   if (bpt->enable_state == bp_permanent)
14456     return;
14457
14458   bpt->enable_state = bp_disabled;
14459
14460   /* Mark breakpoint locations modified.  */
14461   mark_breakpoint_modified (bpt);
14462
14463   if (target_supports_enable_disable_tracepoint ()
14464       && current_trace_status ()->running && is_tracepoint (bpt))
14465     {
14466       struct bp_location *location;
14467      
14468       for (location = bpt->loc; location; location = location->next)
14469         target_disable_tracepoint (location);
14470     }
14471
14472   update_global_location_list (0);
14473
14474   observer_notify_breakpoint_modified (bpt);
14475 }
14476
14477 /* A callback for iterate_over_related_breakpoints.  */
14478
14479 static void
14480 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14481 {
14482   disable_breakpoint (b);
14483 }
14484
14485 /* A callback for map_breakpoint_numbers that calls
14486    disable_breakpoint.  */
14487
14488 static void
14489 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14490 {
14491   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14492 }
14493
14494 static void
14495 disable_command (char *args, int from_tty)
14496 {
14497   if (args == 0)
14498     {
14499       struct breakpoint *bpt;
14500
14501       ALL_BREAKPOINTS (bpt)
14502         if (user_breakpoint_p (bpt))
14503           disable_breakpoint (bpt);
14504     }
14505   else if (strchr (args, '.'))
14506     {
14507       struct bp_location *loc = find_location_by_number (args);
14508       if (loc)
14509         {
14510           if (loc->enabled)
14511             {
14512               loc->enabled = 0;
14513               mark_breakpoint_location_modified (loc);
14514             }
14515           if (target_supports_enable_disable_tracepoint ()
14516               && current_trace_status ()->running && loc->owner
14517               && is_tracepoint (loc->owner))
14518             target_disable_tracepoint (loc);
14519         }
14520       update_global_location_list (0);
14521     }
14522   else
14523     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14524 }
14525
14526 static void
14527 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14528                         int count)
14529 {
14530   int target_resources_ok;
14531
14532   if (bpt->type == bp_hardware_breakpoint)
14533     {
14534       int i;
14535       i = hw_breakpoint_used_count ();
14536       target_resources_ok = 
14537         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14538                                             i + 1, 0);
14539       if (target_resources_ok == 0)
14540         error (_("No hardware breakpoint support in the target."));
14541       else if (target_resources_ok < 0)
14542         error (_("Hardware breakpoints used exceeds limit."));
14543     }
14544
14545   if (is_watchpoint (bpt))
14546     {
14547       /* Initialize it just to avoid a GCC false warning.  */
14548       enum enable_state orig_enable_state = 0;
14549       volatile struct gdb_exception e;
14550
14551       TRY_CATCH (e, RETURN_MASK_ALL)
14552         {
14553           struct watchpoint *w = (struct watchpoint *) bpt;
14554
14555           orig_enable_state = bpt->enable_state;
14556           bpt->enable_state = bp_enabled;
14557           update_watchpoint (w, 1 /* reparse */);
14558         }
14559       if (e.reason < 0)
14560         {
14561           bpt->enable_state = orig_enable_state;
14562           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14563                              bpt->number);
14564           return;
14565         }
14566     }
14567
14568   if (bpt->enable_state != bp_permanent)
14569     bpt->enable_state = bp_enabled;
14570
14571   bpt->enable_state = bp_enabled;
14572
14573   /* Mark breakpoint locations modified.  */
14574   mark_breakpoint_modified (bpt);
14575
14576   if (target_supports_enable_disable_tracepoint ()
14577       && current_trace_status ()->running && is_tracepoint (bpt))
14578     {
14579       struct bp_location *location;
14580
14581       for (location = bpt->loc; location; location = location->next)
14582         target_enable_tracepoint (location);
14583     }
14584
14585   bpt->disposition = disposition;
14586   bpt->enable_count = count;
14587   update_global_location_list (1);
14588   annotate_breakpoints_changed ();
14589   
14590   observer_notify_breakpoint_modified (bpt);
14591 }
14592
14593
14594 void
14595 enable_breakpoint (struct breakpoint *bpt)
14596 {
14597   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14598 }
14599
14600 static void
14601 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14602 {
14603   enable_breakpoint (bpt);
14604 }
14605
14606 /* A callback for map_breakpoint_numbers that calls
14607    enable_breakpoint.  */
14608
14609 static void
14610 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14611 {
14612   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14613 }
14614
14615 /* The enable command enables the specified breakpoints (or all defined
14616    breakpoints) so they once again become (or continue to be) effective
14617    in stopping the inferior.  */
14618
14619 static void
14620 enable_command (char *args, int from_tty)
14621 {
14622   if (args == 0)
14623     {
14624       struct breakpoint *bpt;
14625
14626       ALL_BREAKPOINTS (bpt)
14627         if (user_breakpoint_p (bpt))
14628           enable_breakpoint (bpt);
14629     }
14630   else if (strchr (args, '.'))
14631     {
14632       struct bp_location *loc = find_location_by_number (args);
14633       if (loc)
14634         {
14635           if (!loc->enabled)
14636             {
14637               loc->enabled = 1;
14638               mark_breakpoint_location_modified (loc);
14639             }
14640           if (target_supports_enable_disable_tracepoint ()
14641               && current_trace_status ()->running && loc->owner
14642               && is_tracepoint (loc->owner))
14643             target_enable_tracepoint (loc);
14644         }
14645       update_global_location_list (1);
14646     }
14647   else
14648     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14649 }
14650
14651 /* This struct packages up disposition data for application to multiple
14652    breakpoints.  */
14653
14654 struct disp_data
14655 {
14656   enum bpdisp disp;
14657   int count;
14658 };
14659
14660 static void
14661 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14662 {
14663   struct disp_data disp_data = *(struct disp_data *) arg;
14664
14665   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14666 }
14667
14668 static void
14669 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14670 {
14671   struct disp_data disp = { disp_disable, 1 };
14672
14673   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14674 }
14675
14676 static void
14677 enable_once_command (char *args, int from_tty)
14678 {
14679   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14680 }
14681
14682 static void
14683 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14684 {
14685   struct disp_data disp = { disp_disable, *(int *) countptr };
14686
14687   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14688 }
14689
14690 static void
14691 enable_count_command (char *args, int from_tty)
14692 {
14693   int count = get_number (&args);
14694
14695   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14696 }
14697
14698 static void
14699 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14700 {
14701   struct disp_data disp = { disp_del, 1 };
14702
14703   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14704 }
14705
14706 static void
14707 enable_delete_command (char *args, int from_tty)
14708 {
14709   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14710 }
14711 \f
14712 static void
14713 set_breakpoint_cmd (char *args, int from_tty)
14714 {
14715 }
14716
14717 static void
14718 show_breakpoint_cmd (char *args, int from_tty)
14719 {
14720 }
14721
14722 /* Invalidate last known value of any hardware watchpoint if
14723    the memory which that value represents has been written to by
14724    GDB itself.  */
14725
14726 static void
14727 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14728                                       CORE_ADDR addr, ssize_t len,
14729                                       const bfd_byte *data)
14730 {
14731   struct breakpoint *bp;
14732
14733   ALL_BREAKPOINTS (bp)
14734     if (bp->enable_state == bp_enabled
14735         && bp->type == bp_hardware_watchpoint)
14736       {
14737         struct watchpoint *wp = (struct watchpoint *) bp;
14738
14739         if (wp->val_valid && wp->val)
14740           {
14741             struct bp_location *loc;
14742
14743             for (loc = bp->loc; loc != NULL; loc = loc->next)
14744               if (loc->loc_type == bp_loc_hardware_watchpoint
14745                   && loc->address + loc->length > addr
14746                   && addr + len > loc->address)
14747                 {
14748                   value_free (wp->val);
14749                   wp->val = NULL;
14750                   wp->val_valid = 0;
14751                 }
14752           }
14753       }
14754 }
14755
14756 /* Create and insert a raw software breakpoint at PC.  Return an
14757    identifier, which should be used to remove the breakpoint later.
14758    In general, places which call this should be using something on the
14759    breakpoint chain instead; this function should be eliminated
14760    someday.  */
14761
14762 void *
14763 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14764                                   struct address_space *aspace, CORE_ADDR pc)
14765 {
14766   struct bp_target_info *bp_tgt;
14767
14768   bp_tgt = XZALLOC (struct bp_target_info);
14769
14770   bp_tgt->placed_address_space = aspace;
14771   bp_tgt->placed_address = pc;
14772
14773   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14774     {
14775       /* Could not insert the breakpoint.  */
14776       xfree (bp_tgt);
14777       return NULL;
14778     }
14779
14780   return bp_tgt;
14781 }
14782
14783 /* Remove a breakpoint BP inserted by
14784    deprecated_insert_raw_breakpoint.  */
14785
14786 int
14787 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14788 {
14789   struct bp_target_info *bp_tgt = bp;
14790   int ret;
14791
14792   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14793   xfree (bp_tgt);
14794
14795   return ret;
14796 }
14797
14798 /* One (or perhaps two) breakpoints used for software single
14799    stepping.  */
14800
14801 static void *single_step_breakpoints[2];
14802 static struct gdbarch *single_step_gdbarch[2];
14803
14804 /* Create and insert a breakpoint for software single step.  */
14805
14806 void
14807 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14808                                struct address_space *aspace, 
14809                                CORE_ADDR next_pc)
14810 {
14811   void **bpt_p;
14812
14813   if (single_step_breakpoints[0] == NULL)
14814     {
14815       bpt_p = &single_step_breakpoints[0];
14816       single_step_gdbarch[0] = gdbarch;
14817     }
14818   else
14819     {
14820       gdb_assert (single_step_breakpoints[1] == NULL);
14821       bpt_p = &single_step_breakpoints[1];
14822       single_step_gdbarch[1] = gdbarch;
14823     }
14824
14825   /* NOTE drow/2006-04-11: A future improvement to this function would
14826      be to only create the breakpoints once, and actually put them on
14827      the breakpoint chain.  That would let us use set_raw_breakpoint.
14828      We could adjust the addresses each time they were needed.  Doing
14829      this requires corresponding changes elsewhere where single step
14830      breakpoints are handled, however.  So, for now, we use this.  */
14831
14832   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14833   if (*bpt_p == NULL)
14834     error (_("Could not insert single-step breakpoint at %s"),
14835              paddress (gdbarch, next_pc));
14836 }
14837
14838 /* Check if the breakpoints used for software single stepping
14839    were inserted or not.  */
14840
14841 int
14842 single_step_breakpoints_inserted (void)
14843 {
14844   return (single_step_breakpoints[0] != NULL
14845           || single_step_breakpoints[1] != NULL);
14846 }
14847
14848 /* Remove and delete any breakpoints used for software single step.  */
14849
14850 void
14851 remove_single_step_breakpoints (void)
14852 {
14853   gdb_assert (single_step_breakpoints[0] != NULL);
14854
14855   /* See insert_single_step_breakpoint for more about this deprecated
14856      call.  */
14857   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14858                                     single_step_breakpoints[0]);
14859   single_step_gdbarch[0] = NULL;
14860   single_step_breakpoints[0] = NULL;
14861
14862   if (single_step_breakpoints[1] != NULL)
14863     {
14864       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14865                                         single_step_breakpoints[1]);
14866       single_step_gdbarch[1] = NULL;
14867       single_step_breakpoints[1] = NULL;
14868     }
14869 }
14870
14871 /* Delete software single step breakpoints without removing them from
14872    the inferior.  This is intended to be used if the inferior's address
14873    space where they were inserted is already gone, e.g. after exit or
14874    exec.  */
14875
14876 void
14877 cancel_single_step_breakpoints (void)
14878 {
14879   int i;
14880
14881   for (i = 0; i < 2; i++)
14882     if (single_step_breakpoints[i])
14883       {
14884         xfree (single_step_breakpoints[i]);
14885         single_step_breakpoints[i] = NULL;
14886         single_step_gdbarch[i] = NULL;
14887       }
14888 }
14889
14890 /* Detach software single-step breakpoints from INFERIOR_PTID without
14891    removing them.  */
14892
14893 static void
14894 detach_single_step_breakpoints (void)
14895 {
14896   int i;
14897
14898   for (i = 0; i < 2; i++)
14899     if (single_step_breakpoints[i])
14900       target_remove_breakpoint (single_step_gdbarch[i],
14901                                 single_step_breakpoints[i]);
14902 }
14903
14904 /* Check whether a software single-step breakpoint is inserted at
14905    PC.  */
14906
14907 static int
14908 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14909                                         CORE_ADDR pc)
14910 {
14911   int i;
14912
14913   for (i = 0; i < 2; i++)
14914     {
14915       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14916       if (bp_tgt
14917           && breakpoint_address_match (bp_tgt->placed_address_space,
14918                                        bp_tgt->placed_address,
14919                                        aspace, pc))
14920         return 1;
14921     }
14922
14923   return 0;
14924 }
14925
14926 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14927    non-zero otherwise.  */
14928 static int
14929 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14930 {
14931   if (syscall_catchpoint_p (bp)
14932       && bp->enable_state != bp_disabled
14933       && bp->enable_state != bp_call_disabled)
14934     return 1;
14935   else
14936     return 0;
14937 }
14938
14939 int
14940 catch_syscall_enabled (void)
14941 {
14942   struct catch_syscall_inferior_data *inf_data
14943     = get_catch_syscall_inferior_data (current_inferior ());
14944
14945   return inf_data->total_syscalls_count != 0;
14946 }
14947
14948 int
14949 catching_syscall_number (int syscall_number)
14950 {
14951   struct breakpoint *bp;
14952
14953   ALL_BREAKPOINTS (bp)
14954     if (is_syscall_catchpoint_enabled (bp))
14955       {
14956         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14957
14958         if (c->syscalls_to_be_caught)
14959           {
14960             int i, iter;
14961             for (i = 0;
14962                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14963                  i++)
14964               if (syscall_number == iter)
14965                 return 1;
14966           }
14967         else
14968           return 1;
14969       }
14970
14971   return 0;
14972 }
14973
14974 /* Complete syscall names.  Used by "catch syscall".  */
14975 static VEC (char_ptr) *
14976 catch_syscall_completer (struct cmd_list_element *cmd,
14977                          char *text, char *word)
14978 {
14979   const char **list = get_syscall_names ();
14980   VEC (char_ptr) *retlist
14981     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
14982
14983   xfree (list);
14984   return retlist;
14985 }
14986
14987 /* Tracepoint-specific operations.  */
14988
14989 /* Set tracepoint count to NUM.  */
14990 static void
14991 set_tracepoint_count (int num)
14992 {
14993   tracepoint_count = num;
14994   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14995 }
14996
14997 static void
14998 trace_command (char *arg, int from_tty)
14999 {
15000   struct breakpoint_ops *ops;
15001   const char *arg_cp = arg;
15002
15003   if (arg && probe_linespec_to_ops (&arg_cp))
15004     ops = &tracepoint_probe_breakpoint_ops;
15005   else
15006     ops = &tracepoint_breakpoint_ops;
15007
15008   create_breakpoint (get_current_arch (),
15009                      arg,
15010                      NULL, 0, NULL, 1 /* parse arg */,
15011                      0 /* tempflag */,
15012                      bp_tracepoint /* type_wanted */,
15013                      0 /* Ignore count */,
15014                      pending_break_support,
15015                      ops,
15016                      from_tty,
15017                      1 /* enabled */,
15018                      0 /* internal */, 0);
15019 }
15020
15021 static void
15022 ftrace_command (char *arg, int from_tty)
15023 {
15024   create_breakpoint (get_current_arch (),
15025                      arg,
15026                      NULL, 0, NULL, 1 /* parse arg */,
15027                      0 /* tempflag */,
15028                      bp_fast_tracepoint /* type_wanted */,
15029                      0 /* Ignore count */,
15030                      pending_break_support,
15031                      &tracepoint_breakpoint_ops,
15032                      from_tty,
15033                      1 /* enabled */,
15034                      0 /* internal */, 0);
15035 }
15036
15037 /* strace command implementation.  Creates a static tracepoint.  */
15038
15039 static void
15040 strace_command (char *arg, int from_tty)
15041 {
15042   struct breakpoint_ops *ops;
15043
15044   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15045      or with a normal static tracepoint.  */
15046   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15047     ops = &strace_marker_breakpoint_ops;
15048   else
15049     ops = &tracepoint_breakpoint_ops;
15050
15051   create_breakpoint (get_current_arch (),
15052                      arg,
15053                      NULL, 0, NULL, 1 /* parse arg */,
15054                      0 /* tempflag */,
15055                      bp_static_tracepoint /* type_wanted */,
15056                      0 /* Ignore count */,
15057                      pending_break_support,
15058                      ops,
15059                      from_tty,
15060                      1 /* enabled */,
15061                      0 /* internal */, 0);
15062 }
15063
15064 /* Set up a fake reader function that gets command lines from a linked
15065    list that was acquired during tracepoint uploading.  */
15066
15067 static struct uploaded_tp *this_utp;
15068 static int next_cmd;
15069
15070 static char *
15071 read_uploaded_action (void)
15072 {
15073   char *rslt;
15074
15075   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15076
15077   next_cmd++;
15078
15079   return rslt;
15080 }
15081
15082 /* Given information about a tracepoint as recorded on a target (which
15083    can be either a live system or a trace file), attempt to create an
15084    equivalent GDB tracepoint.  This is not a reliable process, since
15085    the target does not necessarily have all the information used when
15086    the tracepoint was originally defined.  */
15087   
15088 struct tracepoint *
15089 create_tracepoint_from_upload (struct uploaded_tp *utp)
15090 {
15091   char *addr_str, small_buf[100];
15092   struct tracepoint *tp;
15093
15094   if (utp->at_string)
15095     addr_str = utp->at_string;
15096   else
15097     {
15098       /* In the absence of a source location, fall back to raw
15099          address.  Since there is no way to confirm that the address
15100          means the same thing as when the trace was started, warn the
15101          user.  */
15102       warning (_("Uploaded tracepoint %d has no "
15103                  "source location, using raw address"),
15104                utp->number);
15105       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15106       addr_str = small_buf;
15107     }
15108
15109   /* There's not much we can do with a sequence of bytecodes.  */
15110   if (utp->cond && !utp->cond_string)
15111     warning (_("Uploaded tracepoint %d condition "
15112                "has no source form, ignoring it"),
15113              utp->number);
15114
15115   if (!create_breakpoint (get_current_arch (),
15116                           addr_str,
15117                           utp->cond_string, -1, NULL,
15118                           0 /* parse cond/thread */,
15119                           0 /* tempflag */,
15120                           utp->type /* type_wanted */,
15121                           0 /* Ignore count */,
15122                           pending_break_support,
15123                           &tracepoint_breakpoint_ops,
15124                           0 /* from_tty */,
15125                           utp->enabled /* enabled */,
15126                           0 /* internal */,
15127                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15128     return NULL;
15129
15130   /* Get the tracepoint we just created.  */
15131   tp = get_tracepoint (tracepoint_count);
15132   gdb_assert (tp != NULL);
15133
15134   if (utp->pass > 0)
15135     {
15136       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15137                  tp->base.number);
15138
15139       trace_pass_command (small_buf, 0);
15140     }
15141
15142   /* If we have uploaded versions of the original commands, set up a
15143      special-purpose "reader" function and call the usual command line
15144      reader, then pass the result to the breakpoint command-setting
15145      function.  */
15146   if (!VEC_empty (char_ptr, utp->cmd_strings))
15147     {
15148       struct command_line *cmd_list;
15149
15150       this_utp = utp;
15151       next_cmd = 0;
15152
15153       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15154
15155       breakpoint_set_commands (&tp->base, cmd_list);
15156     }
15157   else if (!VEC_empty (char_ptr, utp->actions)
15158            || !VEC_empty (char_ptr, utp->step_actions))
15159     warning (_("Uploaded tracepoint %d actions "
15160                "have no source form, ignoring them"),
15161              utp->number);
15162
15163   /* Copy any status information that might be available.  */
15164   tp->base.hit_count = utp->hit_count;
15165   tp->traceframe_usage = utp->traceframe_usage;
15166
15167   return tp;
15168 }
15169   
15170 /* Print information on tracepoint number TPNUM_EXP, or all if
15171    omitted.  */
15172
15173 static void
15174 tracepoints_info (char *args, int from_tty)
15175 {
15176   struct ui_out *uiout = current_uiout;
15177   int num_printed;
15178
15179   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15180
15181   if (num_printed == 0)
15182     {
15183       if (args == NULL || *args == '\0')
15184         ui_out_message (uiout, 0, "No tracepoints.\n");
15185       else
15186         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15187     }
15188
15189   default_collect_info ();
15190 }
15191
15192 /* The 'enable trace' command enables tracepoints.
15193    Not supported by all targets.  */
15194 static void
15195 enable_trace_command (char *args, int from_tty)
15196 {
15197   enable_command (args, from_tty);
15198 }
15199
15200 /* The 'disable trace' command disables tracepoints.
15201    Not supported by all targets.  */
15202 static void
15203 disable_trace_command (char *args, int from_tty)
15204 {
15205   disable_command (args, from_tty);
15206 }
15207
15208 /* Remove a tracepoint (or all if no argument).  */
15209 static void
15210 delete_trace_command (char *arg, int from_tty)
15211 {
15212   struct breakpoint *b, *b_tmp;
15213
15214   dont_repeat ();
15215
15216   if (arg == 0)
15217     {
15218       int breaks_to_delete = 0;
15219
15220       /* Delete all breakpoints if no argument.
15221          Do not delete internal or call-dummy breakpoints, these
15222          have to be deleted with an explicit breakpoint number 
15223          argument.  */
15224       ALL_TRACEPOINTS (b)
15225         if (is_tracepoint (b) && user_breakpoint_p (b))
15226           {
15227             breaks_to_delete = 1;
15228             break;
15229           }
15230
15231       /* Ask user only if there are some breakpoints to delete.  */
15232       if (!from_tty
15233           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15234         {
15235           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15236             if (is_tracepoint (b) && user_breakpoint_p (b))
15237               delete_breakpoint (b);
15238         }
15239     }
15240   else
15241     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15242 }
15243
15244 /* Helper function for trace_pass_command.  */
15245
15246 static void
15247 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15248 {
15249   tp->pass_count = count;
15250   observer_notify_breakpoint_modified (&tp->base);
15251   if (from_tty)
15252     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15253                      tp->base.number, count);
15254 }
15255
15256 /* Set passcount for tracepoint.
15257
15258    First command argument is passcount, second is tracepoint number.
15259    If tracepoint number omitted, apply to most recently defined.
15260    Also accepts special argument "all".  */
15261
15262 static void
15263 trace_pass_command (char *args, int from_tty)
15264 {
15265   struct tracepoint *t1;
15266   unsigned int count;
15267
15268   if (args == 0 || *args == 0)
15269     error (_("passcount command requires an "
15270              "argument (count + optional TP num)"));
15271
15272   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15273
15274   while (*args && isspace ((int) *args))
15275     args++;
15276
15277   if (*args && strncasecmp (args, "all", 3) == 0)
15278     {
15279       struct breakpoint *b;
15280
15281       args += 3;                        /* Skip special argument "all".  */
15282       if (*args)
15283         error (_("Junk at end of arguments."));
15284
15285       ALL_TRACEPOINTS (b)
15286       {
15287         t1 = (struct tracepoint *) b;
15288         trace_pass_set_count (t1, count, from_tty);
15289       }
15290     }
15291   else if (*args == '\0')
15292     {
15293       t1 = get_tracepoint_by_number (&args, NULL, 1);
15294       if (t1)
15295         trace_pass_set_count (t1, count, from_tty);
15296     }
15297   else
15298     {
15299       struct get_number_or_range_state state;
15300
15301       init_number_or_range (&state, args);
15302       while (!state.finished)
15303         {
15304           t1 = get_tracepoint_by_number (&args, &state, 1);
15305           if (t1)
15306             trace_pass_set_count (t1, count, from_tty);
15307         }
15308     }
15309 }
15310
15311 struct tracepoint *
15312 get_tracepoint (int num)
15313 {
15314   struct breakpoint *t;
15315
15316   ALL_TRACEPOINTS (t)
15317     if (t->number == num)
15318       return (struct tracepoint *) t;
15319
15320   return NULL;
15321 }
15322
15323 /* Find the tracepoint with the given target-side number (which may be
15324    different from the tracepoint number after disconnecting and
15325    reconnecting).  */
15326
15327 struct tracepoint *
15328 get_tracepoint_by_number_on_target (int num)
15329 {
15330   struct breakpoint *b;
15331
15332   ALL_TRACEPOINTS (b)
15333     {
15334       struct tracepoint *t = (struct tracepoint *) b;
15335
15336       if (t->number_on_target == num)
15337         return t;
15338     }
15339
15340   return NULL;
15341 }
15342
15343 /* Utility: parse a tracepoint number and look it up in the list.
15344    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15345    If OPTIONAL_P is true, then if the argument is missing, the most
15346    recent tracepoint (tracepoint_count) is returned.  */
15347 struct tracepoint *
15348 get_tracepoint_by_number (char **arg,
15349                           struct get_number_or_range_state *state,
15350                           int optional_p)
15351 {
15352   struct breakpoint *t;
15353   int tpnum;
15354   char *instring = arg == NULL ? NULL : *arg;
15355
15356   if (state)
15357     {
15358       gdb_assert (!state->finished);
15359       tpnum = get_number_or_range (state);
15360     }
15361   else if (arg == NULL || *arg == NULL || ! **arg)
15362     {
15363       if (optional_p)
15364         tpnum = tracepoint_count;
15365       else
15366         error_no_arg (_("tracepoint number"));
15367     }
15368   else
15369     tpnum = get_number (arg);
15370
15371   if (tpnum <= 0)
15372     {
15373       if (instring && *instring)
15374         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15375                          instring);
15376       else
15377         printf_filtered (_("Tracepoint argument missing "
15378                            "and no previous tracepoint\n"));
15379       return NULL;
15380     }
15381
15382   ALL_TRACEPOINTS (t)
15383     if (t->number == tpnum)
15384     {
15385       return (struct tracepoint *) t;
15386     }
15387
15388   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15389   return NULL;
15390 }
15391
15392 void
15393 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15394 {
15395   if (b->thread != -1)
15396     fprintf_unfiltered (fp, " thread %d", b->thread);
15397
15398   if (b->task != 0)
15399     fprintf_unfiltered (fp, " task %d", b->task);
15400
15401   fprintf_unfiltered (fp, "\n");
15402 }
15403
15404 /* Save information on user settable breakpoints (watchpoints, etc) to
15405    a new script file named FILENAME.  If FILTER is non-NULL, call it
15406    on each breakpoint and only include the ones for which it returns
15407    non-zero.  */
15408
15409 static void
15410 save_breakpoints (char *filename, int from_tty,
15411                   int (*filter) (const struct breakpoint *))
15412 {
15413   struct breakpoint *tp;
15414   int any = 0;
15415   char *pathname;
15416   struct cleanup *cleanup;
15417   struct ui_file *fp;
15418   int extra_trace_bits = 0;
15419
15420   if (filename == 0 || *filename == 0)
15421     error (_("Argument required (file name in which to save)"));
15422
15423   /* See if we have anything to save.  */
15424   ALL_BREAKPOINTS (tp)
15425   {
15426     /* Skip internal and momentary breakpoints.  */
15427     if (!user_breakpoint_p (tp))
15428       continue;
15429
15430     /* If we have a filter, only save the breakpoints it accepts.  */
15431     if (filter && !filter (tp))
15432       continue;
15433
15434     any = 1;
15435
15436     if (is_tracepoint (tp))
15437       {
15438         extra_trace_bits = 1;
15439
15440         /* We can stop searching.  */
15441         break;
15442       }
15443   }
15444
15445   if (!any)
15446     {
15447       warning (_("Nothing to save."));
15448       return;
15449     }
15450
15451   pathname = tilde_expand (filename);
15452   cleanup = make_cleanup (xfree, pathname);
15453   fp = gdb_fopen (pathname, "w");
15454   if (!fp)
15455     error (_("Unable to open file '%s' for saving (%s)"),
15456            filename, safe_strerror (errno));
15457   make_cleanup_ui_file_delete (fp);
15458
15459   if (extra_trace_bits)
15460     save_trace_state_variables (fp);
15461
15462   ALL_BREAKPOINTS (tp)
15463   {
15464     /* Skip internal and momentary breakpoints.  */
15465     if (!user_breakpoint_p (tp))
15466       continue;
15467
15468     /* If we have a filter, only save the breakpoints it accepts.  */
15469     if (filter && !filter (tp))
15470       continue;
15471
15472     tp->ops->print_recreate (tp, fp);
15473
15474     /* Note, we can't rely on tp->number for anything, as we can't
15475        assume the recreated breakpoint numbers will match.  Use $bpnum
15476        instead.  */
15477
15478     if (tp->cond_string)
15479       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15480
15481     if (tp->ignore_count)
15482       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15483
15484     if (tp->commands)
15485       {
15486         volatile struct gdb_exception ex;       
15487
15488         fprintf_unfiltered (fp, "  commands\n");
15489         
15490         ui_out_redirect (current_uiout, fp);
15491         TRY_CATCH (ex, RETURN_MASK_ALL)
15492           {
15493             print_command_lines (current_uiout, tp->commands->commands, 2);
15494           }
15495         ui_out_redirect (current_uiout, NULL);
15496
15497         if (ex.reason < 0)
15498           throw_exception (ex);
15499
15500         fprintf_unfiltered (fp, "  end\n");
15501       }
15502
15503     if (tp->enable_state == bp_disabled)
15504       fprintf_unfiltered (fp, "disable\n");
15505
15506     /* If this is a multi-location breakpoint, check if the locations
15507        should be individually disabled.  Watchpoint locations are
15508        special, and not user visible.  */
15509     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15510       {
15511         struct bp_location *loc;
15512         int n = 1;
15513
15514         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15515           if (!loc->enabled)
15516             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15517       }
15518   }
15519
15520   if (extra_trace_bits && *default_collect)
15521     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15522
15523   do_cleanups (cleanup);
15524   if (from_tty)
15525     printf_filtered (_("Saved to file '%s'.\n"), filename);
15526 }
15527
15528 /* The `save breakpoints' command.  */
15529
15530 static void
15531 save_breakpoints_command (char *args, int from_tty)
15532 {
15533   save_breakpoints (args, from_tty, NULL);
15534 }
15535
15536 /* The `save tracepoints' command.  */
15537
15538 static void
15539 save_tracepoints_command (char *args, int from_tty)
15540 {
15541   save_breakpoints (args, from_tty, is_tracepoint);
15542 }
15543
15544 /* Create a vector of all tracepoints.  */
15545
15546 VEC(breakpoint_p) *
15547 all_tracepoints (void)
15548 {
15549   VEC(breakpoint_p) *tp_vec = 0;
15550   struct breakpoint *tp;
15551
15552   ALL_TRACEPOINTS (tp)
15553   {
15554     VEC_safe_push (breakpoint_p, tp_vec, tp);
15555   }
15556
15557   return tp_vec;
15558 }
15559
15560 \f
15561 /* This help string is used for the break, hbreak, tbreak and thbreak
15562    commands.  It is defined as a macro to prevent duplication.
15563    COMMAND should be a string constant containing the name of the
15564    command.  */
15565 #define BREAK_ARGS_HELP(command) \
15566 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15567 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15568 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15569 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15570 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15571 If a line number is specified, break at start of code for that line.\n\
15572 If a function is specified, break at start of code for that function.\n\
15573 If an address is specified, break at that exact address.\n\
15574 With no LOCATION, uses current execution address of the selected\n\
15575 stack frame.  This is useful for breaking on return to a stack frame.\n\
15576 \n\
15577 THREADNUM is the number from \"info threads\".\n\
15578 CONDITION is a boolean expression.\n\
15579 \n\
15580 Multiple breakpoints at one place are permitted, and useful if their\n\
15581 conditions are different.\n\
15582 \n\
15583 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15584
15585 /* List of subcommands for "catch".  */
15586 static struct cmd_list_element *catch_cmdlist;
15587
15588 /* List of subcommands for "tcatch".  */
15589 static struct cmd_list_element *tcatch_cmdlist;
15590
15591 void
15592 add_catch_command (char *name, char *docstring,
15593                    void (*sfunc) (char *args, int from_tty,
15594                                   struct cmd_list_element *command),
15595                    completer_ftype *completer,
15596                    void *user_data_catch,
15597                    void *user_data_tcatch)
15598 {
15599   struct cmd_list_element *command;
15600
15601   command = add_cmd (name, class_breakpoint, NULL, docstring,
15602                      &catch_cmdlist);
15603   set_cmd_sfunc (command, sfunc);
15604   set_cmd_context (command, user_data_catch);
15605   set_cmd_completer (command, completer);
15606
15607   command = add_cmd (name, class_breakpoint, NULL, docstring,
15608                      &tcatch_cmdlist);
15609   set_cmd_sfunc (command, sfunc);
15610   set_cmd_context (command, user_data_tcatch);
15611   set_cmd_completer (command, completer);
15612 }
15613
15614 static void
15615 clear_syscall_counts (struct inferior *inf)
15616 {
15617   struct catch_syscall_inferior_data *inf_data
15618     = get_catch_syscall_inferior_data (inf);
15619
15620   inf_data->total_syscalls_count = 0;
15621   inf_data->any_syscall_count = 0;
15622   VEC_free (int, inf_data->syscalls_counts);
15623 }
15624
15625 static void
15626 save_command (char *arg, int from_tty)
15627 {
15628   printf_unfiltered (_("\"save\" must be followed by "
15629                        "the name of a save subcommand.\n"));
15630   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15631 }
15632
15633 struct breakpoint *
15634 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15635                           void *data)
15636 {
15637   struct breakpoint *b, *b_tmp;
15638
15639   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15640     {
15641       if ((*callback) (b, data))
15642         return b;
15643     }
15644
15645   return NULL;
15646 }
15647
15648 /* Zero if any of the breakpoint's locations could be a location where
15649    functions have been inlined, nonzero otherwise.  */
15650
15651 static int
15652 is_non_inline_function (struct breakpoint *b)
15653 {
15654   /* The shared library event breakpoint is set on the address of a
15655      non-inline function.  */
15656   if (b->type == bp_shlib_event)
15657     return 1;
15658
15659   return 0;
15660 }
15661
15662 /* Nonzero if the specified PC cannot be a location where functions
15663    have been inlined.  */
15664
15665 int
15666 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15667                            const struct target_waitstatus *ws)
15668 {
15669   struct breakpoint *b;
15670   struct bp_location *bl;
15671
15672   ALL_BREAKPOINTS (b)
15673     {
15674       if (!is_non_inline_function (b))
15675         continue;
15676
15677       for (bl = b->loc; bl != NULL; bl = bl->next)
15678         {
15679           if (!bl->shlib_disabled
15680               && bpstat_check_location (bl, aspace, pc, ws))
15681             return 1;
15682         }
15683     }
15684
15685   return 0;
15686 }
15687
15688 void
15689 initialize_breakpoint_ops (void)
15690 {
15691   static int initialized = 0;
15692
15693   struct breakpoint_ops *ops;
15694
15695   if (initialized)
15696     return;
15697   initialized = 1;
15698
15699   /* The breakpoint_ops structure to be inherit by all kinds of
15700      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15701      internal and momentary breakpoints, etc.).  */
15702   ops = &bkpt_base_breakpoint_ops;
15703   *ops = base_breakpoint_ops;
15704   ops->re_set = bkpt_re_set;
15705   ops->insert_location = bkpt_insert_location;
15706   ops->remove_location = bkpt_remove_location;
15707   ops->breakpoint_hit = bkpt_breakpoint_hit;
15708   ops->create_sals_from_address = bkpt_create_sals_from_address;
15709   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15710   ops->decode_linespec = bkpt_decode_linespec;
15711
15712   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15713   ops = &bkpt_breakpoint_ops;
15714   *ops = bkpt_base_breakpoint_ops;
15715   ops->re_set = bkpt_re_set;
15716   ops->resources_needed = bkpt_resources_needed;
15717   ops->print_it = bkpt_print_it;
15718   ops->print_mention = bkpt_print_mention;
15719   ops->print_recreate = bkpt_print_recreate;
15720
15721   /* Ranged breakpoints.  */
15722   ops = &ranged_breakpoint_ops;
15723   *ops = bkpt_breakpoint_ops;
15724   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15725   ops->resources_needed = resources_needed_ranged_breakpoint;
15726   ops->print_it = print_it_ranged_breakpoint;
15727   ops->print_one = print_one_ranged_breakpoint;
15728   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15729   ops->print_mention = print_mention_ranged_breakpoint;
15730   ops->print_recreate = print_recreate_ranged_breakpoint;
15731
15732   /* Internal breakpoints.  */
15733   ops = &internal_breakpoint_ops;
15734   *ops = bkpt_base_breakpoint_ops;
15735   ops->re_set = internal_bkpt_re_set;
15736   ops->check_status = internal_bkpt_check_status;
15737   ops->print_it = internal_bkpt_print_it;
15738   ops->print_mention = internal_bkpt_print_mention;
15739
15740   /* Momentary breakpoints.  */
15741   ops = &momentary_breakpoint_ops;
15742   *ops = bkpt_base_breakpoint_ops;
15743   ops->re_set = momentary_bkpt_re_set;
15744   ops->check_status = momentary_bkpt_check_status;
15745   ops->print_it = momentary_bkpt_print_it;
15746   ops->print_mention = momentary_bkpt_print_mention;
15747
15748   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15749   ops = &longjmp_breakpoint_ops;
15750   *ops = momentary_breakpoint_ops;
15751   ops->dtor = longjmp_bkpt_dtor;
15752
15753   /* Probe breakpoints.  */
15754   ops = &bkpt_probe_breakpoint_ops;
15755   *ops = bkpt_breakpoint_ops;
15756   ops->insert_location = bkpt_probe_insert_location;
15757   ops->remove_location = bkpt_probe_remove_location;
15758   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15759   ops->decode_linespec = bkpt_probe_decode_linespec;
15760
15761   /* GNU v3 exception catchpoints.  */
15762   ops = &gnu_v3_exception_catchpoint_ops;
15763   *ops = bkpt_breakpoint_ops;
15764   ops->print_it = print_it_exception_catchpoint;
15765   ops->print_one = print_one_exception_catchpoint;
15766   ops->print_mention = print_mention_exception_catchpoint;
15767   ops->print_recreate = print_recreate_exception_catchpoint;
15768
15769   /* Watchpoints.  */
15770   ops = &watchpoint_breakpoint_ops;
15771   *ops = base_breakpoint_ops;
15772   ops->dtor = dtor_watchpoint;
15773   ops->re_set = re_set_watchpoint;
15774   ops->insert_location = insert_watchpoint;
15775   ops->remove_location = remove_watchpoint;
15776   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15777   ops->check_status = check_status_watchpoint;
15778   ops->resources_needed = resources_needed_watchpoint;
15779   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15780   ops->print_it = print_it_watchpoint;
15781   ops->print_mention = print_mention_watchpoint;
15782   ops->print_recreate = print_recreate_watchpoint;
15783
15784   /* Masked watchpoints.  */
15785   ops = &masked_watchpoint_breakpoint_ops;
15786   *ops = watchpoint_breakpoint_ops;
15787   ops->insert_location = insert_masked_watchpoint;
15788   ops->remove_location = remove_masked_watchpoint;
15789   ops->resources_needed = resources_needed_masked_watchpoint;
15790   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15791   ops->print_it = print_it_masked_watchpoint;
15792   ops->print_one_detail = print_one_detail_masked_watchpoint;
15793   ops->print_mention = print_mention_masked_watchpoint;
15794   ops->print_recreate = print_recreate_masked_watchpoint;
15795
15796   /* Tracepoints.  */
15797   ops = &tracepoint_breakpoint_ops;
15798   *ops = base_breakpoint_ops;
15799   ops->re_set = tracepoint_re_set;
15800   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15801   ops->print_one_detail = tracepoint_print_one_detail;
15802   ops->print_mention = tracepoint_print_mention;
15803   ops->print_recreate = tracepoint_print_recreate;
15804   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15805   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15806   ops->decode_linespec = tracepoint_decode_linespec;
15807
15808   /* Probe tracepoints.  */
15809   ops = &tracepoint_probe_breakpoint_ops;
15810   *ops = tracepoint_breakpoint_ops;
15811   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15812   ops->decode_linespec = tracepoint_probe_decode_linespec;
15813
15814   /* Static tracepoints with marker (`-m').  */
15815   ops = &strace_marker_breakpoint_ops;
15816   *ops = tracepoint_breakpoint_ops;
15817   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15818   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15819   ops->decode_linespec = strace_marker_decode_linespec;
15820
15821   /* Fork catchpoints.  */
15822   ops = &catch_fork_breakpoint_ops;
15823   *ops = base_breakpoint_ops;
15824   ops->insert_location = insert_catch_fork;
15825   ops->remove_location = remove_catch_fork;
15826   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15827   ops->print_it = print_it_catch_fork;
15828   ops->print_one = print_one_catch_fork;
15829   ops->print_mention = print_mention_catch_fork;
15830   ops->print_recreate = print_recreate_catch_fork;
15831
15832   /* Vfork catchpoints.  */
15833   ops = &catch_vfork_breakpoint_ops;
15834   *ops = base_breakpoint_ops;
15835   ops->insert_location = insert_catch_vfork;
15836   ops->remove_location = remove_catch_vfork;
15837   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15838   ops->print_it = print_it_catch_vfork;
15839   ops->print_one = print_one_catch_vfork;
15840   ops->print_mention = print_mention_catch_vfork;
15841   ops->print_recreate = print_recreate_catch_vfork;
15842
15843   /* Exec catchpoints.  */
15844   ops = &catch_exec_breakpoint_ops;
15845   *ops = base_breakpoint_ops;
15846   ops->dtor = dtor_catch_exec;
15847   ops->insert_location = insert_catch_exec;
15848   ops->remove_location = remove_catch_exec;
15849   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15850   ops->print_it = print_it_catch_exec;
15851   ops->print_one = print_one_catch_exec;
15852   ops->print_mention = print_mention_catch_exec;
15853   ops->print_recreate = print_recreate_catch_exec;
15854
15855   /* Syscall catchpoints.  */
15856   ops = &catch_syscall_breakpoint_ops;
15857   *ops = base_breakpoint_ops;
15858   ops->dtor = dtor_catch_syscall;
15859   ops->insert_location = insert_catch_syscall;
15860   ops->remove_location = remove_catch_syscall;
15861   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15862   ops->print_it = print_it_catch_syscall;
15863   ops->print_one = print_one_catch_syscall;
15864   ops->print_mention = print_mention_catch_syscall;
15865   ops->print_recreate = print_recreate_catch_syscall;
15866
15867   /* Solib-related catchpoints.  */
15868   ops = &catch_solib_breakpoint_ops;
15869   *ops = base_breakpoint_ops;
15870   ops->dtor = dtor_catch_solib;
15871   ops->insert_location = insert_catch_solib;
15872   ops->remove_location = remove_catch_solib;
15873   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15874   ops->check_status = check_status_catch_solib;
15875   ops->print_it = print_it_catch_solib;
15876   ops->print_one = print_one_catch_solib;
15877   ops->print_mention = print_mention_catch_solib;
15878   ops->print_recreate = print_recreate_catch_solib;
15879
15880   ops = &dprintf_breakpoint_ops;
15881   *ops = bkpt_base_breakpoint_ops;
15882   ops->re_set = bkpt_re_set;
15883   ops->resources_needed = bkpt_resources_needed;
15884   ops->print_it = bkpt_print_it;
15885   ops->print_mention = bkpt_print_mention;
15886   ops->print_recreate = bkpt_print_recreate;
15887 }
15888
15889 /* Chain containing all defined "enable breakpoint" subcommands.  */
15890
15891 static struct cmd_list_element *enablebreaklist = NULL;
15892
15893 void
15894 _initialize_breakpoint (void)
15895 {
15896   struct cmd_list_element *c;
15897
15898   initialize_breakpoint_ops ();
15899
15900   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15901   observer_attach_inferior_exit (clear_syscall_counts);
15902   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15903
15904   breakpoint_objfile_key
15905     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15906
15907   catch_syscall_inferior_data
15908     = register_inferior_data_with_cleanup (NULL,
15909                                            catch_syscall_inferior_data_cleanup);
15910
15911   breakpoint_chain = 0;
15912   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15913      before a breakpoint is set.  */
15914   breakpoint_count = 0;
15915
15916   tracepoint_count = 0;
15917
15918   add_com ("ignore", class_breakpoint, ignore_command, _("\
15919 Set ignore-count of breakpoint number N to COUNT.\n\
15920 Usage is `ignore N COUNT'."));
15921   if (xdb_commands)
15922     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15923
15924   add_com ("commands", class_breakpoint, commands_command, _("\
15925 Set commands to be executed when a breakpoint is hit.\n\
15926 Give breakpoint number as argument after \"commands\".\n\
15927 With no argument, the targeted breakpoint is the last one set.\n\
15928 The commands themselves follow starting on the next line.\n\
15929 Type a line containing \"end\" to indicate the end of them.\n\
15930 Give \"silent\" as the first line to make the breakpoint silent;\n\
15931 then no output is printed when it is hit, except what the commands print."));
15932
15933   c = add_com ("condition", class_breakpoint, condition_command, _("\
15934 Specify breakpoint number N to break only if COND is true.\n\
15935 Usage is `condition N COND', where N is an integer and COND is an\n\
15936 expression to be evaluated whenever breakpoint N is reached."));
15937   set_cmd_completer (c, condition_completer);
15938
15939   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15940 Set a temporary breakpoint.\n\
15941 Like \"break\" except the breakpoint is only temporary,\n\
15942 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15943 by using \"enable delete\" on the breakpoint number.\n\
15944 \n"
15945 BREAK_ARGS_HELP ("tbreak")));
15946   set_cmd_completer (c, location_completer);
15947
15948   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15949 Set a hardware assisted breakpoint.\n\
15950 Like \"break\" except the breakpoint requires hardware support,\n\
15951 some target hardware may not have this support.\n\
15952 \n"
15953 BREAK_ARGS_HELP ("hbreak")));
15954   set_cmd_completer (c, location_completer);
15955
15956   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15957 Set a temporary hardware assisted breakpoint.\n\
15958 Like \"hbreak\" except the breakpoint is only temporary,\n\
15959 so it will be deleted when hit.\n\
15960 \n"
15961 BREAK_ARGS_HELP ("thbreak")));
15962   set_cmd_completer (c, location_completer);
15963
15964   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15965 Enable some breakpoints.\n\
15966 Give breakpoint numbers (separated by spaces) as arguments.\n\
15967 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15968 This is used to cancel the effect of the \"disable\" command.\n\
15969 With a subcommand you can enable temporarily."),
15970                   &enablelist, "enable ", 1, &cmdlist);
15971   if (xdb_commands)
15972     add_com ("ab", class_breakpoint, enable_command, _("\
15973 Enable some breakpoints.\n\
15974 Give breakpoint numbers (separated by spaces) as arguments.\n\
15975 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15976 This is used to cancel the effect of the \"disable\" command.\n\
15977 With a subcommand you can enable temporarily."));
15978
15979   add_com_alias ("en", "enable", class_breakpoint, 1);
15980
15981   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15982 Enable some breakpoints.\n\
15983 Give breakpoint numbers (separated by spaces) as arguments.\n\
15984 This is used to cancel the effect of the \"disable\" command.\n\
15985 May be abbreviated to simply \"enable\".\n"),
15986                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15987
15988   add_cmd ("once", no_class, enable_once_command, _("\
15989 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15990 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15991            &enablebreaklist);
15992
15993   add_cmd ("delete", no_class, enable_delete_command, _("\
15994 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15995 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15996            &enablebreaklist);
15997
15998   add_cmd ("count", no_class, enable_count_command, _("\
15999 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16000 If a breakpoint is hit while enabled in this fashion,\n\
16001 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16002            &enablebreaklist);
16003
16004   add_cmd ("delete", no_class, enable_delete_command, _("\
16005 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16006 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16007            &enablelist);
16008
16009   add_cmd ("once", no_class, enable_once_command, _("\
16010 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16011 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16012            &enablelist);
16013
16014   add_cmd ("count", no_class, enable_count_command, _("\
16015 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16016 If a breakpoint is hit while enabled in this fashion,\n\
16017 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16018            &enablelist);
16019
16020   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16021 Disable some breakpoints.\n\
16022 Arguments are breakpoint numbers with spaces in between.\n\
16023 To disable all breakpoints, give no argument.\n\
16024 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16025                   &disablelist, "disable ", 1, &cmdlist);
16026   add_com_alias ("dis", "disable", class_breakpoint, 1);
16027   add_com_alias ("disa", "disable", class_breakpoint, 1);
16028   if (xdb_commands)
16029     add_com ("sb", class_breakpoint, disable_command, _("\
16030 Disable some breakpoints.\n\
16031 Arguments are breakpoint numbers with spaces in between.\n\
16032 To disable all breakpoints, give no argument.\n\
16033 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16034
16035   add_cmd ("breakpoints", class_alias, disable_command, _("\
16036 Disable some breakpoints.\n\
16037 Arguments are breakpoint numbers with spaces in between.\n\
16038 To disable all breakpoints, give no argument.\n\
16039 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16040 This command may be abbreviated \"disable\"."),
16041            &disablelist);
16042
16043   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16044 Delete some breakpoints or auto-display expressions.\n\
16045 Arguments are breakpoint numbers with spaces in between.\n\
16046 To delete all breakpoints, give no argument.\n\
16047 \n\
16048 Also a prefix command for deletion of other GDB objects.\n\
16049 The \"unset\" command is also an alias for \"delete\"."),
16050                   &deletelist, "delete ", 1, &cmdlist);
16051   add_com_alias ("d", "delete", class_breakpoint, 1);
16052   add_com_alias ("del", "delete", class_breakpoint, 1);
16053   if (xdb_commands)
16054     add_com ("db", class_breakpoint, delete_command, _("\
16055 Delete some breakpoints.\n\
16056 Arguments are breakpoint numbers with spaces in between.\n\
16057 To delete all breakpoints, give no argument.\n"));
16058
16059   add_cmd ("breakpoints", class_alias, delete_command, _("\
16060 Delete some breakpoints or auto-display expressions.\n\
16061 Arguments are breakpoint numbers with spaces in between.\n\
16062 To delete all breakpoints, give no argument.\n\
16063 This command may be abbreviated \"delete\"."),
16064            &deletelist);
16065
16066   add_com ("clear", class_breakpoint, clear_command, _("\
16067 Clear breakpoint at specified line or function.\n\
16068 Argument may be line number, function name, or \"*\" and an address.\n\
16069 If line number is specified, all breakpoints in that line are cleared.\n\
16070 If function is specified, breakpoints at beginning of function are cleared.\n\
16071 If an address is specified, breakpoints at that address are cleared.\n\
16072 \n\
16073 With no argument, clears all breakpoints in the line that the selected frame\n\
16074 is executing in.\n\
16075 \n\
16076 See also the \"delete\" command which clears breakpoints by number."));
16077   add_com_alias ("cl", "clear", class_breakpoint, 1);
16078
16079   c = add_com ("break", class_breakpoint, break_command, _("\
16080 Set breakpoint at specified line or function.\n"
16081 BREAK_ARGS_HELP ("break")));
16082   set_cmd_completer (c, location_completer);
16083
16084   add_com_alias ("b", "break", class_run, 1);
16085   add_com_alias ("br", "break", class_run, 1);
16086   add_com_alias ("bre", "break", class_run, 1);
16087   add_com_alias ("brea", "break", class_run, 1);
16088
16089   if (xdb_commands)
16090    add_com_alias ("ba", "break", class_breakpoint, 1);
16091
16092   if (dbx_commands)
16093     {
16094       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16095 Break in function/address or break at a line in the current file."),
16096                              &stoplist, "stop ", 1, &cmdlist);
16097       add_cmd ("in", class_breakpoint, stopin_command,
16098                _("Break in function or address."), &stoplist);
16099       add_cmd ("at", class_breakpoint, stopat_command,
16100                _("Break at a line in the current file."), &stoplist);
16101       add_com ("status", class_info, breakpoints_info, _("\
16102 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16103 The \"Type\" column indicates one of:\n\
16104 \tbreakpoint     - normal breakpoint\n\
16105 \twatchpoint     - watchpoint\n\
16106 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16107 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16108 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16109 address and file/line number respectively.\n\
16110 \n\
16111 Convenience variable \"$_\" and default examine address for \"x\"\n\
16112 are set to the address of the last breakpoint listed unless the command\n\
16113 is prefixed with \"server \".\n\n\
16114 Convenience variable \"$bpnum\" contains the number of the last\n\
16115 breakpoint set."));
16116     }
16117
16118   add_info ("breakpoints", breakpoints_info, _("\
16119 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16120 The \"Type\" column indicates one of:\n\
16121 \tbreakpoint     - normal breakpoint\n\
16122 \twatchpoint     - watchpoint\n\
16123 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16124 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16125 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16126 address and file/line number respectively.\n\
16127 \n\
16128 Convenience variable \"$_\" and default examine address for \"x\"\n\
16129 are set to the address of the last breakpoint listed unless the command\n\
16130 is prefixed with \"server \".\n\n\
16131 Convenience variable \"$bpnum\" contains the number of the last\n\
16132 breakpoint set."));
16133
16134   add_info_alias ("b", "breakpoints", 1);
16135
16136   if (xdb_commands)
16137     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16138 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16139 The \"Type\" column indicates one of:\n\
16140 \tbreakpoint     - normal breakpoint\n\
16141 \twatchpoint     - watchpoint\n\
16142 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16143 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16144 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16145 address and file/line number respectively.\n\
16146 \n\
16147 Convenience variable \"$_\" and default examine address for \"x\"\n\
16148 are set to the address of the last breakpoint listed unless the command\n\
16149 is prefixed with \"server \".\n\n\
16150 Convenience variable \"$bpnum\" contains the number of the last\n\
16151 breakpoint set."));
16152
16153   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16154 Status of all breakpoints, or breakpoint number NUMBER.\n\
16155 The \"Type\" column indicates one of:\n\
16156 \tbreakpoint     - normal breakpoint\n\
16157 \twatchpoint     - watchpoint\n\
16158 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16159 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16160 \tuntil          - internal breakpoint used by the \"until\" command\n\
16161 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16162 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16163 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16164 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16165 address and file/line number respectively.\n\
16166 \n\
16167 Convenience variable \"$_\" and default examine address for \"x\"\n\
16168 are set to the address of the last breakpoint listed unless the command\n\
16169 is prefixed with \"server \".\n\n\
16170 Convenience variable \"$bpnum\" contains the number of the last\n\
16171 breakpoint set."),
16172            &maintenanceinfolist);
16173
16174   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16175 Set catchpoints to catch events."),
16176                   &catch_cmdlist, "catch ",
16177                   0/*allow-unknown*/, &cmdlist);
16178
16179   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16180 Set temporary catchpoints to catch events."),
16181                   &tcatch_cmdlist, "tcatch ",
16182                   0/*allow-unknown*/, &cmdlist);
16183
16184   /* Add catch and tcatch sub-commands.  */
16185   add_catch_command ("catch", _("\
16186 Catch an exception, when caught."),
16187                      catch_catch_command,
16188                      NULL,
16189                      CATCH_PERMANENT,
16190                      CATCH_TEMPORARY);
16191   add_catch_command ("throw", _("\
16192 Catch an exception, when thrown."),
16193                      catch_throw_command,
16194                      NULL,
16195                      CATCH_PERMANENT,
16196                      CATCH_TEMPORARY);
16197   add_catch_command ("fork", _("Catch calls to fork."),
16198                      catch_fork_command_1,
16199                      NULL,
16200                      (void *) (uintptr_t) catch_fork_permanent,
16201                      (void *) (uintptr_t) catch_fork_temporary);
16202   add_catch_command ("vfork", _("Catch calls to vfork."),
16203                      catch_fork_command_1,
16204                      NULL,
16205                      (void *) (uintptr_t) catch_vfork_permanent,
16206                      (void *) (uintptr_t) catch_vfork_temporary);
16207   add_catch_command ("exec", _("Catch calls to exec."),
16208                      catch_exec_command_1,
16209                      NULL,
16210                      CATCH_PERMANENT,
16211                      CATCH_TEMPORARY);
16212   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16213 Usage: catch load [REGEX]\n\
16214 If REGEX is given, only stop for libraries matching the regular expression."),
16215                      catch_load_command_1,
16216                      NULL,
16217                      CATCH_PERMANENT,
16218                      CATCH_TEMPORARY);
16219   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16220 Usage: catch unload [REGEX]\n\
16221 If REGEX is given, only stop for libraries matching the regular expression."),
16222                      catch_unload_command_1,
16223                      NULL,
16224                      CATCH_PERMANENT,
16225                      CATCH_TEMPORARY);
16226   add_catch_command ("syscall", _("\
16227 Catch system calls by their names and/or numbers.\n\
16228 Arguments say which system calls to catch.  If no arguments\n\
16229 are given, every system call will be caught.\n\
16230 Arguments, if given, should be one or more system call names\n\
16231 (if your system supports that), or system call numbers."),
16232                      catch_syscall_command_1,
16233                      catch_syscall_completer,
16234                      CATCH_PERMANENT,
16235                      CATCH_TEMPORARY);
16236
16237   c = add_com ("watch", class_breakpoint, watch_command, _("\
16238 Set a watchpoint for an expression.\n\
16239 Usage: watch [-l|-location] EXPRESSION\n\
16240 A watchpoint stops execution of your program whenever the value of\n\
16241 an expression changes.\n\
16242 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16243 the memory to which it refers."));
16244   set_cmd_completer (c, expression_completer);
16245
16246   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16247 Set a read watchpoint for an expression.\n\
16248 Usage: rwatch [-l|-location] EXPRESSION\n\
16249 A watchpoint stops execution of your program whenever the value of\n\
16250 an expression is read.\n\
16251 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16252 the memory to which it refers."));
16253   set_cmd_completer (c, expression_completer);
16254
16255   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16256 Set a watchpoint for an expression.\n\
16257 Usage: awatch [-l|-location] EXPRESSION\n\
16258 A watchpoint stops execution of your program whenever the value of\n\
16259 an expression is either read or written.\n\
16260 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16261 the memory to which it refers."));
16262   set_cmd_completer (c, expression_completer);
16263
16264   add_info ("watchpoints", watchpoints_info, _("\
16265 Status of specified watchpoints (all watchpoints if no argument)."));
16266
16267   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16268      respond to changes - contrary to the description.  */
16269   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16270                             &can_use_hw_watchpoints, _("\
16271 Set debugger's willingness to use watchpoint hardware."), _("\
16272 Show debugger's willingness to use watchpoint hardware."), _("\
16273 If zero, gdb will not use hardware for new watchpoints, even if\n\
16274 such is available.  (However, any hardware watchpoints that were\n\
16275 created before setting this to nonzero, will continue to use watchpoint\n\
16276 hardware.)"),
16277                             NULL,
16278                             show_can_use_hw_watchpoints,
16279                             &setlist, &showlist);
16280
16281   can_use_hw_watchpoints = 1;
16282
16283   /* Tracepoint manipulation commands.  */
16284
16285   c = add_com ("trace", class_breakpoint, trace_command, _("\
16286 Set a tracepoint at specified line or function.\n\
16287 \n"
16288 BREAK_ARGS_HELP ("trace") "\n\
16289 Do \"help tracepoints\" for info on other tracepoint commands."));
16290   set_cmd_completer (c, location_completer);
16291
16292   add_com_alias ("tp", "trace", class_alias, 0);
16293   add_com_alias ("tr", "trace", class_alias, 1);
16294   add_com_alias ("tra", "trace", class_alias, 1);
16295   add_com_alias ("trac", "trace", class_alias, 1);
16296
16297   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16298 Set a fast tracepoint at specified line or function.\n\
16299 \n"
16300 BREAK_ARGS_HELP ("ftrace") "\n\
16301 Do \"help tracepoints\" for info on other tracepoint commands."));
16302   set_cmd_completer (c, location_completer);
16303
16304   c = add_com ("strace", class_breakpoint, strace_command, _("\
16305 Set a static tracepoint at specified line, function or marker.\n\
16306 \n\
16307 strace [LOCATION] [if CONDITION]\n\
16308 LOCATION may be a line number, function name, \"*\" and an address,\n\
16309 or -m MARKER_ID.\n\
16310 If a line number is specified, probe the marker at start of code\n\
16311 for that line.  If a function is specified, probe the marker at start\n\
16312 of code for that function.  If an address is specified, probe the marker\n\
16313 at that exact address.  If a marker id is specified, probe the marker\n\
16314 with that name.  With no LOCATION, uses current execution address of\n\
16315 the selected stack frame.\n\
16316 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16317 This collects arbitrary user data passed in the probe point call to the\n\
16318 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16319 by printing the $_sdata variable like any other convenience variable.\n\
16320 \n\
16321 CONDITION is a boolean expression.\n\
16322 \n\
16323 Multiple tracepoints at one place are permitted, and useful if their\n\
16324 conditions are different.\n\
16325 \n\
16326 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16327 Do \"help tracepoints\" for info on other tracepoint commands."));
16328   set_cmd_completer (c, location_completer);
16329
16330   add_info ("tracepoints", tracepoints_info, _("\
16331 Status of specified tracepoints (all tracepoints if no argument).\n\
16332 Convenience variable \"$tpnum\" contains the number of the\n\
16333 last tracepoint set."));
16334
16335   add_info_alias ("tp", "tracepoints", 1);
16336
16337   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16338 Delete specified tracepoints.\n\
16339 Arguments are tracepoint numbers, separated by spaces.\n\
16340 No argument means delete all tracepoints."),
16341            &deletelist);
16342   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16343
16344   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16345 Disable specified tracepoints.\n\
16346 Arguments are tracepoint numbers, separated by spaces.\n\
16347 No argument means disable all tracepoints."),
16348            &disablelist);
16349   deprecate_cmd (c, "disable");
16350
16351   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16352 Enable specified tracepoints.\n\
16353 Arguments are tracepoint numbers, separated by spaces.\n\
16354 No argument means enable all tracepoints."),
16355            &enablelist);
16356   deprecate_cmd (c, "enable");
16357
16358   add_com ("passcount", class_trace, trace_pass_command, _("\
16359 Set the passcount for a tracepoint.\n\
16360 The trace will end when the tracepoint has been passed 'count' times.\n\
16361 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16362 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16363
16364   add_prefix_cmd ("save", class_breakpoint, save_command,
16365                   _("Save breakpoint definitions as a script."),
16366                   &save_cmdlist, "save ",
16367                   0/*allow-unknown*/, &cmdlist);
16368
16369   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16370 Save current breakpoint definitions as a script.\n\
16371 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16372 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16373 session to restore them."),
16374                &save_cmdlist);
16375   set_cmd_completer (c, filename_completer);
16376
16377   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16378 Save current tracepoint definitions as a script.\n\
16379 Use the 'source' command in another debug session to restore them."),
16380                &save_cmdlist);
16381   set_cmd_completer (c, filename_completer);
16382
16383   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16384   deprecate_cmd (c, "save tracepoints");
16385
16386   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16387 Breakpoint specific settings\n\
16388 Configure various breakpoint-specific variables such as\n\
16389 pending breakpoint behavior"),
16390                   &breakpoint_set_cmdlist, "set breakpoint ",
16391                   0/*allow-unknown*/, &setlist);
16392   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16393 Breakpoint specific settings\n\
16394 Configure various breakpoint-specific variables such as\n\
16395 pending breakpoint behavior"),
16396                   &breakpoint_show_cmdlist, "show breakpoint ",
16397                   0/*allow-unknown*/, &showlist);
16398
16399   add_setshow_auto_boolean_cmd ("pending", no_class,
16400                                 &pending_break_support, _("\
16401 Set debugger's behavior regarding pending breakpoints."), _("\
16402 Show debugger's behavior regarding pending breakpoints."), _("\
16403 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16404 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16405 an error.  If auto, an unrecognized breakpoint location results in a\n\
16406 user-query to see if a pending breakpoint should be created."),
16407                                 NULL,
16408                                 show_pending_break_support,
16409                                 &breakpoint_set_cmdlist,
16410                                 &breakpoint_show_cmdlist);
16411
16412   pending_break_support = AUTO_BOOLEAN_AUTO;
16413
16414   add_setshow_boolean_cmd ("auto-hw", no_class,
16415                            &automatic_hardware_breakpoints, _("\
16416 Set automatic usage of hardware breakpoints."), _("\
16417 Show automatic usage of hardware breakpoints."), _("\
16418 If set, the debugger will automatically use hardware breakpoints for\n\
16419 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16420 a warning will be emitted for such breakpoints."),
16421                            NULL,
16422                            show_automatic_hardware_breakpoints,
16423                            &breakpoint_set_cmdlist,
16424                            &breakpoint_show_cmdlist);
16425
16426   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16427                                 &always_inserted_mode, _("\
16428 Set mode for inserting breakpoints."), _("\
16429 Show mode for inserting breakpoints."), _("\
16430 When this mode is off, breakpoints are inserted in inferior when it is\n\
16431 resumed, and removed when execution stops.  When this mode is on,\n\
16432 breakpoints are inserted immediately and removed only when the user\n\
16433 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16434 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16435 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16436 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16437 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16438                                 NULL,
16439                                 &show_always_inserted_mode,
16440                                 &breakpoint_set_cmdlist,
16441                                 &breakpoint_show_cmdlist);
16442
16443   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16444                         condition_evaluation_enums,
16445                         &condition_evaluation_mode_1, _("\
16446 Set mode of breakpoint condition evaluation."), _("\
16447 Show mode of breakpoint condition evaluation."), _("\
16448 When this is set to \"host\", breakpoint conditions will be\n\
16449 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16450 breakpoint conditions will be downloaded to the target (if the target\n\
16451 supports such feature) and conditions will be evaluated on the target's side.\n\
16452 If this is set to \"auto\" (default), this will be automatically set to\n\
16453 \"target\" if it supports condition evaluation, otherwise it will\n\
16454 be set to \"gdb\""),
16455                            &set_condition_evaluation_mode,
16456                            &show_condition_evaluation_mode,
16457                            &breakpoint_set_cmdlist,
16458                            &breakpoint_show_cmdlist);
16459
16460   add_com ("break-range", class_breakpoint, break_range_command, _("\
16461 Set a breakpoint for an address range.\n\
16462 break-range START-LOCATION, END-LOCATION\n\
16463 where START-LOCATION and END-LOCATION can be one of the following:\n\
16464   LINENUM, for that line in the current file,\n\
16465   FILE:LINENUM, for that line in that file,\n\
16466   +OFFSET, for that number of lines after the current line\n\
16467            or the start of the range\n\
16468   FUNCTION, for the first line in that function,\n\
16469   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16470   *ADDRESS, for the instruction at that address.\n\
16471 \n\
16472 The breakpoint will stop execution of the inferior whenever it executes\n\
16473 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16474 range (including START-LOCATION and END-LOCATION)."));
16475
16476   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16477 Set a dynamic printf at specified line or function.\n\
16478 dprintf location,format string,arg1,arg2,...\n\
16479 location may be a line number, function name, or \"*\" and an address.\n\
16480 If a line number is specified, break at start of code for that line.\n\
16481 If a function is specified, break at start of code for that function.\n\
16482 "));
16483   set_cmd_completer (c, location_completer);
16484
16485   add_setshow_enum_cmd ("dprintf-style", class_support,
16486                         dprintf_style_enums, &dprintf_style, _("\
16487 Set the style of usage for dynamic printf."), _("\
16488 Show the style of usage for dynamic printf."), _("\
16489 This setting chooses how GDB will do a dynamic printf.\n\
16490 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16491 console, as with the \"printf\" command.\n\
16492 If the value is \"call\", the print is done by calling a function in your\n\
16493 program; by default printf(), but you can choose a different function or\n\
16494 output stream by setting dprintf-function and dprintf-channel."),
16495                         update_dprintf_commands, NULL,
16496                         &setlist, &showlist);
16497
16498   dprintf_function = xstrdup ("printf");
16499   add_setshow_string_cmd ("dprintf-function", class_support,
16500                           &dprintf_function, _("\
16501 Set the function to use for dynamic printf"), _("\
16502 Show the function to use for dynamic printf"), NULL,
16503                           update_dprintf_commands, NULL,
16504                           &setlist, &showlist);
16505
16506   dprintf_channel = xstrdup ("");
16507   add_setshow_string_cmd ("dprintf-channel", class_support,
16508                           &dprintf_channel, _("\
16509 Set the channel to use for dynamic printf"), _("\
16510 Show the channel to use for dynamic printf"), NULL,
16511                           update_dprintf_commands, NULL,
16512                           &setlist, &showlist);
16513
16514   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16515                            &disconnected_dprintf, _("\
16516 Set whether dprintf continues after GDB disconnects."), _("\
16517 Show whether dprintf continues after GDB disconnects."), _("\
16518 Use this to let dprintf commands continue to hit and produce output\n\
16519 even if GDB disconnects or detaches from the target."),
16520                            NULL,
16521                            NULL,
16522                            &setlist, &showlist);
16523
16524   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16525 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16526 (target agent only) This is useful for formatted output in user-defined commands."));
16527
16528   automatic_hardware_breakpoints = 1;
16529
16530   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16531 }