2012-11-20 Pedro Alves <palves@redhat.com>
[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               sprintf (location, "%d", b->number);
1028             else
1029               sprintf (location, "%d.%d", b->number, count);
1030
1031             if (strncmp (location, text, len) == 0)
1032               VEC_safe_push (char_ptr, result, xstrdup (location));
1033
1034             ++count;
1035           }
1036       }
1037
1038       return result;
1039     }
1040
1041   /* We're completing the expression part.  */
1042   text = skip_spaces (space);
1043   return expression_completer (cmd, text, word);
1044 }
1045
1046 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1047
1048 static void
1049 condition_command (char *arg, int from_tty)
1050 {
1051   struct breakpoint *b;
1052   char *p;
1053   int bnum;
1054
1055   if (arg == 0)
1056     error_no_arg (_("breakpoint number"));
1057
1058   p = arg;
1059   bnum = get_number (&p);
1060   if (bnum == 0)
1061     error (_("Bad breakpoint argument: '%s'"), arg);
1062
1063   ALL_BREAKPOINTS (b)
1064     if (b->number == bnum)
1065       {
1066         /* Check if this breakpoint has a Python object assigned to
1067            it, and if it has a definition of the "stop"
1068            method.  This method and conditions entered into GDB from
1069            the CLI are mutually exclusive.  */
1070         if (b->py_bp_object
1071             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1072           error (_("Cannot set a condition where a Python 'stop' "
1073                    "method has been defined in the breakpoint."));
1074         set_breakpoint_condition (b, p, from_tty);
1075
1076         if (is_breakpoint (b))
1077           update_global_location_list (1);
1078
1079         return;
1080       }
1081
1082   error (_("No breakpoint number %d."), bnum);
1083 }
1084
1085 /* Check that COMMAND do not contain commands that are suitable
1086    only for tracepoints and not suitable for ordinary breakpoints.
1087    Throw if any such commands is found.  */
1088
1089 static void
1090 check_no_tracepoint_commands (struct command_line *commands)
1091 {
1092   struct command_line *c;
1093
1094   for (c = commands; c; c = c->next)
1095     {
1096       int i;
1097
1098       if (c->control_type == while_stepping_control)
1099         error (_("The 'while-stepping' command can "
1100                  "only be used for tracepoints"));
1101
1102       for (i = 0; i < c->body_count; ++i)
1103         check_no_tracepoint_commands ((c->body_list)[i]);
1104
1105       /* Not that command parsing removes leading whitespace and comment
1106          lines and also empty lines.  So, we only need to check for
1107          command directly.  */
1108       if (strstr (c->line, "collect ") == c->line)
1109         error (_("The 'collect' command can only be used for tracepoints"));
1110
1111       if (strstr (c->line, "teval ") == c->line)
1112         error (_("The 'teval' command can only be used for tracepoints"));
1113     }
1114 }
1115
1116 /* Encapsulate tests for different types of tracepoints.  */
1117
1118 static int
1119 is_tracepoint_type (enum bptype type)
1120 {
1121   return (type == bp_tracepoint
1122           || type == bp_fast_tracepoint
1123           || type == bp_static_tracepoint);
1124 }
1125
1126 int
1127 is_tracepoint (const struct breakpoint *b)
1128 {
1129   return is_tracepoint_type (b->type);
1130 }
1131
1132 /* A helper function that validates that COMMANDS are valid for a
1133    breakpoint.  This function will throw an exception if a problem is
1134    found.  */
1135
1136 static void
1137 validate_commands_for_breakpoint (struct breakpoint *b,
1138                                   struct command_line *commands)
1139 {
1140   if (is_tracepoint (b))
1141     {
1142       /* We need to verify that each top-level element of commands is
1143          valid for tracepoints, that there's at most one
1144          while-stepping element, and that while-stepping's body has
1145          valid tracing commands excluding nested while-stepping.  */
1146       struct command_line *c;
1147       struct command_line *while_stepping = 0;
1148       for (c = commands; c; c = c->next)
1149         {
1150           if (c->control_type == while_stepping_control)
1151             {
1152               if (b->type == bp_fast_tracepoint)
1153                 error (_("The 'while-stepping' command "
1154                          "cannot be used for fast tracepoint"));
1155               else if (b->type == bp_static_tracepoint)
1156                 error (_("The 'while-stepping' command "
1157                          "cannot be used for static tracepoint"));
1158
1159               if (while_stepping)
1160                 error (_("The 'while-stepping' command "
1161                          "can be used only once"));
1162               else
1163                 while_stepping = c;
1164             }
1165         }
1166       if (while_stepping)
1167         {
1168           struct command_line *c2;
1169
1170           gdb_assert (while_stepping->body_count == 1);
1171           c2 = while_stepping->body_list[0];
1172           for (; c2; c2 = c2->next)
1173             {
1174               if (c2->control_type == while_stepping_control)
1175                 error (_("The 'while-stepping' command cannot be nested"));
1176             }
1177         }
1178     }
1179   else
1180     {
1181       check_no_tracepoint_commands (commands);
1182     }
1183 }
1184
1185 /* Return a vector of all the static tracepoints set at ADDR.  The
1186    caller is responsible for releasing the vector.  */
1187
1188 VEC(breakpoint_p) *
1189 static_tracepoints_here (CORE_ADDR addr)
1190 {
1191   struct breakpoint *b;
1192   VEC(breakpoint_p) *found = 0;
1193   struct bp_location *loc;
1194
1195   ALL_BREAKPOINTS (b)
1196     if (b->type == bp_static_tracepoint)
1197       {
1198         for (loc = b->loc; loc; loc = loc->next)
1199           if (loc->address == addr)
1200             VEC_safe_push(breakpoint_p, found, b);
1201       }
1202
1203   return found;
1204 }
1205
1206 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1207    validate that only allowed commands are included.  */
1208
1209 void
1210 breakpoint_set_commands (struct breakpoint *b, 
1211                          struct command_line *commands)
1212 {
1213   validate_commands_for_breakpoint (b, commands);
1214
1215   decref_counted_command_line (&b->commands);
1216   b->commands = alloc_counted_command_line (commands);
1217   annotate_breakpoints_changed ();
1218   observer_notify_breakpoint_modified (b);
1219 }
1220
1221 /* Set the internal `silent' flag on the breakpoint.  Note that this
1222    is not the same as the "silent" that may appear in the breakpoint's
1223    commands.  */
1224
1225 void
1226 breakpoint_set_silent (struct breakpoint *b, int silent)
1227 {
1228   int old_silent = b->silent;
1229
1230   b->silent = silent;
1231   if (old_silent != silent)
1232     observer_notify_breakpoint_modified (b);
1233 }
1234
1235 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1236    breakpoint work for any thread.  */
1237
1238 void
1239 breakpoint_set_thread (struct breakpoint *b, int thread)
1240 {
1241   int old_thread = b->thread;
1242
1243   b->thread = thread;
1244   if (old_thread != thread)
1245     observer_notify_breakpoint_modified (b);
1246 }
1247
1248 /* Set the task for this breakpoint.  If TASK is 0, make the
1249    breakpoint work for any task.  */
1250
1251 void
1252 breakpoint_set_task (struct breakpoint *b, int task)
1253 {
1254   int old_task = b->task;
1255
1256   b->task = task;
1257   if (old_task != task)
1258     observer_notify_breakpoint_modified (b);
1259 }
1260
1261 void
1262 check_tracepoint_command (char *line, void *closure)
1263 {
1264   struct breakpoint *b = closure;
1265
1266   validate_actionline (&line, b);
1267 }
1268
1269 /* A structure used to pass information through
1270    map_breakpoint_numbers.  */
1271
1272 struct commands_info
1273 {
1274   /* True if the command was typed at a tty.  */
1275   int from_tty;
1276
1277   /* The breakpoint range spec.  */
1278   char *arg;
1279
1280   /* Non-NULL if the body of the commands are being read from this
1281      already-parsed command.  */
1282   struct command_line *control;
1283
1284   /* The command lines read from the user, or NULL if they have not
1285      yet been read.  */
1286   struct counted_command_line *cmd;
1287 };
1288
1289 /* A callback for map_breakpoint_numbers that sets the commands for
1290    commands_command.  */
1291
1292 static void
1293 do_map_commands_command (struct breakpoint *b, void *data)
1294 {
1295   struct commands_info *info = data;
1296
1297   if (info->cmd == NULL)
1298     {
1299       struct command_line *l;
1300
1301       if (info->control != NULL)
1302         l = copy_command_lines (info->control->body_list[0]);
1303       else
1304         {
1305           struct cleanup *old_chain;
1306           char *str;
1307
1308           str = xstrprintf (_("Type commands for breakpoint(s) "
1309                               "%s, one per line."),
1310                             info->arg);
1311
1312           old_chain = make_cleanup (xfree, str);
1313
1314           l = read_command_lines (str,
1315                                   info->from_tty, 1,
1316                                   (is_tracepoint (b)
1317                                    ? check_tracepoint_command : 0),
1318                                   b);
1319
1320           do_cleanups (old_chain);
1321         }
1322
1323       info->cmd = alloc_counted_command_line (l);
1324     }
1325
1326   /* If a breakpoint was on the list more than once, we don't need to
1327      do anything.  */
1328   if (b->commands != info->cmd)
1329     {
1330       validate_commands_for_breakpoint (b, info->cmd->commands);
1331       incref_counted_command_line (info->cmd);
1332       decref_counted_command_line (&b->commands);
1333       b->commands = info->cmd;
1334       annotate_breakpoints_changed ();
1335       observer_notify_breakpoint_modified (b);
1336     }
1337 }
1338
1339 static void
1340 commands_command_1 (char *arg, int from_tty, 
1341                     struct command_line *control)
1342 {
1343   struct cleanup *cleanups;
1344   struct commands_info info;
1345
1346   info.from_tty = from_tty;
1347   info.control = control;
1348   info.cmd = NULL;
1349   /* If we read command lines from the user, then `info' will hold an
1350      extra reference to the commands that we must clean up.  */
1351   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1352
1353   if (arg == NULL || !*arg)
1354     {
1355       if (breakpoint_count - prev_breakpoint_count > 1)
1356         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1357                           breakpoint_count);
1358       else if (breakpoint_count > 0)
1359         arg = xstrprintf ("%d", breakpoint_count);
1360       else
1361         {
1362           /* So that we don't try to free the incoming non-NULL
1363              argument in the cleanup below.  Mapping breakpoint
1364              numbers will fail in this case.  */
1365           arg = NULL;
1366         }
1367     }
1368   else
1369     /* The command loop has some static state, so we need to preserve
1370        our argument.  */
1371     arg = xstrdup (arg);
1372
1373   if (arg != NULL)
1374     make_cleanup (xfree, arg);
1375
1376   info.arg = arg;
1377
1378   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1379
1380   if (info.cmd == NULL)
1381     error (_("No breakpoints specified."));
1382
1383   do_cleanups (cleanups);
1384 }
1385
1386 static void
1387 commands_command (char *arg, int from_tty)
1388 {
1389   commands_command_1 (arg, from_tty, NULL);
1390 }
1391
1392 /* Like commands_command, but instead of reading the commands from
1393    input stream, takes them from an already parsed command structure.
1394
1395    This is used by cli-script.c to DTRT with breakpoint commands
1396    that are part of if and while bodies.  */
1397 enum command_control_type
1398 commands_from_control_command (char *arg, struct command_line *cmd)
1399 {
1400   commands_command_1 (arg, 0, cmd);
1401   return simple_control;
1402 }
1403
1404 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1405
1406 static int
1407 bp_location_has_shadow (struct bp_location *bl)
1408 {
1409   if (bl->loc_type != bp_loc_software_breakpoint)
1410     return 0;
1411   if (!bl->inserted)
1412     return 0;
1413   if (bl->target_info.shadow_len == 0)
1414     /* BL isn't valid, or doesn't shadow memory.  */
1415     return 0;
1416   return 1;
1417 }
1418
1419 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1420    by replacing any memory breakpoints with their shadowed contents.
1421
1422    If READBUF is not NULL, this buffer must not overlap with any of
1423    the breakpoint location's shadow_contents buffers.  Otherwise,
1424    a failed assertion internal error will be raised.
1425
1426    The range of shadowed area by each bp_location is:
1427      bl->address - bp_location_placed_address_before_address_max
1428      up to bl->address + bp_location_shadow_len_after_address_max
1429    The range we were requested to resolve shadows for is:
1430      memaddr ... memaddr + len
1431    Thus the safe cutoff boundaries for performance optimization are
1432      memaddr + len <= (bl->address
1433                        - bp_location_placed_address_before_address_max)
1434    and:
1435      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1436
1437 void
1438 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1439                         const gdb_byte *writebuf_org,
1440                         ULONGEST memaddr, LONGEST len)
1441 {
1442   /* Left boundary, right boundary and median element of our binary
1443      search.  */
1444   unsigned bc_l, bc_r, bc;
1445
1446   /* Find BC_L which is a leftmost element which may affect BUF
1447      content.  It is safe to report lower value but a failure to
1448      report higher one.  */
1449
1450   bc_l = 0;
1451   bc_r = bp_location_count;
1452   while (bc_l + 1 < bc_r)
1453     {
1454       struct bp_location *bl;
1455
1456       bc = (bc_l + bc_r) / 2;
1457       bl = bp_location[bc];
1458
1459       /* Check first BL->ADDRESS will not overflow due to the added
1460          constant.  Then advance the left boundary only if we are sure
1461          the BC element can in no way affect the BUF content (MEMADDR
1462          to MEMADDR + LEN range).
1463
1464          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1465          offset so that we cannot miss a breakpoint with its shadow
1466          range tail still reaching MEMADDR.  */
1467
1468       if ((bl->address + bp_location_shadow_len_after_address_max
1469            >= bl->address)
1470           && (bl->address + bp_location_shadow_len_after_address_max
1471               <= memaddr))
1472         bc_l = bc;
1473       else
1474         bc_r = bc;
1475     }
1476
1477   /* Due to the binary search above, we need to make sure we pick the
1478      first location that's at BC_L's address.  E.g., if there are
1479      multiple locations at the same address, BC_L may end up pointing
1480      at a duplicate location, and miss the "master"/"inserted"
1481      location.  Say, given locations L1, L2 and L3 at addresses A and
1482      B:
1483
1484       L1@A, L2@A, L3@B, ...
1485
1486      BC_L could end up pointing at location L2, while the "master"
1487      location could be L1.  Since the `loc->inserted' flag is only set
1488      on "master" locations, we'd forget to restore the shadow of L1
1489      and L2.  */
1490   while (bc_l > 0
1491          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1492     bc_l--;
1493
1494   /* Now do full processing of the found relevant range of elements.  */
1495
1496   for (bc = bc_l; bc < bp_location_count; bc++)
1497   {
1498     struct bp_location *bl = bp_location[bc];
1499     CORE_ADDR bp_addr = 0;
1500     int bp_size = 0;
1501     int bptoffset = 0;
1502
1503     /* bp_location array has BL->OWNER always non-NULL.  */
1504     if (bl->owner->type == bp_none)
1505       warning (_("reading through apparently deleted breakpoint #%d?"),
1506                bl->owner->number);
1507
1508     /* Performance optimization: any further element can no longer affect BUF
1509        content.  */
1510
1511     if (bl->address >= bp_location_placed_address_before_address_max
1512         && memaddr + len <= (bl->address
1513                              - bp_location_placed_address_before_address_max))
1514       break;
1515
1516     if (!bp_location_has_shadow (bl))
1517       continue;
1518     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1519                                    current_program_space->aspace, 0))
1520       continue;
1521
1522     /* Addresses and length of the part of the breakpoint that
1523        we need to copy.  */
1524     bp_addr = bl->target_info.placed_address;
1525     bp_size = bl->target_info.shadow_len;
1526
1527     if (bp_addr + bp_size <= memaddr)
1528       /* The breakpoint is entirely before the chunk of memory we
1529          are reading.  */
1530       continue;
1531
1532     if (bp_addr >= memaddr + len)
1533       /* The breakpoint is entirely after the chunk of memory we are
1534          reading.  */
1535       continue;
1536
1537     /* Offset within shadow_contents.  */
1538     if (bp_addr < memaddr)
1539       {
1540         /* Only copy the second part of the breakpoint.  */
1541         bp_size -= memaddr - bp_addr;
1542         bptoffset = memaddr - bp_addr;
1543         bp_addr = memaddr;
1544       }
1545
1546     if (bp_addr + bp_size > memaddr + len)
1547       {
1548         /* Only copy the first part of the breakpoint.  */
1549         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1550       }
1551
1552     if (readbuf != NULL)
1553       {
1554         /* Verify that the readbuf buffer does not overlap with
1555            the shadow_contents buffer.  */
1556         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1557                     || readbuf >= (bl->target_info.shadow_contents
1558                                    + bl->target_info.shadow_len));
1559
1560         /* Update the read buffer with this inserted breakpoint's
1561            shadow.  */
1562         memcpy (readbuf + bp_addr - memaddr,
1563                 bl->target_info.shadow_contents + bptoffset, bp_size);
1564       }
1565     else
1566       {
1567         struct gdbarch *gdbarch = bl->gdbarch;
1568         const unsigned char *bp;
1569         CORE_ADDR placed_address = bl->target_info.placed_address;
1570         unsigned placed_size = bl->target_info.placed_size;
1571
1572         /* Update the shadow with what we want to write to memory.  */
1573         memcpy (bl->target_info.shadow_contents + bptoffset,
1574                 writebuf_org + bp_addr - memaddr, bp_size);
1575
1576         /* Determine appropriate breakpoint contents and size for this
1577            address.  */
1578         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1579
1580         /* Update the final write buffer with this inserted
1581            breakpoint's INSN.  */
1582         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1583       }
1584   }
1585 }
1586 \f
1587
1588 /* Return true if BPT is either a software breakpoint or a hardware
1589    breakpoint.  */
1590
1591 int
1592 is_breakpoint (const struct breakpoint *bpt)
1593 {
1594   return (bpt->type == bp_breakpoint
1595           || bpt->type == bp_hardware_breakpoint
1596           || bpt->type == bp_dprintf);
1597 }
1598
1599 /* Return true if BPT is of any hardware watchpoint kind.  */
1600
1601 static int
1602 is_hardware_watchpoint (const struct breakpoint *bpt)
1603 {
1604   return (bpt->type == bp_hardware_watchpoint
1605           || bpt->type == bp_read_watchpoint
1606           || bpt->type == bp_access_watchpoint);
1607 }
1608
1609 /* Return true if BPT is of any watchpoint kind, hardware or
1610    software.  */
1611
1612 int
1613 is_watchpoint (const struct breakpoint *bpt)
1614 {
1615   return (is_hardware_watchpoint (bpt)
1616           || bpt->type == bp_watchpoint);
1617 }
1618
1619 /* Returns true if the current thread and its running state are safe
1620    to evaluate or update watchpoint B.  Watchpoints on local
1621    expressions need to be evaluated in the context of the thread that
1622    was current when the watchpoint was created, and, that thread needs
1623    to be stopped to be able to select the correct frame context.
1624    Watchpoints on global expressions can be evaluated on any thread,
1625    and in any state.  It is presently left to the target allowing
1626    memory accesses when threads are running.  */
1627
1628 static int
1629 watchpoint_in_thread_scope (struct watchpoint *b)
1630 {
1631   return (b->base.pspace == current_program_space
1632           && (ptid_equal (b->watchpoint_thread, null_ptid)
1633               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1634                   && !is_executing (inferior_ptid))));
1635 }
1636
1637 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1638    associated bp_watchpoint_scope breakpoint.  */
1639
1640 static void
1641 watchpoint_del_at_next_stop (struct watchpoint *w)
1642 {
1643   struct breakpoint *b = &w->base;
1644
1645   if (b->related_breakpoint != b)
1646     {
1647       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1648       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1649       b->related_breakpoint->disposition = disp_del_at_next_stop;
1650       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1651       b->related_breakpoint = b;
1652     }
1653   b->disposition = disp_del_at_next_stop;
1654 }
1655
1656 /* Assuming that B is a watchpoint:
1657    - Reparse watchpoint expression, if REPARSE is non-zero
1658    - Evaluate expression and store the result in B->val
1659    - Evaluate the condition if there is one, and store the result
1660      in b->loc->cond.
1661    - Update the list of values that must be watched in B->loc.
1662
1663    If the watchpoint disposition is disp_del_at_next_stop, then do
1664    nothing.  If this is local watchpoint that is out of scope, delete
1665    it.
1666
1667    Even with `set breakpoint always-inserted on' the watchpoints are
1668    removed + inserted on each stop here.  Normal breakpoints must
1669    never be removed because they might be missed by a running thread
1670    when debugging in non-stop mode.  On the other hand, hardware
1671    watchpoints (is_hardware_watchpoint; processed here) are specific
1672    to each LWP since they are stored in each LWP's hardware debug
1673    registers.  Therefore, such LWP must be stopped first in order to
1674    be able to modify its hardware watchpoints.
1675
1676    Hardware watchpoints must be reset exactly once after being
1677    presented to the user.  It cannot be done sooner, because it would
1678    reset the data used to present the watchpoint hit to the user.  And
1679    it must not be done later because it could display the same single
1680    watchpoint hit during multiple GDB stops.  Note that the latter is
1681    relevant only to the hardware watchpoint types bp_read_watchpoint
1682    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1683    not user-visible - its hit is suppressed if the memory content has
1684    not changed.
1685
1686    The following constraints influence the location where we can reset
1687    hardware watchpoints:
1688
1689    * target_stopped_by_watchpoint and target_stopped_data_address are
1690      called several times when GDB stops.
1691
1692    [linux] 
1693    * Multiple hardware watchpoints can be hit at the same time,
1694      causing GDB to stop.  GDB only presents one hardware watchpoint
1695      hit at a time as the reason for stopping, and all the other hits
1696      are presented later, one after the other, each time the user
1697      requests the execution to be resumed.  Execution is not resumed
1698      for the threads still having pending hit event stored in
1699      LWP_INFO->STATUS.  While the watchpoint is already removed from
1700      the inferior on the first stop the thread hit event is kept being
1701      reported from its cached value by linux_nat_stopped_data_address
1702      until the real thread resume happens after the watchpoint gets
1703      presented and thus its LWP_INFO->STATUS gets reset.
1704
1705    Therefore the hardware watchpoint hit can get safely reset on the
1706    watchpoint removal from inferior.  */
1707
1708 static void
1709 update_watchpoint (struct watchpoint *b, int reparse)
1710 {
1711   int within_current_scope;
1712   struct frame_id saved_frame_id;
1713   int frame_saved;
1714
1715   /* If this is a local watchpoint, we only want to check if the
1716      watchpoint frame is in scope if the current thread is the thread
1717      that was used to create the watchpoint.  */
1718   if (!watchpoint_in_thread_scope (b))
1719     return;
1720
1721   if (b->base.disposition == disp_del_at_next_stop)
1722     return;
1723  
1724   frame_saved = 0;
1725
1726   /* Determine if the watchpoint is within scope.  */
1727   if (b->exp_valid_block == NULL)
1728     within_current_scope = 1;
1729   else
1730     {
1731       struct frame_info *fi = get_current_frame ();
1732       struct gdbarch *frame_arch = get_frame_arch (fi);
1733       CORE_ADDR frame_pc = get_frame_pc (fi);
1734
1735       /* If we're in a function epilogue, unwinding may not work
1736          properly, so do not attempt to recreate locations at this
1737          point.  See similar comments in watchpoint_check.  */
1738       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1739         return;
1740
1741       /* Save the current frame's ID so we can restore it after
1742          evaluating the watchpoint expression on its own frame.  */
1743       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1744          took a frame parameter, so that we didn't have to change the
1745          selected frame.  */
1746       frame_saved = 1;
1747       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1748
1749       fi = frame_find_by_id (b->watchpoint_frame);
1750       within_current_scope = (fi != NULL);
1751       if (within_current_scope)
1752         select_frame (fi);
1753     }
1754
1755   /* We don't free locations.  They are stored in the bp_location array
1756      and update_global_location_list will eventually delete them and
1757      remove breakpoints if needed.  */
1758   b->base.loc = NULL;
1759
1760   if (within_current_scope && reparse)
1761     {
1762       char *s;
1763
1764       if (b->exp)
1765         {
1766           xfree (b->exp);
1767           b->exp = NULL;
1768         }
1769       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1770       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1771       /* If the meaning of expression itself changed, the old value is
1772          no longer relevant.  We don't want to report a watchpoint hit
1773          to the user when the old value and the new value may actually
1774          be completely different objects.  */
1775       value_free (b->val);
1776       b->val = NULL;
1777       b->val_valid = 0;
1778
1779       /* Note that unlike with breakpoints, the watchpoint's condition
1780          expression is stored in the breakpoint object, not in the
1781          locations (re)created below.  */
1782       if (b->base.cond_string != NULL)
1783         {
1784           if (b->cond_exp != NULL)
1785             {
1786               xfree (b->cond_exp);
1787               b->cond_exp = NULL;
1788             }
1789
1790           s = b->base.cond_string;
1791           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1792         }
1793     }
1794
1795   /* If we failed to parse the expression, for example because
1796      it refers to a global variable in a not-yet-loaded shared library,
1797      don't try to insert watchpoint.  We don't automatically delete
1798      such watchpoint, though, since failure to parse expression
1799      is different from out-of-scope watchpoint.  */
1800   if ( !target_has_execution)
1801     {
1802       /* Without execution, memory can't change.  No use to try and
1803          set watchpoint locations.  The watchpoint will be reset when
1804          the target gains execution, through breakpoint_re_set.  */
1805     }
1806   else if (within_current_scope && b->exp)
1807     {
1808       int pc = 0;
1809       struct value *val_chain, *v, *result, *next;
1810       struct program_space *frame_pspace;
1811
1812       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1813
1814       /* Avoid setting b->val if it's already set.  The meaning of
1815          b->val is 'the last value' user saw, and we should update
1816          it only if we reported that last value to user.  As it
1817          happens, the code that reports it updates b->val directly.
1818          We don't keep track of the memory value for masked
1819          watchpoints.  */
1820       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1821         {
1822           b->val = v;
1823           b->val_valid = 1;
1824         }
1825
1826       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1827
1828       /* Look at each value on the value chain.  */
1829       for (v = val_chain; v; v = value_next (v))
1830         {
1831           /* If it's a memory location, and GDB actually needed
1832              its contents to evaluate the expression, then we
1833              must watch it.  If the first value returned is
1834              still lazy, that means an error occurred reading it;
1835              watch it anyway in case it becomes readable.  */
1836           if (VALUE_LVAL (v) == lval_memory
1837               && (v == val_chain || ! value_lazy (v)))
1838             {
1839               struct type *vtype = check_typedef (value_type (v));
1840
1841               /* We only watch structs and arrays if user asked
1842                  for it explicitly, never if they just happen to
1843                  appear in the middle of some value chain.  */
1844               if (v == result
1845                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1846                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1847                 {
1848                   CORE_ADDR addr;
1849                   int type;
1850                   struct bp_location *loc, **tmp;
1851
1852                   addr = value_address (v);
1853                   type = hw_write;
1854                   if (b->base.type == bp_read_watchpoint)
1855                     type = hw_read;
1856                   else if (b->base.type == bp_access_watchpoint)
1857                     type = hw_access;
1858
1859                   loc = allocate_bp_location (&b->base);
1860                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1861                     ;
1862                   *tmp = loc;
1863                   loc->gdbarch = get_type_arch (value_type (v));
1864
1865                   loc->pspace = frame_pspace;
1866                   loc->address = addr;
1867                   loc->length = TYPE_LENGTH (value_type (v));
1868                   loc->watchpoint_type = type;
1869                 }
1870             }
1871         }
1872
1873       /* Change the type of breakpoint between hardware assisted or
1874          an ordinary watchpoint depending on the hardware support
1875          and free hardware slots.  REPARSE is set when the inferior
1876          is started.  */
1877       if (reparse)
1878         {
1879           int reg_cnt;
1880           enum bp_loc_type loc_type;
1881           struct bp_location *bl;
1882
1883           reg_cnt = can_use_hardware_watchpoint (val_chain);
1884
1885           if (reg_cnt)
1886             {
1887               int i, target_resources_ok, other_type_used;
1888               enum bptype type;
1889
1890               /* Use an exact watchpoint when there's only one memory region to be
1891                  watched, and only one debug register is needed to watch it.  */
1892               b->exact = target_exact_watchpoints && reg_cnt == 1;
1893
1894               /* We need to determine how many resources are already
1895                  used for all other hardware watchpoints plus this one
1896                  to see if we still have enough resources to also fit
1897                  this watchpoint in as well.  */
1898
1899               /* If this is a software watchpoint, we try to turn it
1900                  to a hardware one -- count resources as if B was of
1901                  hardware watchpoint type.  */
1902               type = b->base.type;
1903               if (type == bp_watchpoint)
1904                 type = bp_hardware_watchpoint;
1905
1906               /* This watchpoint may or may not have been placed on
1907                  the list yet at this point (it won't be in the list
1908                  if we're trying to create it for the first time,
1909                  through watch_command), so always account for it
1910                  manually.  */
1911
1912               /* Count resources used by all watchpoints except B.  */
1913               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1914
1915               /* Add in the resources needed for B.  */
1916               i += hw_watchpoint_use_count (&b->base);
1917
1918               target_resources_ok
1919                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1920               if (target_resources_ok <= 0)
1921                 {
1922                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1923
1924                   if (target_resources_ok == 0 && !sw_mode)
1925                     error (_("Target does not support this type of "
1926                              "hardware watchpoint."));
1927                   else if (target_resources_ok < 0 && !sw_mode)
1928                     error (_("There are not enough available hardware "
1929                              "resources for this watchpoint."));
1930
1931                   /* Downgrade to software watchpoint.  */
1932                   b->base.type = bp_watchpoint;
1933                 }
1934               else
1935                 {
1936                   /* If this was a software watchpoint, we've just
1937                      found we have enough resources to turn it to a
1938                      hardware watchpoint.  Otherwise, this is a
1939                      nop.  */
1940                   b->base.type = type;
1941                 }
1942             }
1943           else if (!b->base.ops->works_in_software_mode (&b->base))
1944             error (_("Expression cannot be implemented with "
1945                      "read/access watchpoint."));
1946           else
1947             b->base.type = bp_watchpoint;
1948
1949           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1950                       : bp_loc_hardware_watchpoint);
1951           for (bl = b->base.loc; bl; bl = bl->next)
1952             bl->loc_type = loc_type;
1953         }
1954
1955       for (v = val_chain; v; v = next)
1956         {
1957           next = value_next (v);
1958           if (v != b->val)
1959             value_free (v);
1960         }
1961
1962       /* If a software watchpoint is not watching any memory, then the
1963          above left it without any location set up.  But,
1964          bpstat_stop_status requires a location to be able to report
1965          stops, so make sure there's at least a dummy one.  */
1966       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1967         {
1968           struct breakpoint *base = &b->base;
1969           base->loc = allocate_bp_location (base);
1970           base->loc->pspace = frame_pspace;
1971           base->loc->address = -1;
1972           base->loc->length = -1;
1973           base->loc->watchpoint_type = -1;
1974         }
1975     }
1976   else if (!within_current_scope)
1977     {
1978       printf_filtered (_("\
1979 Watchpoint %d deleted because the program has left the block\n\
1980 in which its expression is valid.\n"),
1981                        b->base.number);
1982       watchpoint_del_at_next_stop (b);
1983     }
1984
1985   /* Restore the selected frame.  */
1986   if (frame_saved)
1987     select_frame (frame_find_by_id (saved_frame_id));
1988 }
1989
1990
1991 /* Returns 1 iff breakpoint location should be
1992    inserted in the inferior.  We don't differentiate the type of BL's owner
1993    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1994    breakpoint_ops is not defined, because in insert_bp_location,
1995    tracepoint's insert_location will not be called.  */
1996 static int
1997 should_be_inserted (struct bp_location *bl)
1998 {
1999   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2000     return 0;
2001
2002   if (bl->owner->disposition == disp_del_at_next_stop)
2003     return 0;
2004
2005   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2006     return 0;
2007
2008   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2009     return 0;
2010
2011   /* This is set for example, when we're attached to the parent of a
2012      vfork, and have detached from the child.  The child is running
2013      free, and we expect it to do an exec or exit, at which point the
2014      OS makes the parent schedulable again (and the target reports
2015      that the vfork is done).  Until the child is done with the shared
2016      memory region, do not insert breakpoints in the parent, otherwise
2017      the child could still trip on the parent's breakpoints.  Since
2018      the parent is blocked anyway, it won't miss any breakpoint.  */
2019   if (bl->pspace->breakpoints_not_allowed)
2020     return 0;
2021
2022   return 1;
2023 }
2024
2025 /* Same as should_be_inserted but does the check assuming
2026    that the location is not duplicated.  */
2027
2028 static int
2029 unduplicated_should_be_inserted (struct bp_location *bl)
2030 {
2031   int result;
2032   const int save_duplicate = bl->duplicate;
2033
2034   bl->duplicate = 0;
2035   result = should_be_inserted (bl);
2036   bl->duplicate = save_duplicate;
2037   return result;
2038 }
2039
2040 /* Parses a conditional described by an expression COND into an
2041    agent expression bytecode suitable for evaluation
2042    by the bytecode interpreter.  Return NULL if there was
2043    any error during parsing.  */
2044
2045 static struct agent_expr *
2046 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2047 {
2048   struct agent_expr *aexpr = NULL;
2049   struct cleanup *old_chain = NULL;
2050   volatile struct gdb_exception ex;
2051
2052   if (!cond)
2053     return NULL;
2054
2055   /* We don't want to stop processing, so catch any errors
2056      that may show up.  */
2057   TRY_CATCH (ex, RETURN_MASK_ERROR)
2058     {
2059       aexpr = gen_eval_for_expr (scope, cond);
2060     }
2061
2062   if (ex.reason < 0)
2063     {
2064       /* If we got here, it means the condition could not be parsed to a valid
2065          bytecode expression and thus can't be evaluated on the target's side.
2066          It's no use iterating through the conditions.  */
2067       return NULL;
2068     }
2069
2070   /* We have a valid agent expression.  */
2071   return aexpr;
2072 }
2073
2074 /* Based on location BL, create a list of breakpoint conditions to be
2075    passed on to the target.  If we have duplicated locations with different
2076    conditions, we will add such conditions to the list.  The idea is that the
2077    target will evaluate the list of conditions and will only notify GDB when
2078    one of them is true.  */
2079
2080 static void
2081 build_target_condition_list (struct bp_location *bl)
2082 {
2083   struct bp_location **locp = NULL, **loc2p;
2084   int null_condition_or_parse_error = 0;
2085   int modified = bl->needs_update;
2086   struct bp_location *loc;
2087
2088   /* This is only meaningful if the target is
2089      evaluating conditions and if the user has
2090      opted for condition evaluation on the target's
2091      side.  */
2092   if (gdb_evaluates_breakpoint_condition_p ()
2093       || !target_supports_evaluation_of_breakpoint_conditions ())
2094     return;
2095
2096   /* Do a first pass to check for locations with no assigned
2097      conditions or conditions that fail to parse to a valid agent expression
2098      bytecode.  If any of these happen, then it's no use to send conditions
2099      to the target since this location will always trigger and generate a
2100      response back to GDB.  */
2101   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2102     {
2103       loc = (*loc2p);
2104       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2105         {
2106           if (modified)
2107             {
2108               struct agent_expr *aexpr;
2109
2110               /* Re-parse the conditions since something changed.  In that
2111                  case we already freed the condition bytecodes (see
2112                  force_breakpoint_reinsertion).  We just
2113                  need to parse the condition to bytecodes again.  */
2114               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2115               loc->cond_bytecode = aexpr;
2116
2117               /* Check if we managed to parse the conditional expression
2118                  correctly.  If not, we will not send this condition
2119                  to the target.  */
2120               if (aexpr)
2121                 continue;
2122             }
2123
2124           /* If we have a NULL bytecode expression, it means something
2125              went wrong or we have a null condition expression.  */
2126           if (!loc->cond_bytecode)
2127             {
2128               null_condition_or_parse_error = 1;
2129               break;
2130             }
2131         }
2132     }
2133
2134   /* If any of these happened, it means we will have to evaluate the conditions
2135      for the location's address on gdb's side.  It is no use keeping bytecodes
2136      for all the other duplicate locations, thus we free all of them here.
2137
2138      This is so we have a finer control over which locations' conditions are
2139      being evaluated by GDB or the remote stub.  */
2140   if (null_condition_or_parse_error)
2141     {
2142       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2143         {
2144           loc = (*loc2p);
2145           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2146             {
2147               /* Only go as far as the first NULL bytecode is
2148                  located.  */
2149               if (!loc->cond_bytecode)
2150                 return;
2151
2152               free_agent_expr (loc->cond_bytecode);
2153               loc->cond_bytecode = NULL;
2154             }
2155         }
2156     }
2157
2158   /* No NULL conditions or failed bytecode generation.  Build a condition list
2159      for this location's address.  */
2160   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2161     {
2162       loc = (*loc2p);
2163       if (loc->cond
2164           && is_breakpoint (loc->owner)
2165           && loc->pspace->num == bl->pspace->num
2166           && loc->owner->enable_state == bp_enabled
2167           && loc->enabled)
2168         /* Add the condition to the vector.  This will be used later to send the
2169            conditions to the target.  */
2170         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2171                        loc->cond_bytecode);
2172     }
2173
2174   return;
2175 }
2176
2177 /* Parses a command described by string CMD into an agent expression
2178    bytecode suitable for evaluation by the bytecode interpreter.
2179    Return NULL if there was any error during parsing.  */
2180
2181 static struct agent_expr *
2182 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2183 {
2184   struct cleanup *old_cleanups = 0;
2185   struct expression *expr, **argvec;
2186   struct agent_expr *aexpr = NULL;
2187   struct cleanup *old_chain = NULL;
2188   volatile struct gdb_exception ex;
2189   char *cmdrest;
2190   char *format_start, *format_end;
2191   struct format_piece *fpieces;
2192   int nargs;
2193   struct gdbarch *gdbarch = get_current_arch ();
2194
2195   if (!cmd)
2196     return NULL;
2197
2198   cmdrest = cmd;
2199
2200   if (*cmdrest == ',')
2201     ++cmdrest;
2202   cmdrest = skip_spaces (cmdrest);
2203
2204   if (*cmdrest++ != '"')
2205     error (_("No format string following the location"));
2206
2207   format_start = cmdrest;
2208
2209   fpieces = parse_format_string (&cmdrest);
2210
2211   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2212
2213   format_end = cmdrest;
2214
2215   if (*cmdrest++ != '"')
2216     error (_("Bad format string, non-terminated '\"'."));
2217   
2218   cmdrest = skip_spaces (cmdrest);
2219
2220   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2221     error (_("Invalid argument syntax"));
2222
2223   if (*cmdrest == ',')
2224     cmdrest++;
2225   cmdrest = skip_spaces (cmdrest);
2226
2227   /* For each argument, make an expression.  */
2228
2229   argvec = (struct expression **) alloca (strlen (cmd)
2230                                          * sizeof (struct expression *));
2231
2232   nargs = 0;
2233   while (*cmdrest != '\0')
2234     {
2235       char *cmd1;
2236
2237       cmd1 = cmdrest;
2238       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2239       argvec[nargs++] = expr;
2240       cmdrest = cmd1;
2241       if (*cmdrest == ',')
2242         ++cmdrest;
2243     }
2244
2245   /* We don't want to stop processing, so catch any errors
2246      that may show up.  */
2247   TRY_CATCH (ex, RETURN_MASK_ERROR)
2248     {
2249       aexpr = gen_printf (scope, gdbarch, 0, 0,
2250                           format_start, format_end - format_start,
2251                           fpieces, nargs, argvec);
2252     }
2253
2254   if (ex.reason < 0)
2255     {
2256       /* If we got here, it means the command could not be parsed to a valid
2257          bytecode expression and thus can't be evaluated on the target's side.
2258          It's no use iterating through the other commands.  */
2259       return NULL;
2260     }
2261
2262   do_cleanups (old_cleanups);
2263
2264   /* We have a valid agent expression, return it.  */
2265   return aexpr;
2266 }
2267
2268 /* Based on location BL, create a list of breakpoint commands to be
2269    passed on to the target.  If we have duplicated locations with
2270    different commands, we will add any such to the list.  */
2271
2272 static void
2273 build_target_command_list (struct bp_location *bl)
2274 {
2275   struct bp_location **locp = NULL, **loc2p;
2276   int null_command_or_parse_error = 0;
2277   int modified = bl->needs_update;
2278   struct bp_location *loc;
2279
2280   /* For now, limit to agent-style dprintf breakpoints.  */
2281   if (bl->owner->type != bp_dprintf
2282       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2283     return;
2284
2285   if (!target_can_run_breakpoint_commands ())
2286     return;
2287
2288   /* Do a first pass to check for locations with no assigned
2289      conditions or conditions that fail to parse to a valid agent expression
2290      bytecode.  If any of these happen, then it's no use to send conditions
2291      to the target since this location will always trigger and generate a
2292      response back to GDB.  */
2293   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2294     {
2295       loc = (*loc2p);
2296       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2297         {
2298           if (modified)
2299             {
2300               struct agent_expr *aexpr;
2301
2302               /* Re-parse the commands since something changed.  In that
2303                  case we already freed the command bytecodes (see
2304                  force_breakpoint_reinsertion).  We just
2305                  need to parse the command to bytecodes again.  */
2306               aexpr = parse_cmd_to_aexpr (bl->address,
2307                                           loc->owner->extra_string);
2308               loc->cmd_bytecode = aexpr;
2309
2310               if (!aexpr)
2311                 continue;
2312             }
2313
2314           /* If we have a NULL bytecode expression, it means something
2315              went wrong or we have a null command expression.  */
2316           if (!loc->cmd_bytecode)
2317             {
2318               null_command_or_parse_error = 1;
2319               break;
2320             }
2321         }
2322     }
2323
2324   /* If anything failed, then we're not doing target-side commands,
2325      and so clean up.  */
2326   if (null_command_or_parse_error)
2327     {
2328       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2329         {
2330           loc = (*loc2p);
2331           if (is_breakpoint (loc->owner)
2332               && loc->pspace->num == bl->pspace->num)
2333             {
2334               /* Only go as far as the first NULL bytecode is
2335                  located.  */
2336               if (!loc->cond_bytecode)
2337                 return;
2338
2339               free_agent_expr (loc->cond_bytecode);
2340               loc->cond_bytecode = NULL;
2341             }
2342         }
2343     }
2344
2345   /* No NULL commands or failed bytecode generation.  Build a command list
2346      for this location's address.  */
2347   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2348     {
2349       loc = (*loc2p);
2350       if (loc->owner->extra_string
2351           && is_breakpoint (loc->owner)
2352           && loc->pspace->num == bl->pspace->num
2353           && loc->owner->enable_state == bp_enabled
2354           && loc->enabled)
2355         /* Add the command to the vector.  This will be used later
2356            to send the commands to the target.  */
2357         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2358                        loc->cmd_bytecode);
2359     }
2360
2361   bl->target_info.persist = 0;
2362   /* Maybe flag this location as persistent.  */
2363   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2364     bl->target_info.persist = 1;
2365 }
2366
2367 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2368    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2369    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2370    Returns 0 for success, 1 if the bp_location type is not supported or
2371    -1 for failure.
2372
2373    NOTE drow/2003-09-09: This routine could be broken down to an
2374    object-style method for each breakpoint or catchpoint type.  */
2375 static int
2376 insert_bp_location (struct bp_location *bl,
2377                     struct ui_file *tmp_error_stream,
2378                     int *disabled_breaks,
2379                     int *hw_breakpoint_error,
2380                     int *hw_bp_error_explained_already)
2381 {
2382   int val = 0;
2383   char *hw_bp_err_string = NULL;
2384   struct gdb_exception e;
2385
2386   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2387     return 0;
2388
2389   /* Note we don't initialize bl->target_info, as that wipes out
2390      the breakpoint location's shadow_contents if the breakpoint
2391      is still inserted at that location.  This in turn breaks
2392      target_read_memory which depends on these buffers when
2393      a memory read is requested at the breakpoint location:
2394      Once the target_info has been wiped, we fail to see that
2395      we have a breakpoint inserted at that address and thus
2396      read the breakpoint instead of returning the data saved in
2397      the breakpoint location's shadow contents.  */
2398   bl->target_info.placed_address = bl->address;
2399   bl->target_info.placed_address_space = bl->pspace->aspace;
2400   bl->target_info.length = bl->length;
2401
2402   /* When working with target-side conditions, we must pass all the conditions
2403      for the same breakpoint address down to the target since GDB will not
2404      insert those locations.  With a list of breakpoint conditions, the target
2405      can decide when to stop and notify GDB.  */
2406
2407   if (is_breakpoint (bl->owner))
2408     {
2409       build_target_condition_list (bl);
2410       build_target_command_list (bl);
2411       /* Reset the modification marker.  */
2412       bl->needs_update = 0;
2413     }
2414
2415   if (bl->loc_type == bp_loc_software_breakpoint
2416       || bl->loc_type == bp_loc_hardware_breakpoint)
2417     {
2418       if (bl->owner->type != bp_hardware_breakpoint)
2419         {
2420           /* If the explicitly specified breakpoint type
2421              is not hardware breakpoint, check the memory map to see
2422              if the breakpoint address is in read only memory or not.
2423
2424              Two important cases are:
2425              - location type is not hardware breakpoint, memory
2426              is readonly.  We change the type of the location to
2427              hardware breakpoint.
2428              - location type is hardware breakpoint, memory is
2429              read-write.  This means we've previously made the
2430              location hardware one, but then the memory map changed,
2431              so we undo.
2432              
2433              When breakpoints are removed, remove_breakpoints will use
2434              location types we've just set here, the only possible
2435              problem is that memory map has changed during running
2436              program, but it's not going to work anyway with current
2437              gdb.  */
2438           struct mem_region *mr 
2439             = lookup_mem_region (bl->target_info.placed_address);
2440           
2441           if (mr)
2442             {
2443               if (automatic_hardware_breakpoints)
2444                 {
2445                   enum bp_loc_type new_type;
2446                   
2447                   if (mr->attrib.mode != MEM_RW)
2448                     new_type = bp_loc_hardware_breakpoint;
2449                   else 
2450                     new_type = bp_loc_software_breakpoint;
2451                   
2452                   if (new_type != bl->loc_type)
2453                     {
2454                       static int said = 0;
2455
2456                       bl->loc_type = new_type;
2457                       if (!said)
2458                         {
2459                           fprintf_filtered (gdb_stdout,
2460                                             _("Note: automatically using "
2461                                               "hardware breakpoints for "
2462                                               "read-only addresses.\n"));
2463                           said = 1;
2464                         }
2465                     }
2466                 }
2467               else if (bl->loc_type == bp_loc_software_breakpoint
2468                        && mr->attrib.mode != MEM_RW)        
2469                 warning (_("cannot set software breakpoint "
2470                            "at readonly address %s"),
2471                          paddress (bl->gdbarch, bl->address));
2472             }
2473         }
2474         
2475       /* First check to see if we have to handle an overlay.  */
2476       if (overlay_debugging == ovly_off
2477           || bl->section == NULL
2478           || !(section_is_overlay (bl->section)))
2479         {
2480           /* No overlay handling: just set the breakpoint.  */
2481           TRY_CATCH (e, RETURN_MASK_ALL)
2482             {
2483               val = bl->owner->ops->insert_location (bl);
2484             }
2485           if (e.reason < 0)
2486             {
2487               val = 1;
2488               hw_bp_err_string = (char *) e.message;
2489             }
2490         }
2491       else
2492         {
2493           /* This breakpoint is in an overlay section.
2494              Shall we set a breakpoint at the LMA?  */
2495           if (!overlay_events_enabled)
2496             {
2497               /* Yes -- overlay event support is not active, 
2498                  so we must try to set a breakpoint at the LMA.
2499                  This will not work for a hardware breakpoint.  */
2500               if (bl->loc_type == bp_loc_hardware_breakpoint)
2501                 warning (_("hardware breakpoint %d not supported in overlay!"),
2502                          bl->owner->number);
2503               else
2504                 {
2505                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2506                                                              bl->section);
2507                   /* Set a software (trap) breakpoint at the LMA.  */
2508                   bl->overlay_target_info = bl->target_info;
2509                   bl->overlay_target_info.placed_address = addr;
2510                   val = target_insert_breakpoint (bl->gdbarch,
2511                                                   &bl->overlay_target_info);
2512                   if (val != 0)
2513                     fprintf_unfiltered (tmp_error_stream,
2514                                         "Overlay breakpoint %d "
2515                                         "failed: in ROM?\n",
2516                                         bl->owner->number);
2517                 }
2518             }
2519           /* Shall we set a breakpoint at the VMA? */
2520           if (section_is_mapped (bl->section))
2521             {
2522               /* Yes.  This overlay section is mapped into memory.  */
2523               TRY_CATCH (e, RETURN_MASK_ALL)
2524                 {
2525                   val = bl->owner->ops->insert_location (bl);
2526                 }
2527               if (e.reason < 0)
2528                 {
2529                   val = 1;
2530                   hw_bp_err_string = (char *) e.message;
2531                 }
2532             }
2533           else
2534             {
2535               /* No.  This breakpoint will not be inserted.  
2536                  No error, but do not mark the bp as 'inserted'.  */
2537               return 0;
2538             }
2539         }
2540
2541       if (val)
2542         {
2543           /* Can't set the breakpoint.  */
2544           if (solib_name_from_address (bl->pspace, bl->address))
2545             {
2546               /* See also: disable_breakpoints_in_shlibs.  */
2547               val = 0;
2548               bl->shlib_disabled = 1;
2549               observer_notify_breakpoint_modified (bl->owner);
2550               if (!*disabled_breaks)
2551                 {
2552                   fprintf_unfiltered (tmp_error_stream, 
2553                                       "Cannot insert breakpoint %d.\n", 
2554                                       bl->owner->number);
2555                   fprintf_unfiltered (tmp_error_stream, 
2556                                       "Temporarily disabling shared "
2557                                       "library breakpoints:\n");
2558                 }
2559               *disabled_breaks = 1;
2560               fprintf_unfiltered (tmp_error_stream,
2561                                   "breakpoint #%d\n", bl->owner->number);
2562             }
2563           else
2564             {
2565               if (bl->loc_type == bp_loc_hardware_breakpoint)
2566                 {
2567                   *hw_breakpoint_error = 1;
2568                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2569                   fprintf_unfiltered (tmp_error_stream,
2570                                       "Cannot insert hardware breakpoint %d%s",
2571                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2572                   if (hw_bp_err_string)
2573                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2574                 }
2575               else
2576                 {
2577                   fprintf_unfiltered (tmp_error_stream, 
2578                                       "Cannot insert breakpoint %d.\n", 
2579                                       bl->owner->number);
2580                   fprintf_filtered (tmp_error_stream, 
2581                                     "Error accessing memory address ");
2582                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2583                                   tmp_error_stream);
2584                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2585                                     safe_strerror (val));
2586                 }
2587
2588             }
2589         }
2590       else
2591         bl->inserted = 1;
2592
2593       return val;
2594     }
2595
2596   else if (bl->loc_type == bp_loc_hardware_watchpoint
2597            /* NOTE drow/2003-09-08: This state only exists for removing
2598               watchpoints.  It's not clear that it's necessary...  */
2599            && bl->owner->disposition != disp_del_at_next_stop)
2600     {
2601       gdb_assert (bl->owner->ops != NULL
2602                   && bl->owner->ops->insert_location != NULL);
2603
2604       val = bl->owner->ops->insert_location (bl);
2605
2606       /* If trying to set a read-watchpoint, and it turns out it's not
2607          supported, try emulating one with an access watchpoint.  */
2608       if (val == 1 && bl->watchpoint_type == hw_read)
2609         {
2610           struct bp_location *loc, **loc_temp;
2611
2612           /* But don't try to insert it, if there's already another
2613              hw_access location that would be considered a duplicate
2614              of this one.  */
2615           ALL_BP_LOCATIONS (loc, loc_temp)
2616             if (loc != bl
2617                 && loc->watchpoint_type == hw_access
2618                 && watchpoint_locations_match (bl, loc))
2619               {
2620                 bl->duplicate = 1;
2621                 bl->inserted = 1;
2622                 bl->target_info = loc->target_info;
2623                 bl->watchpoint_type = hw_access;
2624                 val = 0;
2625                 break;
2626               }
2627
2628           if (val == 1)
2629             {
2630               bl->watchpoint_type = hw_access;
2631               val = bl->owner->ops->insert_location (bl);
2632
2633               if (val)
2634                 /* Back to the original value.  */
2635                 bl->watchpoint_type = hw_read;
2636             }
2637         }
2638
2639       bl->inserted = (val == 0);
2640     }
2641
2642   else if (bl->owner->type == bp_catchpoint)
2643     {
2644       gdb_assert (bl->owner->ops != NULL
2645                   && bl->owner->ops->insert_location != NULL);
2646
2647       val = bl->owner->ops->insert_location (bl);
2648       if (val)
2649         {
2650           bl->owner->enable_state = bp_disabled;
2651
2652           if (val == 1)
2653             warning (_("\
2654 Error inserting catchpoint %d: Your system does not support this type\n\
2655 of catchpoint."), bl->owner->number);
2656           else
2657             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2658         }
2659
2660       bl->inserted = (val == 0);
2661
2662       /* We've already printed an error message if there was a problem
2663          inserting this catchpoint, and we've disabled the catchpoint,
2664          so just return success.  */
2665       return 0;
2666     }
2667
2668   return 0;
2669 }
2670
2671 /* This function is called when program space PSPACE is about to be
2672    deleted.  It takes care of updating breakpoints to not reference
2673    PSPACE anymore.  */
2674
2675 void
2676 breakpoint_program_space_exit (struct program_space *pspace)
2677 {
2678   struct breakpoint *b, *b_temp;
2679   struct bp_location *loc, **loc_temp;
2680
2681   /* Remove any breakpoint that was set through this program space.  */
2682   ALL_BREAKPOINTS_SAFE (b, b_temp)
2683     {
2684       if (b->pspace == pspace)
2685         delete_breakpoint (b);
2686     }
2687
2688   /* Breakpoints set through other program spaces could have locations
2689      bound to PSPACE as well.  Remove those.  */
2690   ALL_BP_LOCATIONS (loc, loc_temp)
2691     {
2692       struct bp_location *tmp;
2693
2694       if (loc->pspace == pspace)
2695         {
2696           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2697           if (loc->owner->loc == loc)
2698             loc->owner->loc = loc->next;
2699           else
2700             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2701               if (tmp->next == loc)
2702                 {
2703                   tmp->next = loc->next;
2704                   break;
2705                 }
2706         }
2707     }
2708
2709   /* Now update the global location list to permanently delete the
2710      removed locations above.  */
2711   update_global_location_list (0);
2712 }
2713
2714 /* Make sure all breakpoints are inserted in inferior.
2715    Throws exception on any error.
2716    A breakpoint that is already inserted won't be inserted
2717    again, so calling this function twice is safe.  */
2718 void
2719 insert_breakpoints (void)
2720 {
2721   struct breakpoint *bpt;
2722
2723   ALL_BREAKPOINTS (bpt)
2724     if (is_hardware_watchpoint (bpt))
2725       {
2726         struct watchpoint *w = (struct watchpoint *) bpt;
2727
2728         update_watchpoint (w, 0 /* don't reparse.  */);
2729       }
2730
2731   update_global_location_list (1);
2732
2733   /* update_global_location_list does not insert breakpoints when
2734      always_inserted_mode is not enabled.  Explicitly insert them
2735      now.  */
2736   if (!breakpoints_always_inserted_mode ())
2737     insert_breakpoint_locations ();
2738 }
2739
2740 /* Invoke CALLBACK for each of bp_location.  */
2741
2742 void
2743 iterate_over_bp_locations (walk_bp_location_callback callback)
2744 {
2745   struct bp_location *loc, **loc_tmp;
2746
2747   ALL_BP_LOCATIONS (loc, loc_tmp)
2748     {
2749       callback (loc, NULL);
2750     }
2751 }
2752
2753 /* This is used when we need to synch breakpoint conditions between GDB and the
2754    target.  It is the case with deleting and disabling of breakpoints when using
2755    always-inserted mode.  */
2756
2757 static void
2758 update_inserted_breakpoint_locations (void)
2759 {
2760   struct bp_location *bl, **blp_tmp;
2761   int error_flag = 0;
2762   int val = 0;
2763   int disabled_breaks = 0;
2764   int hw_breakpoint_error = 0;
2765   int hw_bp_details_reported = 0;
2766
2767   struct ui_file *tmp_error_stream = mem_fileopen ();
2768   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2769
2770   /* Explicitly mark the warning -- this will only be printed if
2771      there was an error.  */
2772   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2773
2774   save_current_space_and_thread ();
2775
2776   ALL_BP_LOCATIONS (bl, blp_tmp)
2777     {
2778       /* We only want to update software breakpoints and hardware
2779          breakpoints.  */
2780       if (!is_breakpoint (bl->owner))
2781         continue;
2782
2783       /* We only want to update locations that are already inserted
2784          and need updating.  This is to avoid unwanted insertion during
2785          deletion of breakpoints.  */
2786       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2787         continue;
2788
2789       switch_to_program_space_and_thread (bl->pspace);
2790
2791       /* For targets that support global breakpoints, there's no need
2792          to select an inferior to insert breakpoint to.  In fact, even
2793          if we aren't attached to any process yet, we should still
2794          insert breakpoints.  */
2795       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2796           && ptid_equal (inferior_ptid, null_ptid))
2797         continue;
2798
2799       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2800                                     &hw_breakpoint_error, &hw_bp_details_reported);
2801       if (val)
2802         error_flag = val;
2803     }
2804
2805   if (error_flag)
2806     {
2807       target_terminal_ours_for_output ();
2808       error_stream (tmp_error_stream);
2809     }
2810
2811   do_cleanups (cleanups);
2812 }
2813
2814 /* Used when starting or continuing the program.  */
2815
2816 static void
2817 insert_breakpoint_locations (void)
2818 {
2819   struct breakpoint *bpt;
2820   struct bp_location *bl, **blp_tmp;
2821   int error_flag = 0;
2822   int val = 0;
2823   int disabled_breaks = 0;
2824   int hw_breakpoint_error = 0;
2825   int hw_bp_error_explained_already = 0;
2826
2827   struct ui_file *tmp_error_stream = mem_fileopen ();
2828   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2829   
2830   /* Explicitly mark the warning -- this will only be printed if
2831      there was an error.  */
2832   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2833
2834   save_current_space_and_thread ();
2835
2836   ALL_BP_LOCATIONS (bl, blp_tmp)
2837     {
2838       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2839         continue;
2840
2841       /* There is no point inserting thread-specific breakpoints if
2842          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2843          has BL->OWNER always non-NULL.  */
2844       if (bl->owner->thread != -1
2845           && !valid_thread_id (bl->owner->thread))
2846         continue;
2847
2848       switch_to_program_space_and_thread (bl->pspace);
2849
2850       /* For targets that support global breakpoints, there's no need
2851          to select an inferior to insert breakpoint to.  In fact, even
2852          if we aren't attached to any process yet, we should still
2853          insert breakpoints.  */
2854       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2855           && ptid_equal (inferior_ptid, null_ptid))
2856         continue;
2857
2858       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2859                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2860       if (val)
2861         error_flag = val;
2862     }
2863
2864   /* If we failed to insert all locations of a watchpoint, remove
2865      them, as half-inserted watchpoint is of limited use.  */
2866   ALL_BREAKPOINTS (bpt)  
2867     {
2868       int some_failed = 0;
2869       struct bp_location *loc;
2870
2871       if (!is_hardware_watchpoint (bpt))
2872         continue;
2873
2874       if (!breakpoint_enabled (bpt))
2875         continue;
2876
2877       if (bpt->disposition == disp_del_at_next_stop)
2878         continue;
2879       
2880       for (loc = bpt->loc; loc; loc = loc->next)
2881         if (!loc->inserted && should_be_inserted (loc))
2882           {
2883             some_failed = 1;
2884             break;
2885           }
2886       if (some_failed)
2887         {
2888           for (loc = bpt->loc; loc; loc = loc->next)
2889             if (loc->inserted)
2890               remove_breakpoint (loc, mark_uninserted);
2891
2892           hw_breakpoint_error = 1;
2893           fprintf_unfiltered (tmp_error_stream,
2894                               "Could not insert hardware watchpoint %d.\n", 
2895                               bpt->number);
2896           error_flag = -1;
2897         }
2898     }
2899
2900   if (error_flag)
2901     {
2902       /* If a hardware breakpoint or watchpoint was inserted, add a
2903          message about possibly exhausted resources.  */
2904       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2905         {
2906           fprintf_unfiltered (tmp_error_stream, 
2907                               "Could not insert hardware breakpoints:\n\
2908 You may have requested too many hardware breakpoints/watchpoints.\n");
2909         }
2910       target_terminal_ours_for_output ();
2911       error_stream (tmp_error_stream);
2912     }
2913
2914   do_cleanups (cleanups);
2915 }
2916
2917 /* Used when the program stops.
2918    Returns zero if successful, or non-zero if there was a problem
2919    removing a breakpoint location.  */
2920
2921 int
2922 remove_breakpoints (void)
2923 {
2924   struct bp_location *bl, **blp_tmp;
2925   int val = 0;
2926
2927   ALL_BP_LOCATIONS (bl, blp_tmp)
2928   {
2929     if (bl->inserted && !is_tracepoint (bl->owner))
2930       val |= remove_breakpoint (bl, mark_uninserted);
2931   }
2932   return val;
2933 }
2934
2935 /* Remove breakpoints of process PID.  */
2936
2937 int
2938 remove_breakpoints_pid (int pid)
2939 {
2940   struct bp_location *bl, **blp_tmp;
2941   int val;
2942   struct inferior *inf = find_inferior_pid (pid);
2943
2944   ALL_BP_LOCATIONS (bl, blp_tmp)
2945   {
2946     if (bl->pspace != inf->pspace)
2947       continue;
2948
2949     if (bl->owner->type == bp_dprintf)
2950       continue;
2951
2952     if (bl->inserted)
2953       {
2954         val = remove_breakpoint (bl, mark_uninserted);
2955         if (val != 0)
2956           return val;
2957       }
2958   }
2959   return 0;
2960 }
2961
2962 int
2963 reattach_breakpoints (int pid)
2964 {
2965   struct cleanup *old_chain;
2966   struct bp_location *bl, **blp_tmp;
2967   int val;
2968   struct ui_file *tmp_error_stream;
2969   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2970   struct inferior *inf;
2971   struct thread_info *tp;
2972
2973   tp = any_live_thread_of_process (pid);
2974   if (tp == NULL)
2975     return 1;
2976
2977   inf = find_inferior_pid (pid);
2978   old_chain = save_inferior_ptid ();
2979
2980   inferior_ptid = tp->ptid;
2981
2982   tmp_error_stream = mem_fileopen ();
2983   make_cleanup_ui_file_delete (tmp_error_stream);
2984
2985   ALL_BP_LOCATIONS (bl, blp_tmp)
2986   {
2987     if (bl->pspace != inf->pspace)
2988       continue;
2989
2990     if (bl->inserted)
2991       {
2992         bl->inserted = 0;
2993         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2994         if (val != 0)
2995           {
2996             do_cleanups (old_chain);
2997             return val;
2998           }
2999       }
3000   }
3001   do_cleanups (old_chain);
3002   return 0;
3003 }
3004
3005 static int internal_breakpoint_number = -1;
3006
3007 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3008    If INTERNAL is non-zero, the breakpoint number will be populated
3009    from internal_breakpoint_number and that variable decremented.
3010    Otherwise the breakpoint number will be populated from
3011    breakpoint_count and that value incremented.  Internal breakpoints
3012    do not set the internal var bpnum.  */
3013 static void
3014 set_breakpoint_number (int internal, struct breakpoint *b)
3015 {
3016   if (internal)
3017     b->number = internal_breakpoint_number--;
3018   else
3019     {
3020       set_breakpoint_count (breakpoint_count + 1);
3021       b->number = breakpoint_count;
3022     }
3023 }
3024
3025 static struct breakpoint *
3026 create_internal_breakpoint (struct gdbarch *gdbarch,
3027                             CORE_ADDR address, enum bptype type,
3028                             const struct breakpoint_ops *ops)
3029 {
3030   struct symtab_and_line sal;
3031   struct breakpoint *b;
3032
3033   init_sal (&sal);              /* Initialize to zeroes.  */
3034
3035   sal.pc = address;
3036   sal.section = find_pc_overlay (sal.pc);
3037   sal.pspace = current_program_space;
3038
3039   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3040   b->number = internal_breakpoint_number--;
3041   b->disposition = disp_donttouch;
3042
3043   return b;
3044 }
3045
3046 static const char *const longjmp_names[] =
3047   {
3048     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3049   };
3050 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3051
3052 /* Per-objfile data private to breakpoint.c.  */
3053 struct breakpoint_objfile_data
3054 {
3055   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3056   struct minimal_symbol *overlay_msym;
3057
3058   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3059   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3060
3061   /* True if we have looked for longjmp probes.  */
3062   int longjmp_searched;
3063
3064   /* SystemTap probe points for longjmp (if any).  */
3065   VEC (probe_p) *longjmp_probes;
3066
3067   /* Minimal symbol for "std::terminate()" (if any).  */
3068   struct minimal_symbol *terminate_msym;
3069
3070   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3071   struct minimal_symbol *exception_msym;
3072
3073   /* True if we have looked for exception probes.  */
3074   int exception_searched;
3075
3076   /* SystemTap probe points for unwinding (if any).  */
3077   VEC (probe_p) *exception_probes;
3078 };
3079
3080 static const struct objfile_data *breakpoint_objfile_key;
3081
3082 /* Minimal symbol not found sentinel.  */
3083 static struct minimal_symbol msym_not_found;
3084
3085 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3086
3087 static int
3088 msym_not_found_p (const struct minimal_symbol *msym)
3089 {
3090   return msym == &msym_not_found;
3091 }
3092
3093 /* Return per-objfile data needed by breakpoint.c.
3094    Allocate the data if necessary.  */
3095
3096 static struct breakpoint_objfile_data *
3097 get_breakpoint_objfile_data (struct objfile *objfile)
3098 {
3099   struct breakpoint_objfile_data *bp_objfile_data;
3100
3101   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3102   if (bp_objfile_data == NULL)
3103     {
3104       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3105                                        sizeof (*bp_objfile_data));
3106
3107       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3108       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3109     }
3110   return bp_objfile_data;
3111 }
3112
3113 static void
3114 free_breakpoint_probes (struct objfile *obj, void *data)
3115 {
3116   struct breakpoint_objfile_data *bp_objfile_data = data;
3117
3118   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3119   VEC_free (probe_p, bp_objfile_data->exception_probes);
3120 }
3121
3122 static void
3123 create_overlay_event_breakpoint (void)
3124 {
3125   struct objfile *objfile;
3126   const char *const func_name = "_ovly_debug_event";
3127
3128   ALL_OBJFILES (objfile)
3129     {
3130       struct breakpoint *b;
3131       struct breakpoint_objfile_data *bp_objfile_data;
3132       CORE_ADDR addr;
3133
3134       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3135
3136       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3137         continue;
3138
3139       if (bp_objfile_data->overlay_msym == NULL)
3140         {
3141           struct minimal_symbol *m;
3142
3143           m = lookup_minimal_symbol_text (func_name, objfile);
3144           if (m == NULL)
3145             {
3146               /* Avoid future lookups in this objfile.  */
3147               bp_objfile_data->overlay_msym = &msym_not_found;
3148               continue;
3149             }
3150           bp_objfile_data->overlay_msym = m;
3151         }
3152
3153       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3154       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3155                                       bp_overlay_event,
3156                                       &internal_breakpoint_ops);
3157       b->addr_string = xstrdup (func_name);
3158
3159       if (overlay_debugging == ovly_auto)
3160         {
3161           b->enable_state = bp_enabled;
3162           overlay_events_enabled = 1;
3163         }
3164       else
3165        {
3166          b->enable_state = bp_disabled;
3167          overlay_events_enabled = 0;
3168        }
3169     }
3170   update_global_location_list (1);
3171 }
3172
3173 static void
3174 create_longjmp_master_breakpoint (void)
3175 {
3176   struct program_space *pspace;
3177   struct cleanup *old_chain;
3178
3179   old_chain = save_current_program_space ();
3180
3181   ALL_PSPACES (pspace)
3182   {
3183     struct objfile *objfile;
3184
3185     set_current_program_space (pspace);
3186
3187     ALL_OBJFILES (objfile)
3188     {
3189       int i;
3190       struct gdbarch *gdbarch;
3191       struct breakpoint_objfile_data *bp_objfile_data;
3192
3193       gdbarch = get_objfile_arch (objfile);
3194       if (!gdbarch_get_longjmp_target_p (gdbarch))
3195         continue;
3196
3197       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3198
3199       if (!bp_objfile_data->longjmp_searched)
3200         {
3201           bp_objfile_data->longjmp_probes
3202             = find_probes_in_objfile (objfile, "libc", "longjmp");
3203           bp_objfile_data->longjmp_searched = 1;
3204         }
3205
3206       if (bp_objfile_data->longjmp_probes != NULL)
3207         {
3208           int i;
3209           struct probe *probe;
3210           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3211
3212           for (i = 0;
3213                VEC_iterate (probe_p,
3214                             bp_objfile_data->longjmp_probes,
3215                             i, probe);
3216                ++i)
3217             {
3218               struct breakpoint *b;
3219
3220               b = create_internal_breakpoint (gdbarch, probe->address,
3221                                               bp_longjmp_master,
3222                                               &internal_breakpoint_ops);
3223               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3224               b->enable_state = bp_disabled;
3225             }
3226
3227           continue;
3228         }
3229
3230       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3231         {
3232           struct breakpoint *b;
3233           const char *func_name;
3234           CORE_ADDR addr;
3235
3236           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3237             continue;
3238
3239           func_name = longjmp_names[i];
3240           if (bp_objfile_data->longjmp_msym[i] == NULL)
3241             {
3242               struct minimal_symbol *m;
3243
3244               m = lookup_minimal_symbol_text (func_name, objfile);
3245               if (m == NULL)
3246                 {
3247                   /* Prevent future lookups in this objfile.  */
3248                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3249                   continue;
3250                 }
3251               bp_objfile_data->longjmp_msym[i] = m;
3252             }
3253
3254           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3255           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3256                                           &internal_breakpoint_ops);
3257           b->addr_string = xstrdup (func_name);
3258           b->enable_state = bp_disabled;
3259         }
3260     }
3261   }
3262   update_global_location_list (1);
3263
3264   do_cleanups (old_chain);
3265 }
3266
3267 /* Create a master std::terminate breakpoint.  */
3268 static void
3269 create_std_terminate_master_breakpoint (void)
3270 {
3271   struct program_space *pspace;
3272   struct cleanup *old_chain;
3273   const char *const func_name = "std::terminate()";
3274
3275   old_chain = save_current_program_space ();
3276
3277   ALL_PSPACES (pspace)
3278   {
3279     struct objfile *objfile;
3280     CORE_ADDR addr;
3281
3282     set_current_program_space (pspace);
3283
3284     ALL_OBJFILES (objfile)
3285     {
3286       struct breakpoint *b;
3287       struct breakpoint_objfile_data *bp_objfile_data;
3288
3289       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3290
3291       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3292         continue;
3293
3294       if (bp_objfile_data->terminate_msym == NULL)
3295         {
3296           struct minimal_symbol *m;
3297
3298           m = lookup_minimal_symbol (func_name, NULL, objfile);
3299           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3300                             && MSYMBOL_TYPE (m) != mst_file_text))
3301             {
3302               /* Prevent future lookups in this objfile.  */
3303               bp_objfile_data->terminate_msym = &msym_not_found;
3304               continue;
3305             }
3306           bp_objfile_data->terminate_msym = m;
3307         }
3308
3309       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3310       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3311                                       bp_std_terminate_master,
3312                                       &internal_breakpoint_ops);
3313       b->addr_string = xstrdup (func_name);
3314       b->enable_state = bp_disabled;
3315     }
3316   }
3317
3318   update_global_location_list (1);
3319
3320   do_cleanups (old_chain);
3321 }
3322
3323 /* Install a master breakpoint on the unwinder's debug hook.  */
3324
3325 static void
3326 create_exception_master_breakpoint (void)
3327 {
3328   struct objfile *objfile;
3329   const char *const func_name = "_Unwind_DebugHook";
3330
3331   ALL_OBJFILES (objfile)
3332     {
3333       struct breakpoint *b;
3334       struct gdbarch *gdbarch;
3335       struct breakpoint_objfile_data *bp_objfile_data;
3336       CORE_ADDR addr;
3337
3338       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3339
3340       /* We prefer the SystemTap probe point if it exists.  */
3341       if (!bp_objfile_data->exception_searched)
3342         {
3343           bp_objfile_data->exception_probes
3344             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3345           bp_objfile_data->exception_searched = 1;
3346         }
3347
3348       if (bp_objfile_data->exception_probes != NULL)
3349         {
3350           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3351           int i;
3352           struct probe *probe;
3353
3354           for (i = 0;
3355                VEC_iterate (probe_p,
3356                             bp_objfile_data->exception_probes,
3357                             i, probe);
3358                ++i)
3359             {
3360               struct breakpoint *b;
3361
3362               b = create_internal_breakpoint (gdbarch, probe->address,
3363                                               bp_exception_master,
3364                                               &internal_breakpoint_ops);
3365               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3366               b->enable_state = bp_disabled;
3367             }
3368
3369           continue;
3370         }
3371
3372       /* Otherwise, try the hook function.  */
3373
3374       if (msym_not_found_p (bp_objfile_data->exception_msym))
3375         continue;
3376
3377       gdbarch = get_objfile_arch (objfile);
3378
3379       if (bp_objfile_data->exception_msym == NULL)
3380         {
3381           struct minimal_symbol *debug_hook;
3382
3383           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3384           if (debug_hook == NULL)
3385             {
3386               bp_objfile_data->exception_msym = &msym_not_found;
3387               continue;
3388             }
3389
3390           bp_objfile_data->exception_msym = debug_hook;
3391         }
3392
3393       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3394       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3395                                                  &current_target);
3396       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3397                                       &internal_breakpoint_ops);
3398       b->addr_string = xstrdup (func_name);
3399       b->enable_state = bp_disabled;
3400     }
3401
3402   update_global_location_list (1);
3403 }
3404
3405 void
3406 update_breakpoints_after_exec (void)
3407 {
3408   struct breakpoint *b, *b_tmp;
3409   struct bp_location *bploc, **bplocp_tmp;
3410
3411   /* We're about to delete breakpoints from GDB's lists.  If the
3412      INSERTED flag is true, GDB will try to lift the breakpoints by
3413      writing the breakpoints' "shadow contents" back into memory.  The
3414      "shadow contents" are NOT valid after an exec, so GDB should not
3415      do that.  Instead, the target is responsible from marking
3416      breakpoints out as soon as it detects an exec.  We don't do that
3417      here instead, because there may be other attempts to delete
3418      breakpoints after detecting an exec and before reaching here.  */
3419   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3420     if (bploc->pspace == current_program_space)
3421       gdb_assert (!bploc->inserted);
3422
3423   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3424   {
3425     if (b->pspace != current_program_space)
3426       continue;
3427
3428     /* Solib breakpoints must be explicitly reset after an exec().  */
3429     if (b->type == bp_shlib_event)
3430       {
3431         delete_breakpoint (b);
3432         continue;
3433       }
3434
3435     /* JIT breakpoints must be explicitly reset after an exec().  */
3436     if (b->type == bp_jit_event)
3437       {
3438         delete_breakpoint (b);
3439         continue;
3440       }
3441
3442     /* Thread event breakpoints must be set anew after an exec(),
3443        as must overlay event and longjmp master breakpoints.  */
3444     if (b->type == bp_thread_event || b->type == bp_overlay_event
3445         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3446         || b->type == bp_exception_master)
3447       {
3448         delete_breakpoint (b);
3449         continue;
3450       }
3451
3452     /* Step-resume breakpoints are meaningless after an exec().  */
3453     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3454       {
3455         delete_breakpoint (b);
3456         continue;
3457       }
3458
3459     /* Longjmp and longjmp-resume breakpoints are also meaningless
3460        after an exec.  */
3461     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3462         || b->type == bp_longjmp_call_dummy
3463         || b->type == bp_exception || b->type == bp_exception_resume)
3464       {
3465         delete_breakpoint (b);
3466         continue;
3467       }
3468
3469     if (b->type == bp_catchpoint)
3470       {
3471         /* For now, none of the bp_catchpoint breakpoints need to
3472            do anything at this point.  In the future, if some of
3473            the catchpoints need to something, we will need to add
3474            a new method, and call this method from here.  */
3475         continue;
3476       }
3477
3478     /* bp_finish is a special case.  The only way we ought to be able
3479        to see one of these when an exec() has happened, is if the user
3480        caught a vfork, and then said "finish".  Ordinarily a finish just
3481        carries them to the call-site of the current callee, by setting
3482        a temporary bp there and resuming.  But in this case, the finish
3483        will carry them entirely through the vfork & exec.
3484
3485        We don't want to allow a bp_finish to remain inserted now.  But
3486        we can't safely delete it, 'cause finish_command has a handle to
3487        the bp on a bpstat, and will later want to delete it.  There's a
3488        chance (and I've seen it happen) that if we delete the bp_finish
3489        here, that its storage will get reused by the time finish_command
3490        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3491        We really must allow finish_command to delete a bp_finish.
3492
3493        In the absence of a general solution for the "how do we know
3494        it's safe to delete something others may have handles to?"
3495        problem, what we'll do here is just uninsert the bp_finish, and
3496        let finish_command delete it.
3497
3498        (We know the bp_finish is "doomed" in the sense that it's
3499        momentary, and will be deleted as soon as finish_command sees
3500        the inferior stopped.  So it doesn't matter that the bp's
3501        address is probably bogus in the new a.out, unlike e.g., the
3502        solib breakpoints.)  */
3503
3504     if (b->type == bp_finish)
3505       {
3506         continue;
3507       }
3508
3509     /* Without a symbolic address, we have little hope of the
3510        pre-exec() address meaning the same thing in the post-exec()
3511        a.out.  */
3512     if (b->addr_string == NULL)
3513       {
3514         delete_breakpoint (b);
3515         continue;
3516       }
3517   }
3518   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3519   create_overlay_event_breakpoint ();
3520   create_longjmp_master_breakpoint ();
3521   create_std_terminate_master_breakpoint ();
3522   create_exception_master_breakpoint ();
3523 }
3524
3525 int
3526 detach_breakpoints (ptid_t ptid)
3527 {
3528   struct bp_location *bl, **blp_tmp;
3529   int val = 0;
3530   struct cleanup *old_chain = save_inferior_ptid ();
3531   struct inferior *inf = current_inferior ();
3532
3533   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3534     error (_("Cannot detach breakpoints of inferior_ptid"));
3535
3536   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3537   inferior_ptid = ptid;
3538   ALL_BP_LOCATIONS (bl, blp_tmp)
3539   {
3540     if (bl->pspace != inf->pspace)
3541       continue;
3542
3543     if (bl->inserted)
3544       val |= remove_breakpoint_1 (bl, mark_inserted);
3545   }
3546
3547   /* Detach single-step breakpoints as well.  */
3548   detach_single_step_breakpoints ();
3549
3550   do_cleanups (old_chain);
3551   return val;
3552 }
3553
3554 /* Remove the breakpoint location BL from the current address space.
3555    Note that this is used to detach breakpoints from a child fork.
3556    When we get here, the child isn't in the inferior list, and neither
3557    do we have objects to represent its address space --- we should
3558    *not* look at bl->pspace->aspace here.  */
3559
3560 static int
3561 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3562 {
3563   int val;
3564
3565   /* BL is never in moribund_locations by our callers.  */
3566   gdb_assert (bl->owner != NULL);
3567
3568   if (bl->owner->enable_state == bp_permanent)
3569     /* Permanent breakpoints cannot be inserted or removed.  */
3570     return 0;
3571
3572   /* The type of none suggests that owner is actually deleted.
3573      This should not ever happen.  */
3574   gdb_assert (bl->owner->type != bp_none);
3575
3576   if (bl->loc_type == bp_loc_software_breakpoint
3577       || bl->loc_type == bp_loc_hardware_breakpoint)
3578     {
3579       /* "Normal" instruction breakpoint: either the standard
3580          trap-instruction bp (bp_breakpoint), or a
3581          bp_hardware_breakpoint.  */
3582
3583       /* First check to see if we have to handle an overlay.  */
3584       if (overlay_debugging == ovly_off
3585           || bl->section == NULL
3586           || !(section_is_overlay (bl->section)))
3587         {
3588           /* No overlay handling: just remove the breakpoint.  */
3589           val = bl->owner->ops->remove_location (bl);
3590         }
3591       else
3592         {
3593           /* This breakpoint is in an overlay section.
3594              Did we set a breakpoint at the LMA?  */
3595           if (!overlay_events_enabled)
3596               {
3597                 /* Yes -- overlay event support is not active, so we
3598                    should have set a breakpoint at the LMA.  Remove it.  
3599                 */
3600                 /* Ignore any failures: if the LMA is in ROM, we will
3601                    have already warned when we failed to insert it.  */
3602                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3603                   target_remove_hw_breakpoint (bl->gdbarch,
3604                                                &bl->overlay_target_info);
3605                 else
3606                   target_remove_breakpoint (bl->gdbarch,
3607                                             &bl->overlay_target_info);
3608               }
3609           /* Did we set a breakpoint at the VMA? 
3610              If so, we will have marked the breakpoint 'inserted'.  */
3611           if (bl->inserted)
3612             {
3613               /* Yes -- remove it.  Previously we did not bother to
3614                  remove the breakpoint if the section had been
3615                  unmapped, but let's not rely on that being safe.  We
3616                  don't know what the overlay manager might do.  */
3617
3618               /* However, we should remove *software* breakpoints only
3619                  if the section is still mapped, or else we overwrite
3620                  wrong code with the saved shadow contents.  */
3621               if (bl->loc_type == bp_loc_hardware_breakpoint
3622                   || section_is_mapped (bl->section))
3623                 val = bl->owner->ops->remove_location (bl);
3624               else
3625                 val = 0;
3626             }
3627           else
3628             {
3629               /* No -- not inserted, so no need to remove.  No error.  */
3630               val = 0;
3631             }
3632         }
3633
3634       /* In some cases, we might not be able to remove a breakpoint
3635          in a shared library that has already been removed, but we
3636          have not yet processed the shlib unload event.  */
3637       if (val && solib_name_from_address (bl->pspace, bl->address))
3638         val = 0;
3639
3640       if (val)
3641         return val;
3642       bl->inserted = (is == mark_inserted);
3643     }
3644   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3645     {
3646       gdb_assert (bl->owner->ops != NULL
3647                   && bl->owner->ops->remove_location != NULL);
3648
3649       bl->inserted = (is == mark_inserted);
3650       bl->owner->ops->remove_location (bl);
3651
3652       /* Failure to remove any of the hardware watchpoints comes here.  */
3653       if ((is == mark_uninserted) && (bl->inserted))
3654         warning (_("Could not remove hardware watchpoint %d."),
3655                  bl->owner->number);
3656     }
3657   else if (bl->owner->type == bp_catchpoint
3658            && breakpoint_enabled (bl->owner)
3659            && !bl->duplicate)
3660     {
3661       gdb_assert (bl->owner->ops != NULL
3662                   && bl->owner->ops->remove_location != NULL);
3663
3664       val = bl->owner->ops->remove_location (bl);
3665       if (val)
3666         return val;
3667
3668       bl->inserted = (is == mark_inserted);
3669     }
3670
3671   return 0;
3672 }
3673
3674 static int
3675 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3676 {
3677   int ret;
3678   struct cleanup *old_chain;
3679
3680   /* BL is never in moribund_locations by our callers.  */
3681   gdb_assert (bl->owner != NULL);
3682
3683   if (bl->owner->enable_state == bp_permanent)
3684     /* Permanent breakpoints cannot be inserted or removed.  */
3685     return 0;
3686
3687   /* The type of none suggests that owner is actually deleted.
3688      This should not ever happen.  */
3689   gdb_assert (bl->owner->type != bp_none);
3690
3691   old_chain = save_current_space_and_thread ();
3692
3693   switch_to_program_space_and_thread (bl->pspace);
3694
3695   ret = remove_breakpoint_1 (bl, is);
3696
3697   do_cleanups (old_chain);
3698   return ret;
3699 }
3700
3701 /* Clear the "inserted" flag in all breakpoints.  */
3702
3703 void
3704 mark_breakpoints_out (void)
3705 {
3706   struct bp_location *bl, **blp_tmp;
3707
3708   ALL_BP_LOCATIONS (bl, blp_tmp)
3709     if (bl->pspace == current_program_space)
3710       bl->inserted = 0;
3711 }
3712
3713 /* Clear the "inserted" flag in all breakpoints and delete any
3714    breakpoints which should go away between runs of the program.
3715
3716    Plus other such housekeeping that has to be done for breakpoints
3717    between runs.
3718
3719    Note: this function gets called at the end of a run (by
3720    generic_mourn_inferior) and when a run begins (by
3721    init_wait_for_inferior).  */
3722
3723
3724
3725 void
3726 breakpoint_init_inferior (enum inf_context context)
3727 {
3728   struct breakpoint *b, *b_tmp;
3729   struct bp_location *bl, **blp_tmp;
3730   int ix;
3731   struct program_space *pspace = current_program_space;
3732
3733   /* If breakpoint locations are shared across processes, then there's
3734      nothing to do.  */
3735   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3736     return;
3737
3738   ALL_BP_LOCATIONS (bl, blp_tmp)
3739   {
3740     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3741     if (bl->pspace == pspace
3742         && bl->owner->enable_state != bp_permanent)
3743       bl->inserted = 0;
3744   }
3745
3746   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3747   {
3748     if (b->loc && b->loc->pspace != pspace)
3749       continue;
3750
3751     switch (b->type)
3752       {
3753       case bp_call_dummy:
3754       case bp_longjmp_call_dummy:
3755
3756         /* If the call dummy breakpoint is at the entry point it will
3757            cause problems when the inferior is rerun, so we better get
3758            rid of it.  */
3759
3760       case bp_watchpoint_scope:
3761
3762         /* Also get rid of scope breakpoints.  */
3763
3764       case bp_shlib_event:
3765
3766         /* Also remove solib event breakpoints.  Their addresses may
3767            have changed since the last time we ran the program.
3768            Actually we may now be debugging against different target;
3769            and so the solib backend that installed this breakpoint may
3770            not be used in by the target.  E.g.,
3771
3772            (gdb) file prog-linux
3773            (gdb) run               # native linux target
3774            ...
3775            (gdb) kill
3776            (gdb) file prog-win.exe
3777            (gdb) tar rem :9999     # remote Windows gdbserver.
3778         */
3779
3780       case bp_step_resume:
3781
3782         /* Also remove step-resume breakpoints.  */
3783
3784         delete_breakpoint (b);
3785         break;
3786
3787       case bp_watchpoint:
3788       case bp_hardware_watchpoint:
3789       case bp_read_watchpoint:
3790       case bp_access_watchpoint:
3791         {
3792           struct watchpoint *w = (struct watchpoint *) b;
3793
3794           /* Likewise for watchpoints on local expressions.  */
3795           if (w->exp_valid_block != NULL)
3796             delete_breakpoint (b);
3797           else if (context == inf_starting)
3798             {
3799               /* Reset val field to force reread of starting value in
3800                  insert_breakpoints.  */
3801               if (w->val)
3802                 value_free (w->val);
3803               w->val = NULL;
3804               w->val_valid = 0;
3805           }
3806         }
3807         break;
3808       default:
3809         break;
3810       }
3811   }
3812
3813   /* Get rid of the moribund locations.  */
3814   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3815     decref_bp_location (&bl);
3816   VEC_free (bp_location_p, moribund_locations);
3817 }
3818
3819 /* These functions concern about actual breakpoints inserted in the
3820    target --- to e.g. check if we need to do decr_pc adjustment or if
3821    we need to hop over the bkpt --- so we check for address space
3822    match, not program space.  */
3823
3824 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3825    exists at PC.  It returns ordinary_breakpoint_here if it's an
3826    ordinary breakpoint, or permanent_breakpoint_here if it's a
3827    permanent breakpoint.
3828    - When continuing from a location with an ordinary breakpoint, we
3829      actually single step once before calling insert_breakpoints.
3830    - When continuing from a location with a permanent breakpoint, we
3831      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3832      the target, to advance the PC past the breakpoint.  */
3833
3834 enum breakpoint_here
3835 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3836 {
3837   struct bp_location *bl, **blp_tmp;
3838   int any_breakpoint_here = 0;
3839
3840   ALL_BP_LOCATIONS (bl, blp_tmp)
3841     {
3842       if (bl->loc_type != bp_loc_software_breakpoint
3843           && bl->loc_type != bp_loc_hardware_breakpoint)
3844         continue;
3845
3846       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3847       if ((breakpoint_enabled (bl->owner)
3848            || bl->owner->enable_state == bp_permanent)
3849           && breakpoint_location_address_match (bl, aspace, pc))
3850         {
3851           if (overlay_debugging 
3852               && section_is_overlay (bl->section)
3853               && !section_is_mapped (bl->section))
3854             continue;           /* unmapped overlay -- can't be a match */
3855           else if (bl->owner->enable_state == bp_permanent)
3856             return permanent_breakpoint_here;
3857           else
3858             any_breakpoint_here = 1;
3859         }
3860     }
3861
3862   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3863 }
3864
3865 /* Return true if there's a moribund breakpoint at PC.  */
3866
3867 int
3868 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3869 {
3870   struct bp_location *loc;
3871   int ix;
3872
3873   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3874     if (breakpoint_location_address_match (loc, aspace, pc))
3875       return 1;
3876
3877   return 0;
3878 }
3879
3880 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3881    inserted using regular breakpoint_chain / bp_location array
3882    mechanism.  This does not check for single-step breakpoints, which
3883    are inserted and removed using direct target manipulation.  */
3884
3885 int
3886 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3887                                     CORE_ADDR pc)
3888 {
3889   struct bp_location *bl, **blp_tmp;
3890
3891   ALL_BP_LOCATIONS (bl, blp_tmp)
3892     {
3893       if (bl->loc_type != bp_loc_software_breakpoint
3894           && bl->loc_type != bp_loc_hardware_breakpoint)
3895         continue;
3896
3897       if (bl->inserted
3898           && breakpoint_location_address_match (bl, aspace, pc))
3899         {
3900           if (overlay_debugging 
3901               && section_is_overlay (bl->section)
3902               && !section_is_mapped (bl->section))
3903             continue;           /* unmapped overlay -- can't be a match */
3904           else
3905             return 1;
3906         }
3907     }
3908   return 0;
3909 }
3910
3911 /* Returns non-zero iff there's either regular breakpoint
3912    or a single step breakpoint inserted at PC.  */
3913
3914 int
3915 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3916 {
3917   if (regular_breakpoint_inserted_here_p (aspace, pc))
3918     return 1;
3919
3920   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3921     return 1;
3922
3923   return 0;
3924 }
3925
3926 /* This function returns non-zero iff there is a software breakpoint
3927    inserted at PC.  */
3928
3929 int
3930 software_breakpoint_inserted_here_p (struct address_space *aspace,
3931                                      CORE_ADDR pc)
3932 {
3933   struct bp_location *bl, **blp_tmp;
3934
3935   ALL_BP_LOCATIONS (bl, blp_tmp)
3936     {
3937       if (bl->loc_type != bp_loc_software_breakpoint)
3938         continue;
3939
3940       if (bl->inserted
3941           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3942                                        aspace, pc))
3943         {
3944           if (overlay_debugging 
3945               && section_is_overlay (bl->section)
3946               && !section_is_mapped (bl->section))
3947             continue;           /* unmapped overlay -- can't be a match */
3948           else
3949             return 1;
3950         }
3951     }
3952
3953   /* Also check for software single-step breakpoints.  */
3954   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3955     return 1;
3956
3957   return 0;
3958 }
3959
3960 int
3961 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3962                                        CORE_ADDR addr, ULONGEST len)
3963 {
3964   struct breakpoint *bpt;
3965
3966   ALL_BREAKPOINTS (bpt)
3967     {
3968       struct bp_location *loc;
3969
3970       if (bpt->type != bp_hardware_watchpoint
3971           && bpt->type != bp_access_watchpoint)
3972         continue;
3973
3974       if (!breakpoint_enabled (bpt))
3975         continue;
3976
3977       for (loc = bpt->loc; loc; loc = loc->next)
3978         if (loc->pspace->aspace == aspace && loc->inserted)
3979           {
3980             CORE_ADDR l, h;
3981
3982             /* Check for intersection.  */
3983             l = max (loc->address, addr);
3984             h = min (loc->address + loc->length, addr + len);
3985             if (l < h)
3986               return 1;
3987           }
3988     }
3989   return 0;
3990 }
3991
3992 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3993    PC is valid for process/thread PTID.  */
3994
3995 int
3996 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3997                          ptid_t ptid)
3998 {
3999   struct bp_location *bl, **blp_tmp;
4000   /* The thread and task IDs associated to PTID, computed lazily.  */
4001   int thread = -1;
4002   int task = 0;
4003   
4004   ALL_BP_LOCATIONS (bl, blp_tmp)
4005     {
4006       if (bl->loc_type != bp_loc_software_breakpoint
4007           && bl->loc_type != bp_loc_hardware_breakpoint)
4008         continue;
4009
4010       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4011       if (!breakpoint_enabled (bl->owner)
4012           && bl->owner->enable_state != bp_permanent)
4013         continue;
4014
4015       if (!breakpoint_location_address_match (bl, aspace, pc))
4016         continue;
4017
4018       if (bl->owner->thread != -1)
4019         {
4020           /* This is a thread-specific breakpoint.  Check that ptid
4021              matches that thread.  If thread hasn't been computed yet,
4022              it is now time to do so.  */
4023           if (thread == -1)
4024             thread = pid_to_thread_id (ptid);
4025           if (bl->owner->thread != thread)
4026             continue;
4027         }
4028
4029       if (bl->owner->task != 0)
4030         {
4031           /* This is a task-specific breakpoint.  Check that ptid
4032              matches that task.  If task hasn't been computed yet,
4033              it is now time to do so.  */
4034           if (task == 0)
4035             task = ada_get_task_number (ptid);
4036           if (bl->owner->task != task)
4037             continue;
4038         }
4039
4040       if (overlay_debugging 
4041           && section_is_overlay (bl->section)
4042           && !section_is_mapped (bl->section))
4043         continue;           /* unmapped overlay -- can't be a match */
4044
4045       return 1;
4046     }
4047
4048   return 0;
4049 }
4050 \f
4051
4052 /* bpstat stuff.  External routines' interfaces are documented
4053    in breakpoint.h.  */
4054
4055 int
4056 is_catchpoint (struct breakpoint *ep)
4057 {
4058   return (ep->type == bp_catchpoint);
4059 }
4060
4061 /* Frees any storage that is part of a bpstat.  Does not walk the
4062    'next' chain.  */
4063
4064 static void
4065 bpstat_free (bpstat bs)
4066 {
4067   if (bs->old_val != NULL)
4068     value_free (bs->old_val);
4069   decref_counted_command_line (&bs->commands);
4070   decref_bp_location (&bs->bp_location_at);
4071   xfree (bs);
4072 }
4073
4074 /* Clear a bpstat so that it says we are not at any breakpoint.
4075    Also free any storage that is part of a bpstat.  */
4076
4077 void
4078 bpstat_clear (bpstat *bsp)
4079 {
4080   bpstat p;
4081   bpstat q;
4082
4083   if (bsp == 0)
4084     return;
4085   p = *bsp;
4086   while (p != NULL)
4087     {
4088       q = p->next;
4089       bpstat_free (p);
4090       p = q;
4091     }
4092   *bsp = NULL;
4093 }
4094
4095 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4096    is part of the bpstat is copied as well.  */
4097
4098 bpstat
4099 bpstat_copy (bpstat bs)
4100 {
4101   bpstat p = NULL;
4102   bpstat tmp;
4103   bpstat retval = NULL;
4104
4105   if (bs == NULL)
4106     return bs;
4107
4108   for (; bs != NULL; bs = bs->next)
4109     {
4110       tmp = (bpstat) xmalloc (sizeof (*tmp));
4111       memcpy (tmp, bs, sizeof (*tmp));
4112       incref_counted_command_line (tmp->commands);
4113       incref_bp_location (tmp->bp_location_at);
4114       if (bs->old_val != NULL)
4115         {
4116           tmp->old_val = value_copy (bs->old_val);
4117           release_value (tmp->old_val);
4118         }
4119
4120       if (p == NULL)
4121         /* This is the first thing in the chain.  */
4122         retval = tmp;
4123       else
4124         p->next = tmp;
4125       p = tmp;
4126     }
4127   p->next = NULL;
4128   return retval;
4129 }
4130
4131 /* Find the bpstat associated with this breakpoint.  */
4132
4133 bpstat
4134 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4135 {
4136   if (bsp == NULL)
4137     return NULL;
4138
4139   for (; bsp != NULL; bsp = bsp->next)
4140     {
4141       if (bsp->breakpoint_at == breakpoint)
4142         return bsp;
4143     }
4144   return NULL;
4145 }
4146
4147 /* Put in *NUM the breakpoint number of the first breakpoint we are
4148    stopped at.  *BSP upon return is a bpstat which points to the
4149    remaining breakpoints stopped at (but which is not guaranteed to be
4150    good for anything but further calls to bpstat_num).
4151
4152    Return 0 if passed a bpstat which does not indicate any breakpoints.
4153    Return -1 if stopped at a breakpoint that has been deleted since
4154    we set it.
4155    Return 1 otherwise.  */
4156
4157 int
4158 bpstat_num (bpstat *bsp, int *num)
4159 {
4160   struct breakpoint *b;
4161
4162   if ((*bsp) == NULL)
4163     return 0;                   /* No more breakpoint values */
4164
4165   /* We assume we'll never have several bpstats that correspond to a
4166      single breakpoint -- otherwise, this function might return the
4167      same number more than once and this will look ugly.  */
4168   b = (*bsp)->breakpoint_at;
4169   *bsp = (*bsp)->next;
4170   if (b == NULL)
4171     return -1;                  /* breakpoint that's been deleted since */
4172
4173   *num = b->number;             /* We have its number */
4174   return 1;
4175 }
4176
4177 /* See breakpoint.h.  */
4178
4179 void
4180 bpstat_clear_actions (void)
4181 {
4182   struct thread_info *tp;
4183   bpstat bs;
4184
4185   if (ptid_equal (inferior_ptid, null_ptid))
4186     return;
4187
4188   tp = find_thread_ptid (inferior_ptid);
4189   if (tp == NULL)
4190     return;
4191
4192   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4193     {
4194       decref_counted_command_line (&bs->commands);
4195
4196       if (bs->old_val != NULL)
4197         {
4198           value_free (bs->old_val);
4199           bs->old_val = NULL;
4200         }
4201     }
4202 }
4203
4204 /* Called when a command is about to proceed the inferior.  */
4205
4206 static void
4207 breakpoint_about_to_proceed (void)
4208 {
4209   if (!ptid_equal (inferior_ptid, null_ptid))
4210     {
4211       struct thread_info *tp = inferior_thread ();
4212
4213       /* Allow inferior function calls in breakpoint commands to not
4214          interrupt the command list.  When the call finishes
4215          successfully, the inferior will be standing at the same
4216          breakpoint as if nothing happened.  */
4217       if (tp->control.in_infcall)
4218         return;
4219     }
4220
4221   breakpoint_proceeded = 1;
4222 }
4223
4224 /* Stub for cleaning up our state if we error-out of a breakpoint
4225    command.  */
4226 static void
4227 cleanup_executing_breakpoints (void *ignore)
4228 {
4229   executing_breakpoint_commands = 0;
4230 }
4231
4232 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4233    or its equivalent.  */
4234
4235 static int
4236 command_line_is_silent (struct command_line *cmd)
4237 {
4238   return cmd && (strcmp ("silent", cmd->line) == 0
4239                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4240 }
4241
4242 /* Execute all the commands associated with all the breakpoints at
4243    this location.  Any of these commands could cause the process to
4244    proceed beyond this point, etc.  We look out for such changes by
4245    checking the global "breakpoint_proceeded" after each command.
4246
4247    Returns true if a breakpoint command resumed the inferior.  In that
4248    case, it is the caller's responsibility to recall it again with the
4249    bpstat of the current thread.  */
4250
4251 static int
4252 bpstat_do_actions_1 (bpstat *bsp)
4253 {
4254   bpstat bs;
4255   struct cleanup *old_chain;
4256   int again = 0;
4257
4258   /* Avoid endless recursion if a `source' command is contained
4259      in bs->commands.  */
4260   if (executing_breakpoint_commands)
4261     return 0;
4262
4263   executing_breakpoint_commands = 1;
4264   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4265
4266   prevent_dont_repeat ();
4267
4268   /* This pointer will iterate over the list of bpstat's.  */
4269   bs = *bsp;
4270
4271   breakpoint_proceeded = 0;
4272   for (; bs != NULL; bs = bs->next)
4273     {
4274       struct counted_command_line *ccmd;
4275       struct command_line *cmd;
4276       struct cleanup *this_cmd_tree_chain;
4277
4278       /* Take ownership of the BSP's command tree, if it has one.
4279
4280          The command tree could legitimately contain commands like
4281          'step' and 'next', which call clear_proceed_status, which
4282          frees stop_bpstat's command tree.  To make sure this doesn't
4283          free the tree we're executing out from under us, we need to
4284          take ownership of the tree ourselves.  Since a given bpstat's
4285          commands are only executed once, we don't need to copy it; we
4286          can clear the pointer in the bpstat, and make sure we free
4287          the tree when we're done.  */
4288       ccmd = bs->commands;
4289       bs->commands = NULL;
4290       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4291       cmd = ccmd ? ccmd->commands : NULL;
4292       if (command_line_is_silent (cmd))
4293         {
4294           /* The action has been already done by bpstat_stop_status.  */
4295           cmd = cmd->next;
4296         }
4297
4298       while (cmd != NULL)
4299         {
4300           execute_control_command (cmd);
4301
4302           if (breakpoint_proceeded)
4303             break;
4304           else
4305             cmd = cmd->next;
4306         }
4307
4308       /* We can free this command tree now.  */
4309       do_cleanups (this_cmd_tree_chain);
4310
4311       if (breakpoint_proceeded)
4312         {
4313           if (target_can_async_p ())
4314             /* If we are in async mode, then the target might be still
4315                running, not stopped at any breakpoint, so nothing for
4316                us to do here -- just return to the event loop.  */
4317             ;
4318           else
4319             /* In sync mode, when execute_control_command returns
4320                we're already standing on the next breakpoint.
4321                Breakpoint commands for that stop were not run, since
4322                execute_command does not run breakpoint commands --
4323                only command_line_handler does, but that one is not
4324                involved in execution of breakpoint commands.  So, we
4325                can now execute breakpoint commands.  It should be
4326                noted that making execute_command do bpstat actions is
4327                not an option -- in this case we'll have recursive
4328                invocation of bpstat for each breakpoint with a
4329                command, and can easily blow up GDB stack.  Instead, we
4330                return true, which will trigger the caller to recall us
4331                with the new stop_bpstat.  */
4332             again = 1;
4333           break;
4334         }
4335     }
4336   do_cleanups (old_chain);
4337   return again;
4338 }
4339
4340 void
4341 bpstat_do_actions (void)
4342 {
4343   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4344
4345   /* Do any commands attached to breakpoint we are stopped at.  */
4346   while (!ptid_equal (inferior_ptid, null_ptid)
4347          && target_has_execution
4348          && !is_exited (inferior_ptid)
4349          && !is_executing (inferior_ptid))
4350     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4351        and only return when it is stopped at the next breakpoint, we
4352        keep doing breakpoint actions until it returns false to
4353        indicate the inferior was not resumed.  */
4354     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4355       break;
4356
4357   discard_cleanups (cleanup_if_error);
4358 }
4359
4360 /* Print out the (old or new) value associated with a watchpoint.  */
4361
4362 static void
4363 watchpoint_value_print (struct value *val, struct ui_file *stream)
4364 {
4365   if (val == NULL)
4366     fprintf_unfiltered (stream, _("<unreadable>"));
4367   else
4368     {
4369       struct value_print_options opts;
4370       get_user_print_options (&opts);
4371       value_print (val, stream, &opts);
4372     }
4373 }
4374
4375 /* Generic routine for printing messages indicating why we
4376    stopped.  The behavior of this function depends on the value
4377    'print_it' in the bpstat structure.  Under some circumstances we
4378    may decide not to print anything here and delegate the task to
4379    normal_stop().  */
4380
4381 static enum print_stop_action
4382 print_bp_stop_message (bpstat bs)
4383 {
4384   switch (bs->print_it)
4385     {
4386     case print_it_noop:
4387       /* Nothing should be printed for this bpstat entry.  */
4388       return PRINT_UNKNOWN;
4389       break;
4390
4391     case print_it_done:
4392       /* We still want to print the frame, but we already printed the
4393          relevant messages.  */
4394       return PRINT_SRC_AND_LOC;
4395       break;
4396
4397     case print_it_normal:
4398       {
4399         struct breakpoint *b = bs->breakpoint_at;
4400
4401         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4402            which has since been deleted.  */
4403         if (b == NULL)
4404           return PRINT_UNKNOWN;
4405
4406         /* Normal case.  Call the breakpoint's print_it method.  */
4407         return b->ops->print_it (bs);
4408       }
4409       break;
4410
4411     default:
4412       internal_error (__FILE__, __LINE__,
4413                       _("print_bp_stop_message: unrecognized enum value"));
4414       break;
4415     }
4416 }
4417
4418 /* A helper function that prints a shared library stopped event.  */
4419
4420 static void
4421 print_solib_event (int is_catchpoint)
4422 {
4423   int any_deleted
4424     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4425   int any_added
4426     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4427
4428   if (!is_catchpoint)
4429     {
4430       if (any_added || any_deleted)
4431         ui_out_text (current_uiout,
4432                      _("Stopped due to shared library event:\n"));
4433       else
4434         ui_out_text (current_uiout,
4435                      _("Stopped due to shared library event (no "
4436                        "libraries added or removed)\n"));
4437     }
4438
4439   if (ui_out_is_mi_like_p (current_uiout))
4440     ui_out_field_string (current_uiout, "reason",
4441                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4442
4443   if (any_deleted)
4444     {
4445       struct cleanup *cleanup;
4446       char *name;
4447       int ix;
4448
4449       ui_out_text (current_uiout, _("  Inferior unloaded "));
4450       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4451                                                     "removed");
4452       for (ix = 0;
4453            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4454                         ix, name);
4455            ++ix)
4456         {
4457           if (ix > 0)
4458             ui_out_text (current_uiout, "    ");
4459           ui_out_field_string (current_uiout, "library", name);
4460           ui_out_text (current_uiout, "\n");
4461         }
4462
4463       do_cleanups (cleanup);
4464     }
4465
4466   if (any_added)
4467     {
4468       struct so_list *iter;
4469       int ix;
4470       struct cleanup *cleanup;
4471
4472       ui_out_text (current_uiout, _("  Inferior loaded "));
4473       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4474                                                     "added");
4475       for (ix = 0;
4476            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4477                         ix, iter);
4478            ++ix)
4479         {
4480           if (ix > 0)
4481             ui_out_text (current_uiout, "    ");
4482           ui_out_field_string (current_uiout, "library", iter->so_name);
4483           ui_out_text (current_uiout, "\n");
4484         }
4485
4486       do_cleanups (cleanup);
4487     }
4488 }
4489
4490 /* Print a message indicating what happened.  This is called from
4491    normal_stop().  The input to this routine is the head of the bpstat
4492    list - a list of the eventpoints that caused this stop.  KIND is
4493    the target_waitkind for the stopping event.  This
4494    routine calls the generic print routine for printing a message
4495    about reasons for stopping.  This will print (for example) the
4496    "Breakpoint n," part of the output.  The return value of this
4497    routine is one of:
4498
4499    PRINT_UNKNOWN: Means we printed nothing.
4500    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4501    code to print the location.  An example is 
4502    "Breakpoint 1, " which should be followed by
4503    the location.
4504    PRINT_SRC_ONLY: Means we printed something, but there is no need
4505    to also print the location part of the message.
4506    An example is the catch/throw messages, which
4507    don't require a location appended to the end.
4508    PRINT_NOTHING: We have done some printing and we don't need any 
4509    further info to be printed.  */
4510
4511 enum print_stop_action
4512 bpstat_print (bpstat bs, int kind)
4513 {
4514   int val;
4515
4516   /* Maybe another breakpoint in the chain caused us to stop.
4517      (Currently all watchpoints go on the bpstat whether hit or not.
4518      That probably could (should) be changed, provided care is taken
4519      with respect to bpstat_explains_signal).  */
4520   for (; bs; bs = bs->next)
4521     {
4522       val = print_bp_stop_message (bs);
4523       if (val == PRINT_SRC_ONLY 
4524           || val == PRINT_SRC_AND_LOC 
4525           || val == PRINT_NOTHING)
4526         return val;
4527     }
4528
4529   /* If we had hit a shared library event breakpoint,
4530      print_bp_stop_message would print out this message.  If we hit an
4531      OS-level shared library event, do the same thing.  */
4532   if (kind == TARGET_WAITKIND_LOADED)
4533     {
4534       print_solib_event (0);
4535       return PRINT_NOTHING;
4536     }
4537
4538   /* We reached the end of the chain, or we got a null BS to start
4539      with and nothing was printed.  */
4540   return PRINT_UNKNOWN;
4541 }
4542
4543 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4544    used inside a catch_errors to evaluate the breakpoint condition.
4545    The argument is a "struct expression *" that has been cast to a
4546    "char *" to make it pass through catch_errors.  */
4547
4548 static int
4549 breakpoint_cond_eval (void *exp)
4550 {
4551   struct value *mark = value_mark ();
4552   int i = !value_true (evaluate_expression ((struct expression *) exp));
4553
4554   value_free_to_mark (mark);
4555   return i;
4556 }
4557
4558 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4559
4560 static bpstat
4561 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4562 {
4563   bpstat bs;
4564
4565   bs = (bpstat) xmalloc (sizeof (*bs));
4566   bs->next = NULL;
4567   **bs_link_pointer = bs;
4568   *bs_link_pointer = &bs->next;
4569   bs->breakpoint_at = bl->owner;
4570   bs->bp_location_at = bl;
4571   incref_bp_location (bl);
4572   /* If the condition is false, etc., don't do the commands.  */
4573   bs->commands = NULL;
4574   bs->old_val = NULL;
4575   bs->print_it = print_it_normal;
4576   return bs;
4577 }
4578 \f
4579 /* The target has stopped with waitstatus WS.  Check if any hardware
4580    watchpoints have triggered, according to the target.  */
4581
4582 int
4583 watchpoints_triggered (struct target_waitstatus *ws)
4584 {
4585   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4586   CORE_ADDR addr;
4587   struct breakpoint *b;
4588
4589   if (!stopped_by_watchpoint)
4590     {
4591       /* We were not stopped by a watchpoint.  Mark all watchpoints
4592          as not triggered.  */
4593       ALL_BREAKPOINTS (b)
4594         if (is_hardware_watchpoint (b))
4595           {
4596             struct watchpoint *w = (struct watchpoint *) b;
4597
4598             w->watchpoint_triggered = watch_triggered_no;
4599           }
4600
4601       return 0;
4602     }
4603
4604   if (!target_stopped_data_address (&current_target, &addr))
4605     {
4606       /* We were stopped by a watchpoint, but we don't know where.
4607          Mark all watchpoints as unknown.  */
4608       ALL_BREAKPOINTS (b)
4609         if (is_hardware_watchpoint (b))
4610           {
4611             struct watchpoint *w = (struct watchpoint *) b;
4612
4613             w->watchpoint_triggered = watch_triggered_unknown;
4614           }
4615
4616       return stopped_by_watchpoint;
4617     }
4618
4619   /* The target could report the data address.  Mark watchpoints
4620      affected by this data address as triggered, and all others as not
4621      triggered.  */
4622
4623   ALL_BREAKPOINTS (b)
4624     if (is_hardware_watchpoint (b))
4625       {
4626         struct watchpoint *w = (struct watchpoint *) b;
4627         struct bp_location *loc;
4628
4629         w->watchpoint_triggered = watch_triggered_no;
4630         for (loc = b->loc; loc; loc = loc->next)
4631           {
4632             if (is_masked_watchpoint (b))
4633               {
4634                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4635                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4636
4637                 if (newaddr == start)
4638                   {
4639                     w->watchpoint_triggered = watch_triggered_yes;
4640                     break;
4641                   }
4642               }
4643             /* Exact match not required.  Within range is sufficient.  */
4644             else if (target_watchpoint_addr_within_range (&current_target,
4645                                                          addr, loc->address,
4646                                                          loc->length))
4647               {
4648                 w->watchpoint_triggered = watch_triggered_yes;
4649                 break;
4650               }
4651           }
4652       }
4653
4654   return 1;
4655 }
4656
4657 /* Possible return values for watchpoint_check (this can't be an enum
4658    because of check_errors).  */
4659 /* The watchpoint has been deleted.  */
4660 #define WP_DELETED 1
4661 /* The value has changed.  */
4662 #define WP_VALUE_CHANGED 2
4663 /* The value has not changed.  */
4664 #define WP_VALUE_NOT_CHANGED 3
4665 /* Ignore this watchpoint, no matter if the value changed or not.  */
4666 #define WP_IGNORE 4
4667
4668 #define BP_TEMPFLAG 1
4669 #define BP_HARDWAREFLAG 2
4670
4671 /* Evaluate watchpoint condition expression and check if its value
4672    changed.
4673
4674    P should be a pointer to struct bpstat, but is defined as a void *
4675    in order for this function to be usable with catch_errors.  */
4676
4677 static int
4678 watchpoint_check (void *p)
4679 {
4680   bpstat bs = (bpstat) p;
4681   struct watchpoint *b;
4682   struct frame_info *fr;
4683   int within_current_scope;
4684
4685   /* BS is built from an existing struct breakpoint.  */
4686   gdb_assert (bs->breakpoint_at != NULL);
4687   b = (struct watchpoint *) bs->breakpoint_at;
4688
4689   /* If this is a local watchpoint, we only want to check if the
4690      watchpoint frame is in scope if the current thread is the thread
4691      that was used to create the watchpoint.  */
4692   if (!watchpoint_in_thread_scope (b))
4693     return WP_IGNORE;
4694
4695   if (b->exp_valid_block == NULL)
4696     within_current_scope = 1;
4697   else
4698     {
4699       struct frame_info *frame = get_current_frame ();
4700       struct gdbarch *frame_arch = get_frame_arch (frame);
4701       CORE_ADDR frame_pc = get_frame_pc (frame);
4702
4703       /* in_function_epilogue_p() returns a non-zero value if we're
4704          still in the function but the stack frame has already been
4705          invalidated.  Since we can't rely on the values of local
4706          variables after the stack has been destroyed, we are treating
4707          the watchpoint in that state as `not changed' without further
4708          checking.  Don't mark watchpoints as changed if the current
4709          frame is in an epilogue - even if they are in some other
4710          frame, our view of the stack is likely to be wrong and
4711          frame_find_by_id could error out.  */
4712       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4713         return WP_IGNORE;
4714
4715       fr = frame_find_by_id (b->watchpoint_frame);
4716       within_current_scope = (fr != NULL);
4717
4718       /* If we've gotten confused in the unwinder, we might have
4719          returned a frame that can't describe this variable.  */
4720       if (within_current_scope)
4721         {
4722           struct symbol *function;
4723
4724           function = get_frame_function (fr);
4725           if (function == NULL
4726               || !contained_in (b->exp_valid_block,
4727                                 SYMBOL_BLOCK_VALUE (function)))
4728             within_current_scope = 0;
4729         }
4730
4731       if (within_current_scope)
4732         /* If we end up stopping, the current frame will get selected
4733            in normal_stop.  So this call to select_frame won't affect
4734            the user.  */
4735         select_frame (fr);
4736     }
4737
4738   if (within_current_scope)
4739     {
4740       /* We use value_{,free_to_}mark because it could be a *long*
4741          time before we return to the command level and call
4742          free_all_values.  We can't call free_all_values because we
4743          might be in the middle of evaluating a function call.  */
4744
4745       int pc = 0;
4746       struct value *mark;
4747       struct value *new_val;
4748
4749       if (is_masked_watchpoint (&b->base))
4750         /* Since we don't know the exact trigger address (from
4751            stopped_data_address), just tell the user we've triggered
4752            a mask watchpoint.  */
4753         return WP_VALUE_CHANGED;
4754
4755       mark = value_mark ();
4756       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4757
4758       /* We use value_equal_contents instead of value_equal because
4759          the latter coerces an array to a pointer, thus comparing just
4760          the address of the array instead of its contents.  This is
4761          not what we want.  */
4762       if ((b->val != NULL) != (new_val != NULL)
4763           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4764         {
4765           if (new_val != NULL)
4766             {
4767               release_value (new_val);
4768               value_free_to_mark (mark);
4769             }
4770           bs->old_val = b->val;
4771           b->val = new_val;
4772           b->val_valid = 1;
4773           return WP_VALUE_CHANGED;
4774         }
4775       else
4776         {
4777           /* Nothing changed.  */
4778           value_free_to_mark (mark);
4779           return WP_VALUE_NOT_CHANGED;
4780         }
4781     }
4782   else
4783     {
4784       struct ui_out *uiout = current_uiout;
4785
4786       /* This seems like the only logical thing to do because
4787          if we temporarily ignored the watchpoint, then when
4788          we reenter the block in which it is valid it contains
4789          garbage (in the case of a function, it may have two
4790          garbage values, one before and one after the prologue).
4791          So we can't even detect the first assignment to it and
4792          watch after that (since the garbage may or may not equal
4793          the first value assigned).  */
4794       /* We print all the stop information in
4795          breakpoint_ops->print_it, but in this case, by the time we
4796          call breakpoint_ops->print_it this bp will be deleted
4797          already.  So we have no choice but print the information
4798          here.  */
4799       if (ui_out_is_mi_like_p (uiout))
4800         ui_out_field_string
4801           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4802       ui_out_text (uiout, "\nWatchpoint ");
4803       ui_out_field_int (uiout, "wpnum", b->base.number);
4804       ui_out_text (uiout,
4805                    " deleted because the program has left the block in\n\
4806 which its expression is valid.\n");     
4807
4808       /* Make sure the watchpoint's commands aren't executed.  */
4809       decref_counted_command_line (&b->base.commands);
4810       watchpoint_del_at_next_stop (b);
4811
4812       return WP_DELETED;
4813     }
4814 }
4815
4816 /* Return true if it looks like target has stopped due to hitting
4817    breakpoint location BL.  This function does not check if we should
4818    stop, only if BL explains the stop.  */
4819
4820 static int
4821 bpstat_check_location (const struct bp_location *bl,
4822                        struct address_space *aspace, CORE_ADDR bp_addr,
4823                        const struct target_waitstatus *ws)
4824 {
4825   struct breakpoint *b = bl->owner;
4826
4827   /* BL is from an existing breakpoint.  */
4828   gdb_assert (b != NULL);
4829
4830   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4831 }
4832
4833 /* Determine if the watched values have actually changed, and we
4834    should stop.  If not, set BS->stop to 0.  */
4835
4836 static void
4837 bpstat_check_watchpoint (bpstat bs)
4838 {
4839   const struct bp_location *bl;
4840   struct watchpoint *b;
4841
4842   /* BS is built for existing struct breakpoint.  */
4843   bl = bs->bp_location_at;
4844   gdb_assert (bl != NULL);
4845   b = (struct watchpoint *) bs->breakpoint_at;
4846   gdb_assert (b != NULL);
4847
4848     {
4849       int must_check_value = 0;
4850       
4851       if (b->base.type == bp_watchpoint)
4852         /* For a software watchpoint, we must always check the
4853            watched value.  */
4854         must_check_value = 1;
4855       else if (b->watchpoint_triggered == watch_triggered_yes)
4856         /* We have a hardware watchpoint (read, write, or access)
4857            and the target earlier reported an address watched by
4858            this watchpoint.  */
4859         must_check_value = 1;
4860       else if (b->watchpoint_triggered == watch_triggered_unknown
4861                && b->base.type == bp_hardware_watchpoint)
4862         /* We were stopped by a hardware watchpoint, but the target could
4863            not report the data address.  We must check the watchpoint's
4864            value.  Access and read watchpoints are out of luck; without
4865            a data address, we can't figure it out.  */
4866         must_check_value = 1;
4867
4868       if (must_check_value)
4869         {
4870           char *message
4871             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4872                           b->base.number);
4873           struct cleanup *cleanups = make_cleanup (xfree, message);
4874           int e = catch_errors (watchpoint_check, bs, message,
4875                                 RETURN_MASK_ALL);
4876           do_cleanups (cleanups);
4877           switch (e)
4878             {
4879             case WP_DELETED:
4880               /* We've already printed what needs to be printed.  */
4881               bs->print_it = print_it_done;
4882               /* Stop.  */
4883               break;
4884             case WP_IGNORE:
4885               bs->print_it = print_it_noop;
4886               bs->stop = 0;
4887               break;
4888             case WP_VALUE_CHANGED:
4889               if (b->base.type == bp_read_watchpoint)
4890                 {
4891                   /* There are two cases to consider here:
4892
4893                      1. We're watching the triggered memory for reads.
4894                      In that case, trust the target, and always report
4895                      the watchpoint hit to the user.  Even though
4896                      reads don't cause value changes, the value may
4897                      have changed since the last time it was read, and
4898                      since we're not trapping writes, we will not see
4899                      those, and as such we should ignore our notion of
4900                      old value.
4901
4902                      2. We're watching the triggered memory for both
4903                      reads and writes.  There are two ways this may
4904                      happen:
4905
4906                      2.1. This is a target that can't break on data
4907                      reads only, but can break on accesses (reads or
4908                      writes), such as e.g., x86.  We detect this case
4909                      at the time we try to insert read watchpoints.
4910
4911                      2.2. Otherwise, the target supports read
4912                      watchpoints, but, the user set an access or write
4913                      watchpoint watching the same memory as this read
4914                      watchpoint.
4915
4916                      If we're watching memory writes as well as reads,
4917                      ignore watchpoint hits when we find that the
4918                      value hasn't changed, as reads don't cause
4919                      changes.  This still gives false positives when
4920                      the program writes the same value to memory as
4921                      what there was already in memory (we will confuse
4922                      it for a read), but it's much better than
4923                      nothing.  */
4924
4925                   int other_write_watchpoint = 0;
4926
4927                   if (bl->watchpoint_type == hw_read)
4928                     {
4929                       struct breakpoint *other_b;
4930
4931                       ALL_BREAKPOINTS (other_b)
4932                         if (other_b->type == bp_hardware_watchpoint
4933                             || other_b->type == bp_access_watchpoint)
4934                           {
4935                             struct watchpoint *other_w =
4936                               (struct watchpoint *) other_b;
4937
4938                             if (other_w->watchpoint_triggered
4939                                 == watch_triggered_yes)
4940                               {
4941                                 other_write_watchpoint = 1;
4942                                 break;
4943                               }
4944                           }
4945                     }
4946
4947                   if (other_write_watchpoint
4948                       || bl->watchpoint_type == hw_access)
4949                     {
4950                       /* We're watching the same memory for writes,
4951                          and the value changed since the last time we
4952                          updated it, so this trap must be for a write.
4953                          Ignore it.  */
4954                       bs->print_it = print_it_noop;
4955                       bs->stop = 0;
4956                     }
4957                 }
4958               break;
4959             case WP_VALUE_NOT_CHANGED:
4960               if (b->base.type == bp_hardware_watchpoint
4961                   || b->base.type == bp_watchpoint)
4962                 {
4963                   /* Don't stop: write watchpoints shouldn't fire if
4964                      the value hasn't changed.  */
4965                   bs->print_it = print_it_noop;
4966                   bs->stop = 0;
4967                 }
4968               /* Stop.  */
4969               break;
4970             default:
4971               /* Can't happen.  */
4972             case 0:
4973               /* Error from catch_errors.  */
4974               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4975               watchpoint_del_at_next_stop (b);
4976               /* We've already printed what needs to be printed.  */
4977               bs->print_it = print_it_done;
4978               break;
4979             }
4980         }
4981       else      /* must_check_value == 0 */
4982         {
4983           /* This is a case where some watchpoint(s) triggered, but
4984              not at the address of this watchpoint, or else no
4985              watchpoint triggered after all.  So don't print
4986              anything for this watchpoint.  */
4987           bs->print_it = print_it_noop;
4988           bs->stop = 0;
4989         }
4990     }
4991 }
4992
4993
4994 /* Check conditions (condition proper, frame, thread and ignore count)
4995    of breakpoint referred to by BS.  If we should not stop for this
4996    breakpoint, set BS->stop to 0.  */
4997
4998 static void
4999 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5000 {
5001   int thread_id = pid_to_thread_id (ptid);
5002   const struct bp_location *bl;
5003   struct breakpoint *b;
5004
5005   /* BS is built for existing struct breakpoint.  */
5006   bl = bs->bp_location_at;
5007   gdb_assert (bl != NULL);
5008   b = bs->breakpoint_at;
5009   gdb_assert (b != NULL);
5010
5011   /* Even if the target evaluated the condition on its end and notified GDB, we
5012      need to do so again since GDB does not know if we stopped due to a
5013      breakpoint or a single step breakpoint.  */
5014
5015   if (frame_id_p (b->frame_id)
5016       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5017     bs->stop = 0;
5018   else if (bs->stop)
5019     {
5020       int value_is_zero = 0;
5021       struct expression *cond;
5022
5023       /* Evaluate Python breakpoints that have a "stop"
5024          method implemented.  */
5025       if (b->py_bp_object)
5026         bs->stop = gdbpy_should_stop (b->py_bp_object);
5027
5028       if (is_watchpoint (b))
5029         {
5030           struct watchpoint *w = (struct watchpoint *) b;
5031
5032           cond = w->cond_exp;
5033         }
5034       else
5035         cond = bl->cond;
5036
5037       if (cond && b->disposition != disp_del_at_next_stop)
5038         {
5039           int within_current_scope = 1;
5040           struct watchpoint * w;
5041
5042           /* We use value_mark and value_free_to_mark because it could
5043              be a long time before we return to the command level and
5044              call free_all_values.  We can't call free_all_values
5045              because we might be in the middle of evaluating a
5046              function call.  */
5047           struct value *mark = value_mark ();
5048
5049           if (is_watchpoint (b))
5050             w = (struct watchpoint *) b;
5051           else
5052             w = NULL;
5053
5054           /* Need to select the frame, with all that implies so that
5055              the conditions will have the right context.  Because we
5056              use the frame, we will not see an inlined function's
5057              variables when we arrive at a breakpoint at the start
5058              of the inlined function; the current frame will be the
5059              call site.  */
5060           if (w == NULL || w->cond_exp_valid_block == NULL)
5061             select_frame (get_current_frame ());
5062           else
5063             {
5064               struct frame_info *frame;
5065
5066               /* For local watchpoint expressions, which particular
5067                  instance of a local is being watched matters, so we
5068                  keep track of the frame to evaluate the expression
5069                  in.  To evaluate the condition however, it doesn't
5070                  really matter which instantiation of the function
5071                  where the condition makes sense triggers the
5072                  watchpoint.  This allows an expression like "watch
5073                  global if q > 10" set in `func', catch writes to
5074                  global on all threads that call `func', or catch
5075                  writes on all recursive calls of `func' by a single
5076                  thread.  We simply always evaluate the condition in
5077                  the innermost frame that's executing where it makes
5078                  sense to evaluate the condition.  It seems
5079                  intuitive.  */
5080               frame = block_innermost_frame (w->cond_exp_valid_block);
5081               if (frame != NULL)
5082                 select_frame (frame);
5083               else
5084                 within_current_scope = 0;
5085             }
5086           if (within_current_scope)
5087             value_is_zero
5088               = catch_errors (breakpoint_cond_eval, cond,
5089                               "Error in testing breakpoint condition:\n",
5090                               RETURN_MASK_ALL);
5091           else
5092             {
5093               warning (_("Watchpoint condition cannot be tested "
5094                          "in the current scope"));
5095               /* If we failed to set the right context for this
5096                  watchpoint, unconditionally report it.  */
5097               value_is_zero = 0;
5098             }
5099           /* FIXME-someday, should give breakpoint #.  */
5100           value_free_to_mark (mark);
5101         }
5102
5103       if (cond && value_is_zero)
5104         {
5105           bs->stop = 0;
5106         }
5107       else if (b->thread != -1 && b->thread != thread_id)
5108         {
5109           bs->stop = 0;
5110         }
5111       else if (b->ignore_count > 0)
5112         {
5113           b->ignore_count--;
5114           annotate_ignore_count_change ();
5115           bs->stop = 0;
5116           /* Increase the hit count even though we don't stop.  */
5117           ++(b->hit_count);
5118           observer_notify_breakpoint_modified (b);
5119         }       
5120     }
5121 }
5122
5123
5124 /* Get a bpstat associated with having just stopped at address
5125    BP_ADDR in thread PTID.
5126
5127    Determine whether we stopped at a breakpoint, etc, or whether we
5128    don't understand this stop.  Result is a chain of bpstat's such
5129    that:
5130
5131    if we don't understand the stop, the result is a null pointer.
5132
5133    if we understand why we stopped, the result is not null.
5134
5135    Each element of the chain refers to a particular breakpoint or
5136    watchpoint at which we have stopped.  (We may have stopped for
5137    several reasons concurrently.)
5138
5139    Each element of the chain has valid next, breakpoint_at,
5140    commands, FIXME??? fields.  */
5141
5142 bpstat
5143 bpstat_stop_status (struct address_space *aspace,
5144                     CORE_ADDR bp_addr, ptid_t ptid,
5145                     const struct target_waitstatus *ws)
5146 {
5147   struct breakpoint *b = NULL;
5148   struct bp_location *bl;
5149   struct bp_location *loc;
5150   /* First item of allocated bpstat's.  */
5151   bpstat bs_head = NULL, *bs_link = &bs_head;
5152   /* Pointer to the last thing in the chain currently.  */
5153   bpstat bs;
5154   int ix;
5155   int need_remove_insert;
5156   int removed_any;
5157
5158   /* First, build the bpstat chain with locations that explain a
5159      target stop, while being careful to not set the target running,
5160      as that may invalidate locations (in particular watchpoint
5161      locations are recreated).  Resuming will happen here with
5162      breakpoint conditions or watchpoint expressions that include
5163      inferior function calls.  */
5164
5165   ALL_BREAKPOINTS (b)
5166     {
5167       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5168         continue;
5169
5170       for (bl = b->loc; bl != NULL; bl = bl->next)
5171         {
5172           /* For hardware watchpoints, we look only at the first
5173              location.  The watchpoint_check function will work on the
5174              entire expression, not the individual locations.  For
5175              read watchpoints, the watchpoints_triggered function has
5176              checked all locations already.  */
5177           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5178             break;
5179
5180           if (!bl->enabled || bl->shlib_disabled)
5181             continue;
5182
5183           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5184             continue;
5185
5186           /* Come here if it's a watchpoint, or if the break address
5187              matches.  */
5188
5189           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5190                                                    explain stop.  */
5191
5192           /* Assume we stop.  Should we find a watchpoint that is not
5193              actually triggered, or if the condition of the breakpoint
5194              evaluates as false, we'll reset 'stop' to 0.  */
5195           bs->stop = 1;
5196           bs->print = 1;
5197
5198           /* If this is a scope breakpoint, mark the associated
5199              watchpoint as triggered so that we will handle the
5200              out-of-scope event.  We'll get to the watchpoint next
5201              iteration.  */
5202           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5203             {
5204               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5205
5206               w->watchpoint_triggered = watch_triggered_yes;
5207             }
5208         }
5209     }
5210
5211   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5212     {
5213       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5214         {
5215           bs = bpstat_alloc (loc, &bs_link);
5216           /* For hits of moribund locations, we should just proceed.  */
5217           bs->stop = 0;
5218           bs->print = 0;
5219           bs->print_it = print_it_noop;
5220         }
5221     }
5222
5223   /* A bit of special processing for shlib breakpoints.  We need to
5224      process solib loading here, so that the lists of loaded and
5225      unloaded libraries are correct before we handle "catch load" and
5226      "catch unload".  */
5227   for (bs = bs_head; bs != NULL; bs = bs->next)
5228     {
5229       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5230         {
5231           handle_solib_event ();
5232           break;
5233         }
5234     }
5235
5236   /* Now go through the locations that caused the target to stop, and
5237      check whether we're interested in reporting this stop to higher
5238      layers, or whether we should resume the target transparently.  */
5239
5240   removed_any = 0;
5241
5242   for (bs = bs_head; bs != NULL; bs = bs->next)
5243     {
5244       if (!bs->stop)
5245         continue;
5246
5247       b = bs->breakpoint_at;
5248       b->ops->check_status (bs);
5249       if (bs->stop)
5250         {
5251           bpstat_check_breakpoint_conditions (bs, ptid);
5252
5253           if (bs->stop)
5254             {
5255               ++(b->hit_count);
5256               observer_notify_breakpoint_modified (b);
5257
5258               /* We will stop here.  */
5259               if (b->disposition == disp_disable)
5260                 {
5261                   --(b->enable_count);
5262                   if (b->enable_count <= 0
5263                       && b->enable_state != bp_permanent)
5264                     b->enable_state = bp_disabled;
5265                   removed_any = 1;
5266                 }
5267               if (b->silent)
5268                 bs->print = 0;
5269               bs->commands = b->commands;
5270               incref_counted_command_line (bs->commands);
5271               if (command_line_is_silent (bs->commands
5272                                           ? bs->commands->commands : NULL))
5273                 bs->print = 0;
5274             }
5275
5276         }
5277
5278       /* Print nothing for this entry if we don't stop or don't
5279          print.  */
5280       if (!bs->stop || !bs->print)
5281         bs->print_it = print_it_noop;
5282     }
5283
5284   /* If we aren't stopping, the value of some hardware watchpoint may
5285      not have changed, but the intermediate memory locations we are
5286      watching may have.  Don't bother if we're stopping; this will get
5287      done later.  */
5288   need_remove_insert = 0;
5289   if (! bpstat_causes_stop (bs_head))
5290     for (bs = bs_head; bs != NULL; bs = bs->next)
5291       if (!bs->stop
5292           && bs->breakpoint_at
5293           && is_hardware_watchpoint (bs->breakpoint_at))
5294         {
5295           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5296
5297           update_watchpoint (w, 0 /* don't reparse.  */);
5298           need_remove_insert = 1;
5299         }
5300
5301   if (need_remove_insert)
5302     update_global_location_list (1);
5303   else if (removed_any)
5304     update_global_location_list (0);
5305
5306   return bs_head;
5307 }
5308
5309 static void
5310 handle_jit_event (void)
5311 {
5312   struct frame_info *frame;
5313   struct gdbarch *gdbarch;
5314
5315   /* Switch terminal for any messages produced by
5316      breakpoint_re_set.  */
5317   target_terminal_ours_for_output ();
5318
5319   frame = get_current_frame ();
5320   gdbarch = get_frame_arch (frame);
5321
5322   jit_event_handler (gdbarch);
5323
5324   target_terminal_inferior ();
5325 }
5326
5327 /* Handle an solib event by calling solib_add.  */
5328
5329 void
5330 handle_solib_event (void)
5331 {
5332   clear_program_space_solib_cache (current_inferior ()->pspace);
5333
5334   /* Check for any newly added shared libraries if we're supposed to
5335      be adding them automatically.  Switch terminal for any messages
5336      produced by breakpoint_re_set.  */
5337   target_terminal_ours_for_output ();
5338 #ifdef SOLIB_ADD
5339   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5340 #else
5341   solib_add (NULL, 0, &current_target, auto_solib_add);
5342 #endif
5343   target_terminal_inferior ();
5344 }
5345
5346 /* Prepare WHAT final decision for infrun.  */
5347
5348 /* Decide what infrun needs to do with this bpstat.  */
5349
5350 struct bpstat_what
5351 bpstat_what (bpstat bs_head)
5352 {
5353   struct bpstat_what retval;
5354   int jit_event = 0;
5355   bpstat bs;
5356
5357   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5358   retval.call_dummy = STOP_NONE;
5359   retval.is_longjmp = 0;
5360
5361   for (bs = bs_head; bs != NULL; bs = bs->next)
5362     {
5363       /* Extract this BS's action.  After processing each BS, we check
5364          if its action overrides all we've seem so far.  */
5365       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5366       enum bptype bptype;
5367
5368       if (bs->breakpoint_at == NULL)
5369         {
5370           /* I suspect this can happen if it was a momentary
5371              breakpoint which has since been deleted.  */
5372           bptype = bp_none;
5373         }
5374       else
5375         bptype = bs->breakpoint_at->type;
5376
5377       switch (bptype)
5378         {
5379         case bp_none:
5380           break;
5381         case bp_breakpoint:
5382         case bp_hardware_breakpoint:
5383         case bp_until:
5384         case bp_finish:
5385         case bp_shlib_event:
5386           if (bs->stop)
5387             {
5388               if (bs->print)
5389                 this_action = BPSTAT_WHAT_STOP_NOISY;
5390               else
5391                 this_action = BPSTAT_WHAT_STOP_SILENT;
5392             }
5393           else
5394             this_action = BPSTAT_WHAT_SINGLE;
5395           break;
5396         case bp_watchpoint:
5397         case bp_hardware_watchpoint:
5398         case bp_read_watchpoint:
5399         case bp_access_watchpoint:
5400           if (bs->stop)
5401             {
5402               if (bs->print)
5403                 this_action = BPSTAT_WHAT_STOP_NOISY;
5404               else
5405                 this_action = BPSTAT_WHAT_STOP_SILENT;
5406             }
5407           else
5408             {
5409               /* There was a watchpoint, but we're not stopping.
5410                  This requires no further action.  */
5411             }
5412           break;
5413         case bp_longjmp:
5414         case bp_longjmp_call_dummy:
5415         case bp_exception:
5416           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5417           retval.is_longjmp = bptype != bp_exception;
5418           break;
5419         case bp_longjmp_resume:
5420         case bp_exception_resume:
5421           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5422           retval.is_longjmp = bptype == bp_longjmp_resume;
5423           break;
5424         case bp_step_resume:
5425           if (bs->stop)
5426             this_action = BPSTAT_WHAT_STEP_RESUME;
5427           else
5428             {
5429               /* It is for the wrong frame.  */
5430               this_action = BPSTAT_WHAT_SINGLE;
5431             }
5432           break;
5433         case bp_hp_step_resume:
5434           if (bs->stop)
5435             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5436           else
5437             {
5438               /* It is for the wrong frame.  */
5439               this_action = BPSTAT_WHAT_SINGLE;
5440             }
5441           break;
5442         case bp_watchpoint_scope:
5443         case bp_thread_event:
5444         case bp_overlay_event:
5445         case bp_longjmp_master:
5446         case bp_std_terminate_master:
5447         case bp_exception_master:
5448           this_action = BPSTAT_WHAT_SINGLE;
5449           break;
5450         case bp_catchpoint:
5451           if (bs->stop)
5452             {
5453               if (bs->print)
5454                 this_action = BPSTAT_WHAT_STOP_NOISY;
5455               else
5456                 this_action = BPSTAT_WHAT_STOP_SILENT;
5457             }
5458           else
5459             {
5460               /* There was a catchpoint, but we're not stopping.
5461                  This requires no further action.  */
5462             }
5463           break;
5464         case bp_jit_event:
5465           jit_event = 1;
5466           this_action = BPSTAT_WHAT_SINGLE;
5467           break;
5468         case bp_call_dummy:
5469           /* Make sure the action is stop (silent or noisy),
5470              so infrun.c pops the dummy frame.  */
5471           retval.call_dummy = STOP_STACK_DUMMY;
5472           this_action = BPSTAT_WHAT_STOP_SILENT;
5473           break;
5474         case bp_std_terminate:
5475           /* Make sure the action is stop (silent or noisy),
5476              so infrun.c pops the dummy frame.  */
5477           retval.call_dummy = STOP_STD_TERMINATE;
5478           this_action = BPSTAT_WHAT_STOP_SILENT;
5479           break;
5480         case bp_tracepoint:
5481         case bp_fast_tracepoint:
5482         case bp_static_tracepoint:
5483           /* Tracepoint hits should not be reported back to GDB, and
5484              if one got through somehow, it should have been filtered
5485              out already.  */
5486           internal_error (__FILE__, __LINE__,
5487                           _("bpstat_what: tracepoint encountered"));
5488           break;
5489         case bp_gnu_ifunc_resolver:
5490           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5491           this_action = BPSTAT_WHAT_SINGLE;
5492           break;
5493         case bp_gnu_ifunc_resolver_return:
5494           /* The breakpoint will be removed, execution will restart from the
5495              PC of the former breakpoint.  */
5496           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5497           break;
5498
5499         case bp_dprintf:
5500           this_action = BPSTAT_WHAT_STOP_SILENT;
5501           break;
5502
5503         default:
5504           internal_error (__FILE__, __LINE__,
5505                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5506         }
5507
5508       retval.main_action = max (retval.main_action, this_action);
5509     }
5510
5511   /* These operations may affect the bs->breakpoint_at state so they are
5512      delayed after MAIN_ACTION is decided above.  */
5513
5514   if (jit_event)
5515     {
5516       if (debug_infrun)
5517         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5518
5519       handle_jit_event ();
5520     }
5521
5522   for (bs = bs_head; bs != NULL; bs = bs->next)
5523     {
5524       struct breakpoint *b = bs->breakpoint_at;
5525
5526       if (b == NULL)
5527         continue;
5528       switch (b->type)
5529         {
5530         case bp_gnu_ifunc_resolver:
5531           gnu_ifunc_resolver_stop (b);
5532           break;
5533         case bp_gnu_ifunc_resolver_return:
5534           gnu_ifunc_resolver_return_stop (b);
5535           break;
5536         }
5537     }
5538
5539   return retval;
5540 }
5541
5542 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5543    without hardware support).  This isn't related to a specific bpstat,
5544    just to things like whether watchpoints are set.  */
5545
5546 int
5547 bpstat_should_step (void)
5548 {
5549   struct breakpoint *b;
5550
5551   ALL_BREAKPOINTS (b)
5552     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5553       return 1;
5554   return 0;
5555 }
5556
5557 int
5558 bpstat_causes_stop (bpstat bs)
5559 {
5560   for (; bs != NULL; bs = bs->next)
5561     if (bs->stop)
5562       return 1;
5563
5564   return 0;
5565 }
5566
5567 \f
5568
5569 /* Compute a string of spaces suitable to indent the next line
5570    so it starts at the position corresponding to the table column
5571    named COL_NAME in the currently active table of UIOUT.  */
5572
5573 static char *
5574 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5575 {
5576   static char wrap_indent[80];
5577   int i, total_width, width, align;
5578   char *text;
5579
5580   total_width = 0;
5581   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5582     {
5583       if (strcmp (text, col_name) == 0)
5584         {
5585           gdb_assert (total_width < sizeof wrap_indent);
5586           memset (wrap_indent, ' ', total_width);
5587           wrap_indent[total_width] = 0;
5588
5589           return wrap_indent;
5590         }
5591
5592       total_width += width + 1;
5593     }
5594
5595   return NULL;
5596 }
5597
5598 /* Determine if the locations of this breakpoint will have their conditions
5599    evaluated by the target, host or a mix of both.  Returns the following:
5600
5601     "host": Host evals condition.
5602     "host or target": Host or Target evals condition.
5603     "target": Target evals condition.
5604 */
5605
5606 static const char *
5607 bp_condition_evaluator (struct breakpoint *b)
5608 {
5609   struct bp_location *bl;
5610   char host_evals = 0;
5611   char target_evals = 0;
5612
5613   if (!b)
5614     return NULL;
5615
5616   if (!is_breakpoint (b))
5617     return NULL;
5618
5619   if (gdb_evaluates_breakpoint_condition_p ()
5620       || !target_supports_evaluation_of_breakpoint_conditions ())
5621     return condition_evaluation_host;
5622
5623   for (bl = b->loc; bl; bl = bl->next)
5624     {
5625       if (bl->cond_bytecode)
5626         target_evals++;
5627       else
5628         host_evals++;
5629     }
5630
5631   if (host_evals && target_evals)
5632     return condition_evaluation_both;
5633   else if (target_evals)
5634     return condition_evaluation_target;
5635   else
5636     return condition_evaluation_host;
5637 }
5638
5639 /* Determine the breakpoint location's condition evaluator.  This is
5640    similar to bp_condition_evaluator, but for locations.  */
5641
5642 static const char *
5643 bp_location_condition_evaluator (struct bp_location *bl)
5644 {
5645   if (bl && !is_breakpoint (bl->owner))
5646     return NULL;
5647
5648   if (gdb_evaluates_breakpoint_condition_p ()
5649       || !target_supports_evaluation_of_breakpoint_conditions ())
5650     return condition_evaluation_host;
5651
5652   if (bl && bl->cond_bytecode)
5653     return condition_evaluation_target;
5654   else
5655     return condition_evaluation_host;
5656 }
5657
5658 /* Print the LOC location out of the list of B->LOC locations.  */
5659
5660 static void
5661 print_breakpoint_location (struct breakpoint *b,
5662                            struct bp_location *loc)
5663 {
5664   struct ui_out *uiout = current_uiout;
5665   struct cleanup *old_chain = save_current_program_space ();
5666
5667   if (loc != NULL && loc->shlib_disabled)
5668     loc = NULL;
5669
5670   if (loc != NULL)
5671     set_current_program_space (loc->pspace);
5672
5673   if (b->display_canonical)
5674     ui_out_field_string (uiout, "what", b->addr_string);
5675   else if (loc && loc->source_file)
5676     {
5677       struct symbol *sym 
5678         = find_pc_sect_function (loc->address, loc->section);
5679       if (sym)
5680         {
5681           ui_out_text (uiout, "in ");
5682           ui_out_field_string (uiout, "func",
5683                                SYMBOL_PRINT_NAME (sym));
5684           ui_out_text (uiout, " ");
5685           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5686           ui_out_text (uiout, "at ");
5687         }
5688       ui_out_field_string (uiout, "file", loc->source_file);
5689       ui_out_text (uiout, ":");
5690       
5691       if (ui_out_is_mi_like_p (uiout))
5692         {
5693           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5694           const char *fullname = symtab_to_fullname (sal.symtab);
5695           
5696           if (fullname)
5697             ui_out_field_string (uiout, "fullname", fullname);
5698         }
5699       
5700       ui_out_field_int (uiout, "line", loc->line_number);
5701     }
5702   else if (loc)
5703     {
5704       struct ui_file *stb = mem_fileopen ();
5705       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5706
5707       print_address_symbolic (loc->gdbarch, loc->address, stb,
5708                               demangle, "");
5709       ui_out_field_stream (uiout, "at", stb);
5710
5711       do_cleanups (stb_chain);
5712     }
5713   else
5714     ui_out_field_string (uiout, "pending", b->addr_string);
5715
5716   if (loc && is_breakpoint (b)
5717       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5718       && bp_condition_evaluator (b) == condition_evaluation_both)
5719     {
5720       ui_out_text (uiout, " (");
5721       ui_out_field_string (uiout, "evaluated-by",
5722                            bp_location_condition_evaluator (loc));
5723       ui_out_text (uiout, ")");
5724     }
5725
5726   do_cleanups (old_chain);
5727 }
5728
5729 static const char *
5730 bptype_string (enum bptype type)
5731 {
5732   struct ep_type_description
5733     {
5734       enum bptype type;
5735       char *description;
5736     };
5737   static struct ep_type_description bptypes[] =
5738   {
5739     {bp_none, "?deleted?"},
5740     {bp_breakpoint, "breakpoint"},
5741     {bp_hardware_breakpoint, "hw breakpoint"},
5742     {bp_until, "until"},
5743     {bp_finish, "finish"},
5744     {bp_watchpoint, "watchpoint"},
5745     {bp_hardware_watchpoint, "hw watchpoint"},
5746     {bp_read_watchpoint, "read watchpoint"},
5747     {bp_access_watchpoint, "acc watchpoint"},
5748     {bp_longjmp, "longjmp"},
5749     {bp_longjmp_resume, "longjmp resume"},
5750     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5751     {bp_exception, "exception"},
5752     {bp_exception_resume, "exception resume"},
5753     {bp_step_resume, "step resume"},
5754     {bp_hp_step_resume, "high-priority step resume"},
5755     {bp_watchpoint_scope, "watchpoint scope"},
5756     {bp_call_dummy, "call dummy"},
5757     {bp_std_terminate, "std::terminate"},
5758     {bp_shlib_event, "shlib events"},
5759     {bp_thread_event, "thread events"},
5760     {bp_overlay_event, "overlay events"},
5761     {bp_longjmp_master, "longjmp master"},
5762     {bp_std_terminate_master, "std::terminate master"},
5763     {bp_exception_master, "exception master"},
5764     {bp_catchpoint, "catchpoint"},
5765     {bp_tracepoint, "tracepoint"},
5766     {bp_fast_tracepoint, "fast tracepoint"},
5767     {bp_static_tracepoint, "static tracepoint"},
5768     {bp_dprintf, "dprintf"},
5769     {bp_jit_event, "jit events"},
5770     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5771     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5772   };
5773
5774   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5775       || ((int) type != bptypes[(int) type].type))
5776     internal_error (__FILE__, __LINE__,
5777                     _("bptypes table does not describe type #%d."),
5778                     (int) type);
5779
5780   return bptypes[(int) type].description;
5781 }
5782
5783 /* Print B to gdb_stdout.  */
5784
5785 static void
5786 print_one_breakpoint_location (struct breakpoint *b,
5787                                struct bp_location *loc,
5788                                int loc_number,
5789                                struct bp_location **last_loc,
5790                                int allflag)
5791 {
5792   struct command_line *l;
5793   static char bpenables[] = "nynny";
5794
5795   struct ui_out *uiout = current_uiout;
5796   int header_of_multiple = 0;
5797   int part_of_multiple = (loc != NULL);
5798   struct value_print_options opts;
5799
5800   get_user_print_options (&opts);
5801
5802   gdb_assert (!loc || loc_number != 0);
5803   /* See comment in print_one_breakpoint concerning treatment of
5804      breakpoints with single disabled location.  */
5805   if (loc == NULL 
5806       && (b->loc != NULL 
5807           && (b->loc->next != NULL || !b->loc->enabled)))
5808     header_of_multiple = 1;
5809   if (loc == NULL)
5810     loc = b->loc;
5811
5812   annotate_record ();
5813
5814   /* 1 */
5815   annotate_field (0);
5816   if (part_of_multiple)
5817     {
5818       char *formatted;
5819       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5820       ui_out_field_string (uiout, "number", formatted);
5821       xfree (formatted);
5822     }
5823   else
5824     {
5825       ui_out_field_int (uiout, "number", b->number);
5826     }
5827
5828   /* 2 */
5829   annotate_field (1);
5830   if (part_of_multiple)
5831     ui_out_field_skip (uiout, "type");
5832   else
5833     ui_out_field_string (uiout, "type", bptype_string (b->type));
5834
5835   /* 3 */
5836   annotate_field (2);
5837   if (part_of_multiple)
5838     ui_out_field_skip (uiout, "disp");
5839   else
5840     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5841
5842
5843   /* 4 */
5844   annotate_field (3);
5845   if (part_of_multiple)
5846     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5847   else
5848     ui_out_field_fmt (uiout, "enabled", "%c", 
5849                       bpenables[(int) b->enable_state]);
5850   ui_out_spaces (uiout, 2);
5851
5852   
5853   /* 5 and 6 */
5854   if (b->ops != NULL && b->ops->print_one != NULL)
5855     {
5856       /* Although the print_one can possibly print all locations,
5857          calling it here is not likely to get any nice result.  So,
5858          make sure there's just one location.  */
5859       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5860       b->ops->print_one (b, last_loc);
5861     }
5862   else
5863     switch (b->type)
5864       {
5865       case bp_none:
5866         internal_error (__FILE__, __LINE__,
5867                         _("print_one_breakpoint: bp_none encountered\n"));
5868         break;
5869
5870       case bp_watchpoint:
5871       case bp_hardware_watchpoint:
5872       case bp_read_watchpoint:
5873       case bp_access_watchpoint:
5874         {
5875           struct watchpoint *w = (struct watchpoint *) b;
5876
5877           /* Field 4, the address, is omitted (which makes the columns
5878              not line up too nicely with the headers, but the effect
5879              is relatively readable).  */
5880           if (opts.addressprint)
5881             ui_out_field_skip (uiout, "addr");
5882           annotate_field (5);
5883           ui_out_field_string (uiout, "what", w->exp_string);
5884         }
5885         break;
5886
5887       case bp_breakpoint:
5888       case bp_hardware_breakpoint:
5889       case bp_until:
5890       case bp_finish:
5891       case bp_longjmp:
5892       case bp_longjmp_resume:
5893       case bp_longjmp_call_dummy:
5894       case bp_exception:
5895       case bp_exception_resume:
5896       case bp_step_resume:
5897       case bp_hp_step_resume:
5898       case bp_watchpoint_scope:
5899       case bp_call_dummy:
5900       case bp_std_terminate:
5901       case bp_shlib_event:
5902       case bp_thread_event:
5903       case bp_overlay_event:
5904       case bp_longjmp_master:
5905       case bp_std_terminate_master:
5906       case bp_exception_master:
5907       case bp_tracepoint:
5908       case bp_fast_tracepoint:
5909       case bp_static_tracepoint:
5910       case bp_dprintf:
5911       case bp_jit_event:
5912       case bp_gnu_ifunc_resolver:
5913       case bp_gnu_ifunc_resolver_return:
5914         if (opts.addressprint)
5915           {
5916             annotate_field (4);
5917             if (header_of_multiple)
5918               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5919             else if (b->loc == NULL || loc->shlib_disabled)
5920               ui_out_field_string (uiout, "addr", "<PENDING>");
5921             else
5922               ui_out_field_core_addr (uiout, "addr",
5923                                       loc->gdbarch, loc->address);
5924           }
5925         annotate_field (5);
5926         if (!header_of_multiple)
5927           print_breakpoint_location (b, loc);
5928         if (b->loc)
5929           *last_loc = b->loc;
5930         break;
5931       }
5932
5933
5934   /* For backward compatibility, don't display inferiors unless there
5935      are several.  */
5936   if (loc != NULL
5937       && !header_of_multiple
5938       && (allflag
5939           || (!gdbarch_has_global_breakpoints (target_gdbarch ())
5940               && (number_of_program_spaces () > 1
5941                   || number_of_inferiors () > 1)
5942               /* LOC is for existing B, it cannot be in
5943                  moribund_locations and thus having NULL OWNER.  */
5944               && loc->owner->type != bp_catchpoint)))
5945     {
5946       struct inferior *inf;
5947       int first = 1;
5948
5949       for (inf = inferior_list; inf != NULL; inf = inf->next)
5950         {
5951           if (inf->pspace == loc->pspace)
5952             {
5953               if (first)
5954                 {
5955                   first = 0;
5956                   ui_out_text (uiout, " inf ");
5957                 }
5958               else
5959                 ui_out_text (uiout, ", ");
5960               ui_out_text (uiout, plongest (inf->num));
5961             }
5962         }
5963     }
5964
5965   if (!part_of_multiple)
5966     {
5967       if (b->thread != -1)
5968         {
5969           /* FIXME: This seems to be redundant and lost here; see the
5970              "stop only in" line a little further down.  */
5971           ui_out_text (uiout, " thread ");
5972           ui_out_field_int (uiout, "thread", b->thread);
5973         }
5974       else if (b->task != 0)
5975         {
5976           ui_out_text (uiout, " task ");
5977           ui_out_field_int (uiout, "task", b->task);
5978         }
5979     }
5980
5981   ui_out_text (uiout, "\n");
5982
5983   if (!part_of_multiple)
5984     b->ops->print_one_detail (b, uiout);
5985
5986   if (part_of_multiple && frame_id_p (b->frame_id))
5987     {
5988       annotate_field (6);
5989       ui_out_text (uiout, "\tstop only in stack frame at ");
5990       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5991          the frame ID.  */
5992       ui_out_field_core_addr (uiout, "frame",
5993                               b->gdbarch, b->frame_id.stack_addr);
5994       ui_out_text (uiout, "\n");
5995     }
5996   
5997   if (!part_of_multiple && b->cond_string)
5998     {
5999       annotate_field (7);
6000       if (is_tracepoint (b))
6001         ui_out_text (uiout, "\ttrace only if ");
6002       else
6003         ui_out_text (uiout, "\tstop only if ");
6004       ui_out_field_string (uiout, "cond", b->cond_string);
6005
6006       /* Print whether the target is doing the breakpoint's condition
6007          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6008       if (is_breakpoint (b)
6009           && breakpoint_condition_evaluation_mode ()
6010           == condition_evaluation_target)
6011         {
6012           ui_out_text (uiout, " (");
6013           ui_out_field_string (uiout, "evaluated-by",
6014                                bp_condition_evaluator (b));
6015           ui_out_text (uiout, " evals)");
6016         }
6017       ui_out_text (uiout, "\n");
6018     }
6019
6020   if (!part_of_multiple && b->thread != -1)
6021     {
6022       /* FIXME should make an annotation for this.  */
6023       ui_out_text (uiout, "\tstop only in thread ");
6024       ui_out_field_int (uiout, "thread", b->thread);
6025       ui_out_text (uiout, "\n");
6026     }
6027   
6028   if (!part_of_multiple && b->hit_count)
6029     {
6030       /* FIXME should make an annotation for this.  */
6031       if (is_catchpoint (b))
6032         ui_out_text (uiout, "\tcatchpoint");
6033       else if (is_tracepoint (b))
6034         ui_out_text (uiout, "\ttracepoint");
6035       else
6036         ui_out_text (uiout, "\tbreakpoint");
6037       ui_out_text (uiout, " already hit ");
6038       ui_out_field_int (uiout, "times", b->hit_count);
6039       if (b->hit_count == 1)
6040         ui_out_text (uiout, " time\n");
6041       else
6042         ui_out_text (uiout, " times\n");
6043     }
6044   
6045   /* Output the count also if it is zero, but only if this is mi.
6046      FIXME: Should have a better test for this.  */
6047   if (ui_out_is_mi_like_p (uiout))
6048     if (!part_of_multiple && b->hit_count == 0)
6049       ui_out_field_int (uiout, "times", b->hit_count);
6050
6051   if (!part_of_multiple && b->ignore_count)
6052     {
6053       annotate_field (8);
6054       ui_out_text (uiout, "\tignore next ");
6055       ui_out_field_int (uiout, "ignore", b->ignore_count);
6056       ui_out_text (uiout, " hits\n");
6057     }
6058
6059   /* Note that an enable count of 1 corresponds to "enable once"
6060      behavior, which is reported by the combination of enablement and
6061      disposition, so we don't need to mention it here.  */
6062   if (!part_of_multiple && b->enable_count > 1)
6063     {
6064       annotate_field (8);
6065       ui_out_text (uiout, "\tdisable after ");
6066       /* Tweak the wording to clarify that ignore and enable counts
6067          are distinct, and have additive effect.  */
6068       if (b->ignore_count)
6069         ui_out_text (uiout, "additional ");
6070       else
6071         ui_out_text (uiout, "next ");
6072       ui_out_field_int (uiout, "enable", b->enable_count);
6073       ui_out_text (uiout, " hits\n");
6074     }
6075
6076   if (!part_of_multiple && is_tracepoint (b))
6077     {
6078       struct tracepoint *tp = (struct tracepoint *) b;
6079
6080       if (tp->traceframe_usage)
6081         {
6082           ui_out_text (uiout, "\ttrace buffer usage ");
6083           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6084           ui_out_text (uiout, " bytes\n");
6085         }
6086     }
6087   
6088   if (!part_of_multiple && b->extra_string
6089       && b->type == bp_dprintf && !b->commands)
6090     {
6091       annotate_field (7);
6092       ui_out_text (uiout, "\t(agent printf) ");
6093       ui_out_field_string (uiout, "printf", b->extra_string);
6094       ui_out_text (uiout, "\n");
6095     }
6096
6097   l = b->commands ? b->commands->commands : NULL;
6098   if (!part_of_multiple && l)
6099     {
6100       struct cleanup *script_chain;
6101
6102       annotate_field (9);
6103       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6104       print_command_lines (uiout, l, 4);
6105       do_cleanups (script_chain);
6106     }
6107
6108   if (is_tracepoint (b))
6109     {
6110       struct tracepoint *t = (struct tracepoint *) b;
6111
6112       if (!part_of_multiple && t->pass_count)
6113         {
6114           annotate_field (10);
6115           ui_out_text (uiout, "\tpass count ");
6116           ui_out_field_int (uiout, "pass", t->pass_count);
6117           ui_out_text (uiout, " \n");
6118         }
6119     }
6120
6121   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6122     {
6123       if (is_watchpoint (b))
6124         {
6125           struct watchpoint *w = (struct watchpoint *) b;
6126
6127           ui_out_field_string (uiout, "original-location", w->exp_string);
6128         }
6129       else if (b->addr_string)
6130         ui_out_field_string (uiout, "original-location", b->addr_string);
6131     }
6132 }
6133
6134 static void
6135 print_one_breakpoint (struct breakpoint *b,
6136                       struct bp_location **last_loc, 
6137                       int allflag)
6138 {
6139   struct cleanup *bkpt_chain;
6140   struct ui_out *uiout = current_uiout;
6141
6142   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6143
6144   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6145   do_cleanups (bkpt_chain);
6146
6147   /* If this breakpoint has custom print function,
6148      it's already printed.  Otherwise, print individual
6149      locations, if any.  */
6150   if (b->ops == NULL || b->ops->print_one == NULL)
6151     {
6152       /* If breakpoint has a single location that is disabled, we
6153          print it as if it had several locations, since otherwise it's
6154          hard to represent "breakpoint enabled, location disabled"
6155          situation.
6156
6157          Note that while hardware watchpoints have several locations
6158          internally, that's not a property exposed to user.  */
6159       if (b->loc 
6160           && !is_hardware_watchpoint (b)
6161           && (b->loc->next || !b->loc->enabled))
6162         {
6163           struct bp_location *loc;
6164           int n = 1;
6165
6166           for (loc = b->loc; loc; loc = loc->next, ++n)
6167             {
6168               struct cleanup *inner2 =
6169                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6170               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6171               do_cleanups (inner2);
6172             }
6173         }
6174     }
6175 }
6176
6177 static int
6178 breakpoint_address_bits (struct breakpoint *b)
6179 {
6180   int print_address_bits = 0;
6181   struct bp_location *loc;
6182
6183   for (loc = b->loc; loc; loc = loc->next)
6184     {
6185       int addr_bit;
6186
6187       /* Software watchpoints that aren't watching memory don't have
6188          an address to print.  */
6189       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6190         continue;
6191
6192       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6193       if (addr_bit > print_address_bits)
6194         print_address_bits = addr_bit;
6195     }
6196
6197   return print_address_bits;
6198 }
6199
6200 struct captured_breakpoint_query_args
6201   {
6202     int bnum;
6203   };
6204
6205 static int
6206 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6207 {
6208   struct captured_breakpoint_query_args *args = data;
6209   struct breakpoint *b;
6210   struct bp_location *dummy_loc = NULL;
6211
6212   ALL_BREAKPOINTS (b)
6213     {
6214       if (args->bnum == b->number)
6215         {
6216           print_one_breakpoint (b, &dummy_loc, 0);
6217           return GDB_RC_OK;
6218         }
6219     }
6220   return GDB_RC_NONE;
6221 }
6222
6223 enum gdb_rc
6224 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6225                       char **error_message)
6226 {
6227   struct captured_breakpoint_query_args args;
6228
6229   args.bnum = bnum;
6230   /* For the moment we don't trust print_one_breakpoint() to not throw
6231      an error.  */
6232   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6233                                  error_message, RETURN_MASK_ALL) < 0)
6234     return GDB_RC_FAIL;
6235   else
6236     return GDB_RC_OK;
6237 }
6238
6239 /* Return true if this breakpoint was set by the user, false if it is
6240    internal or momentary.  */
6241
6242 int
6243 user_breakpoint_p (struct breakpoint *b)
6244 {
6245   return b->number > 0;
6246 }
6247
6248 /* Print information on user settable breakpoint (watchpoint, etc)
6249    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6250    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6251    FILTER is non-NULL, call it on each breakpoint and only include the
6252    ones for which it returns non-zero.  Return the total number of
6253    breakpoints listed.  */
6254
6255 static int
6256 breakpoint_1 (char *args, int allflag, 
6257               int (*filter) (const struct breakpoint *))
6258 {
6259   struct breakpoint *b;
6260   struct bp_location *last_loc = NULL;
6261   int nr_printable_breakpoints;
6262   struct cleanup *bkpttbl_chain;
6263   struct value_print_options opts;
6264   int print_address_bits = 0;
6265   int print_type_col_width = 14;
6266   struct ui_out *uiout = current_uiout;
6267
6268   get_user_print_options (&opts);
6269
6270   /* Compute the number of rows in the table, as well as the size
6271      required for address fields.  */
6272   nr_printable_breakpoints = 0;
6273   ALL_BREAKPOINTS (b)
6274     {
6275       /* If we have a filter, only list the breakpoints it accepts.  */
6276       if (filter && !filter (b))
6277         continue;
6278
6279       /* If we have an "args" string, it is a list of breakpoints to 
6280          accept.  Skip the others.  */
6281       if (args != NULL && *args != '\0')
6282         {
6283           if (allflag && parse_and_eval_long (args) != b->number)
6284             continue;
6285           if (!allflag && !number_is_in_list (args, b->number))
6286             continue;
6287         }
6288
6289       if (allflag || user_breakpoint_p (b))
6290         {
6291           int addr_bit, type_len;
6292
6293           addr_bit = breakpoint_address_bits (b);
6294           if (addr_bit > print_address_bits)
6295             print_address_bits = addr_bit;
6296
6297           type_len = strlen (bptype_string (b->type));
6298           if (type_len > print_type_col_width)
6299             print_type_col_width = type_len;
6300
6301           nr_printable_breakpoints++;
6302         }
6303     }
6304
6305   if (opts.addressprint)
6306     bkpttbl_chain 
6307       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6308                                              nr_printable_breakpoints,
6309                                              "BreakpointTable");
6310   else
6311     bkpttbl_chain 
6312       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6313                                              nr_printable_breakpoints,
6314                                              "BreakpointTable");
6315
6316   if (nr_printable_breakpoints > 0)
6317     annotate_breakpoints_headers ();
6318   if (nr_printable_breakpoints > 0)
6319     annotate_field (0);
6320   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6321   if (nr_printable_breakpoints > 0)
6322     annotate_field (1);
6323   ui_out_table_header (uiout, print_type_col_width, ui_left,
6324                        "type", "Type");                         /* 2 */
6325   if (nr_printable_breakpoints > 0)
6326     annotate_field (2);
6327   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6328   if (nr_printable_breakpoints > 0)
6329     annotate_field (3);
6330   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6331   if (opts.addressprint)
6332     {
6333       if (nr_printable_breakpoints > 0)
6334         annotate_field (4);
6335       if (print_address_bits <= 32)
6336         ui_out_table_header (uiout, 10, ui_left, 
6337                              "addr", "Address");                /* 5 */
6338       else
6339         ui_out_table_header (uiout, 18, ui_left, 
6340                              "addr", "Address");                /* 5 */
6341     }
6342   if (nr_printable_breakpoints > 0)
6343     annotate_field (5);
6344   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6345   ui_out_table_body (uiout);
6346   if (nr_printable_breakpoints > 0)
6347     annotate_breakpoints_table ();
6348
6349   ALL_BREAKPOINTS (b)
6350     {
6351       QUIT;
6352       /* If we have a filter, only list the breakpoints it accepts.  */
6353       if (filter && !filter (b))
6354         continue;
6355
6356       /* If we have an "args" string, it is a list of breakpoints to 
6357          accept.  Skip the others.  */
6358
6359       if (args != NULL && *args != '\0')
6360         {
6361           if (allflag)  /* maintenance info breakpoint */
6362             {
6363               if (parse_and_eval_long (args) != b->number)
6364                 continue;
6365             }
6366           else          /* all others */
6367             {
6368               if (!number_is_in_list (args, b->number))
6369                 continue;
6370             }
6371         }
6372       /* We only print out user settable breakpoints unless the
6373          allflag is set.  */
6374       if (allflag || user_breakpoint_p (b))
6375         print_one_breakpoint (b, &last_loc, allflag);
6376     }
6377
6378   do_cleanups (bkpttbl_chain);
6379
6380   if (nr_printable_breakpoints == 0)
6381     {
6382       /* If there's a filter, let the caller decide how to report
6383          empty list.  */
6384       if (!filter)
6385         {
6386           if (args == NULL || *args == '\0')
6387             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6388           else
6389             ui_out_message (uiout, 0, 
6390                             "No breakpoint or watchpoint matching '%s'.\n",
6391                             args);
6392         }
6393     }
6394   else
6395     {
6396       if (last_loc && !server_command)
6397         set_next_address (last_loc->gdbarch, last_loc->address);
6398     }
6399
6400   /* FIXME?  Should this be moved up so that it is only called when
6401      there have been breakpoints? */
6402   annotate_breakpoints_table_end ();
6403
6404   return nr_printable_breakpoints;
6405 }
6406
6407 /* Display the value of default-collect in a way that is generally
6408    compatible with the breakpoint list.  */
6409
6410 static void
6411 default_collect_info (void)
6412 {
6413   struct ui_out *uiout = current_uiout;
6414
6415   /* If it has no value (which is frequently the case), say nothing; a
6416      message like "No default-collect." gets in user's face when it's
6417      not wanted.  */
6418   if (!*default_collect)
6419     return;
6420
6421   /* The following phrase lines up nicely with per-tracepoint collect
6422      actions.  */
6423   ui_out_text (uiout, "default collect ");
6424   ui_out_field_string (uiout, "default-collect", default_collect);
6425   ui_out_text (uiout, " \n");
6426 }
6427   
6428 static void
6429 breakpoints_info (char *args, int from_tty)
6430 {
6431   breakpoint_1 (args, 0, NULL);
6432
6433   default_collect_info ();
6434 }
6435
6436 static void
6437 watchpoints_info (char *args, int from_tty)
6438 {
6439   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6440   struct ui_out *uiout = current_uiout;
6441
6442   if (num_printed == 0)
6443     {
6444       if (args == NULL || *args == '\0')
6445         ui_out_message (uiout, 0, "No watchpoints.\n");
6446       else
6447         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6448     }
6449 }
6450
6451 static void
6452 maintenance_info_breakpoints (char *args, int from_tty)
6453 {
6454   breakpoint_1 (args, 1, NULL);
6455
6456   default_collect_info ();
6457 }
6458
6459 static int
6460 breakpoint_has_pc (struct breakpoint *b,
6461                    struct program_space *pspace,
6462                    CORE_ADDR pc, struct obj_section *section)
6463 {
6464   struct bp_location *bl = b->loc;
6465
6466   for (; bl; bl = bl->next)
6467     {
6468       if (bl->pspace == pspace
6469           && bl->address == pc
6470           && (!overlay_debugging || bl->section == section))
6471         return 1;         
6472     }
6473   return 0;
6474 }
6475
6476 /* Print a message describing any user-breakpoints set at PC.  This
6477    concerns with logical breakpoints, so we match program spaces, not
6478    address spaces.  */
6479
6480 static void
6481 describe_other_breakpoints (struct gdbarch *gdbarch,
6482                             struct program_space *pspace, CORE_ADDR pc,
6483                             struct obj_section *section, int thread)
6484 {
6485   int others = 0;
6486   struct breakpoint *b;
6487
6488   ALL_BREAKPOINTS (b)
6489     others += (user_breakpoint_p (b)
6490                && breakpoint_has_pc (b, pspace, pc, section));
6491   if (others > 0)
6492     {
6493       if (others == 1)
6494         printf_filtered (_("Note: breakpoint "));
6495       else /* if (others == ???) */
6496         printf_filtered (_("Note: breakpoints "));
6497       ALL_BREAKPOINTS (b)
6498         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6499           {
6500             others--;
6501             printf_filtered ("%d", b->number);
6502             if (b->thread == -1 && thread != -1)
6503               printf_filtered (" (all threads)");
6504             else if (b->thread != -1)
6505               printf_filtered (" (thread %d)", b->thread);
6506             printf_filtered ("%s%s ",
6507                              ((b->enable_state == bp_disabled
6508                                || b->enable_state == bp_call_disabled)
6509                               ? " (disabled)"
6510                               : b->enable_state == bp_permanent 
6511                               ? " (permanent)"
6512                               : ""),
6513                              (others > 1) ? "," 
6514                              : ((others == 1) ? " and" : ""));
6515           }
6516       printf_filtered (_("also set at pc "));
6517       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6518       printf_filtered (".\n");
6519     }
6520 }
6521 \f
6522
6523 /* Return true iff it is meaningful to use the address member of
6524    BPT.  For some breakpoint types, the address member is irrelevant
6525    and it makes no sense to attempt to compare it to other addresses
6526    (or use it for any other purpose either).
6527
6528    More specifically, each of the following breakpoint types will
6529    always have a zero valued address and we don't want to mark
6530    breakpoints of any of these types to be a duplicate of an actual
6531    breakpoint at address zero:
6532
6533       bp_watchpoint
6534       bp_catchpoint
6535
6536 */
6537
6538 static int
6539 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6540 {
6541   enum bptype type = bpt->type;
6542
6543   return (type != bp_watchpoint && type != bp_catchpoint);
6544 }
6545
6546 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6547    true if LOC1 and LOC2 represent the same watchpoint location.  */
6548
6549 static int
6550 watchpoint_locations_match (struct bp_location *loc1, 
6551                             struct bp_location *loc2)
6552 {
6553   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6554   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6555
6556   /* Both of them must exist.  */
6557   gdb_assert (w1 != NULL);
6558   gdb_assert (w2 != NULL);
6559
6560   /* If the target can evaluate the condition expression in hardware,
6561      then we we need to insert both watchpoints even if they are at
6562      the same place.  Otherwise the watchpoint will only trigger when
6563      the condition of whichever watchpoint was inserted evaluates to
6564      true, not giving a chance for GDB to check the condition of the
6565      other watchpoint.  */
6566   if ((w1->cond_exp
6567        && target_can_accel_watchpoint_condition (loc1->address, 
6568                                                  loc1->length,
6569                                                  loc1->watchpoint_type,
6570                                                  w1->cond_exp))
6571       || (w2->cond_exp
6572           && target_can_accel_watchpoint_condition (loc2->address, 
6573                                                     loc2->length,
6574                                                     loc2->watchpoint_type,
6575                                                     w2->cond_exp)))
6576     return 0;
6577
6578   /* Note that this checks the owner's type, not the location's.  In
6579      case the target does not support read watchpoints, but does
6580      support access watchpoints, we'll have bp_read_watchpoint
6581      watchpoints with hw_access locations.  Those should be considered
6582      duplicates of hw_read locations.  The hw_read locations will
6583      become hw_access locations later.  */
6584   return (loc1->owner->type == loc2->owner->type
6585           && loc1->pspace->aspace == loc2->pspace->aspace
6586           && loc1->address == loc2->address
6587           && loc1->length == loc2->length);
6588 }
6589
6590 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6591    same breakpoint location.  In most targets, this can only be true
6592    if ASPACE1 matches ASPACE2.  On targets that have global
6593    breakpoints, the address space doesn't really matter.  */
6594
6595 static int
6596 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6597                           struct address_space *aspace2, CORE_ADDR addr2)
6598 {
6599   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6600            || aspace1 == aspace2)
6601           && addr1 == addr2);
6602 }
6603
6604 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6605    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6606    matches ASPACE2.  On targets that have global breakpoints, the address
6607    space doesn't really matter.  */
6608
6609 static int
6610 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6611                                 int len1, struct address_space *aspace2,
6612                                 CORE_ADDR addr2)
6613 {
6614   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6615            || aspace1 == aspace2)
6616           && addr2 >= addr1 && addr2 < addr1 + len1);
6617 }
6618
6619 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6620    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6621    matches the breakpoint's address space.  On targets that have global
6622    breakpoints, the address space doesn't really matter.  */
6623
6624 static int
6625 breakpoint_location_address_match (struct bp_location *bl,
6626                                    struct address_space *aspace,
6627                                    CORE_ADDR addr)
6628 {
6629   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6630                                     aspace, addr)
6631           || (bl->length
6632               && breakpoint_address_match_range (bl->pspace->aspace,
6633                                                  bl->address, bl->length,
6634                                                  aspace, addr)));
6635 }
6636
6637 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6638    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6639    true, otherwise returns false.  */
6640
6641 static int
6642 tracepoint_locations_match (struct bp_location *loc1,
6643                             struct bp_location *loc2)
6644 {
6645   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6646     /* Since tracepoint locations are never duplicated with others', tracepoint
6647        locations at the same address of different tracepoints are regarded as
6648        different locations.  */
6649     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6650   else
6651     return 0;
6652 }
6653
6654 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6655    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6656    represent the same location.  */
6657
6658 static int
6659 breakpoint_locations_match (struct bp_location *loc1, 
6660                             struct bp_location *loc2)
6661 {
6662   int hw_point1, hw_point2;
6663
6664   /* Both of them must not be in moribund_locations.  */
6665   gdb_assert (loc1->owner != NULL);
6666   gdb_assert (loc2->owner != NULL);
6667
6668   hw_point1 = is_hardware_watchpoint (loc1->owner);
6669   hw_point2 = is_hardware_watchpoint (loc2->owner);
6670
6671   if (hw_point1 != hw_point2)
6672     return 0;
6673   else if (hw_point1)
6674     return watchpoint_locations_match (loc1, loc2);
6675   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6676     return tracepoint_locations_match (loc1, loc2);
6677   else
6678     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6679     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6680                                      loc2->pspace->aspace, loc2->address)
6681             && loc1->length == loc2->length);
6682 }
6683
6684 static void
6685 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6686                                int bnum, int have_bnum)
6687 {
6688   /* The longest string possibly returned by hex_string_custom
6689      is 50 chars.  These must be at least that big for safety.  */
6690   char astr1[64];
6691   char astr2[64];
6692
6693   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6694   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6695   if (have_bnum)
6696     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6697              bnum, astr1, astr2);
6698   else
6699     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6700 }
6701
6702 /* Adjust a breakpoint's address to account for architectural
6703    constraints on breakpoint placement.  Return the adjusted address.
6704    Note: Very few targets require this kind of adjustment.  For most
6705    targets, this function is simply the identity function.  */
6706
6707 static CORE_ADDR
6708 adjust_breakpoint_address (struct gdbarch *gdbarch,
6709                            CORE_ADDR bpaddr, enum bptype bptype)
6710 {
6711   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6712     {
6713       /* Very few targets need any kind of breakpoint adjustment.  */
6714       return bpaddr;
6715     }
6716   else if (bptype == bp_watchpoint
6717            || bptype == bp_hardware_watchpoint
6718            || bptype == bp_read_watchpoint
6719            || bptype == bp_access_watchpoint
6720            || bptype == bp_catchpoint)
6721     {
6722       /* Watchpoints and the various bp_catch_* eventpoints should not
6723          have their addresses modified.  */
6724       return bpaddr;
6725     }
6726   else
6727     {
6728       CORE_ADDR adjusted_bpaddr;
6729
6730       /* Some targets have architectural constraints on the placement
6731          of breakpoint instructions.  Obtain the adjusted address.  */
6732       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6733
6734       /* An adjusted breakpoint address can significantly alter
6735          a user's expectations.  Print a warning if an adjustment
6736          is required.  */
6737       if (adjusted_bpaddr != bpaddr)
6738         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6739
6740       return adjusted_bpaddr;
6741     }
6742 }
6743
6744 void
6745 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6746                   struct breakpoint *owner)
6747 {
6748   memset (loc, 0, sizeof (*loc));
6749
6750   gdb_assert (ops != NULL);
6751
6752   loc->ops = ops;
6753   loc->owner = owner;
6754   loc->cond = NULL;
6755   loc->cond_bytecode = NULL;
6756   loc->shlib_disabled = 0;
6757   loc->enabled = 1;
6758
6759   switch (owner->type)
6760     {
6761     case bp_breakpoint:
6762     case bp_until:
6763     case bp_finish:
6764     case bp_longjmp:
6765     case bp_longjmp_resume:
6766     case bp_longjmp_call_dummy:
6767     case bp_exception:
6768     case bp_exception_resume:
6769     case bp_step_resume:
6770     case bp_hp_step_resume:
6771     case bp_watchpoint_scope:
6772     case bp_call_dummy:
6773     case bp_std_terminate:
6774     case bp_shlib_event:
6775     case bp_thread_event:
6776     case bp_overlay_event:
6777     case bp_jit_event:
6778     case bp_longjmp_master:
6779     case bp_std_terminate_master:
6780     case bp_exception_master:
6781     case bp_gnu_ifunc_resolver:
6782     case bp_gnu_ifunc_resolver_return:
6783     case bp_dprintf:
6784       loc->loc_type = bp_loc_software_breakpoint;
6785       mark_breakpoint_location_modified (loc);
6786       break;
6787     case bp_hardware_breakpoint:
6788       loc->loc_type = bp_loc_hardware_breakpoint;
6789       mark_breakpoint_location_modified (loc);
6790       break;
6791     case bp_hardware_watchpoint:
6792     case bp_read_watchpoint:
6793     case bp_access_watchpoint:
6794       loc->loc_type = bp_loc_hardware_watchpoint;
6795       break;
6796     case bp_watchpoint:
6797     case bp_catchpoint:
6798     case bp_tracepoint:
6799     case bp_fast_tracepoint:
6800     case bp_static_tracepoint:
6801       loc->loc_type = bp_loc_other;
6802       break;
6803     default:
6804       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6805     }
6806
6807   loc->refc = 1;
6808 }
6809
6810 /* Allocate a struct bp_location.  */
6811
6812 static struct bp_location *
6813 allocate_bp_location (struct breakpoint *bpt)
6814 {
6815   return bpt->ops->allocate_location (bpt);
6816 }
6817
6818 static void
6819 free_bp_location (struct bp_location *loc)
6820 {
6821   loc->ops->dtor (loc);
6822   xfree (loc);
6823 }
6824
6825 /* Increment reference count.  */
6826
6827 static void
6828 incref_bp_location (struct bp_location *bl)
6829 {
6830   ++bl->refc;
6831 }
6832
6833 /* Decrement reference count.  If the reference count reaches 0,
6834    destroy the bp_location.  Sets *BLP to NULL.  */
6835
6836 static void
6837 decref_bp_location (struct bp_location **blp)
6838 {
6839   gdb_assert ((*blp)->refc > 0);
6840
6841   if (--(*blp)->refc == 0)
6842     free_bp_location (*blp);
6843   *blp = NULL;
6844 }
6845
6846 /* Add breakpoint B at the end of the global breakpoint chain.  */
6847
6848 static void
6849 add_to_breakpoint_chain (struct breakpoint *b)
6850 {
6851   struct breakpoint *b1;
6852
6853   /* Add this breakpoint to the end of the chain so that a list of
6854      breakpoints will come out in order of increasing numbers.  */
6855
6856   b1 = breakpoint_chain;
6857   if (b1 == 0)
6858     breakpoint_chain = b;
6859   else
6860     {
6861       while (b1->next)
6862         b1 = b1->next;
6863       b1->next = b;
6864     }
6865 }
6866
6867 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6868
6869 static void
6870 init_raw_breakpoint_without_location (struct breakpoint *b,
6871                                       struct gdbarch *gdbarch,
6872                                       enum bptype bptype,
6873                                       const struct breakpoint_ops *ops)
6874 {
6875   memset (b, 0, sizeof (*b));
6876
6877   gdb_assert (ops != NULL);
6878
6879   b->ops = ops;
6880   b->type = bptype;
6881   b->gdbarch = gdbarch;
6882   b->language = current_language->la_language;
6883   b->input_radix = input_radix;
6884   b->thread = -1;
6885   b->enable_state = bp_enabled;
6886   b->next = 0;
6887   b->silent = 0;
6888   b->ignore_count = 0;
6889   b->commands = NULL;
6890   b->frame_id = null_frame_id;
6891   b->condition_not_parsed = 0;
6892   b->py_bp_object = NULL;
6893   b->related_breakpoint = b;
6894 }
6895
6896 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6897    that has type BPTYPE and has no locations as yet.  */
6898
6899 static struct breakpoint *
6900 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6901                                      enum bptype bptype,
6902                                      const struct breakpoint_ops *ops)
6903 {
6904   struct breakpoint *b = XNEW (struct breakpoint);
6905
6906   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6907   add_to_breakpoint_chain (b);
6908   return b;
6909 }
6910
6911 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6912    resolutions should be made as the user specified the location explicitly
6913    enough.  */
6914
6915 static void
6916 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6917 {
6918   gdb_assert (loc->owner != NULL);
6919
6920   if (loc->owner->type == bp_breakpoint
6921       || loc->owner->type == bp_hardware_breakpoint
6922       || is_tracepoint (loc->owner))
6923     {
6924       int is_gnu_ifunc;
6925       const char *function_name;
6926       CORE_ADDR func_addr;
6927
6928       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6929                                           &func_addr, NULL, &is_gnu_ifunc);
6930
6931       if (is_gnu_ifunc && !explicit_loc)
6932         {
6933           struct breakpoint *b = loc->owner;
6934
6935           gdb_assert (loc->pspace == current_program_space);
6936           if (gnu_ifunc_resolve_name (function_name,
6937                                       &loc->requested_address))
6938             {
6939               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6940               loc->address = adjust_breakpoint_address (loc->gdbarch,
6941                                                         loc->requested_address,
6942                                                         b->type);
6943             }
6944           else if (b->type == bp_breakpoint && b->loc == loc
6945                    && loc->next == NULL && b->related_breakpoint == b)
6946             {
6947               /* Create only the whole new breakpoint of this type but do not
6948                  mess more complicated breakpoints with multiple locations.  */
6949               b->type = bp_gnu_ifunc_resolver;
6950               /* Remember the resolver's address for use by the return
6951                  breakpoint.  */
6952               loc->related_address = func_addr;
6953             }
6954         }
6955
6956       if (function_name)
6957         loc->function_name = xstrdup (function_name);
6958     }
6959 }
6960
6961 /* Attempt to determine architecture of location identified by SAL.  */
6962 struct gdbarch *
6963 get_sal_arch (struct symtab_and_line sal)
6964 {
6965   if (sal.section)
6966     return get_objfile_arch (sal.section->objfile);
6967   if (sal.symtab)
6968     return get_objfile_arch (sal.symtab->objfile);
6969
6970   return NULL;
6971 }
6972
6973 /* Low level routine for partially initializing a breakpoint of type
6974    BPTYPE.  The newly created breakpoint's address, section, source
6975    file name, and line number are provided by SAL.
6976
6977    It is expected that the caller will complete the initialization of
6978    the newly created breakpoint struct as well as output any status
6979    information regarding the creation of a new breakpoint.  */
6980
6981 static void
6982 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
6983                      struct symtab_and_line sal, enum bptype bptype,
6984                      const struct breakpoint_ops *ops)
6985 {
6986   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6987
6988   add_location_to_breakpoint (b, &sal);
6989
6990   if (bptype != bp_catchpoint)
6991     gdb_assert (sal.pspace != NULL);
6992
6993   /* Store the program space that was used to set the breakpoint,
6994      except for ordinary breakpoints, which are independent of the
6995      program space.  */
6996   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
6997     b->pspace = sal.pspace;
6998
6999   annotate_breakpoints_changed ();
7000 }
7001
7002 /* set_raw_breakpoint is a low level routine for allocating and
7003    partially initializing a breakpoint of type BPTYPE.  The newly
7004    created breakpoint's address, section, source file name, and line
7005    number are provided by SAL.  The newly created and partially
7006    initialized breakpoint is added to the breakpoint chain and
7007    is also returned as the value of this function.
7008
7009    It is expected that the caller will complete the initialization of
7010    the newly created breakpoint struct as well as output any status
7011    information regarding the creation of a new breakpoint.  In
7012    particular, set_raw_breakpoint does NOT set the breakpoint
7013    number!  Care should be taken to not allow an error to occur
7014    prior to completing the initialization of the breakpoint.  If this
7015    should happen, a bogus breakpoint will be left on the chain.  */
7016
7017 struct breakpoint *
7018 set_raw_breakpoint (struct gdbarch *gdbarch,
7019                     struct symtab_and_line sal, enum bptype bptype,
7020                     const struct breakpoint_ops *ops)
7021 {
7022   struct breakpoint *b = XNEW (struct breakpoint);
7023
7024   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7025   add_to_breakpoint_chain (b);
7026   return b;
7027 }
7028
7029
7030 /* Note that the breakpoint object B describes a permanent breakpoint
7031    instruction, hard-wired into the inferior's code.  */
7032 void
7033 make_breakpoint_permanent (struct breakpoint *b)
7034 {
7035   struct bp_location *bl;
7036
7037   b->enable_state = bp_permanent;
7038
7039   /* By definition, permanent breakpoints are already present in the
7040      code.  Mark all locations as inserted.  For now,
7041      make_breakpoint_permanent is called in just one place, so it's
7042      hard to say if it's reasonable to have permanent breakpoint with
7043      multiple locations or not, but it's easy to implement.  */
7044   for (bl = b->loc; bl; bl = bl->next)
7045     bl->inserted = 1;
7046 }
7047
7048 /* Call this routine when stepping and nexting to enable a breakpoint
7049    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7050    initiated the operation.  */
7051
7052 void
7053 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7054 {
7055   struct breakpoint *b, *b_tmp;
7056   int thread = tp->num;
7057
7058   /* To avoid having to rescan all objfile symbols at every step,
7059      we maintain a list of continually-inserted but always disabled
7060      longjmp "master" breakpoints.  Here, we simply create momentary
7061      clones of those and enable them for the requested thread.  */
7062   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7063     if (b->pspace == current_program_space
7064         && (b->type == bp_longjmp_master
7065             || b->type == bp_exception_master))
7066       {
7067         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7068         struct breakpoint *clone;
7069
7070         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7071            after their removal.  */
7072         clone = momentary_breakpoint_from_master (b, type,
7073                                                   &longjmp_breakpoint_ops);
7074         clone->thread = thread;
7075       }
7076
7077   tp->initiating_frame = frame;
7078 }
7079
7080 /* Delete all longjmp breakpoints from THREAD.  */
7081 void
7082 delete_longjmp_breakpoint (int thread)
7083 {
7084   struct breakpoint *b, *b_tmp;
7085
7086   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7087     if (b->type == bp_longjmp || b->type == bp_exception)
7088       {
7089         if (b->thread == thread)
7090           delete_breakpoint (b);
7091       }
7092 }
7093
7094 void
7095 delete_longjmp_breakpoint_at_next_stop (int thread)
7096 {
7097   struct breakpoint *b, *b_tmp;
7098
7099   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7100     if (b->type == bp_longjmp || b->type == bp_exception)
7101       {
7102         if (b->thread == thread)
7103           b->disposition = disp_del_at_next_stop;
7104       }
7105 }
7106
7107 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7108    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7109    pointer to any of them.  Return NULL if this system cannot place longjmp
7110    breakpoints.  */
7111
7112 struct breakpoint *
7113 set_longjmp_breakpoint_for_call_dummy (void)
7114 {
7115   struct breakpoint *b, *retval = NULL;
7116
7117   ALL_BREAKPOINTS (b)
7118     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7119       {
7120         struct breakpoint *new_b;
7121
7122         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7123                                                   &momentary_breakpoint_ops);
7124         new_b->thread = pid_to_thread_id (inferior_ptid);
7125
7126         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7127
7128         gdb_assert (new_b->related_breakpoint == new_b);
7129         if (retval == NULL)
7130           retval = new_b;
7131         new_b->related_breakpoint = retval;
7132         while (retval->related_breakpoint != new_b->related_breakpoint)
7133           retval = retval->related_breakpoint;
7134         retval->related_breakpoint = new_b;
7135       }
7136
7137   return retval;
7138 }
7139
7140 /* Verify all existing dummy frames and their associated breakpoints for
7141    THREAD.  Remove those which can no longer be found in the current frame
7142    stack.
7143
7144    You should call this function only at places where it is safe to currently
7145    unwind the whole stack.  Failed stack unwind would discard live dummy
7146    frames.  */
7147
7148 void
7149 check_longjmp_breakpoint_for_call_dummy (int thread)
7150 {
7151   struct breakpoint *b, *b_tmp;
7152
7153   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7154     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7155       {
7156         struct breakpoint *dummy_b = b->related_breakpoint;
7157
7158         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7159           dummy_b = dummy_b->related_breakpoint;
7160         if (dummy_b->type != bp_call_dummy
7161             || frame_find_by_id (dummy_b->frame_id) != NULL)
7162           continue;
7163         
7164         dummy_frame_discard (dummy_b->frame_id);
7165
7166         while (b->related_breakpoint != b)
7167           {
7168             if (b_tmp == b->related_breakpoint)
7169               b_tmp = b->related_breakpoint->next;
7170             delete_breakpoint (b->related_breakpoint);
7171           }
7172         delete_breakpoint (b);
7173       }
7174 }
7175
7176 void
7177 enable_overlay_breakpoints (void)
7178 {
7179   struct breakpoint *b;
7180
7181   ALL_BREAKPOINTS (b)
7182     if (b->type == bp_overlay_event)
7183     {
7184       b->enable_state = bp_enabled;
7185       update_global_location_list (1);
7186       overlay_events_enabled = 1;
7187     }
7188 }
7189
7190 void
7191 disable_overlay_breakpoints (void)
7192 {
7193   struct breakpoint *b;
7194
7195   ALL_BREAKPOINTS (b)
7196     if (b->type == bp_overlay_event)
7197     {
7198       b->enable_state = bp_disabled;
7199       update_global_location_list (0);
7200       overlay_events_enabled = 0;
7201     }
7202 }
7203
7204 /* Set an active std::terminate breakpoint for each std::terminate
7205    master breakpoint.  */
7206 void
7207 set_std_terminate_breakpoint (void)
7208 {
7209   struct breakpoint *b, *b_tmp;
7210
7211   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7212     if (b->pspace == current_program_space
7213         && b->type == bp_std_terminate_master)
7214       {
7215         momentary_breakpoint_from_master (b, bp_std_terminate,
7216                                           &momentary_breakpoint_ops);
7217       }
7218 }
7219
7220 /* Delete all the std::terminate breakpoints.  */
7221 void
7222 delete_std_terminate_breakpoint (void)
7223 {
7224   struct breakpoint *b, *b_tmp;
7225
7226   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7227     if (b->type == bp_std_terminate)
7228       delete_breakpoint (b);
7229 }
7230
7231 struct breakpoint *
7232 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7233 {
7234   struct breakpoint *b;
7235
7236   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7237                                   &internal_breakpoint_ops);
7238
7239   b->enable_state = bp_enabled;
7240   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7241   b->addr_string
7242     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7243
7244   update_global_location_list_nothrow (1);
7245
7246   return b;
7247 }
7248
7249 void
7250 remove_thread_event_breakpoints (void)
7251 {
7252   struct breakpoint *b, *b_tmp;
7253
7254   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7255     if (b->type == bp_thread_event
7256         && b->loc->pspace == current_program_space)
7257       delete_breakpoint (b);
7258 }
7259
7260 struct lang_and_radix
7261   {
7262     enum language lang;
7263     int radix;
7264   };
7265
7266 /* Create a breakpoint for JIT code registration and unregistration.  */
7267
7268 struct breakpoint *
7269 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7270 {
7271   struct breakpoint *b;
7272
7273   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7274                                   &internal_breakpoint_ops);
7275   update_global_location_list_nothrow (1);
7276   return b;
7277 }
7278
7279 /* Remove JIT code registration and unregistration breakpoint(s).  */
7280
7281 void
7282 remove_jit_event_breakpoints (void)
7283 {
7284   struct breakpoint *b, *b_tmp;
7285
7286   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7287     if (b->type == bp_jit_event
7288         && b->loc->pspace == current_program_space)
7289       delete_breakpoint (b);
7290 }
7291
7292 void
7293 remove_solib_event_breakpoints (void)
7294 {
7295   struct breakpoint *b, *b_tmp;
7296
7297   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7298     if (b->type == bp_shlib_event
7299         && b->loc->pspace == current_program_space)
7300       delete_breakpoint (b);
7301 }
7302
7303 struct breakpoint *
7304 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7305 {
7306   struct breakpoint *b;
7307
7308   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7309                                   &internal_breakpoint_ops);
7310   update_global_location_list_nothrow (1);
7311   return b;
7312 }
7313
7314 /* Disable any breakpoints that are on code in shared libraries.  Only
7315    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7316
7317 void
7318 disable_breakpoints_in_shlibs (void)
7319 {
7320   struct bp_location *loc, **locp_tmp;
7321
7322   ALL_BP_LOCATIONS (loc, locp_tmp)
7323   {
7324     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7325     struct breakpoint *b = loc->owner;
7326
7327     /* We apply the check to all breakpoints, including disabled for
7328        those with loc->duplicate set.  This is so that when breakpoint
7329        becomes enabled, or the duplicate is removed, gdb will try to
7330        insert all breakpoints.  If we don't set shlib_disabled here,
7331        we'll try to insert those breakpoints and fail.  */
7332     if (((b->type == bp_breakpoint)
7333          || (b->type == bp_jit_event)
7334          || (b->type == bp_hardware_breakpoint)
7335          || (is_tracepoint (b)))
7336         && loc->pspace == current_program_space
7337         && !loc->shlib_disabled
7338 #ifdef PC_SOLIB
7339         && PC_SOLIB (loc->address)
7340 #else
7341         && solib_name_from_address (loc->pspace, loc->address)
7342 #endif
7343         )
7344       {
7345         loc->shlib_disabled = 1;
7346       }
7347   }
7348 }
7349
7350 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7351    library.  Only apply to enabled breakpoints, disabled ones can just stay
7352    disabled.  */
7353
7354 static void
7355 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7356 {
7357   struct bp_location *loc, **locp_tmp;
7358   int disabled_shlib_breaks = 0;
7359
7360   /* SunOS a.out shared libraries are always mapped, so do not
7361      disable breakpoints; they will only be reported as unloaded
7362      through clear_solib when GDB discards its shared library
7363      list.  See clear_solib for more information.  */
7364   if (exec_bfd != NULL
7365       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7366     return;
7367
7368   ALL_BP_LOCATIONS (loc, locp_tmp)
7369   {
7370     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7371     struct breakpoint *b = loc->owner;
7372
7373     if (solib->pspace == loc->pspace
7374         && !loc->shlib_disabled
7375         && (((b->type == bp_breakpoint
7376               || b->type == bp_jit_event
7377               || b->type == bp_hardware_breakpoint)
7378              && (loc->loc_type == bp_loc_hardware_breakpoint
7379                  || loc->loc_type == bp_loc_software_breakpoint))
7380             || is_tracepoint (b))
7381         && solib_contains_address_p (solib, loc->address))
7382       {
7383         loc->shlib_disabled = 1;
7384         /* At this point, we cannot rely on remove_breakpoint
7385            succeeding so we must mark the breakpoint as not inserted
7386            to prevent future errors occurring in remove_breakpoints.  */
7387         loc->inserted = 0;
7388
7389         /* This may cause duplicate notifications for the same breakpoint.  */
7390         observer_notify_breakpoint_modified (b);
7391
7392         if (!disabled_shlib_breaks)
7393           {
7394             target_terminal_ours_for_output ();
7395             warning (_("Temporarily disabling breakpoints "
7396                        "for unloaded shared library \"%s\""),
7397                      solib->so_name);
7398           }
7399         disabled_shlib_breaks = 1;
7400       }
7401   }
7402 }
7403
7404 /* FORK & VFORK catchpoints.  */
7405
7406 /* An instance of this type is used to represent a fork or vfork
7407    catchpoint.  It includes a "struct breakpoint" as a kind of base
7408    class; users downcast to "struct breakpoint *" when needed.  A
7409    breakpoint is really of this type iff its ops pointer points to
7410    CATCH_FORK_BREAKPOINT_OPS.  */
7411
7412 struct fork_catchpoint
7413 {
7414   /* The base class.  */
7415   struct breakpoint base;
7416
7417   /* Process id of a child process whose forking triggered this
7418      catchpoint.  This field is only valid immediately after this
7419      catchpoint has triggered.  */
7420   ptid_t forked_inferior_pid;
7421 };
7422
7423 /* Implement the "insert" breakpoint_ops method for fork
7424    catchpoints.  */
7425
7426 static int
7427 insert_catch_fork (struct bp_location *bl)
7428 {
7429   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7430 }
7431
7432 /* Implement the "remove" breakpoint_ops method for fork
7433    catchpoints.  */
7434
7435 static int
7436 remove_catch_fork (struct bp_location *bl)
7437 {
7438   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7439 }
7440
7441 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7442    catchpoints.  */
7443
7444 static int
7445 breakpoint_hit_catch_fork (const struct bp_location *bl,
7446                            struct address_space *aspace, CORE_ADDR bp_addr,
7447                            const struct target_waitstatus *ws)
7448 {
7449   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7450
7451   if (ws->kind != TARGET_WAITKIND_FORKED)
7452     return 0;
7453
7454   c->forked_inferior_pid = ws->value.related_pid;
7455   return 1;
7456 }
7457
7458 /* Implement the "print_it" breakpoint_ops method for fork
7459    catchpoints.  */
7460
7461 static enum print_stop_action
7462 print_it_catch_fork (bpstat bs)
7463 {
7464   struct ui_out *uiout = current_uiout;
7465   struct breakpoint *b = bs->breakpoint_at;
7466   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7467
7468   annotate_catchpoint (b->number);
7469   if (b->disposition == disp_del)
7470     ui_out_text (uiout, "\nTemporary catchpoint ");
7471   else
7472     ui_out_text (uiout, "\nCatchpoint ");
7473   if (ui_out_is_mi_like_p (uiout))
7474     {
7475       ui_out_field_string (uiout, "reason",
7476                            async_reason_lookup (EXEC_ASYNC_FORK));
7477       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7478     }
7479   ui_out_field_int (uiout, "bkptno", b->number);
7480   ui_out_text (uiout, " (forked process ");
7481   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7482   ui_out_text (uiout, "), ");
7483   return PRINT_SRC_AND_LOC;
7484 }
7485
7486 /* Implement the "print_one" breakpoint_ops method for fork
7487    catchpoints.  */
7488
7489 static void
7490 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7491 {
7492   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7493   struct value_print_options opts;
7494   struct ui_out *uiout = current_uiout;
7495
7496   get_user_print_options (&opts);
7497
7498   /* Field 4, the address, is omitted (which makes the columns not
7499      line up too nicely with the headers, but the effect is relatively
7500      readable).  */
7501   if (opts.addressprint)
7502     ui_out_field_skip (uiout, "addr");
7503   annotate_field (5);
7504   ui_out_text (uiout, "fork");
7505   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7506     {
7507       ui_out_text (uiout, ", process ");
7508       ui_out_field_int (uiout, "what",
7509                         ptid_get_pid (c->forked_inferior_pid));
7510       ui_out_spaces (uiout, 1);
7511     }
7512 }
7513
7514 /* Implement the "print_mention" breakpoint_ops method for fork
7515    catchpoints.  */
7516
7517 static void
7518 print_mention_catch_fork (struct breakpoint *b)
7519 {
7520   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7521 }
7522
7523 /* Implement the "print_recreate" breakpoint_ops method for fork
7524    catchpoints.  */
7525
7526 static void
7527 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7528 {
7529   fprintf_unfiltered (fp, "catch fork");
7530   print_recreate_thread (b, fp);
7531 }
7532
7533 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7534
7535 static struct breakpoint_ops catch_fork_breakpoint_ops;
7536
7537 /* Implement the "insert" breakpoint_ops method for vfork
7538    catchpoints.  */
7539
7540 static int
7541 insert_catch_vfork (struct bp_location *bl)
7542 {
7543   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7544 }
7545
7546 /* Implement the "remove" breakpoint_ops method for vfork
7547    catchpoints.  */
7548
7549 static int
7550 remove_catch_vfork (struct bp_location *bl)
7551 {
7552   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7553 }
7554
7555 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7556    catchpoints.  */
7557
7558 static int
7559 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7560                             struct address_space *aspace, CORE_ADDR bp_addr,
7561                             const struct target_waitstatus *ws)
7562 {
7563   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7564
7565   if (ws->kind != TARGET_WAITKIND_VFORKED)
7566     return 0;
7567
7568   c->forked_inferior_pid = ws->value.related_pid;
7569   return 1;
7570 }
7571
7572 /* Implement the "print_it" breakpoint_ops method for vfork
7573    catchpoints.  */
7574
7575 static enum print_stop_action
7576 print_it_catch_vfork (bpstat bs)
7577 {
7578   struct ui_out *uiout = current_uiout;
7579   struct breakpoint *b = bs->breakpoint_at;
7580   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7581
7582   annotate_catchpoint (b->number);
7583   if (b->disposition == disp_del)
7584     ui_out_text (uiout, "\nTemporary catchpoint ");
7585   else
7586     ui_out_text (uiout, "\nCatchpoint ");
7587   if (ui_out_is_mi_like_p (uiout))
7588     {
7589       ui_out_field_string (uiout, "reason",
7590                            async_reason_lookup (EXEC_ASYNC_VFORK));
7591       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7592     }
7593   ui_out_field_int (uiout, "bkptno", b->number);
7594   ui_out_text (uiout, " (vforked process ");
7595   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7596   ui_out_text (uiout, "), ");
7597   return PRINT_SRC_AND_LOC;
7598 }
7599
7600 /* Implement the "print_one" breakpoint_ops method for vfork
7601    catchpoints.  */
7602
7603 static void
7604 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7605 {
7606   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7607   struct value_print_options opts;
7608   struct ui_out *uiout = current_uiout;
7609
7610   get_user_print_options (&opts);
7611   /* Field 4, the address, is omitted (which makes the columns not
7612      line up too nicely with the headers, but the effect is relatively
7613      readable).  */
7614   if (opts.addressprint)
7615     ui_out_field_skip (uiout, "addr");
7616   annotate_field (5);
7617   ui_out_text (uiout, "vfork");
7618   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7619     {
7620       ui_out_text (uiout, ", process ");
7621       ui_out_field_int (uiout, "what",
7622                         ptid_get_pid (c->forked_inferior_pid));
7623       ui_out_spaces (uiout, 1);
7624     }
7625 }
7626
7627 /* Implement the "print_mention" breakpoint_ops method for vfork
7628    catchpoints.  */
7629
7630 static void
7631 print_mention_catch_vfork (struct breakpoint *b)
7632 {
7633   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7634 }
7635
7636 /* Implement the "print_recreate" breakpoint_ops method for vfork
7637    catchpoints.  */
7638
7639 static void
7640 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7641 {
7642   fprintf_unfiltered (fp, "catch vfork");
7643   print_recreate_thread (b, fp);
7644 }
7645
7646 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7647
7648 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7649
7650 /* An instance of this type is used to represent an solib catchpoint.
7651    It includes a "struct breakpoint" as a kind of base class; users
7652    downcast to "struct breakpoint *" when needed.  A breakpoint is
7653    really of this type iff its ops pointer points to
7654    CATCH_SOLIB_BREAKPOINT_OPS.  */
7655
7656 struct solib_catchpoint
7657 {
7658   /* The base class.  */
7659   struct breakpoint base;
7660
7661   /* True for "catch load", false for "catch unload".  */
7662   unsigned char is_load;
7663
7664   /* Regular expression to match, if any.  COMPILED is only valid when
7665      REGEX is non-NULL.  */
7666   char *regex;
7667   regex_t compiled;
7668 };
7669
7670 static void
7671 dtor_catch_solib (struct breakpoint *b)
7672 {
7673   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7674
7675   if (self->regex)
7676     regfree (&self->compiled);
7677   xfree (self->regex);
7678
7679   base_breakpoint_ops.dtor (b);
7680 }
7681
7682 static int
7683 insert_catch_solib (struct bp_location *ignore)
7684 {
7685   return 0;
7686 }
7687
7688 static int
7689 remove_catch_solib (struct bp_location *ignore)
7690 {
7691   return 0;
7692 }
7693
7694 static int
7695 breakpoint_hit_catch_solib (const struct bp_location *bl,
7696                             struct address_space *aspace,
7697                             CORE_ADDR bp_addr,
7698                             const struct target_waitstatus *ws)
7699 {
7700   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7701   struct breakpoint *other;
7702
7703   if (ws->kind == TARGET_WAITKIND_LOADED)
7704     return 1;
7705
7706   ALL_BREAKPOINTS (other)
7707   {
7708     struct bp_location *other_bl;
7709
7710     if (other == bl->owner)
7711       continue;
7712
7713     if (other->type != bp_shlib_event)
7714       continue;
7715
7716     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7717       continue;
7718
7719     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7720       {
7721         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7722           return 1;
7723       }
7724   }
7725
7726   return 0;
7727 }
7728
7729 static void
7730 check_status_catch_solib (struct bpstats *bs)
7731 {
7732   struct solib_catchpoint *self
7733     = (struct solib_catchpoint *) bs->breakpoint_at;
7734   int ix;
7735
7736   if (self->is_load)
7737     {
7738       struct so_list *iter;
7739
7740       for (ix = 0;
7741            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7742                         ix, iter);
7743            ++ix)
7744         {
7745           if (!self->regex
7746               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7747             return;
7748         }
7749     }
7750   else
7751     {
7752       char *iter;
7753
7754       for (ix = 0;
7755            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7756                         ix, iter);
7757            ++ix)
7758         {
7759           if (!self->regex
7760               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7761             return;
7762         }
7763     }
7764
7765   bs->stop = 0;
7766   bs->print_it = print_it_noop;
7767 }
7768
7769 static enum print_stop_action
7770 print_it_catch_solib (bpstat bs)
7771 {
7772   struct breakpoint *b = bs->breakpoint_at;
7773   struct ui_out *uiout = current_uiout;
7774
7775   annotate_catchpoint (b->number);
7776   if (b->disposition == disp_del)
7777     ui_out_text (uiout, "\nTemporary catchpoint ");
7778   else
7779     ui_out_text (uiout, "\nCatchpoint ");
7780   ui_out_field_int (uiout, "bkptno", b->number);
7781   ui_out_text (uiout, "\n");
7782   if (ui_out_is_mi_like_p (uiout))
7783     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7784   print_solib_event (1);
7785   return PRINT_SRC_AND_LOC;
7786 }
7787
7788 static void
7789 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7790 {
7791   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7792   struct value_print_options opts;
7793   struct ui_out *uiout = current_uiout;
7794   char *msg;
7795
7796   get_user_print_options (&opts);
7797   /* Field 4, the address, is omitted (which makes the columns not
7798      line up too nicely with the headers, but the effect is relatively
7799      readable).  */
7800   if (opts.addressprint)
7801     {
7802       annotate_field (4);
7803       ui_out_field_skip (uiout, "addr");
7804     }
7805
7806   annotate_field (5);
7807   if (self->is_load)
7808     {
7809       if (self->regex)
7810         msg = xstrprintf (_("load of library matching %s"), self->regex);
7811       else
7812         msg = xstrdup (_("load of library"));
7813     }
7814   else
7815     {
7816       if (self->regex)
7817         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7818       else
7819         msg = xstrdup (_("unload of library"));
7820     }
7821   ui_out_field_string (uiout, "what", msg);
7822   xfree (msg);
7823 }
7824
7825 static void
7826 print_mention_catch_solib (struct breakpoint *b)
7827 {
7828   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7829
7830   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7831                    self->is_load ? "load" : "unload");
7832 }
7833
7834 static void
7835 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7836 {
7837   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7838
7839   fprintf_unfiltered (fp, "%s %s",
7840                       b->disposition == disp_del ? "tcatch" : "catch",
7841                       self->is_load ? "load" : "unload");
7842   if (self->regex)
7843     fprintf_unfiltered (fp, " %s", self->regex);
7844   fprintf_unfiltered (fp, "\n");
7845 }
7846
7847 static struct breakpoint_ops catch_solib_breakpoint_ops;
7848
7849 /* A helper function that does all the work for "catch load" and
7850    "catch unload".  */
7851
7852 static void
7853 catch_load_or_unload (char *arg, int from_tty, int is_load,
7854                       struct cmd_list_element *command)
7855 {
7856   struct solib_catchpoint *c;
7857   struct gdbarch *gdbarch = get_current_arch ();
7858   int tempflag;
7859   struct cleanup *cleanup;
7860
7861   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7862
7863   if (!arg)
7864     arg = "";
7865   arg = skip_spaces (arg);
7866
7867   c = XCNEW (struct solib_catchpoint);
7868   cleanup = make_cleanup (xfree, c);
7869
7870   if (*arg != '\0')
7871     {
7872       int errcode;
7873
7874       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7875       if (errcode != 0)
7876         {
7877           char *err = get_regcomp_error (errcode, &c->compiled);
7878
7879           make_cleanup (xfree, err);
7880           error (_("Invalid regexp (%s): %s"), err, arg);
7881         }
7882       c->regex = xstrdup (arg);
7883     }
7884
7885   c->is_load = is_load;
7886   init_catchpoint (&c->base, gdbarch, tempflag, NULL,
7887                    &catch_solib_breakpoint_ops);
7888
7889   discard_cleanups (cleanup);
7890   install_breakpoint (0, &c->base, 1);
7891 }
7892
7893 static void
7894 catch_load_command_1 (char *arg, int from_tty,
7895                       struct cmd_list_element *command)
7896 {
7897   catch_load_or_unload (arg, from_tty, 1, command);
7898 }
7899
7900 static void
7901 catch_unload_command_1 (char *arg, int from_tty,
7902                         struct cmd_list_element *command)
7903 {
7904   catch_load_or_unload (arg, from_tty, 0, command);
7905 }
7906
7907 DEF_VEC_I(int);
7908
7909 /* An instance of this type is used to represent a syscall catchpoint.
7910    It includes a "struct breakpoint" as a kind of base class; users
7911    downcast to "struct breakpoint *" when needed.  A breakpoint is
7912    really of this type iff its ops pointer points to
7913    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7914
7915 struct syscall_catchpoint
7916 {
7917   /* The base class.  */
7918   struct breakpoint base;
7919
7920   /* Syscall numbers used for the 'catch syscall' feature.  If no
7921      syscall has been specified for filtering, its value is NULL.
7922      Otherwise, it holds a list of all syscalls to be caught.  The
7923      list elements are allocated with xmalloc.  */
7924   VEC(int) *syscalls_to_be_caught;
7925 };
7926
7927 /* Implement the "dtor" breakpoint_ops method for syscall
7928    catchpoints.  */
7929
7930 static void
7931 dtor_catch_syscall (struct breakpoint *b)
7932 {
7933   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7934
7935   VEC_free (int, c->syscalls_to_be_caught);
7936
7937   base_breakpoint_ops.dtor (b);
7938 }
7939
7940 static const struct inferior_data *catch_syscall_inferior_data = NULL;
7941
7942 struct catch_syscall_inferior_data
7943 {
7944   /* We keep a count of the number of times the user has requested a
7945      particular syscall to be tracked, and pass this information to the
7946      target.  This lets capable targets implement filtering directly.  */
7947
7948   /* Number of times that "any" syscall is requested.  */
7949   int any_syscall_count;
7950
7951   /* Count of each system call.  */
7952   VEC(int) *syscalls_counts;
7953
7954   /* This counts all syscall catch requests, so we can readily determine
7955      if any catching is necessary.  */
7956   int total_syscalls_count;
7957 };
7958
7959 static struct catch_syscall_inferior_data*
7960 get_catch_syscall_inferior_data (struct inferior *inf)
7961 {
7962   struct catch_syscall_inferior_data *inf_data;
7963
7964   inf_data = inferior_data (inf, catch_syscall_inferior_data);
7965   if (inf_data == NULL)
7966     {
7967       inf_data = XZALLOC (struct catch_syscall_inferior_data);
7968       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
7969     }
7970
7971   return inf_data;
7972 }
7973
7974 static void
7975 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
7976 {
7977   xfree (arg);
7978 }
7979
7980
7981 /* Implement the "insert" breakpoint_ops method for syscall
7982    catchpoints.  */
7983
7984 static int
7985 insert_catch_syscall (struct bp_location *bl)
7986 {
7987   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7988   struct inferior *inf = current_inferior ();
7989   struct catch_syscall_inferior_data *inf_data
7990     = get_catch_syscall_inferior_data (inf);
7991
7992   ++inf_data->total_syscalls_count;
7993   if (!c->syscalls_to_be_caught)
7994     ++inf_data->any_syscall_count;
7995   else
7996     {
7997       int i, iter;
7998
7999       for (i = 0;
8000            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8001            i++)
8002         {
8003           int elem;
8004
8005           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8006             {
8007               int old_size = VEC_length (int, inf_data->syscalls_counts);
8008               uintptr_t vec_addr_offset
8009                 = old_size * ((uintptr_t) sizeof (int));
8010               uintptr_t vec_addr;
8011               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8012               vec_addr = ((uintptr_t) VEC_address (int,
8013                                                   inf_data->syscalls_counts)
8014                           + vec_addr_offset);
8015               memset ((void *) vec_addr, 0,
8016                       (iter + 1 - old_size) * sizeof (int));
8017             }
8018           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8019           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8020         }
8021     }
8022
8023   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8024                                         inf_data->total_syscalls_count != 0,
8025                                         inf_data->any_syscall_count,
8026                                         VEC_length (int,
8027                                                     inf_data->syscalls_counts),
8028                                         VEC_address (int,
8029                                                      inf_data->syscalls_counts));
8030 }
8031
8032 /* Implement the "remove" breakpoint_ops method for syscall
8033    catchpoints.  */
8034
8035 static int
8036 remove_catch_syscall (struct bp_location *bl)
8037 {
8038   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8039   struct inferior *inf = current_inferior ();
8040   struct catch_syscall_inferior_data *inf_data
8041     = get_catch_syscall_inferior_data (inf);
8042
8043   --inf_data->total_syscalls_count;
8044   if (!c->syscalls_to_be_caught)
8045     --inf_data->any_syscall_count;
8046   else
8047     {
8048       int i, iter;
8049
8050       for (i = 0;
8051            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8052            i++)
8053         {
8054           int elem;
8055           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8056             /* Shouldn't happen.  */
8057             continue;
8058           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8059           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8060         }
8061     }
8062
8063   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8064                                         inf_data->total_syscalls_count != 0,
8065                                         inf_data->any_syscall_count,
8066                                         VEC_length (int,
8067                                                     inf_data->syscalls_counts),
8068                                         VEC_address (int,
8069                                                      inf_data->syscalls_counts));
8070 }
8071
8072 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8073    catchpoints.  */
8074
8075 static int
8076 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8077                               struct address_space *aspace, CORE_ADDR bp_addr,
8078                               const struct target_waitstatus *ws)
8079 {
8080   /* We must check if we are catching specific syscalls in this
8081      breakpoint.  If we are, then we must guarantee that the called
8082      syscall is the same syscall we are catching.  */
8083   int syscall_number = 0;
8084   const struct syscall_catchpoint *c
8085     = (const struct syscall_catchpoint *) bl->owner;
8086
8087   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8088       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8089     return 0;
8090
8091   syscall_number = ws->value.syscall_number;
8092
8093   /* Now, checking if the syscall is the same.  */
8094   if (c->syscalls_to_be_caught)
8095     {
8096       int i, iter;
8097
8098       for (i = 0;
8099            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8100            i++)
8101         if (syscall_number == iter)
8102           break;
8103       /* Not the same.  */
8104       if (!iter)
8105         return 0;
8106     }
8107
8108   return 1;
8109 }
8110
8111 /* Implement the "print_it" breakpoint_ops method for syscall
8112    catchpoints.  */
8113
8114 static enum print_stop_action
8115 print_it_catch_syscall (bpstat bs)
8116 {
8117   struct ui_out *uiout = current_uiout;
8118   struct breakpoint *b = bs->breakpoint_at;
8119   /* These are needed because we want to know in which state a
8120      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8121      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8122      must print "called syscall" or "returned from syscall".  */
8123   ptid_t ptid;
8124   struct target_waitstatus last;
8125   struct syscall s;
8126
8127   get_last_target_status (&ptid, &last);
8128
8129   get_syscall_by_number (last.value.syscall_number, &s);
8130
8131   annotate_catchpoint (b->number);
8132
8133   if (b->disposition == disp_del)
8134     ui_out_text (uiout, "\nTemporary catchpoint ");
8135   else
8136     ui_out_text (uiout, "\nCatchpoint ");
8137   if (ui_out_is_mi_like_p (uiout))
8138     {
8139       ui_out_field_string (uiout, "reason",
8140                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8141                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8142                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8143       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8144     }
8145   ui_out_field_int (uiout, "bkptno", b->number);
8146
8147   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8148     ui_out_text (uiout, " (call to syscall ");
8149   else
8150     ui_out_text (uiout, " (returned from syscall ");
8151
8152   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8153     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8154   if (s.name != NULL)
8155     ui_out_field_string (uiout, "syscall-name", s.name);
8156
8157   ui_out_text (uiout, "), ");
8158
8159   return PRINT_SRC_AND_LOC;
8160 }
8161
8162 /* Implement the "print_one" breakpoint_ops method for syscall
8163    catchpoints.  */
8164
8165 static void
8166 print_one_catch_syscall (struct breakpoint *b,
8167                          struct bp_location **last_loc)
8168 {
8169   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8170   struct value_print_options opts;
8171   struct ui_out *uiout = current_uiout;
8172
8173   get_user_print_options (&opts);
8174   /* Field 4, the address, is omitted (which makes the columns not
8175      line up too nicely with the headers, but the effect is relatively
8176      readable).  */
8177   if (opts.addressprint)
8178     ui_out_field_skip (uiout, "addr");
8179   annotate_field (5);
8180
8181   if (c->syscalls_to_be_caught
8182       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8183     ui_out_text (uiout, "syscalls \"");
8184   else
8185     ui_out_text (uiout, "syscall \"");
8186
8187   if (c->syscalls_to_be_caught)
8188     {
8189       int i, iter;
8190       char *text = xstrprintf ("%s", "");
8191
8192       for (i = 0;
8193            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8194            i++)
8195         {
8196           char *x = text;
8197           struct syscall s;
8198           get_syscall_by_number (iter, &s);
8199
8200           if (s.name != NULL)
8201             text = xstrprintf ("%s%s, ", text, s.name);
8202           else
8203             text = xstrprintf ("%s%d, ", text, iter);
8204
8205           /* We have to xfree the last 'text' (now stored at 'x')
8206              because xstrprintf dynamically allocates new space for it
8207              on every call.  */
8208           xfree (x);
8209         }
8210       /* Remove the last comma.  */
8211       text[strlen (text) - 2] = '\0';
8212       ui_out_field_string (uiout, "what", text);
8213     }
8214   else
8215     ui_out_field_string (uiout, "what", "<any syscall>");
8216   ui_out_text (uiout, "\" ");
8217 }
8218
8219 /* Implement the "print_mention" breakpoint_ops method for syscall
8220    catchpoints.  */
8221
8222 static void
8223 print_mention_catch_syscall (struct breakpoint *b)
8224 {
8225   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8226
8227   if (c->syscalls_to_be_caught)
8228     {
8229       int i, iter;
8230
8231       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8232         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8233       else
8234         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8235
8236       for (i = 0;
8237            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8238            i++)
8239         {
8240           struct syscall s;
8241           get_syscall_by_number (iter, &s);
8242
8243           if (s.name)
8244             printf_filtered (" '%s' [%d]", s.name, s.number);
8245           else
8246             printf_filtered (" %d", s.number);
8247         }
8248       printf_filtered (")");
8249     }
8250   else
8251     printf_filtered (_("Catchpoint %d (any syscall)"),
8252                      b->number);
8253 }
8254
8255 /* Implement the "print_recreate" breakpoint_ops method for syscall
8256    catchpoints.  */
8257
8258 static void
8259 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8260 {
8261   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8262
8263   fprintf_unfiltered (fp, "catch syscall");
8264
8265   if (c->syscalls_to_be_caught)
8266     {
8267       int i, iter;
8268
8269       for (i = 0;
8270            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8271            i++)
8272         {
8273           struct syscall s;
8274
8275           get_syscall_by_number (iter, &s);
8276           if (s.name)
8277             fprintf_unfiltered (fp, " %s", s.name);
8278           else
8279             fprintf_unfiltered (fp, " %d", s.number);
8280         }
8281     }
8282   print_recreate_thread (b, fp);
8283 }
8284
8285 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8286
8287 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8288
8289 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8290
8291 static int
8292 syscall_catchpoint_p (struct breakpoint *b)
8293 {
8294   return (b->ops == &catch_syscall_breakpoint_ops);
8295 }
8296
8297 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8298    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8299    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8300    the breakpoint_ops structure associated to the catchpoint.  */
8301
8302 static void
8303 init_catchpoint (struct breakpoint *b,
8304                  struct gdbarch *gdbarch, int tempflag,
8305                  char *cond_string,
8306                  const struct breakpoint_ops *ops)
8307 {
8308   struct symtab_and_line sal;
8309
8310   init_sal (&sal);
8311   sal.pspace = current_program_space;
8312
8313   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8314
8315   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8316   b->disposition = tempflag ? disp_del : disp_donttouch;
8317 }
8318
8319 void
8320 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8321 {
8322   add_to_breakpoint_chain (b);
8323   set_breakpoint_number (internal, b);
8324   if (is_tracepoint (b))
8325     set_tracepoint_count (breakpoint_count);
8326   if (!internal)
8327     mention (b);
8328   observer_notify_breakpoint_created (b);
8329
8330   if (update_gll)
8331     update_global_location_list (1);
8332 }
8333
8334 static void
8335 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8336                                     int tempflag, char *cond_string,
8337                                     const struct breakpoint_ops *ops)
8338 {
8339   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8340
8341   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8342
8343   c->forked_inferior_pid = null_ptid;
8344
8345   install_breakpoint (0, &c->base, 1);
8346 }
8347
8348 /* Exec catchpoints.  */
8349
8350 /* An instance of this type is used to represent an exec catchpoint.
8351    It includes a "struct breakpoint" as a kind of base class; users
8352    downcast to "struct breakpoint *" when needed.  A breakpoint is
8353    really of this type iff its ops pointer points to
8354    CATCH_EXEC_BREAKPOINT_OPS.  */
8355
8356 struct exec_catchpoint
8357 {
8358   /* The base class.  */
8359   struct breakpoint base;
8360
8361   /* Filename of a program whose exec triggered this catchpoint.
8362      This field is only valid immediately after this catchpoint has
8363      triggered.  */
8364   char *exec_pathname;
8365 };
8366
8367 /* Implement the "dtor" breakpoint_ops method for exec
8368    catchpoints.  */
8369
8370 static void
8371 dtor_catch_exec (struct breakpoint *b)
8372 {
8373   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8374
8375   xfree (c->exec_pathname);
8376
8377   base_breakpoint_ops.dtor (b);
8378 }
8379
8380 static int
8381 insert_catch_exec (struct bp_location *bl)
8382 {
8383   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8384 }
8385
8386 static int
8387 remove_catch_exec (struct bp_location *bl)
8388 {
8389   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8390 }
8391
8392 static int
8393 breakpoint_hit_catch_exec (const struct bp_location *bl,
8394                            struct address_space *aspace, CORE_ADDR bp_addr,
8395                            const struct target_waitstatus *ws)
8396 {
8397   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8398
8399   if (ws->kind != TARGET_WAITKIND_EXECD)
8400     return 0;
8401
8402   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8403   return 1;
8404 }
8405
8406 static enum print_stop_action
8407 print_it_catch_exec (bpstat bs)
8408 {
8409   struct ui_out *uiout = current_uiout;
8410   struct breakpoint *b = bs->breakpoint_at;
8411   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8412
8413   annotate_catchpoint (b->number);
8414   if (b->disposition == disp_del)
8415     ui_out_text (uiout, "\nTemporary catchpoint ");
8416   else
8417     ui_out_text (uiout, "\nCatchpoint ");
8418   if (ui_out_is_mi_like_p (uiout))
8419     {
8420       ui_out_field_string (uiout, "reason",
8421                            async_reason_lookup (EXEC_ASYNC_EXEC));
8422       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8423     }
8424   ui_out_field_int (uiout, "bkptno", b->number);
8425   ui_out_text (uiout, " (exec'd ");
8426   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8427   ui_out_text (uiout, "), ");
8428
8429   return PRINT_SRC_AND_LOC;
8430 }
8431
8432 static void
8433 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8434 {
8435   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8436   struct value_print_options opts;
8437   struct ui_out *uiout = current_uiout;
8438
8439   get_user_print_options (&opts);
8440
8441   /* Field 4, the address, is omitted (which makes the columns
8442      not line up too nicely with the headers, but the effect
8443      is relatively readable).  */
8444   if (opts.addressprint)
8445     ui_out_field_skip (uiout, "addr");
8446   annotate_field (5);
8447   ui_out_text (uiout, "exec");
8448   if (c->exec_pathname != NULL)
8449     {
8450       ui_out_text (uiout, ", program \"");
8451       ui_out_field_string (uiout, "what", c->exec_pathname);
8452       ui_out_text (uiout, "\" ");
8453     }
8454 }
8455
8456 static void
8457 print_mention_catch_exec (struct breakpoint *b)
8458 {
8459   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8460 }
8461
8462 /* Implement the "print_recreate" breakpoint_ops method for exec
8463    catchpoints.  */
8464
8465 static void
8466 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8467 {
8468   fprintf_unfiltered (fp, "catch exec");
8469   print_recreate_thread (b, fp);
8470 }
8471
8472 static struct breakpoint_ops catch_exec_breakpoint_ops;
8473
8474 static void
8475 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8476                                  const struct breakpoint_ops *ops)
8477 {
8478   struct syscall_catchpoint *c;
8479   struct gdbarch *gdbarch = get_current_arch ();
8480
8481   c = XNEW (struct syscall_catchpoint);
8482   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8483   c->syscalls_to_be_caught = filter;
8484
8485   install_breakpoint (0, &c->base, 1);
8486 }
8487
8488 static int
8489 hw_breakpoint_used_count (void)
8490 {
8491   int i = 0;
8492   struct breakpoint *b;
8493   struct bp_location *bl;
8494
8495   ALL_BREAKPOINTS (b)
8496   {
8497     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8498       for (bl = b->loc; bl; bl = bl->next)
8499         {
8500           /* Special types of hardware breakpoints may use more than
8501              one register.  */
8502           i += b->ops->resources_needed (bl);
8503         }
8504   }
8505
8506   return i;
8507 }
8508
8509 /* Returns the resources B would use if it were a hardware
8510    watchpoint.  */
8511
8512 static int
8513 hw_watchpoint_use_count (struct breakpoint *b)
8514 {
8515   int i = 0;
8516   struct bp_location *bl;
8517
8518   if (!breakpoint_enabled (b))
8519     return 0;
8520
8521   for (bl = b->loc; bl; bl = bl->next)
8522     {
8523       /* Special types of hardware watchpoints may use more than
8524          one register.  */
8525       i += b->ops->resources_needed (bl);
8526     }
8527
8528   return i;
8529 }
8530
8531 /* Returns the sum the used resources of all hardware watchpoints of
8532    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8533    the sum of the used resources of all hardware watchpoints of other
8534    types _not_ TYPE.  */
8535
8536 static int
8537 hw_watchpoint_used_count_others (struct breakpoint *except,
8538                                  enum bptype type, int *other_type_used)
8539 {
8540   int i = 0;
8541   struct breakpoint *b;
8542
8543   *other_type_used = 0;
8544   ALL_BREAKPOINTS (b)
8545     {
8546       if (b == except)
8547         continue;
8548       if (!breakpoint_enabled (b))
8549         continue;
8550
8551       if (b->type == type)
8552         i += hw_watchpoint_use_count (b);
8553       else if (is_hardware_watchpoint (b))
8554         *other_type_used = 1;
8555     }
8556
8557   return i;
8558 }
8559
8560 void
8561 disable_watchpoints_before_interactive_call_start (void)
8562 {
8563   struct breakpoint *b;
8564
8565   ALL_BREAKPOINTS (b)
8566   {
8567     if (is_watchpoint (b) && breakpoint_enabled (b))
8568       {
8569         b->enable_state = bp_call_disabled;
8570         update_global_location_list (0);
8571       }
8572   }
8573 }
8574
8575 void
8576 enable_watchpoints_after_interactive_call_stop (void)
8577 {
8578   struct breakpoint *b;
8579
8580   ALL_BREAKPOINTS (b)
8581   {
8582     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8583       {
8584         b->enable_state = bp_enabled;
8585         update_global_location_list (1);
8586       }
8587   }
8588 }
8589
8590 void
8591 disable_breakpoints_before_startup (void)
8592 {
8593   current_program_space->executing_startup = 1;
8594   update_global_location_list (0);
8595 }
8596
8597 void
8598 enable_breakpoints_after_startup (void)
8599 {
8600   current_program_space->executing_startup = 0;
8601   breakpoint_re_set ();
8602 }
8603
8604
8605 /* Set a breakpoint that will evaporate an end of command
8606    at address specified by SAL.
8607    Restrict it to frame FRAME if FRAME is nonzero.  */
8608
8609 struct breakpoint *
8610 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8611                           struct frame_id frame_id, enum bptype type)
8612 {
8613   struct breakpoint *b;
8614
8615   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8616      tail-called one.  */
8617   gdb_assert (!frame_id_artificial_p (frame_id));
8618
8619   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8620   b->enable_state = bp_enabled;
8621   b->disposition = disp_donttouch;
8622   b->frame_id = frame_id;
8623
8624   /* If we're debugging a multi-threaded program, then we want
8625      momentary breakpoints to be active in only a single thread of
8626      control.  */
8627   if (in_thread_list (inferior_ptid))
8628     b->thread = pid_to_thread_id (inferior_ptid);
8629
8630   update_global_location_list_nothrow (1);
8631
8632   return b;
8633 }
8634
8635 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8636    The new breakpoint will have type TYPE, and use OPS as it
8637    breakpoint_ops.  */
8638
8639 static struct breakpoint *
8640 momentary_breakpoint_from_master (struct breakpoint *orig,
8641                                   enum bptype type,
8642                                   const struct breakpoint_ops *ops)
8643 {
8644   struct breakpoint *copy;
8645
8646   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8647   copy->loc = allocate_bp_location (copy);
8648   set_breakpoint_location_function (copy->loc, 1);
8649
8650   copy->loc->gdbarch = orig->loc->gdbarch;
8651   copy->loc->requested_address = orig->loc->requested_address;
8652   copy->loc->address = orig->loc->address;
8653   copy->loc->section = orig->loc->section;
8654   copy->loc->pspace = orig->loc->pspace;
8655   copy->loc->probe = orig->loc->probe;
8656
8657   if (orig->loc->source_file != NULL)
8658     copy->loc->source_file = xstrdup (orig->loc->source_file);
8659
8660   copy->loc->line_number = orig->loc->line_number;
8661   copy->frame_id = orig->frame_id;
8662   copy->thread = orig->thread;
8663   copy->pspace = orig->pspace;
8664
8665   copy->enable_state = bp_enabled;
8666   copy->disposition = disp_donttouch;
8667   copy->number = internal_breakpoint_number--;
8668
8669   update_global_location_list_nothrow (0);
8670   return copy;
8671 }
8672
8673 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8674    ORIG is NULL.  */
8675
8676 struct breakpoint *
8677 clone_momentary_breakpoint (struct breakpoint *orig)
8678 {
8679   /* If there's nothing to clone, then return nothing.  */
8680   if (orig == NULL)
8681     return NULL;
8682
8683   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8684 }
8685
8686 struct breakpoint *
8687 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8688                                 enum bptype type)
8689 {
8690   struct symtab_and_line sal;
8691
8692   sal = find_pc_line (pc, 0);
8693   sal.pc = pc;
8694   sal.section = find_pc_overlay (pc);
8695   sal.explicit_pc = 1;
8696
8697   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8698 }
8699 \f
8700
8701 /* Tell the user we have just set a breakpoint B.  */
8702
8703 static void
8704 mention (struct breakpoint *b)
8705 {
8706   b->ops->print_mention (b);
8707   if (ui_out_is_mi_like_p (current_uiout))
8708     return;
8709   printf_filtered ("\n");
8710 }
8711 \f
8712
8713 static struct bp_location *
8714 add_location_to_breakpoint (struct breakpoint *b,
8715                             const struct symtab_and_line *sal)
8716 {
8717   struct bp_location *loc, **tmp;
8718   CORE_ADDR adjusted_address;
8719   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8720
8721   if (loc_gdbarch == NULL)
8722     loc_gdbarch = b->gdbarch;
8723
8724   /* Adjust the breakpoint's address prior to allocating a location.
8725      Once we call allocate_bp_location(), that mostly uninitialized
8726      location will be placed on the location chain.  Adjustment of the
8727      breakpoint may cause target_read_memory() to be called and we do
8728      not want its scan of the location chain to find a breakpoint and
8729      location that's only been partially initialized.  */
8730   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8731                                                 sal->pc, b->type);
8732
8733   loc = allocate_bp_location (b);
8734   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8735     ;
8736   *tmp = loc;
8737
8738   loc->requested_address = sal->pc;
8739   loc->address = adjusted_address;
8740   loc->pspace = sal->pspace;
8741   loc->probe = sal->probe;
8742   gdb_assert (loc->pspace != NULL);
8743   loc->section = sal->section;
8744   loc->gdbarch = loc_gdbarch;
8745
8746   if (sal->symtab != NULL)
8747     loc->source_file = xstrdup (sal->symtab->filename);
8748   loc->line_number = sal->line;
8749
8750   set_breakpoint_location_function (loc,
8751                                     sal->explicit_pc || sal->explicit_line);
8752   return loc;
8753 }
8754 \f
8755
8756 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8757    return 0 otherwise.  */
8758
8759 static int
8760 bp_loc_is_permanent (struct bp_location *loc)
8761 {
8762   int len;
8763   CORE_ADDR addr;
8764   const gdb_byte *bpoint;
8765   gdb_byte *target_mem;
8766   struct cleanup *cleanup;
8767   int retval = 0;
8768
8769   gdb_assert (loc != NULL);
8770
8771   addr = loc->address;
8772   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8773
8774   /* Software breakpoints unsupported?  */
8775   if (bpoint == NULL)
8776     return 0;
8777
8778   target_mem = alloca (len);
8779
8780   /* Enable the automatic memory restoration from breakpoints while
8781      we read the memory.  Otherwise we could say about our temporary
8782      breakpoints they are permanent.  */
8783   cleanup = save_current_space_and_thread ();
8784
8785   switch_to_program_space_and_thread (loc->pspace);
8786   make_show_memory_breakpoints_cleanup (0);
8787
8788   if (target_read_memory (loc->address, target_mem, len) == 0
8789       && memcmp (target_mem, bpoint, len) == 0)
8790     retval = 1;
8791
8792   do_cleanups (cleanup);
8793
8794   return retval;
8795 }
8796
8797 /* Build a command list for the dprintf corresponding to the current
8798    settings of the dprintf style options.  */
8799
8800 static void
8801 update_dprintf_command_list (struct breakpoint *b)
8802 {
8803   char *dprintf_args = b->extra_string;
8804   char *printf_line = NULL;
8805
8806   if (!dprintf_args)
8807     return;
8808
8809   dprintf_args = skip_spaces (dprintf_args);
8810
8811   /* Allow a comma, as it may have terminated a location, but don't
8812      insist on it.  */
8813   if (*dprintf_args == ',')
8814     ++dprintf_args;
8815   dprintf_args = skip_spaces (dprintf_args);
8816
8817   if (*dprintf_args != '"')
8818     error (_("Bad format string, missing '\"'."));
8819
8820   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8821     printf_line = xstrprintf ("printf %s", dprintf_args);
8822   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8823     {
8824       if (!dprintf_function)
8825         error (_("No function supplied for dprintf call"));
8826
8827       if (dprintf_channel && strlen (dprintf_channel) > 0)
8828         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8829                                   dprintf_function,
8830                                   dprintf_channel,
8831                                   dprintf_args);
8832       else
8833         printf_line = xstrprintf ("call (void) %s (%s)",
8834                                   dprintf_function,
8835                                   dprintf_args);
8836     }
8837   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8838     {
8839       if (target_can_run_breakpoint_commands ())
8840         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8841       else
8842         {
8843           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8844           printf_line = xstrprintf ("printf %s", dprintf_args);
8845         }
8846     }
8847   else
8848     internal_error (__FILE__, __LINE__,
8849                     _("Invalid dprintf style."));
8850
8851   /* Manufacture a printf/continue sequence.  */
8852   if (printf_line)
8853     {
8854       struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8855
8856       if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8857         {
8858           cont_cmd_line = xmalloc (sizeof (struct command_line));
8859           cont_cmd_line->control_type = simple_control;
8860           cont_cmd_line->body_count = 0;
8861           cont_cmd_line->body_list = NULL;
8862           cont_cmd_line->next = NULL;
8863           cont_cmd_line->line = xstrdup ("continue");
8864         }
8865
8866       printf_cmd_line = xmalloc (sizeof (struct command_line));
8867       printf_cmd_line->control_type = simple_control;
8868       printf_cmd_line->body_count = 0;
8869       printf_cmd_line->body_list = NULL;
8870       printf_cmd_line->next = cont_cmd_line;
8871       printf_cmd_line->line = printf_line;
8872
8873       breakpoint_set_commands (b, printf_cmd_line);
8874     }
8875 }
8876
8877 /* Update all dprintf commands, making their command lists reflect
8878    current style settings.  */
8879
8880 static void
8881 update_dprintf_commands (char *args, int from_tty,
8882                          struct cmd_list_element *c)
8883 {
8884   struct breakpoint *b;
8885
8886   ALL_BREAKPOINTS (b)
8887     {
8888       if (b->type == bp_dprintf)
8889         update_dprintf_command_list (b);
8890     }
8891 }
8892
8893 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8894    as textual description of the location, and COND_STRING
8895    as condition expression.  */
8896
8897 static void
8898 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8899                      struct symtabs_and_lines sals, char *addr_string,
8900                      char *filter, char *cond_string,
8901                      char *extra_string,
8902                      enum bptype type, enum bpdisp disposition,
8903                      int thread, int task, int ignore_count,
8904                      const struct breakpoint_ops *ops, int from_tty,
8905                      int enabled, int internal, unsigned flags,
8906                      int display_canonical)
8907 {
8908   int i;
8909
8910   if (type == bp_hardware_breakpoint)
8911     {
8912       int target_resources_ok;
8913
8914       i = hw_breakpoint_used_count ();
8915       target_resources_ok =
8916         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8917                                             i + 1, 0);
8918       if (target_resources_ok == 0)
8919         error (_("No hardware breakpoint support in the target."));
8920       else if (target_resources_ok < 0)
8921         error (_("Hardware breakpoints used exceeds limit."));
8922     }
8923
8924   gdb_assert (sals.nelts > 0);
8925
8926   for (i = 0; i < sals.nelts; ++i)
8927     {
8928       struct symtab_and_line sal = sals.sals[i];
8929       struct bp_location *loc;
8930
8931       if (from_tty)
8932         {
8933           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8934           if (!loc_gdbarch)
8935             loc_gdbarch = gdbarch;
8936
8937           describe_other_breakpoints (loc_gdbarch,
8938                                       sal.pspace, sal.pc, sal.section, thread);
8939         }
8940
8941       if (i == 0)
8942         {
8943           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8944           b->thread = thread;
8945           b->task = task;
8946
8947           b->cond_string = cond_string;
8948           b->extra_string = extra_string;
8949           b->ignore_count = ignore_count;
8950           b->enable_state = enabled ? bp_enabled : bp_disabled;
8951           b->disposition = disposition;
8952
8953           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8954             b->loc->inserted = 1;
8955
8956           if (type == bp_static_tracepoint)
8957             {
8958               struct tracepoint *t = (struct tracepoint *) b;
8959               struct static_tracepoint_marker marker;
8960
8961               if (strace_marker_p (b))
8962                 {
8963                   /* We already know the marker exists, otherwise, we
8964                      wouldn't see a sal for it.  */
8965                   char *p = &addr_string[3];
8966                   char *endp;
8967                   char *marker_str;
8968
8969                   p = skip_spaces (p);
8970
8971                   endp = skip_to_space (p);
8972
8973                   marker_str = savestring (p, endp - p);
8974                   t->static_trace_marker_id = marker_str;
8975
8976                   printf_filtered (_("Probed static tracepoint "
8977                                      "marker \"%s\"\n"),
8978                                    t->static_trace_marker_id);
8979                 }
8980               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8981                 {
8982                   t->static_trace_marker_id = xstrdup (marker.str_id);
8983                   release_static_tracepoint_marker (&marker);
8984
8985                   printf_filtered (_("Probed static tracepoint "
8986                                      "marker \"%s\"\n"),
8987                                    t->static_trace_marker_id);
8988                 }
8989               else
8990                 warning (_("Couldn't determine the static "
8991                            "tracepoint marker to probe"));
8992             }
8993
8994           loc = b->loc;
8995         }
8996       else
8997         {
8998           loc = add_location_to_breakpoint (b, &sal);
8999           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9000             loc->inserted = 1;
9001         }
9002
9003       if (bp_loc_is_permanent (loc))
9004         make_breakpoint_permanent (b);
9005
9006       if (b->cond_string)
9007         {
9008           char *arg = b->cond_string;
9009           loc->cond = parse_exp_1 (&arg, loc->address,
9010                                    block_for_pc (loc->address), 0);
9011           if (*arg)
9012               error (_("Garbage '%s' follows condition"), arg);
9013         }
9014
9015       /* Dynamic printf requires and uses additional arguments on the
9016          command line, otherwise it's an error.  */
9017       if (type == bp_dprintf)
9018         {
9019           if (b->extra_string)
9020             update_dprintf_command_list (b);
9021           else
9022             error (_("Format string required"));
9023         }
9024       else if (b->extra_string)
9025         error (_("Garbage '%s' at end of command"), b->extra_string);
9026     }
9027
9028   b->display_canonical = display_canonical;
9029   if (addr_string)
9030     b->addr_string = addr_string;
9031   else
9032     /* addr_string has to be used or breakpoint_re_set will delete
9033        me.  */
9034     b->addr_string
9035       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9036   b->filter = filter;
9037 }
9038
9039 static void
9040 create_breakpoint_sal (struct gdbarch *gdbarch,
9041                        struct symtabs_and_lines sals, char *addr_string,
9042                        char *filter, char *cond_string,
9043                        char *extra_string,
9044                        enum bptype type, enum bpdisp disposition,
9045                        int thread, int task, int ignore_count,
9046                        const struct breakpoint_ops *ops, int from_tty,
9047                        int enabled, int internal, unsigned flags,
9048                        int display_canonical)
9049 {
9050   struct breakpoint *b;
9051   struct cleanup *old_chain;
9052
9053   if (is_tracepoint_type (type))
9054     {
9055       struct tracepoint *t;
9056
9057       t = XCNEW (struct tracepoint);
9058       b = &t->base;
9059     }
9060   else
9061     b = XNEW (struct breakpoint);
9062
9063   old_chain = make_cleanup (xfree, b);
9064
9065   init_breakpoint_sal (b, gdbarch,
9066                        sals, addr_string,
9067                        filter, cond_string, extra_string,
9068                        type, disposition,
9069                        thread, task, ignore_count,
9070                        ops, from_tty,
9071                        enabled, internal, flags,
9072                        display_canonical);
9073   discard_cleanups (old_chain);
9074
9075   install_breakpoint (internal, b, 0);
9076 }
9077
9078 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9079    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9080    value.  COND_STRING, if not NULL, specified the condition to be
9081    used for all breakpoints.  Essentially the only case where
9082    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9083    function.  In that case, it's still not possible to specify
9084    separate conditions for different overloaded functions, so
9085    we take just a single condition string.
9086    
9087    NOTE: If the function succeeds, the caller is expected to cleanup
9088    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9089    array contents).  If the function fails (error() is called), the
9090    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9091    COND and SALS arrays and each of those arrays contents.  */
9092
9093 static void
9094 create_breakpoints_sal (struct gdbarch *gdbarch,
9095                         struct linespec_result *canonical,
9096                         char *cond_string, char *extra_string,
9097                         enum bptype type, enum bpdisp disposition,
9098                         int thread, int task, int ignore_count,
9099                         const struct breakpoint_ops *ops, int from_tty,
9100                         int enabled, int internal, unsigned flags)
9101 {
9102   int i;
9103   struct linespec_sals *lsal;
9104
9105   if (canonical->pre_expanded)
9106     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9107
9108   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9109     {
9110       /* Note that 'addr_string' can be NULL in the case of a plain
9111          'break', without arguments.  */
9112       char *addr_string = (canonical->addr_string
9113                            ? xstrdup (canonical->addr_string)
9114                            : NULL);
9115       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9116       struct cleanup *inner = make_cleanup (xfree, addr_string);
9117
9118       make_cleanup (xfree, filter_string);
9119       create_breakpoint_sal (gdbarch, lsal->sals,
9120                              addr_string,
9121                              filter_string,
9122                              cond_string, extra_string,
9123                              type, disposition,
9124                              thread, task, ignore_count, ops,
9125                              from_tty, enabled, internal, flags,
9126                              canonical->special_display);
9127       discard_cleanups (inner);
9128     }
9129 }
9130
9131 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9132    followed by conditionals.  On return, SALS contains an array of SAL
9133    addresses found.  ADDR_STRING contains a vector of (canonical)
9134    address strings.  ADDRESS points to the end of the SAL.
9135
9136    The array and the line spec strings are allocated on the heap, it is
9137    the caller's responsibility to free them.  */
9138
9139 static void
9140 parse_breakpoint_sals (char **address,
9141                        struct linespec_result *canonical)
9142 {
9143   /* If no arg given, or if first arg is 'if ', use the default
9144      breakpoint.  */
9145   if ((*address) == NULL
9146       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9147     {
9148       /* The last displayed codepoint, if it's valid, is our default breakpoint
9149          address.  */
9150       if (last_displayed_sal_is_valid ())
9151         {
9152           struct linespec_sals lsal;
9153           struct symtab_and_line sal;
9154           CORE_ADDR pc;
9155
9156           init_sal (&sal);              /* Initialize to zeroes.  */
9157           lsal.sals.sals = (struct symtab_and_line *)
9158             xmalloc (sizeof (struct symtab_and_line));
9159
9160           /* Set sal's pspace, pc, symtab, and line to the values
9161              corresponding to the last call to print_frame_info.
9162              Be sure to reinitialize LINE with NOTCURRENT == 0
9163              as the breakpoint line number is inappropriate otherwise.
9164              find_pc_line would adjust PC, re-set it back.  */
9165           get_last_displayed_sal (&sal);
9166           pc = sal.pc;
9167           sal = find_pc_line (pc, 0);
9168
9169           /* "break" without arguments is equivalent to "break *PC"
9170              where PC is the last displayed codepoint's address.  So
9171              make sure to set sal.explicit_pc to prevent GDB from
9172              trying to expand the list of sals to include all other
9173              instances with the same symtab and line.  */
9174           sal.pc = pc;
9175           sal.explicit_pc = 1;
9176
9177           lsal.sals.sals[0] = sal;
9178           lsal.sals.nelts = 1;
9179           lsal.canonical = NULL;
9180
9181           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9182         }
9183       else
9184         error (_("No default breakpoint address now."));
9185     }
9186   else
9187     {
9188       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9189
9190       /* Force almost all breakpoints to be in terms of the
9191          current_source_symtab (which is decode_line_1's default).
9192          This should produce the results we want almost all of the
9193          time while leaving default_breakpoint_* alone.
9194
9195          ObjC: However, don't match an Objective-C method name which
9196          may have a '+' or '-' succeeded by a '['.  */
9197       if (last_displayed_sal_is_valid ()
9198           && (!cursal.symtab
9199               || ((strchr ("+-", (*address)[0]) != NULL)
9200                   && ((*address)[1] != '['))))
9201         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9202                           get_last_displayed_symtab (),
9203                           get_last_displayed_line (),
9204                           canonical, NULL, NULL);
9205       else
9206         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9207                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9208     }
9209 }
9210
9211
9212 /* Convert each SAL into a real PC.  Verify that the PC can be
9213    inserted as a breakpoint.  If it can't throw an error.  */
9214
9215 static void
9216 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9217 {    
9218   int i;
9219
9220   for (i = 0; i < sals->nelts; i++)
9221     resolve_sal_pc (&sals->sals[i]);
9222 }
9223
9224 /* Fast tracepoints may have restrictions on valid locations.  For
9225    instance, a fast tracepoint using a jump instead of a trap will
9226    likely have to overwrite more bytes than a trap would, and so can
9227    only be placed where the instruction is longer than the jump, or a
9228    multi-instruction sequence does not have a jump into the middle of
9229    it, etc.  */
9230
9231 static void
9232 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9233                             struct symtabs_and_lines *sals)
9234 {
9235   int i, rslt;
9236   struct symtab_and_line *sal;
9237   char *msg;
9238   struct cleanup *old_chain;
9239
9240   for (i = 0; i < sals->nelts; i++)
9241     {
9242       struct gdbarch *sarch;
9243
9244       sal = &sals->sals[i];
9245
9246       sarch = get_sal_arch (*sal);
9247       /* We fall back to GDBARCH if there is no architecture
9248          associated with SAL.  */
9249       if (sarch == NULL)
9250         sarch = gdbarch;
9251       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9252                                                NULL, &msg);
9253       old_chain = make_cleanup (xfree, msg);
9254
9255       if (!rslt)
9256         error (_("May not have a fast tracepoint at 0x%s%s"),
9257                paddress (sarch, sal->pc), (msg ? msg : ""));
9258
9259       do_cleanups (old_chain);
9260     }
9261 }
9262
9263 /* Issue an invalid thread ID error.  */
9264
9265 static void ATTRIBUTE_NORETURN
9266 invalid_thread_id_error (int id)
9267 {
9268   error (_("Unknown thread %d."), id);
9269 }
9270
9271 /* Given TOK, a string specification of condition and thread, as
9272    accepted by the 'break' command, extract the condition
9273    string and thread number and set *COND_STRING and *THREAD.
9274    PC identifies the context at which the condition should be parsed.
9275    If no condition is found, *COND_STRING is set to NULL.
9276    If no thread is found, *THREAD is set to -1.  */
9277
9278 static void
9279 find_condition_and_thread (char *tok, CORE_ADDR pc,
9280                            char **cond_string, int *thread, int *task,
9281                            char **rest)
9282 {
9283   *cond_string = NULL;
9284   *thread = -1;
9285   *task = 0;
9286   *rest = NULL;
9287
9288   while (tok && *tok)
9289     {
9290       char *end_tok;
9291       int toklen;
9292       char *cond_start = NULL;
9293       char *cond_end = NULL;
9294
9295       tok = skip_spaces (tok);
9296
9297       if ((*tok == '"' || *tok == ',') && rest)
9298         {
9299           *rest = savestring (tok, strlen (tok));
9300           return;
9301         }
9302
9303       end_tok = skip_to_space (tok);
9304
9305       toklen = end_tok - tok;
9306
9307       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9308         {
9309           struct expression *expr;
9310
9311           tok = cond_start = end_tok + 1;
9312           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9313           xfree (expr);
9314           cond_end = tok;
9315           *cond_string = savestring (cond_start, cond_end - cond_start);
9316         }
9317       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9318         {
9319           char *tmptok;
9320
9321           tok = end_tok + 1;
9322           tmptok = tok;
9323           *thread = strtol (tok, &tok, 0);
9324           if (tok == tmptok)
9325             error (_("Junk after thread keyword."));
9326           if (!valid_thread_id (*thread))
9327             invalid_thread_id_error (*thread);
9328         }
9329       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9330         {
9331           char *tmptok;
9332
9333           tok = end_tok + 1;
9334           tmptok = tok;
9335           *task = strtol (tok, &tok, 0);
9336           if (tok == tmptok)
9337             error (_("Junk after task keyword."));
9338           if (!valid_task_id (*task))
9339             error (_("Unknown task %d."), *task);
9340         }
9341       else if (rest)
9342         {
9343           *rest = savestring (tok, strlen (tok));
9344           return;
9345         }
9346       else
9347         error (_("Junk at end of arguments."));
9348     }
9349 }
9350
9351 /* Decode a static tracepoint marker spec.  */
9352
9353 static struct symtabs_and_lines
9354 decode_static_tracepoint_spec (char **arg_p)
9355 {
9356   VEC(static_tracepoint_marker_p) *markers = NULL;
9357   struct symtabs_and_lines sals;
9358   struct cleanup *old_chain;
9359   char *p = &(*arg_p)[3];
9360   char *endp;
9361   char *marker_str;
9362   int i;
9363
9364   p = skip_spaces (p);
9365
9366   endp = skip_to_space (p);
9367
9368   marker_str = savestring (p, endp - p);
9369   old_chain = make_cleanup (xfree, marker_str);
9370
9371   markers = target_static_tracepoint_markers_by_strid (marker_str);
9372   if (VEC_empty(static_tracepoint_marker_p, markers))
9373     error (_("No known static tracepoint marker named %s"), marker_str);
9374
9375   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9376   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9377
9378   for (i = 0; i < sals.nelts; i++)
9379     {
9380       struct static_tracepoint_marker *marker;
9381
9382       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9383
9384       init_sal (&sals.sals[i]);
9385
9386       sals.sals[i] = find_pc_line (marker->address, 0);
9387       sals.sals[i].pc = marker->address;
9388
9389       release_static_tracepoint_marker (marker);
9390     }
9391
9392   do_cleanups (old_chain);
9393
9394   *arg_p = endp;
9395   return sals;
9396 }
9397
9398 /* Set a breakpoint.  This function is shared between CLI and MI
9399    functions for setting a breakpoint.  This function has two major
9400    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9401    parameter.  If non-zero, the function will parse arg, extracting
9402    breakpoint location, address and thread.  Otherwise, ARG is just
9403    the location of breakpoint, with condition and thread specified by
9404    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9405    the breakpoint number will be allocated from the internal
9406    breakpoint count.  Returns true if any breakpoint was created;
9407    false otherwise.  */
9408
9409 int
9410 create_breakpoint (struct gdbarch *gdbarch,
9411                    char *arg, char *cond_string,
9412                    int thread, char *extra_string,
9413                    int parse_condition_and_thread,
9414                    int tempflag, enum bptype type_wanted,
9415                    int ignore_count,
9416                    enum auto_boolean pending_break_support,
9417                    const struct breakpoint_ops *ops,
9418                    int from_tty, int enabled, int internal,
9419                    unsigned flags)
9420 {
9421   volatile struct gdb_exception e;
9422   char *copy_arg = NULL;
9423   char *addr_start = arg;
9424   struct linespec_result canonical;
9425   struct cleanup *old_chain;
9426   struct cleanup *bkpt_chain = NULL;
9427   int pending = 0;
9428   int task = 0;
9429   int prev_bkpt_count = breakpoint_count;
9430
9431   gdb_assert (ops != NULL);
9432
9433   init_linespec_result (&canonical);
9434
9435   TRY_CATCH (e, RETURN_MASK_ALL)
9436     {
9437       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9438                                      addr_start, &copy_arg);
9439     }
9440
9441   /* If caller is interested in rc value from parse, set value.  */
9442   switch (e.reason)
9443     {
9444     case GDB_NO_ERROR:
9445       if (VEC_empty (linespec_sals, canonical.sals))
9446         return 0;
9447       break;
9448     case RETURN_ERROR:
9449       switch (e.error)
9450         {
9451         case NOT_FOUND_ERROR:
9452
9453           /* If pending breakpoint support is turned off, throw
9454              error.  */
9455
9456           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9457             throw_exception (e);
9458
9459           exception_print (gdb_stderr, e);
9460
9461           /* If pending breakpoint support is auto query and the user
9462              selects no, then simply return the error code.  */
9463           if (pending_break_support == AUTO_BOOLEAN_AUTO
9464               && !nquery (_("Make %s pending on future shared library load? "),
9465                           bptype_string (type_wanted)))
9466             return 0;
9467
9468           /* At this point, either the user was queried about setting
9469              a pending breakpoint and selected yes, or pending
9470              breakpoint behavior is on and thus a pending breakpoint
9471              is defaulted on behalf of the user.  */
9472           {
9473             struct linespec_sals lsal;
9474
9475             copy_arg = xstrdup (addr_start);
9476             lsal.canonical = xstrdup (copy_arg);
9477             lsal.sals.nelts = 1;
9478             lsal.sals.sals = XNEW (struct symtab_and_line);
9479             init_sal (&lsal.sals.sals[0]);
9480             pending = 1;
9481             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9482           }
9483           break;
9484         default:
9485           throw_exception (e);
9486         }
9487       break;
9488     default:
9489       throw_exception (e);
9490     }
9491
9492   /* Create a chain of things that always need to be cleaned up.  */
9493   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9494
9495   /* ----------------------------- SNIP -----------------------------
9496      Anything added to the cleanup chain beyond this point is assumed
9497      to be part of a breakpoint.  If the breakpoint create succeeds
9498      then the memory is not reclaimed.  */
9499   bkpt_chain = make_cleanup (null_cleanup, 0);
9500
9501   /* Resolve all line numbers to PC's and verify that the addresses
9502      are ok for the target.  */
9503   if (!pending)
9504     {
9505       int ix;
9506       struct linespec_sals *iter;
9507
9508       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9509         breakpoint_sals_to_pc (&iter->sals);
9510     }
9511
9512   /* Fast tracepoints may have additional restrictions on location.  */
9513   if (!pending && type_wanted == bp_fast_tracepoint)
9514     {
9515       int ix;
9516       struct linespec_sals *iter;
9517
9518       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9519         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9520     }
9521
9522   /* Verify that condition can be parsed, before setting any
9523      breakpoints.  Allocate a separate condition expression for each
9524      breakpoint.  */
9525   if (!pending)
9526     {
9527       struct linespec_sals *lsal;
9528
9529       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9530
9531       if (parse_condition_and_thread)
9532         {
9533             char *rest;
9534             /* Here we only parse 'arg' to separate condition
9535                from thread number, so parsing in context of first
9536                sal is OK.  When setting the breakpoint we'll 
9537                re-parse it in context of each sal.  */
9538
9539             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9540                                        &thread, &task, &rest);
9541             if (cond_string)
9542                 make_cleanup (xfree, cond_string);
9543             if (rest)
9544               make_cleanup (xfree, rest);
9545             if (rest)
9546               extra_string = rest;
9547         }
9548       else
9549         {
9550             /* Create a private copy of condition string.  */
9551             if (cond_string)
9552             {
9553                 cond_string = xstrdup (cond_string);
9554                 make_cleanup (xfree, cond_string);
9555             }
9556             /* Create a private copy of any extra string.  */
9557             if (extra_string)
9558               {
9559                 extra_string = xstrdup (extra_string);
9560                 make_cleanup (xfree, extra_string);
9561               }
9562         }
9563
9564       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9565                                    cond_string, extra_string, type_wanted,
9566                                    tempflag ? disp_del : disp_donttouch,
9567                                    thread, task, ignore_count, ops,
9568                                    from_tty, enabled, internal, flags);
9569     }
9570   else
9571     {
9572       struct breakpoint *b;
9573
9574       make_cleanup (xfree, copy_arg);
9575
9576       if (is_tracepoint_type (type_wanted))
9577         {
9578           struct tracepoint *t;
9579
9580           t = XCNEW (struct tracepoint);
9581           b = &t->base;
9582         }
9583       else
9584         b = XNEW (struct breakpoint);
9585
9586       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9587
9588       b->addr_string = copy_arg;
9589       if (parse_condition_and_thread)
9590         b->cond_string = NULL;
9591       else
9592         {
9593           /* Create a private copy of condition string.  */
9594           if (cond_string)
9595             {
9596               cond_string = xstrdup (cond_string);
9597               make_cleanup (xfree, cond_string);
9598             }
9599           b->cond_string = cond_string;
9600         }
9601       b->extra_string = NULL;
9602       b->ignore_count = ignore_count;
9603       b->disposition = tempflag ? disp_del : disp_donttouch;
9604       b->condition_not_parsed = 1;
9605       b->enable_state = enabled ? bp_enabled : bp_disabled;
9606       if ((type_wanted != bp_breakpoint
9607            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9608         b->pspace = current_program_space;
9609
9610       install_breakpoint (internal, b, 0);
9611     }
9612   
9613   if (VEC_length (linespec_sals, canonical.sals) > 1)
9614     {
9615       warning (_("Multiple breakpoints were set.\nUse the "
9616                  "\"delete\" command to delete unwanted breakpoints."));
9617       prev_breakpoint_count = prev_bkpt_count;
9618     }
9619
9620   /* That's it.  Discard the cleanups for data inserted into the
9621      breakpoint.  */
9622   discard_cleanups (bkpt_chain);
9623   /* But cleanup everything else.  */
9624   do_cleanups (old_chain);
9625
9626   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9627   update_global_location_list (1);
9628
9629   return 1;
9630 }
9631
9632 /* Set a breakpoint.
9633    ARG is a string describing breakpoint address,
9634    condition, and thread.
9635    FLAG specifies if a breakpoint is hardware on,
9636    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9637    and BP_TEMPFLAG.  */
9638
9639 static void
9640 break_command_1 (char *arg, int flag, int from_tty)
9641 {
9642   int tempflag = flag & BP_TEMPFLAG;
9643   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9644                              ? bp_hardware_breakpoint
9645                              : bp_breakpoint);
9646   struct breakpoint_ops *ops;
9647   const char *arg_cp = arg;
9648
9649   /* Matching breakpoints on probes.  */
9650   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9651     ops = &bkpt_probe_breakpoint_ops;
9652   else
9653     ops = &bkpt_breakpoint_ops;
9654
9655   create_breakpoint (get_current_arch (),
9656                      arg,
9657                      NULL, 0, NULL, 1 /* parse arg */,
9658                      tempflag, type_wanted,
9659                      0 /* Ignore count */,
9660                      pending_break_support,
9661                      ops,
9662                      from_tty,
9663                      1 /* enabled */,
9664                      0 /* internal */,
9665                      0);
9666 }
9667
9668 /* Helper function for break_command_1 and disassemble_command.  */
9669
9670 void
9671 resolve_sal_pc (struct symtab_and_line *sal)
9672 {
9673   CORE_ADDR pc;
9674
9675   if (sal->pc == 0 && sal->symtab != NULL)
9676     {
9677       if (!find_line_pc (sal->symtab, sal->line, &pc))
9678         error (_("No line %d in file \"%s\"."),
9679                sal->line, sal->symtab->filename);
9680       sal->pc = pc;
9681
9682       /* If this SAL corresponds to a breakpoint inserted using a line
9683          number, then skip the function prologue if necessary.  */
9684       if (sal->explicit_line)
9685         skip_prologue_sal (sal);
9686     }
9687
9688   if (sal->section == 0 && sal->symtab != NULL)
9689     {
9690       struct blockvector *bv;
9691       struct block *b;
9692       struct symbol *sym;
9693
9694       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9695       if (bv != NULL)
9696         {
9697           sym = block_linkage_function (b);
9698           if (sym != NULL)
9699             {
9700               fixup_symbol_section (sym, sal->symtab->objfile);
9701               sal->section = SYMBOL_OBJ_SECTION (sym);
9702             }
9703           else
9704             {
9705               /* It really is worthwhile to have the section, so we'll
9706                  just have to look harder. This case can be executed
9707                  if we have line numbers but no functions (as can
9708                  happen in assembly source).  */
9709
9710               struct minimal_symbol *msym;
9711               struct cleanup *old_chain = save_current_space_and_thread ();
9712
9713               switch_to_program_space_and_thread (sal->pspace);
9714
9715               msym = lookup_minimal_symbol_by_pc (sal->pc);
9716               if (msym)
9717                 sal->section = SYMBOL_OBJ_SECTION (msym);
9718
9719               do_cleanups (old_chain);
9720             }
9721         }
9722     }
9723 }
9724
9725 void
9726 break_command (char *arg, int from_tty)
9727 {
9728   break_command_1 (arg, 0, from_tty);
9729 }
9730
9731 void
9732 tbreak_command (char *arg, int from_tty)
9733 {
9734   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9735 }
9736
9737 static void
9738 hbreak_command (char *arg, int from_tty)
9739 {
9740   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9741 }
9742
9743 static void
9744 thbreak_command (char *arg, int from_tty)
9745 {
9746   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9747 }
9748
9749 static void
9750 stop_command (char *arg, int from_tty)
9751 {
9752   printf_filtered (_("Specify the type of breakpoint to set.\n\
9753 Usage: stop in <function | address>\n\
9754        stop at <line>\n"));
9755 }
9756
9757 static void
9758 stopin_command (char *arg, int from_tty)
9759 {
9760   int badInput = 0;
9761
9762   if (arg == (char *) NULL)
9763     badInput = 1;
9764   else if (*arg != '*')
9765     {
9766       char *argptr = arg;
9767       int hasColon = 0;
9768
9769       /* Look for a ':'.  If this is a line number specification, then
9770          say it is bad, otherwise, it should be an address or
9771          function/method name.  */
9772       while (*argptr && !hasColon)
9773         {
9774           hasColon = (*argptr == ':');
9775           argptr++;
9776         }
9777
9778       if (hasColon)
9779         badInput = (*argptr != ':');    /* Not a class::method */
9780       else
9781         badInput = isdigit (*arg);      /* a simple line number */
9782     }
9783
9784   if (badInput)
9785     printf_filtered (_("Usage: stop in <function | address>\n"));
9786   else
9787     break_command_1 (arg, 0, from_tty);
9788 }
9789
9790 static void
9791 stopat_command (char *arg, int from_tty)
9792 {
9793   int badInput = 0;
9794
9795   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9796     badInput = 1;
9797   else
9798     {
9799       char *argptr = arg;
9800       int hasColon = 0;
9801
9802       /* Look for a ':'.  If there is a '::' then get out, otherwise
9803          it is probably a line number.  */
9804       while (*argptr && !hasColon)
9805         {
9806           hasColon = (*argptr == ':');
9807           argptr++;
9808         }
9809
9810       if (hasColon)
9811         badInput = (*argptr == ':');    /* we have class::method */
9812       else
9813         badInput = !isdigit (*arg);     /* not a line number */
9814     }
9815
9816   if (badInput)
9817     printf_filtered (_("Usage: stop at <line>\n"));
9818   else
9819     break_command_1 (arg, 0, from_tty);
9820 }
9821
9822 void dprintf_command (char *arg, int from_tty);
9823
9824 /* The dynamic printf command is mostly like a regular breakpoint, but
9825    with a prewired command list consisting of a single output command,
9826    built from extra arguments supplied on the dprintf command
9827    line.  */
9828
9829 void
9830 dprintf_command (char *arg, int from_tty)
9831 {
9832   create_breakpoint (get_current_arch (),
9833                      arg,
9834                      NULL, 0, NULL, 1 /* parse arg */,
9835                      0, bp_dprintf,
9836                      0 /* Ignore count */,
9837                      pending_break_support,
9838                      &dprintf_breakpoint_ops,
9839                      from_tty,
9840                      1 /* enabled */,
9841                      0 /* internal */,
9842                      0);
9843 }
9844
9845 static void
9846 agent_printf_command (char *arg, int from_tty)
9847 {
9848   error (_("May only run agent-printf on the target"));
9849 }
9850
9851 /* Implement the "breakpoint_hit" breakpoint_ops method for
9852    ranged breakpoints.  */
9853
9854 static int
9855 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9856                                   struct address_space *aspace,
9857                                   CORE_ADDR bp_addr,
9858                                   const struct target_waitstatus *ws)
9859 {
9860   if (ws->kind != TARGET_WAITKIND_STOPPED
9861       || ws->value.sig != GDB_SIGNAL_TRAP)
9862     return 0;
9863
9864   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9865                                          bl->length, aspace, bp_addr);
9866 }
9867
9868 /* Implement the "resources_needed" breakpoint_ops method for
9869    ranged breakpoints.  */
9870
9871 static int
9872 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9873 {
9874   return target_ranged_break_num_registers ();
9875 }
9876
9877 /* Implement the "print_it" breakpoint_ops method for
9878    ranged breakpoints.  */
9879
9880 static enum print_stop_action
9881 print_it_ranged_breakpoint (bpstat bs)
9882 {
9883   struct breakpoint *b = bs->breakpoint_at;
9884   struct bp_location *bl = b->loc;
9885   struct ui_out *uiout = current_uiout;
9886
9887   gdb_assert (b->type == bp_hardware_breakpoint);
9888
9889   /* Ranged breakpoints have only one location.  */
9890   gdb_assert (bl && bl->next == NULL);
9891
9892   annotate_breakpoint (b->number);
9893   if (b->disposition == disp_del)
9894     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9895   else
9896     ui_out_text (uiout, "\nRanged breakpoint ");
9897   if (ui_out_is_mi_like_p (uiout))
9898     {
9899       ui_out_field_string (uiout, "reason",
9900                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9901       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9902     }
9903   ui_out_field_int (uiout, "bkptno", b->number);
9904   ui_out_text (uiout, ", ");
9905
9906   return PRINT_SRC_AND_LOC;
9907 }
9908
9909 /* Implement the "print_one" breakpoint_ops method for
9910    ranged breakpoints.  */
9911
9912 static void
9913 print_one_ranged_breakpoint (struct breakpoint *b,
9914                              struct bp_location **last_loc)
9915 {
9916   struct bp_location *bl = b->loc;
9917   struct value_print_options opts;
9918   struct ui_out *uiout = current_uiout;
9919
9920   /* Ranged breakpoints have only one location.  */
9921   gdb_assert (bl && bl->next == NULL);
9922
9923   get_user_print_options (&opts);
9924
9925   if (opts.addressprint)
9926     /* We don't print the address range here, it will be printed later
9927        by print_one_detail_ranged_breakpoint.  */
9928     ui_out_field_skip (uiout, "addr");
9929   annotate_field (5);
9930   print_breakpoint_location (b, bl);
9931   *last_loc = bl;
9932 }
9933
9934 /* Implement the "print_one_detail" breakpoint_ops method for
9935    ranged breakpoints.  */
9936
9937 static void
9938 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9939                                     struct ui_out *uiout)
9940 {
9941   CORE_ADDR address_start, address_end;
9942   struct bp_location *bl = b->loc;
9943   struct ui_file *stb = mem_fileopen ();
9944   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
9945
9946   gdb_assert (bl);
9947
9948   address_start = bl->address;
9949   address_end = address_start + bl->length - 1;
9950
9951   ui_out_text (uiout, "\taddress range: ");
9952   fprintf_unfiltered (stb, "[%s, %s]",
9953                       print_core_address (bl->gdbarch, address_start),
9954                       print_core_address (bl->gdbarch, address_end));
9955   ui_out_field_stream (uiout, "addr", stb);
9956   ui_out_text (uiout, "\n");
9957
9958   do_cleanups (cleanup);
9959 }
9960
9961 /* Implement the "print_mention" breakpoint_ops method for
9962    ranged breakpoints.  */
9963
9964 static void
9965 print_mention_ranged_breakpoint (struct breakpoint *b)
9966 {
9967   struct bp_location *bl = b->loc;
9968   struct ui_out *uiout = current_uiout;
9969
9970   gdb_assert (bl);
9971   gdb_assert (b->type == bp_hardware_breakpoint);
9972
9973   if (ui_out_is_mi_like_p (uiout))
9974     return;
9975
9976   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9977                    b->number, paddress (bl->gdbarch, bl->address),
9978                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9979 }
9980
9981 /* Implement the "print_recreate" breakpoint_ops method for
9982    ranged breakpoints.  */
9983
9984 static void
9985 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9986 {
9987   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9988                       b->addr_string_range_end);
9989   print_recreate_thread (b, fp);
9990 }
9991
9992 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9993
9994 static struct breakpoint_ops ranged_breakpoint_ops;
9995
9996 /* Find the address where the end of the breakpoint range should be
9997    placed, given the SAL of the end of the range.  This is so that if
9998    the user provides a line number, the end of the range is set to the
9999    last instruction of the given line.  */
10000
10001 static CORE_ADDR
10002 find_breakpoint_range_end (struct symtab_and_line sal)
10003 {
10004   CORE_ADDR end;
10005
10006   /* If the user provided a PC value, use it.  Otherwise,
10007      find the address of the end of the given location.  */
10008   if (sal.explicit_pc)
10009     end = sal.pc;
10010   else
10011     {
10012       int ret;
10013       CORE_ADDR start;
10014
10015       ret = find_line_pc_range (sal, &start, &end);
10016       if (!ret)
10017         error (_("Could not find location of the end of the range."));
10018
10019       /* find_line_pc_range returns the start of the next line.  */
10020       end--;
10021     }
10022
10023   return end;
10024 }
10025
10026 /* Implement the "break-range" CLI command.  */
10027
10028 static void
10029 break_range_command (char *arg, int from_tty)
10030 {
10031   char *arg_start, *addr_string_start, *addr_string_end;
10032   struct linespec_result canonical_start, canonical_end;
10033   int bp_count, can_use_bp, length;
10034   CORE_ADDR end;
10035   struct breakpoint *b;
10036   struct symtab_and_line sal_start, sal_end;
10037   struct cleanup *cleanup_bkpt;
10038   struct linespec_sals *lsal_start, *lsal_end;
10039
10040   /* We don't support software ranged breakpoints.  */
10041   if (target_ranged_break_num_registers () < 0)
10042     error (_("This target does not support hardware ranged breakpoints."));
10043
10044   bp_count = hw_breakpoint_used_count ();
10045   bp_count += target_ranged_break_num_registers ();
10046   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10047                                                    bp_count, 0);
10048   if (can_use_bp < 0)
10049     error (_("Hardware breakpoints used exceeds limit."));
10050
10051   arg = skip_spaces (arg);
10052   if (arg == NULL || arg[0] == '\0')
10053     error(_("No address range specified."));
10054
10055   init_linespec_result (&canonical_start);
10056
10057   arg_start = arg;
10058   parse_breakpoint_sals (&arg, &canonical_start);
10059
10060   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10061
10062   if (arg[0] != ',')
10063     error (_("Too few arguments."));
10064   else if (VEC_empty (linespec_sals, canonical_start.sals))
10065     error (_("Could not find location of the beginning of the range."));
10066
10067   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10068
10069   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10070       || lsal_start->sals.nelts != 1)
10071     error (_("Cannot create a ranged breakpoint with multiple locations."));
10072
10073   sal_start = lsal_start->sals.sals[0];
10074   addr_string_start = savestring (arg_start, arg - arg_start);
10075   make_cleanup (xfree, addr_string_start);
10076
10077   arg++;        /* Skip the comma.  */
10078   arg = skip_spaces (arg);
10079
10080   /* Parse the end location.  */
10081
10082   init_linespec_result (&canonical_end);
10083   arg_start = arg;
10084
10085   /* We call decode_line_full directly here instead of using
10086      parse_breakpoint_sals because we need to specify the start location's
10087      symtab and line as the default symtab and line for the end of the
10088      range.  This makes it possible to have ranges like "foo.c:27, +14",
10089      where +14 means 14 lines from the start location.  */
10090   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10091                     sal_start.symtab, sal_start.line,
10092                     &canonical_end, NULL, NULL);
10093
10094   make_cleanup_destroy_linespec_result (&canonical_end);
10095
10096   if (VEC_empty (linespec_sals, canonical_end.sals))
10097     error (_("Could not find location of the end of the range."));
10098
10099   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10100   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10101       || lsal_end->sals.nelts != 1)
10102     error (_("Cannot create a ranged breakpoint with multiple locations."));
10103
10104   sal_end = lsal_end->sals.sals[0];
10105   addr_string_end = savestring (arg_start, arg - arg_start);
10106   make_cleanup (xfree, addr_string_end);
10107
10108   end = find_breakpoint_range_end (sal_end);
10109   if (sal_start.pc > end)
10110     error (_("Invalid address range, end precedes start."));
10111
10112   length = end - sal_start.pc + 1;
10113   if (length < 0)
10114     /* Length overflowed.  */
10115     error (_("Address range too large."));
10116   else if (length == 1)
10117     {
10118       /* This range is simple enough to be handled by
10119          the `hbreak' command.  */
10120       hbreak_command (addr_string_start, 1);
10121
10122       do_cleanups (cleanup_bkpt);
10123
10124       return;
10125     }
10126
10127   /* Now set up the breakpoint.  */
10128   b = set_raw_breakpoint (get_current_arch (), sal_start,
10129                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10130   set_breakpoint_count (breakpoint_count + 1);
10131   b->number = breakpoint_count;
10132   b->disposition = disp_donttouch;
10133   b->addr_string = xstrdup (addr_string_start);
10134   b->addr_string_range_end = xstrdup (addr_string_end);
10135   b->loc->length = length;
10136
10137   do_cleanups (cleanup_bkpt);
10138
10139   mention (b);
10140   observer_notify_breakpoint_created (b);
10141   update_global_location_list (1);
10142 }
10143
10144 /*  Return non-zero if EXP is verified as constant.  Returned zero
10145     means EXP is variable.  Also the constant detection may fail for
10146     some constant expressions and in such case still falsely return
10147     zero.  */
10148
10149 static int
10150 watchpoint_exp_is_const (const struct expression *exp)
10151 {
10152   int i = exp->nelts;
10153
10154   while (i > 0)
10155     {
10156       int oplenp, argsp;
10157
10158       /* We are only interested in the descriptor of each element.  */
10159       operator_length (exp, i, &oplenp, &argsp);
10160       i -= oplenp;
10161
10162       switch (exp->elts[i].opcode)
10163         {
10164         case BINOP_ADD:
10165         case BINOP_SUB:
10166         case BINOP_MUL:
10167         case BINOP_DIV:
10168         case BINOP_REM:
10169         case BINOP_MOD:
10170         case BINOP_LSH:
10171         case BINOP_RSH:
10172         case BINOP_LOGICAL_AND:
10173         case BINOP_LOGICAL_OR:
10174         case BINOP_BITWISE_AND:
10175         case BINOP_BITWISE_IOR:
10176         case BINOP_BITWISE_XOR:
10177         case BINOP_EQUAL:
10178         case BINOP_NOTEQUAL:
10179         case BINOP_LESS:
10180         case BINOP_GTR:
10181         case BINOP_LEQ:
10182         case BINOP_GEQ:
10183         case BINOP_REPEAT:
10184         case BINOP_COMMA:
10185         case BINOP_EXP:
10186         case BINOP_MIN:
10187         case BINOP_MAX:
10188         case BINOP_INTDIV:
10189         case BINOP_CONCAT:
10190         case BINOP_IN:
10191         case BINOP_RANGE:
10192         case TERNOP_COND:
10193         case TERNOP_SLICE:
10194
10195         case OP_LONG:
10196         case OP_DOUBLE:
10197         case OP_DECFLOAT:
10198         case OP_LAST:
10199         case OP_COMPLEX:
10200         case OP_STRING:
10201         case OP_ARRAY:
10202         case OP_TYPE:
10203         case OP_TYPEOF:
10204         case OP_DECLTYPE:
10205         case OP_NAME:
10206         case OP_OBJC_NSSTRING:
10207
10208         case UNOP_NEG:
10209         case UNOP_LOGICAL_NOT:
10210         case UNOP_COMPLEMENT:
10211         case UNOP_ADDR:
10212         case UNOP_HIGH:
10213         case UNOP_CAST:
10214
10215         case UNOP_CAST_TYPE:
10216         case UNOP_REINTERPRET_CAST:
10217         case UNOP_DYNAMIC_CAST:
10218           /* Unary, binary and ternary operators: We have to check
10219              their operands.  If they are constant, then so is the
10220              result of that operation.  For instance, if A and B are
10221              determined to be constants, then so is "A + B".
10222
10223              UNOP_IND is one exception to the rule above, because the
10224              value of *ADDR is not necessarily a constant, even when
10225              ADDR is.  */
10226           break;
10227
10228         case OP_VAR_VALUE:
10229           /* Check whether the associated symbol is a constant.
10230
10231              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10232              possible that a buggy compiler could mark a variable as
10233              constant even when it is not, and TYPE_CONST would return
10234              true in this case, while SYMBOL_CLASS wouldn't.
10235
10236              We also have to check for function symbols because they
10237              are always constant.  */
10238           {
10239             struct symbol *s = exp->elts[i + 2].symbol;
10240
10241             if (SYMBOL_CLASS (s) != LOC_BLOCK
10242                 && SYMBOL_CLASS (s) != LOC_CONST
10243                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10244               return 0;
10245             break;
10246           }
10247
10248         /* The default action is to return 0 because we are using
10249            the optimistic approach here: If we don't know something,
10250            then it is not a constant.  */
10251         default:
10252           return 0;
10253         }
10254     }
10255
10256   return 1;
10257 }
10258
10259 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10260
10261 static void
10262 dtor_watchpoint (struct breakpoint *self)
10263 {
10264   struct watchpoint *w = (struct watchpoint *) self;
10265
10266   xfree (w->cond_exp);
10267   xfree (w->exp);
10268   xfree (w->exp_string);
10269   xfree (w->exp_string_reparse);
10270   value_free (w->val);
10271
10272   base_breakpoint_ops.dtor (self);
10273 }
10274
10275 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10276
10277 static void
10278 re_set_watchpoint (struct breakpoint *b)
10279 {
10280   struct watchpoint *w = (struct watchpoint *) b;
10281
10282   /* Watchpoint can be either on expression using entirely global
10283      variables, or it can be on local variables.
10284
10285      Watchpoints of the first kind are never auto-deleted, and even
10286      persist across program restarts.  Since they can use variables
10287      from shared libraries, we need to reparse expression as libraries
10288      are loaded and unloaded.
10289
10290      Watchpoints on local variables can also change meaning as result
10291      of solib event.  For example, if a watchpoint uses both a local
10292      and a global variables in expression, it's a local watchpoint,
10293      but unloading of a shared library will make the expression
10294      invalid.  This is not a very common use case, but we still
10295      re-evaluate expression, to avoid surprises to the user.
10296
10297      Note that for local watchpoints, we re-evaluate it only if
10298      watchpoints frame id is still valid.  If it's not, it means the
10299      watchpoint is out of scope and will be deleted soon.  In fact,
10300      I'm not sure we'll ever be called in this case.
10301
10302      If a local watchpoint's frame id is still valid, then
10303      w->exp_valid_block is likewise valid, and we can safely use it.
10304
10305      Don't do anything about disabled watchpoints, since they will be
10306      reevaluated again when enabled.  */
10307   update_watchpoint (w, 1 /* reparse */);
10308 }
10309
10310 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10311
10312 static int
10313 insert_watchpoint (struct bp_location *bl)
10314 {
10315   struct watchpoint *w = (struct watchpoint *) bl->owner;
10316   int length = w->exact ? 1 : bl->length;
10317
10318   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10319                                    w->cond_exp);
10320 }
10321
10322 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10323
10324 static int
10325 remove_watchpoint (struct bp_location *bl)
10326 {
10327   struct watchpoint *w = (struct watchpoint *) bl->owner;
10328   int length = w->exact ? 1 : bl->length;
10329
10330   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10331                                    w->cond_exp);
10332 }
10333
10334 static int
10335 breakpoint_hit_watchpoint (const struct bp_location *bl,
10336                            struct address_space *aspace, CORE_ADDR bp_addr,
10337                            const struct target_waitstatus *ws)
10338 {
10339   struct breakpoint *b = bl->owner;
10340   struct watchpoint *w = (struct watchpoint *) b;
10341
10342   /* Continuable hardware watchpoints are treated as non-existent if the
10343      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10344      some data address).  Otherwise gdb won't stop on a break instruction
10345      in the code (not from a breakpoint) when a hardware watchpoint has
10346      been defined.  Also skip watchpoints which we know did not trigger
10347      (did not match the data address).  */
10348   if (is_hardware_watchpoint (b)
10349       && w->watchpoint_triggered == watch_triggered_no)
10350     return 0;
10351
10352   return 1;
10353 }
10354
10355 static void
10356 check_status_watchpoint (bpstat bs)
10357 {
10358   gdb_assert (is_watchpoint (bs->breakpoint_at));
10359
10360   bpstat_check_watchpoint (bs);
10361 }
10362
10363 /* Implement the "resources_needed" breakpoint_ops method for
10364    hardware watchpoints.  */
10365
10366 static int
10367 resources_needed_watchpoint (const struct bp_location *bl)
10368 {
10369   struct watchpoint *w = (struct watchpoint *) bl->owner;
10370   int length = w->exact? 1 : bl->length;
10371
10372   return target_region_ok_for_hw_watchpoint (bl->address, length);
10373 }
10374
10375 /* Implement the "works_in_software_mode" breakpoint_ops method for
10376    hardware watchpoints.  */
10377
10378 static int
10379 works_in_software_mode_watchpoint (const struct breakpoint *b)
10380 {
10381   /* Read and access watchpoints only work with hardware support.  */
10382   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10383 }
10384
10385 static enum print_stop_action
10386 print_it_watchpoint (bpstat bs)
10387 {
10388   struct cleanup *old_chain;
10389   struct breakpoint *b;
10390   const struct bp_location *bl;
10391   struct ui_file *stb;
10392   enum print_stop_action result;
10393   struct watchpoint *w;
10394   struct ui_out *uiout = current_uiout;
10395
10396   gdb_assert (bs->bp_location_at != NULL);
10397
10398   bl = bs->bp_location_at;
10399   b = bs->breakpoint_at;
10400   w = (struct watchpoint *) b;
10401
10402   stb = mem_fileopen ();
10403   old_chain = make_cleanup_ui_file_delete (stb);
10404
10405   switch (b->type)
10406     {
10407     case bp_watchpoint:
10408     case bp_hardware_watchpoint:
10409       annotate_watchpoint (b->number);
10410       if (ui_out_is_mi_like_p (uiout))
10411         ui_out_field_string
10412           (uiout, "reason",
10413            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10414       mention (b);
10415       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10416       ui_out_text (uiout, "\nOld value = ");
10417       watchpoint_value_print (bs->old_val, stb);
10418       ui_out_field_stream (uiout, "old", stb);
10419       ui_out_text (uiout, "\nNew value = ");
10420       watchpoint_value_print (w->val, stb);
10421       ui_out_field_stream (uiout, "new", stb);
10422       ui_out_text (uiout, "\n");
10423       /* More than one watchpoint may have been triggered.  */
10424       result = PRINT_UNKNOWN;
10425       break;
10426
10427     case bp_read_watchpoint:
10428       if (ui_out_is_mi_like_p (uiout))
10429         ui_out_field_string
10430           (uiout, "reason",
10431            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10432       mention (b);
10433       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10434       ui_out_text (uiout, "\nValue = ");
10435       watchpoint_value_print (w->val, stb);
10436       ui_out_field_stream (uiout, "value", stb);
10437       ui_out_text (uiout, "\n");
10438       result = PRINT_UNKNOWN;
10439       break;
10440
10441     case bp_access_watchpoint:
10442       if (bs->old_val != NULL)
10443         {
10444           annotate_watchpoint (b->number);
10445           if (ui_out_is_mi_like_p (uiout))
10446             ui_out_field_string
10447               (uiout, "reason",
10448                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10449           mention (b);
10450           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10451           ui_out_text (uiout, "\nOld value = ");
10452           watchpoint_value_print (bs->old_val, stb);
10453           ui_out_field_stream (uiout, "old", stb);
10454           ui_out_text (uiout, "\nNew value = ");
10455         }
10456       else
10457         {
10458           mention (b);
10459           if (ui_out_is_mi_like_p (uiout))
10460             ui_out_field_string
10461               (uiout, "reason",
10462                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10463           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10464           ui_out_text (uiout, "\nValue = ");
10465         }
10466       watchpoint_value_print (w->val, stb);
10467       ui_out_field_stream (uiout, "new", stb);
10468       ui_out_text (uiout, "\n");
10469       result = PRINT_UNKNOWN;
10470       break;
10471     default:
10472       result = PRINT_UNKNOWN;
10473     }
10474
10475   do_cleanups (old_chain);
10476   return result;
10477 }
10478
10479 /* Implement the "print_mention" breakpoint_ops method for hardware
10480    watchpoints.  */
10481
10482 static void
10483 print_mention_watchpoint (struct breakpoint *b)
10484 {
10485   struct cleanup *ui_out_chain;
10486   struct watchpoint *w = (struct watchpoint *) b;
10487   struct ui_out *uiout = current_uiout;
10488
10489   switch (b->type)
10490     {
10491     case bp_watchpoint:
10492       ui_out_text (uiout, "Watchpoint ");
10493       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10494       break;
10495     case bp_hardware_watchpoint:
10496       ui_out_text (uiout, "Hardware watchpoint ");
10497       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10498       break;
10499     case bp_read_watchpoint:
10500       ui_out_text (uiout, "Hardware read watchpoint ");
10501       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10502       break;
10503     case bp_access_watchpoint:
10504       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10505       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10506       break;
10507     default:
10508       internal_error (__FILE__, __LINE__,
10509                       _("Invalid hardware watchpoint type."));
10510     }
10511
10512   ui_out_field_int (uiout, "number", b->number);
10513   ui_out_text (uiout, ": ");
10514   ui_out_field_string (uiout, "exp", w->exp_string);
10515   do_cleanups (ui_out_chain);
10516 }
10517
10518 /* Implement the "print_recreate" breakpoint_ops method for
10519    watchpoints.  */
10520
10521 static void
10522 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10523 {
10524   struct watchpoint *w = (struct watchpoint *) b;
10525
10526   switch (b->type)
10527     {
10528     case bp_watchpoint:
10529     case bp_hardware_watchpoint:
10530       fprintf_unfiltered (fp, "watch");
10531       break;
10532     case bp_read_watchpoint:
10533       fprintf_unfiltered (fp, "rwatch");
10534       break;
10535     case bp_access_watchpoint:
10536       fprintf_unfiltered (fp, "awatch");
10537       break;
10538     default:
10539       internal_error (__FILE__, __LINE__,
10540                       _("Invalid watchpoint type."));
10541     }
10542
10543   fprintf_unfiltered (fp, " %s", w->exp_string);
10544   print_recreate_thread (b, fp);
10545 }
10546
10547 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10548
10549 static struct breakpoint_ops watchpoint_breakpoint_ops;
10550
10551 /* Implement the "insert" breakpoint_ops method for
10552    masked hardware watchpoints.  */
10553
10554 static int
10555 insert_masked_watchpoint (struct bp_location *bl)
10556 {
10557   struct watchpoint *w = (struct watchpoint *) bl->owner;
10558
10559   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10560                                         bl->watchpoint_type);
10561 }
10562
10563 /* Implement the "remove" breakpoint_ops method for
10564    masked hardware watchpoints.  */
10565
10566 static int
10567 remove_masked_watchpoint (struct bp_location *bl)
10568 {
10569   struct watchpoint *w = (struct watchpoint *) bl->owner;
10570
10571   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10572                                         bl->watchpoint_type);
10573 }
10574
10575 /* Implement the "resources_needed" breakpoint_ops method for
10576    masked hardware watchpoints.  */
10577
10578 static int
10579 resources_needed_masked_watchpoint (const struct bp_location *bl)
10580 {
10581   struct watchpoint *w = (struct watchpoint *) bl->owner;
10582
10583   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10584 }
10585
10586 /* Implement the "works_in_software_mode" breakpoint_ops method for
10587    masked hardware watchpoints.  */
10588
10589 static int
10590 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10591 {
10592   return 0;
10593 }
10594
10595 /* Implement the "print_it" breakpoint_ops method for
10596    masked hardware watchpoints.  */
10597
10598 static enum print_stop_action
10599 print_it_masked_watchpoint (bpstat bs)
10600 {
10601   struct breakpoint *b = bs->breakpoint_at;
10602   struct ui_out *uiout = current_uiout;
10603
10604   /* Masked watchpoints have only one location.  */
10605   gdb_assert (b->loc && b->loc->next == NULL);
10606
10607   switch (b->type)
10608     {
10609     case bp_hardware_watchpoint:
10610       annotate_watchpoint (b->number);
10611       if (ui_out_is_mi_like_p (uiout))
10612         ui_out_field_string
10613           (uiout, "reason",
10614            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10615       break;
10616
10617     case bp_read_watchpoint:
10618       if (ui_out_is_mi_like_p (uiout))
10619         ui_out_field_string
10620           (uiout, "reason",
10621            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10622       break;
10623
10624     case bp_access_watchpoint:
10625       if (ui_out_is_mi_like_p (uiout))
10626         ui_out_field_string
10627           (uiout, "reason",
10628            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10629       break;
10630     default:
10631       internal_error (__FILE__, __LINE__,
10632                       _("Invalid hardware watchpoint type."));
10633     }
10634
10635   mention (b);
10636   ui_out_text (uiout, _("\n\
10637 Check the underlying instruction at PC for the memory\n\
10638 address and value which triggered this watchpoint.\n"));
10639   ui_out_text (uiout, "\n");
10640
10641   /* More than one watchpoint may have been triggered.  */
10642   return PRINT_UNKNOWN;
10643 }
10644
10645 /* Implement the "print_one_detail" breakpoint_ops method for
10646    masked hardware watchpoints.  */
10647
10648 static void
10649 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10650                                     struct ui_out *uiout)
10651 {
10652   struct watchpoint *w = (struct watchpoint *) b;
10653
10654   /* Masked watchpoints have only one location.  */
10655   gdb_assert (b->loc && b->loc->next == NULL);
10656
10657   ui_out_text (uiout, "\tmask ");
10658   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10659   ui_out_text (uiout, "\n");
10660 }
10661
10662 /* Implement the "print_mention" breakpoint_ops method for
10663    masked hardware watchpoints.  */
10664
10665 static void
10666 print_mention_masked_watchpoint (struct breakpoint *b)
10667 {
10668   struct watchpoint *w = (struct watchpoint *) b;
10669   struct ui_out *uiout = current_uiout;
10670   struct cleanup *ui_out_chain;
10671
10672   switch (b->type)
10673     {
10674     case bp_hardware_watchpoint:
10675       ui_out_text (uiout, "Masked hardware watchpoint ");
10676       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10677       break;
10678     case bp_read_watchpoint:
10679       ui_out_text (uiout, "Masked hardware read watchpoint ");
10680       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10681       break;
10682     case bp_access_watchpoint:
10683       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10684       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10685       break;
10686     default:
10687       internal_error (__FILE__, __LINE__,
10688                       _("Invalid hardware watchpoint type."));
10689     }
10690
10691   ui_out_field_int (uiout, "number", b->number);
10692   ui_out_text (uiout, ": ");
10693   ui_out_field_string (uiout, "exp", w->exp_string);
10694   do_cleanups (ui_out_chain);
10695 }
10696
10697 /* Implement the "print_recreate" breakpoint_ops method for
10698    masked hardware watchpoints.  */
10699
10700 static void
10701 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10702 {
10703   struct watchpoint *w = (struct watchpoint *) b;
10704   char tmp[40];
10705
10706   switch (b->type)
10707     {
10708     case bp_hardware_watchpoint:
10709       fprintf_unfiltered (fp, "watch");
10710       break;
10711     case bp_read_watchpoint:
10712       fprintf_unfiltered (fp, "rwatch");
10713       break;
10714     case bp_access_watchpoint:
10715       fprintf_unfiltered (fp, "awatch");
10716       break;
10717     default:
10718       internal_error (__FILE__, __LINE__,
10719                       _("Invalid hardware watchpoint type."));
10720     }
10721
10722   sprintf_vma (tmp, w->hw_wp_mask);
10723   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10724   print_recreate_thread (b, fp);
10725 }
10726
10727 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10728
10729 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10730
10731 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10732
10733 static int
10734 is_masked_watchpoint (const struct breakpoint *b)
10735 {
10736   return b->ops == &masked_watchpoint_breakpoint_ops;
10737 }
10738
10739 /* accessflag:  hw_write:  watch write, 
10740                 hw_read:   watch read, 
10741                 hw_access: watch access (read or write) */
10742 static void
10743 watch_command_1 (char *arg, int accessflag, int from_tty,
10744                  int just_location, int internal)
10745 {
10746   volatile struct gdb_exception e;
10747   struct breakpoint *b, *scope_breakpoint = NULL;
10748   struct expression *exp;
10749   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10750   struct value *val, *mark, *result;
10751   struct frame_info *frame;
10752   char *exp_start = NULL;
10753   char *exp_end = NULL;
10754   char *tok, *end_tok;
10755   int toklen = -1;
10756   char *cond_start = NULL;
10757   char *cond_end = NULL;
10758   enum bptype bp_type;
10759   int thread = -1;
10760   int pc = 0;
10761   /* Flag to indicate whether we are going to use masks for
10762      the hardware watchpoint.  */
10763   int use_mask = 0;
10764   CORE_ADDR mask = 0;
10765   struct watchpoint *w;
10766
10767   /* Make sure that we actually have parameters to parse.  */
10768   if (arg != NULL && arg[0] != '\0')
10769     {
10770       char *value_start;
10771
10772       /* Look for "parameter value" pairs at the end
10773          of the arguments string.  */
10774       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10775         {
10776           /* Skip whitespace at the end of the argument list.  */
10777           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10778             tok--;
10779
10780           /* Find the beginning of the last token.
10781              This is the value of the parameter.  */
10782           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10783             tok--;
10784           value_start = tok + 1;
10785
10786           /* Skip whitespace.  */
10787           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10788             tok--;
10789
10790           end_tok = tok;
10791
10792           /* Find the beginning of the second to last token.
10793              This is the parameter itself.  */
10794           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10795             tok--;
10796           tok++;
10797           toklen = end_tok - tok + 1;
10798
10799           if (toklen == 6 && !strncmp (tok, "thread", 6))
10800             {
10801               /* At this point we've found a "thread" token, which means
10802                  the user is trying to set a watchpoint that triggers
10803                  only in a specific thread.  */
10804               char *endp;
10805
10806               if (thread != -1)
10807                 error(_("You can specify only one thread."));
10808
10809               /* Extract the thread ID from the next token.  */
10810               thread = strtol (value_start, &endp, 0);
10811
10812               /* Check if the user provided a valid numeric value for the
10813                  thread ID.  */
10814               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10815                 error (_("Invalid thread ID specification %s."), value_start);
10816
10817               /* Check if the thread actually exists.  */
10818               if (!valid_thread_id (thread))
10819                 invalid_thread_id_error (thread);
10820             }
10821           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10822             {
10823               /* We've found a "mask" token, which means the user wants to
10824                  create a hardware watchpoint that is going to have the mask
10825                  facility.  */
10826               struct value *mask_value, *mark;
10827
10828               if (use_mask)
10829                 error(_("You can specify only one mask."));
10830
10831               use_mask = just_location = 1;
10832
10833               mark = value_mark ();
10834               mask_value = parse_to_comma_and_eval (&value_start);
10835               mask = value_as_address (mask_value);
10836               value_free_to_mark (mark);
10837             }
10838           else
10839             /* We didn't recognize what we found.  We should stop here.  */
10840             break;
10841
10842           /* Truncate the string and get rid of the "parameter value" pair before
10843              the arguments string is parsed by the parse_exp_1 function.  */
10844           *tok = '\0';
10845         }
10846     }
10847
10848   /* Parse the rest of the arguments.  */
10849   innermost_block = NULL;
10850   exp_start = arg;
10851   exp = parse_exp_1 (&arg, 0, 0, 0);
10852   exp_end = arg;
10853   /* Remove trailing whitespace from the expression before saving it.
10854      This makes the eventual display of the expression string a bit
10855      prettier.  */
10856   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10857     --exp_end;
10858
10859   /* Checking if the expression is not constant.  */
10860   if (watchpoint_exp_is_const (exp))
10861     {
10862       int len;
10863
10864       len = exp_end - exp_start;
10865       while (len > 0 && isspace (exp_start[len - 1]))
10866         len--;
10867       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10868     }
10869
10870   exp_valid_block = innermost_block;
10871   mark = value_mark ();
10872   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10873
10874   if (just_location)
10875     {
10876       int ret;
10877
10878       exp_valid_block = NULL;
10879       val = value_addr (result);
10880       release_value (val);
10881       value_free_to_mark (mark);
10882
10883       if (use_mask)
10884         {
10885           ret = target_masked_watch_num_registers (value_as_address (val),
10886                                                    mask);
10887           if (ret == -1)
10888             error (_("This target does not support masked watchpoints."));
10889           else if (ret == -2)
10890             error (_("Invalid mask or memory region."));
10891         }
10892     }
10893   else if (val != NULL)
10894     release_value (val);
10895
10896   tok = skip_spaces (arg);
10897   end_tok = skip_to_space (tok);
10898
10899   toklen = end_tok - tok;
10900   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10901     {
10902       struct expression *cond;
10903
10904       innermost_block = NULL;
10905       tok = cond_start = end_tok + 1;
10906       cond = parse_exp_1 (&tok, 0, 0, 0);
10907
10908       /* The watchpoint expression may not be local, but the condition
10909          may still be.  E.g.: `watch global if local > 0'.  */
10910       cond_exp_valid_block = innermost_block;
10911
10912       xfree (cond);
10913       cond_end = tok;
10914     }
10915   if (*tok)
10916     error (_("Junk at end of command."));
10917
10918   if (accessflag == hw_read)
10919     bp_type = bp_read_watchpoint;
10920   else if (accessflag == hw_access)
10921     bp_type = bp_access_watchpoint;
10922   else
10923     bp_type = bp_hardware_watchpoint;
10924
10925   frame = block_innermost_frame (exp_valid_block);
10926
10927   /* If the expression is "local", then set up a "watchpoint scope"
10928      breakpoint at the point where we've left the scope of the watchpoint
10929      expression.  Create the scope breakpoint before the watchpoint, so
10930      that we will encounter it first in bpstat_stop_status.  */
10931   if (exp_valid_block && frame)
10932     {
10933       if (frame_id_p (frame_unwind_caller_id (frame)))
10934         {
10935           scope_breakpoint
10936             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10937                                           frame_unwind_caller_pc (frame),
10938                                           bp_watchpoint_scope,
10939                                           &momentary_breakpoint_ops);
10940
10941           scope_breakpoint->enable_state = bp_enabled;
10942
10943           /* Automatically delete the breakpoint when it hits.  */
10944           scope_breakpoint->disposition = disp_del;
10945
10946           /* Only break in the proper frame (help with recursion).  */
10947           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10948
10949           /* Set the address at which we will stop.  */
10950           scope_breakpoint->loc->gdbarch
10951             = frame_unwind_caller_arch (frame);
10952           scope_breakpoint->loc->requested_address
10953             = frame_unwind_caller_pc (frame);
10954           scope_breakpoint->loc->address
10955             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10956                                          scope_breakpoint->loc->requested_address,
10957                                          scope_breakpoint->type);
10958         }
10959     }
10960
10961   /* Now set up the breakpoint.  */
10962
10963   w = XCNEW (struct watchpoint);
10964   b = &w->base;
10965   if (use_mask)
10966     init_raw_breakpoint_without_location (b, NULL, bp_type,
10967                                           &masked_watchpoint_breakpoint_ops);
10968   else
10969     init_raw_breakpoint_without_location (b, NULL, bp_type,
10970                                           &watchpoint_breakpoint_ops);
10971   b->thread = thread;
10972   b->disposition = disp_donttouch;
10973   b->pspace = current_program_space;
10974   w->exp = exp;
10975   w->exp_valid_block = exp_valid_block;
10976   w->cond_exp_valid_block = cond_exp_valid_block;
10977   if (just_location)
10978     {
10979       struct type *t = value_type (val);
10980       CORE_ADDR addr = value_as_address (val);
10981       char *name;
10982
10983       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10984       name = type_to_string (t);
10985
10986       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10987                                           core_addr_to_string (addr));
10988       xfree (name);
10989
10990       w->exp_string = xstrprintf ("-location %.*s",
10991                                   (int) (exp_end - exp_start), exp_start);
10992
10993       /* The above expression is in C.  */
10994       b->language = language_c;
10995     }
10996   else
10997     w->exp_string = savestring (exp_start, exp_end - exp_start);
10998
10999   if (use_mask)
11000     {
11001       w->hw_wp_mask = mask;
11002     }
11003   else
11004     {
11005       w->val = val;
11006       w->val_valid = 1;
11007     }
11008
11009   if (cond_start)
11010     b->cond_string = savestring (cond_start, cond_end - cond_start);
11011   else
11012     b->cond_string = 0;
11013
11014   if (frame)
11015     {
11016       w->watchpoint_frame = get_frame_id (frame);
11017       w->watchpoint_thread = inferior_ptid;
11018     }
11019   else
11020     {
11021       w->watchpoint_frame = null_frame_id;
11022       w->watchpoint_thread = null_ptid;
11023     }
11024
11025   if (scope_breakpoint != NULL)
11026     {
11027       /* The scope breakpoint is related to the watchpoint.  We will
11028          need to act on them together.  */
11029       b->related_breakpoint = scope_breakpoint;
11030       scope_breakpoint->related_breakpoint = b;
11031     }
11032
11033   if (!just_location)
11034     value_free_to_mark (mark);
11035
11036   TRY_CATCH (e, RETURN_MASK_ALL)
11037     {
11038       /* Finally update the new watchpoint.  This creates the locations
11039          that should be inserted.  */
11040       update_watchpoint (w, 1);
11041     }
11042   if (e.reason < 0)
11043     {
11044       delete_breakpoint (b);
11045       throw_exception (e);
11046     }
11047
11048   install_breakpoint (internal, b, 1);
11049 }
11050
11051 /* Return count of debug registers needed to watch the given expression.
11052    If the watchpoint cannot be handled in hardware return zero.  */
11053
11054 static int
11055 can_use_hardware_watchpoint (struct value *v)
11056 {
11057   int found_memory_cnt = 0;
11058   struct value *head = v;
11059
11060   /* Did the user specifically forbid us to use hardware watchpoints? */
11061   if (!can_use_hw_watchpoints)
11062     return 0;
11063
11064   /* Make sure that the value of the expression depends only upon
11065      memory contents, and values computed from them within GDB.  If we
11066      find any register references or function calls, we can't use a
11067      hardware watchpoint.
11068
11069      The idea here is that evaluating an expression generates a series
11070      of values, one holding the value of every subexpression.  (The
11071      expression a*b+c has five subexpressions: a, b, a*b, c, and
11072      a*b+c.)  GDB's values hold almost enough information to establish
11073      the criteria given above --- they identify memory lvalues,
11074      register lvalues, computed values, etcetera.  So we can evaluate
11075      the expression, and then scan the chain of values that leaves
11076      behind to decide whether we can detect any possible change to the
11077      expression's final value using only hardware watchpoints.
11078
11079      However, I don't think that the values returned by inferior
11080      function calls are special in any way.  So this function may not
11081      notice that an expression involving an inferior function call
11082      can't be watched with hardware watchpoints.  FIXME.  */
11083   for (; v; v = value_next (v))
11084     {
11085       if (VALUE_LVAL (v) == lval_memory)
11086         {
11087           if (v != head && value_lazy (v))
11088             /* A lazy memory lvalue in the chain is one that GDB never
11089                needed to fetch; we either just used its address (e.g.,
11090                `a' in `a.b') or we never needed it at all (e.g., `a'
11091                in `a,b').  This doesn't apply to HEAD; if that is
11092                lazy then it was not readable, but watch it anyway.  */
11093             ;
11094           else
11095             {
11096               /* Ahh, memory we actually used!  Check if we can cover
11097                  it with hardware watchpoints.  */
11098               struct type *vtype = check_typedef (value_type (v));
11099
11100               /* We only watch structs and arrays if user asked for it
11101                  explicitly, never if they just happen to appear in a
11102                  middle of some value chain.  */
11103               if (v == head
11104                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11105                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11106                 {
11107                   CORE_ADDR vaddr = value_address (v);
11108                   int len;
11109                   int num_regs;
11110
11111                   len = (target_exact_watchpoints
11112                          && is_scalar_type_recursive (vtype))?
11113                     1 : TYPE_LENGTH (value_type (v));
11114
11115                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11116                   if (!num_regs)
11117                     return 0;
11118                   else
11119                     found_memory_cnt += num_regs;
11120                 }
11121             }
11122         }
11123       else if (VALUE_LVAL (v) != not_lval
11124                && deprecated_value_modifiable (v) == 0)
11125         return 0;       /* These are values from the history (e.g., $1).  */
11126       else if (VALUE_LVAL (v) == lval_register)
11127         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11128     }
11129
11130   /* The expression itself looks suitable for using a hardware
11131      watchpoint, but give the target machine a chance to reject it.  */
11132   return found_memory_cnt;
11133 }
11134
11135 void
11136 watch_command_wrapper (char *arg, int from_tty, int internal)
11137 {
11138   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11139 }
11140
11141 /* A helper function that looks for the "-location" argument and then
11142    calls watch_command_1.  */
11143
11144 static void
11145 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11146 {
11147   int just_location = 0;
11148
11149   if (arg
11150       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11151           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11152     {
11153       arg = skip_spaces (arg);
11154       just_location = 1;
11155     }
11156
11157   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11158 }
11159
11160 static void
11161 watch_command (char *arg, int from_tty)
11162 {
11163   watch_maybe_just_location (arg, hw_write, from_tty);
11164 }
11165
11166 void
11167 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11168 {
11169   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11170 }
11171
11172 static void
11173 rwatch_command (char *arg, int from_tty)
11174 {
11175   watch_maybe_just_location (arg, hw_read, from_tty);
11176 }
11177
11178 void
11179 awatch_command_wrapper (char *arg, int from_tty, int internal)
11180 {
11181   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11182 }
11183
11184 static void
11185 awatch_command (char *arg, int from_tty)
11186 {
11187   watch_maybe_just_location (arg, hw_access, from_tty);
11188 }
11189 \f
11190
11191 /* Helper routines for the until_command routine in infcmd.c.  Here
11192    because it uses the mechanisms of breakpoints.  */
11193
11194 struct until_break_command_continuation_args
11195 {
11196   struct breakpoint *breakpoint;
11197   struct breakpoint *breakpoint2;
11198   int thread_num;
11199 };
11200
11201 /* This function is called by fetch_inferior_event via the
11202    cmd_continuation pointer, to complete the until command.  It takes
11203    care of cleaning up the temporary breakpoints set up by the until
11204    command.  */
11205 static void
11206 until_break_command_continuation (void *arg, int err)
11207 {
11208   struct until_break_command_continuation_args *a = arg;
11209
11210   delete_breakpoint (a->breakpoint);
11211   if (a->breakpoint2)
11212     delete_breakpoint (a->breakpoint2);
11213   delete_longjmp_breakpoint (a->thread_num);
11214 }
11215
11216 void
11217 until_break_command (char *arg, int from_tty, int anywhere)
11218 {
11219   struct symtabs_and_lines sals;
11220   struct symtab_and_line sal;
11221   struct frame_info *frame;
11222   struct gdbarch *frame_gdbarch;
11223   struct frame_id stack_frame_id;
11224   struct frame_id caller_frame_id;
11225   struct breakpoint *breakpoint;
11226   struct breakpoint *breakpoint2 = NULL;
11227   struct cleanup *old_chain;
11228   int thread;
11229   struct thread_info *tp;
11230
11231   clear_proceed_status ();
11232
11233   /* Set a breakpoint where the user wants it and at return from
11234      this function.  */
11235
11236   if (last_displayed_sal_is_valid ())
11237     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11238                           get_last_displayed_symtab (),
11239                           get_last_displayed_line ());
11240   else
11241     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11242                           (struct symtab *) NULL, 0);
11243
11244   if (sals.nelts != 1)
11245     error (_("Couldn't get information on specified line."));
11246
11247   sal = sals.sals[0];
11248   xfree (sals.sals);    /* malloc'd, so freed.  */
11249
11250   if (*arg)
11251     error (_("Junk at end of arguments."));
11252
11253   resolve_sal_pc (&sal);
11254
11255   tp = inferior_thread ();
11256   thread = tp->num;
11257
11258   old_chain = make_cleanup (null_cleanup, NULL);
11259
11260   /* Note linespec handling above invalidates the frame chain.
11261      Installing a breakpoint also invalidates the frame chain (as it
11262      may need to switch threads), so do any frame handling before
11263      that.  */
11264
11265   frame = get_selected_frame (NULL);
11266   frame_gdbarch = get_frame_arch (frame);
11267   stack_frame_id = get_stack_frame_id (frame);
11268   caller_frame_id = frame_unwind_caller_id (frame);
11269
11270   /* Keep within the current frame, or in frames called by the current
11271      one.  */
11272
11273   if (frame_id_p (caller_frame_id))
11274     {
11275       struct symtab_and_line sal2;
11276
11277       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11278       sal2.pc = frame_unwind_caller_pc (frame);
11279       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11280                                               sal2,
11281                                               caller_frame_id,
11282                                               bp_until);
11283       make_cleanup_delete_breakpoint (breakpoint2);
11284
11285       set_longjmp_breakpoint (tp, caller_frame_id);
11286       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11287     }
11288
11289   /* set_momentary_breakpoint could invalidate FRAME.  */
11290   frame = NULL;
11291
11292   if (anywhere)
11293     /* If the user told us to continue until a specified location,
11294        we don't specify a frame at which we need to stop.  */
11295     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11296                                            null_frame_id, bp_until);
11297   else
11298     /* Otherwise, specify the selected frame, because we want to stop
11299        only at the very same frame.  */
11300     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11301                                            stack_frame_id, bp_until);
11302   make_cleanup_delete_breakpoint (breakpoint);
11303
11304   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11305
11306   /* If we are running asynchronously, and proceed call above has
11307      actually managed to start the target, arrange for breakpoints to
11308      be deleted when the target stops.  Otherwise, we're already
11309      stopped and delete breakpoints via cleanup chain.  */
11310
11311   if (target_can_async_p () && is_running (inferior_ptid))
11312     {
11313       struct until_break_command_continuation_args *args;
11314       args = xmalloc (sizeof (*args));
11315
11316       args->breakpoint = breakpoint;
11317       args->breakpoint2 = breakpoint2;
11318       args->thread_num = thread;
11319
11320       discard_cleanups (old_chain);
11321       add_continuation (inferior_thread (),
11322                         until_break_command_continuation, args,
11323                         xfree);
11324     }
11325   else
11326     do_cleanups (old_chain);
11327 }
11328
11329 /* This function attempts to parse an optional "if <cond>" clause
11330    from the arg string.  If one is not found, it returns NULL.
11331
11332    Else, it returns a pointer to the condition string.  (It does not
11333    attempt to evaluate the string against a particular block.)  And,
11334    it updates arg to point to the first character following the parsed
11335    if clause in the arg string.  */
11336
11337 static char *
11338 ep_parse_optional_if_clause (char **arg)
11339 {
11340   char *cond_string;
11341
11342   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11343     return NULL;
11344
11345   /* Skip the "if" keyword.  */
11346   (*arg) += 2;
11347
11348   /* Skip any extra leading whitespace, and record the start of the
11349      condition string.  */
11350   *arg = skip_spaces (*arg);
11351   cond_string = *arg;
11352
11353   /* Assume that the condition occupies the remainder of the arg
11354      string.  */
11355   (*arg) += strlen (cond_string);
11356
11357   return cond_string;
11358 }
11359
11360 /* Commands to deal with catching events, such as signals, exceptions,
11361    process start/exit, etc.  */
11362
11363 typedef enum
11364 {
11365   catch_fork_temporary, catch_vfork_temporary,
11366   catch_fork_permanent, catch_vfork_permanent
11367 }
11368 catch_fork_kind;
11369
11370 static void
11371 catch_fork_command_1 (char *arg, int from_tty, 
11372                       struct cmd_list_element *command)
11373 {
11374   struct gdbarch *gdbarch = get_current_arch ();
11375   char *cond_string = NULL;
11376   catch_fork_kind fork_kind;
11377   int tempflag;
11378
11379   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11380   tempflag = (fork_kind == catch_fork_temporary
11381               || fork_kind == catch_vfork_temporary);
11382
11383   if (!arg)
11384     arg = "";
11385   arg = skip_spaces (arg);
11386
11387   /* The allowed syntax is:
11388      catch [v]fork
11389      catch [v]fork if <cond>
11390
11391      First, check if there's an if clause.  */
11392   cond_string = ep_parse_optional_if_clause (&arg);
11393
11394   if ((*arg != '\0') && !isspace (*arg))
11395     error (_("Junk at end of arguments."));
11396
11397   /* If this target supports it, create a fork or vfork catchpoint
11398      and enable reporting of such events.  */
11399   switch (fork_kind)
11400     {
11401     case catch_fork_temporary:
11402     case catch_fork_permanent:
11403       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11404                                           &catch_fork_breakpoint_ops);
11405       break;
11406     case catch_vfork_temporary:
11407     case catch_vfork_permanent:
11408       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11409                                           &catch_vfork_breakpoint_ops);
11410       break;
11411     default:
11412       error (_("unsupported or unknown fork kind; cannot catch it"));
11413       break;
11414     }
11415 }
11416
11417 static void
11418 catch_exec_command_1 (char *arg, int from_tty, 
11419                       struct cmd_list_element *command)
11420 {
11421   struct exec_catchpoint *c;
11422   struct gdbarch *gdbarch = get_current_arch ();
11423   int tempflag;
11424   char *cond_string = NULL;
11425
11426   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11427
11428   if (!arg)
11429     arg = "";
11430   arg = skip_spaces (arg);
11431
11432   /* The allowed syntax is:
11433      catch exec
11434      catch exec if <cond>
11435
11436      First, check if there's an if clause.  */
11437   cond_string = ep_parse_optional_if_clause (&arg);
11438
11439   if ((*arg != '\0') && !isspace (*arg))
11440     error (_("Junk at end of arguments."));
11441
11442   c = XNEW (struct exec_catchpoint);
11443   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11444                    &catch_exec_breakpoint_ops);
11445   c->exec_pathname = NULL;
11446
11447   install_breakpoint (0, &c->base, 1);
11448 }
11449
11450 static enum print_stop_action
11451 print_it_exception_catchpoint (bpstat bs)
11452 {
11453   struct ui_out *uiout = current_uiout;
11454   struct breakpoint *b = bs->breakpoint_at;
11455   int bp_temp, bp_throw;
11456
11457   annotate_catchpoint (b->number);
11458
11459   bp_throw = strstr (b->addr_string, "throw") != NULL;
11460   if (b->loc->address != b->loc->requested_address)
11461     breakpoint_adjustment_warning (b->loc->requested_address,
11462                                    b->loc->address,
11463                                    b->number, 1);
11464   bp_temp = b->disposition == disp_del;
11465   ui_out_text (uiout, 
11466                bp_temp ? "Temporary catchpoint "
11467                        : "Catchpoint ");
11468   if (!ui_out_is_mi_like_p (uiout))
11469     ui_out_field_int (uiout, "bkptno", b->number);
11470   ui_out_text (uiout,
11471                bp_throw ? " (exception thrown), "
11472                         : " (exception caught), ");
11473   if (ui_out_is_mi_like_p (uiout))
11474     {
11475       ui_out_field_string (uiout, "reason", 
11476                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11477       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11478       ui_out_field_int (uiout, "bkptno", b->number);
11479     }
11480   return PRINT_SRC_AND_LOC;
11481 }
11482
11483 static void
11484 print_one_exception_catchpoint (struct breakpoint *b, 
11485                                 struct bp_location **last_loc)
11486 {
11487   struct value_print_options opts;
11488   struct ui_out *uiout = current_uiout;
11489
11490   get_user_print_options (&opts);
11491   if (opts.addressprint)
11492     {
11493       annotate_field (4);
11494       if (b->loc == NULL || b->loc->shlib_disabled)
11495         ui_out_field_string (uiout, "addr", "<PENDING>");
11496       else
11497         ui_out_field_core_addr (uiout, "addr",
11498                                 b->loc->gdbarch, b->loc->address);
11499     }
11500   annotate_field (5);
11501   if (b->loc)
11502     *last_loc = b->loc;
11503   if (strstr (b->addr_string, "throw") != NULL)
11504     ui_out_field_string (uiout, "what", "exception throw");
11505   else
11506     ui_out_field_string (uiout, "what", "exception catch");
11507 }
11508
11509 static void
11510 print_mention_exception_catchpoint (struct breakpoint *b)
11511 {
11512   struct ui_out *uiout = current_uiout;
11513   int bp_temp;
11514   int bp_throw;
11515
11516   bp_temp = b->disposition == disp_del;
11517   bp_throw = strstr (b->addr_string, "throw") != NULL;
11518   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11519                               : _("Catchpoint "));
11520   ui_out_field_int (uiout, "bkptno", b->number);
11521   ui_out_text (uiout, bp_throw ? _(" (throw)")
11522                                : _(" (catch)"));
11523 }
11524
11525 /* Implement the "print_recreate" breakpoint_ops method for throw and
11526    catch catchpoints.  */
11527
11528 static void
11529 print_recreate_exception_catchpoint (struct breakpoint *b, 
11530                                      struct ui_file *fp)
11531 {
11532   int bp_temp;
11533   int bp_throw;
11534
11535   bp_temp = b->disposition == disp_del;
11536   bp_throw = strstr (b->addr_string, "throw") != NULL;
11537   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11538   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11539   print_recreate_thread (b, fp);
11540 }
11541
11542 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11543
11544 static int
11545 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11546                           enum exception_event_kind ex_event, int from_tty)
11547 {
11548   char *trigger_func_name;
11549  
11550   if (ex_event == EX_EVENT_CATCH)
11551     trigger_func_name = "__cxa_begin_catch";
11552   else
11553     trigger_func_name = "__cxa_throw";
11554
11555   create_breakpoint (get_current_arch (),
11556                      trigger_func_name, cond_string, -1, NULL,
11557                      0 /* condition and thread are valid.  */,
11558                      tempflag, bp_breakpoint,
11559                      0,
11560                      AUTO_BOOLEAN_TRUE /* pending */,
11561                      &gnu_v3_exception_catchpoint_ops, from_tty,
11562                      1 /* enabled */,
11563                      0 /* internal */,
11564                      0);
11565
11566   return 1;
11567 }
11568
11569 /* Deal with "catch catch" and "catch throw" commands.  */
11570
11571 static void
11572 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11573                            int tempflag, int from_tty)
11574 {
11575   char *cond_string = NULL;
11576
11577   if (!arg)
11578     arg = "";
11579   arg = skip_spaces (arg);
11580
11581   cond_string = ep_parse_optional_if_clause (&arg);
11582
11583   if ((*arg != '\0') && !isspace (*arg))
11584     error (_("Junk at end of arguments."));
11585
11586   if (ex_event != EX_EVENT_THROW
11587       && ex_event != EX_EVENT_CATCH)
11588     error (_("Unsupported or unknown exception event; cannot catch it"));
11589
11590   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11591     return;
11592
11593   warning (_("Unsupported with this platform/compiler combination."));
11594 }
11595
11596 /* Implementation of "catch catch" command.  */
11597
11598 static void
11599 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11600 {
11601   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11602
11603   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11604 }
11605
11606 /* Implementation of "catch throw" command.  */
11607
11608 static void
11609 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11610 {
11611   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11612
11613   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11614 }
11615
11616 void
11617 init_ada_exception_breakpoint (struct breakpoint *b,
11618                                struct gdbarch *gdbarch,
11619                                struct symtab_and_line sal,
11620                                char *addr_string,
11621                                const struct breakpoint_ops *ops,
11622                                int tempflag,
11623                                int from_tty)
11624 {
11625   if (from_tty)
11626     {
11627       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11628       if (!loc_gdbarch)
11629         loc_gdbarch = gdbarch;
11630
11631       describe_other_breakpoints (loc_gdbarch,
11632                                   sal.pspace, sal.pc, sal.section, -1);
11633       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11634          version for exception catchpoints, because two catchpoints
11635          used for different exception names will use the same address.
11636          In this case, a "breakpoint ... also set at..." warning is
11637          unproductive.  Besides, the warning phrasing is also a bit
11638          inappropriate, we should use the word catchpoint, and tell
11639          the user what type of catchpoint it is.  The above is good
11640          enough for now, though.  */
11641     }
11642
11643   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11644
11645   b->enable_state = bp_enabled;
11646   b->disposition = tempflag ? disp_del : disp_donttouch;
11647   b->addr_string = addr_string;
11648   b->language = language_ada;
11649 }
11650
11651 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11652    filter list, or NULL if no filtering is required.  */
11653 static VEC(int) *
11654 catch_syscall_split_args (char *arg)
11655 {
11656   VEC(int) *result = NULL;
11657   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11658
11659   while (*arg != '\0')
11660     {
11661       int i, syscall_number;
11662       char *endptr;
11663       char cur_name[128];
11664       struct syscall s;
11665
11666       /* Skip whitespace.  */
11667       while (isspace (*arg))
11668         arg++;
11669
11670       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11671         cur_name[i] = arg[i];
11672       cur_name[i] = '\0';
11673       arg += i;
11674
11675       /* Check if the user provided a syscall name or a number.  */
11676       syscall_number = (int) strtol (cur_name, &endptr, 0);
11677       if (*endptr == '\0')
11678         get_syscall_by_number (syscall_number, &s);
11679       else
11680         {
11681           /* We have a name.  Let's check if it's valid and convert it
11682              to a number.  */
11683           get_syscall_by_name (cur_name, &s);
11684
11685           if (s.number == UNKNOWN_SYSCALL)
11686             /* Here we have to issue an error instead of a warning,
11687                because GDB cannot do anything useful if there's no
11688                syscall number to be caught.  */
11689             error (_("Unknown syscall name '%s'."), cur_name);
11690         }
11691
11692       /* Ok, it's valid.  */
11693       VEC_safe_push (int, result, s.number);
11694     }
11695
11696   discard_cleanups (cleanup);
11697   return result;
11698 }
11699
11700 /* Implement the "catch syscall" command.  */
11701
11702 static void
11703 catch_syscall_command_1 (char *arg, int from_tty, 
11704                          struct cmd_list_element *command)
11705 {
11706   int tempflag;
11707   VEC(int) *filter;
11708   struct syscall s;
11709   struct gdbarch *gdbarch = get_current_arch ();
11710
11711   /* Checking if the feature if supported.  */
11712   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11713     error (_("The feature 'catch syscall' is not supported on \
11714 this architecture yet."));
11715
11716   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11717
11718   arg = skip_spaces (arg);
11719
11720   /* We need to do this first "dummy" translation in order
11721      to get the syscall XML file loaded or, most important,
11722      to display a warning to the user if there's no XML file
11723      for his/her architecture.  */
11724   get_syscall_by_number (0, &s);
11725
11726   /* The allowed syntax is:
11727      catch syscall
11728      catch syscall <name | number> [<name | number> ... <name | number>]
11729
11730      Let's check if there's a syscall name.  */
11731
11732   if (arg != NULL)
11733     filter = catch_syscall_split_args (arg);
11734   else
11735     filter = NULL;
11736
11737   create_syscall_event_catchpoint (tempflag, filter,
11738                                    &catch_syscall_breakpoint_ops);
11739 }
11740
11741 static void
11742 catch_command (char *arg, int from_tty)
11743 {
11744   error (_("Catch requires an event name."));
11745 }
11746 \f
11747
11748 static void
11749 tcatch_command (char *arg, int from_tty)
11750 {
11751   error (_("Catch requires an event name."));
11752 }
11753
11754 /* A qsort comparison function that sorts breakpoints in order.  */
11755
11756 static int
11757 compare_breakpoints (const void *a, const void *b)
11758 {
11759   const breakpoint_p *ba = a;
11760   uintptr_t ua = (uintptr_t) *ba;
11761   const breakpoint_p *bb = b;
11762   uintptr_t ub = (uintptr_t) *bb;
11763
11764   if ((*ba)->number < (*bb)->number)
11765     return -1;
11766   else if ((*ba)->number > (*bb)->number)
11767     return 1;
11768
11769   /* Now sort by address, in case we see, e..g, two breakpoints with
11770      the number 0.  */
11771   if (ua < ub)
11772     return -1;
11773   return ua > ub ? 1 : 0;
11774 }
11775
11776 /* Delete breakpoints by address or line.  */
11777
11778 static void
11779 clear_command (char *arg, int from_tty)
11780 {
11781   struct breakpoint *b, *prev;
11782   VEC(breakpoint_p) *found = 0;
11783   int ix;
11784   int default_match;
11785   struct symtabs_and_lines sals;
11786   struct symtab_and_line sal;
11787   int i;
11788   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11789
11790   if (arg)
11791     {
11792       sals = decode_line_with_current_source (arg,
11793                                               (DECODE_LINE_FUNFIRSTLINE
11794                                                | DECODE_LINE_LIST_MODE));
11795       make_cleanup (xfree, sals.sals);
11796       default_match = 0;
11797     }
11798   else
11799     {
11800       sals.sals = (struct symtab_and_line *)
11801         xmalloc (sizeof (struct symtab_and_line));
11802       make_cleanup (xfree, sals.sals);
11803       init_sal (&sal);          /* Initialize to zeroes.  */
11804
11805       /* Set sal's line, symtab, pc, and pspace to the values
11806          corresponding to the last call to print_frame_info.  If the
11807          codepoint is not valid, this will set all the fields to 0.  */
11808       get_last_displayed_sal (&sal);
11809       if (sal.symtab == 0)
11810         error (_("No source file specified."));
11811
11812       sals.sals[0] = sal;
11813       sals.nelts = 1;
11814
11815       default_match = 1;
11816     }
11817
11818   /* We don't call resolve_sal_pc here.  That's not as bad as it
11819      seems, because all existing breakpoints typically have both
11820      file/line and pc set.  So, if clear is given file/line, we can
11821      match this to existing breakpoint without obtaining pc at all.
11822
11823      We only support clearing given the address explicitly 
11824      present in breakpoint table.  Say, we've set breakpoint 
11825      at file:line.  There were several PC values for that file:line,
11826      due to optimization, all in one block.
11827
11828      We've picked one PC value.  If "clear" is issued with another
11829      PC corresponding to the same file:line, the breakpoint won't
11830      be cleared.  We probably can still clear the breakpoint, but 
11831      since the other PC value is never presented to user, user
11832      can only find it by guessing, and it does not seem important
11833      to support that.  */
11834
11835   /* For each line spec given, delete bps which correspond to it.  Do
11836      it in two passes, solely to preserve the current behavior that
11837      from_tty is forced true if we delete more than one
11838      breakpoint.  */
11839
11840   found = NULL;
11841   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11842   for (i = 0; i < sals.nelts; i++)
11843     {
11844       int is_abs, sal_name_len;
11845
11846       /* If exact pc given, clear bpts at that pc.
11847          If line given (pc == 0), clear all bpts on specified line.
11848          If defaulting, clear all bpts on default line
11849          or at default pc.
11850
11851          defaulting    sal.pc != 0    tests to do
11852
11853          0              1             pc
11854          1              1             pc _and_ line
11855          0              0             line
11856          1              0             <can't happen> */
11857
11858       sal = sals.sals[i];
11859       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11860       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11861
11862       /* Find all matching breakpoints and add them to 'found'.  */
11863       ALL_BREAKPOINTS (b)
11864         {
11865           int match = 0;
11866           /* Are we going to delete b?  */
11867           if (b->type != bp_none && !is_watchpoint (b))
11868             {
11869               struct bp_location *loc = b->loc;
11870               for (; loc; loc = loc->next)
11871                 {
11872                   /* If the user specified file:line, don't allow a PC
11873                      match.  This matches historical gdb behavior.  */
11874                   int pc_match = (!sal.explicit_line
11875                                   && sal.pc
11876                                   && (loc->pspace == sal.pspace)
11877                                   && (loc->address == sal.pc)
11878                                   && (!section_is_overlay (loc->section)
11879                                       || loc->section == sal.section));
11880                   int line_match = 0;
11881
11882                   if ((default_match || sal.explicit_line)
11883                       && loc->source_file != NULL
11884                       && sal.symtab != NULL
11885                       && sal.pspace == loc->pspace
11886                       && loc->line_number == sal.line)
11887                     {
11888                       if (filename_cmp (loc->source_file,
11889                                         sal.symtab->filename) == 0)
11890                         line_match = 1;
11891                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11892                                && compare_filenames_for_search (loc->source_file,
11893                                                                 sal.symtab->filename,
11894                                                                 sal_name_len))
11895                         line_match = 1;
11896                     }
11897
11898                   if (pc_match || line_match)
11899                     {
11900                       match = 1;
11901                       break;
11902                     }
11903                 }
11904             }
11905
11906           if (match)
11907             VEC_safe_push(breakpoint_p, found, b);
11908         }
11909     }
11910
11911   /* Now go thru the 'found' chain and delete them.  */
11912   if (VEC_empty(breakpoint_p, found))
11913     {
11914       if (arg)
11915         error (_("No breakpoint at %s."), arg);
11916       else
11917         error (_("No breakpoint at this line."));
11918     }
11919
11920   /* Remove duplicates from the vec.  */
11921   qsort (VEC_address (breakpoint_p, found),
11922          VEC_length (breakpoint_p, found),
11923          sizeof (breakpoint_p),
11924          compare_breakpoints);
11925   prev = VEC_index (breakpoint_p, found, 0);
11926   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11927     {
11928       if (b == prev)
11929         {
11930           VEC_ordered_remove (breakpoint_p, found, ix);
11931           --ix;
11932         }
11933     }
11934
11935   if (VEC_length(breakpoint_p, found) > 1)
11936     from_tty = 1;       /* Always report if deleted more than one.  */
11937   if (from_tty)
11938     {
11939       if (VEC_length(breakpoint_p, found) == 1)
11940         printf_unfiltered (_("Deleted breakpoint "));
11941       else
11942         printf_unfiltered (_("Deleted breakpoints "));
11943     }
11944   annotate_breakpoints_changed ();
11945
11946   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11947     {
11948       if (from_tty)
11949         printf_unfiltered ("%d ", b->number);
11950       delete_breakpoint (b);
11951     }
11952   if (from_tty)
11953     putchar_unfiltered ('\n');
11954
11955   do_cleanups (cleanups);
11956 }
11957 \f
11958 /* Delete breakpoint in BS if they are `delete' breakpoints and
11959    all breakpoints that are marked for deletion, whether hit or not.
11960    This is called after any breakpoint is hit, or after errors.  */
11961
11962 void
11963 breakpoint_auto_delete (bpstat bs)
11964 {
11965   struct breakpoint *b, *b_tmp;
11966
11967   for (; bs; bs = bs->next)
11968     if (bs->breakpoint_at
11969         && bs->breakpoint_at->disposition == disp_del
11970         && bs->stop)
11971       delete_breakpoint (bs->breakpoint_at);
11972
11973   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11974   {
11975     if (b->disposition == disp_del_at_next_stop)
11976       delete_breakpoint (b);
11977   }
11978 }
11979
11980 /* A comparison function for bp_location AP and BP being interfaced to
11981    qsort.  Sort elements primarily by their ADDRESS (no matter what
11982    does breakpoint_address_is_meaningful say for its OWNER),
11983    secondarily by ordering first bp_permanent OWNERed elements and
11984    terciarily just ensuring the array is sorted stable way despite
11985    qsort being an unstable algorithm.  */
11986
11987 static int
11988 bp_location_compare (const void *ap, const void *bp)
11989 {
11990   struct bp_location *a = *(void **) ap;
11991   struct bp_location *b = *(void **) bp;
11992   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11993   int a_perm = a->owner->enable_state == bp_permanent;
11994   int b_perm = b->owner->enable_state == bp_permanent;
11995
11996   if (a->address != b->address)
11997     return (a->address > b->address) - (a->address < b->address);
11998
11999   /* Sort locations at the same address by their pspace number, keeping
12000      locations of the same inferior (in a multi-inferior environment)
12001      grouped.  */
12002
12003   if (a->pspace->num != b->pspace->num)
12004     return ((a->pspace->num > b->pspace->num)
12005             - (a->pspace->num < b->pspace->num));
12006
12007   /* Sort permanent breakpoints first.  */
12008   if (a_perm != b_perm)
12009     return (a_perm < b_perm) - (a_perm > b_perm);
12010
12011   /* Make the internal GDB representation stable across GDB runs
12012      where A and B memory inside GDB can differ.  Breakpoint locations of
12013      the same type at the same address can be sorted in arbitrary order.  */
12014
12015   if (a->owner->number != b->owner->number)
12016     return ((a->owner->number > b->owner->number)
12017             - (a->owner->number < b->owner->number));
12018
12019   return (a > b) - (a < b);
12020 }
12021
12022 /* Set bp_location_placed_address_before_address_max and
12023    bp_location_shadow_len_after_address_max according to the current
12024    content of the bp_location array.  */
12025
12026 static void
12027 bp_location_target_extensions_update (void)
12028 {
12029   struct bp_location *bl, **blp_tmp;
12030
12031   bp_location_placed_address_before_address_max = 0;
12032   bp_location_shadow_len_after_address_max = 0;
12033
12034   ALL_BP_LOCATIONS (bl, blp_tmp)
12035     {
12036       CORE_ADDR start, end, addr;
12037
12038       if (!bp_location_has_shadow (bl))
12039         continue;
12040
12041       start = bl->target_info.placed_address;
12042       end = start + bl->target_info.shadow_len;
12043
12044       gdb_assert (bl->address >= start);
12045       addr = bl->address - start;
12046       if (addr > bp_location_placed_address_before_address_max)
12047         bp_location_placed_address_before_address_max = addr;
12048
12049       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12050
12051       gdb_assert (bl->address < end);
12052       addr = end - bl->address;
12053       if (addr > bp_location_shadow_len_after_address_max)
12054         bp_location_shadow_len_after_address_max = addr;
12055     }
12056 }
12057
12058 /* Download tracepoint locations if they haven't been.  */
12059
12060 static void
12061 download_tracepoint_locations (void)
12062 {
12063   struct bp_location *bl, **blp_tmp;
12064   struct cleanup *old_chain;
12065
12066   if (!target_can_download_tracepoint ())
12067     return;
12068
12069   old_chain = save_current_space_and_thread ();
12070
12071   ALL_BP_LOCATIONS (bl, blp_tmp)
12072     {
12073       struct tracepoint *t;
12074
12075       if (!is_tracepoint (bl->owner))
12076         continue;
12077
12078       if ((bl->owner->type == bp_fast_tracepoint
12079            ? !may_insert_fast_tracepoints
12080            : !may_insert_tracepoints))
12081         continue;
12082
12083       /* In tracepoint, locations are _never_ duplicated, so
12084          should_be_inserted is equivalent to
12085          unduplicated_should_be_inserted.  */
12086       if (!should_be_inserted (bl) || bl->inserted)
12087         continue;
12088
12089       switch_to_program_space_and_thread (bl->pspace);
12090
12091       target_download_tracepoint (bl);
12092
12093       bl->inserted = 1;
12094       t = (struct tracepoint *) bl->owner;
12095       t->number_on_target = bl->owner->number;
12096     }
12097
12098   do_cleanups (old_chain);
12099 }
12100
12101 /* Swap the insertion/duplication state between two locations.  */
12102
12103 static void
12104 swap_insertion (struct bp_location *left, struct bp_location *right)
12105 {
12106   const int left_inserted = left->inserted;
12107   const int left_duplicate = left->duplicate;
12108   const int left_needs_update = left->needs_update;
12109   const struct bp_target_info left_target_info = left->target_info;
12110
12111   /* Locations of tracepoints can never be duplicated.  */
12112   if (is_tracepoint (left->owner))
12113     gdb_assert (!left->duplicate);
12114   if (is_tracepoint (right->owner))
12115     gdb_assert (!right->duplicate);
12116
12117   left->inserted = right->inserted;
12118   left->duplicate = right->duplicate;
12119   left->needs_update = right->needs_update;
12120   left->target_info = right->target_info;
12121   right->inserted = left_inserted;
12122   right->duplicate = left_duplicate;
12123   right->needs_update = left_needs_update;
12124   right->target_info = left_target_info;
12125 }
12126
12127 /* Force the re-insertion of the locations at ADDRESS.  This is called
12128    once a new/deleted/modified duplicate location is found and we are evaluating
12129    conditions on the target's side.  Such conditions need to be updated on
12130    the target.  */
12131
12132 static void
12133 force_breakpoint_reinsertion (struct bp_location *bl)
12134 {
12135   struct bp_location **locp = NULL, **loc2p;
12136   struct bp_location *loc;
12137   CORE_ADDR address = 0;
12138   int pspace_num;
12139
12140   address = bl->address;
12141   pspace_num = bl->pspace->num;
12142
12143   /* This is only meaningful if the target is
12144      evaluating conditions and if the user has
12145      opted for condition evaluation on the target's
12146      side.  */
12147   if (gdb_evaluates_breakpoint_condition_p ()
12148       || !target_supports_evaluation_of_breakpoint_conditions ())
12149     return;
12150
12151   /* Flag all breakpoint locations with this address and
12152      the same program space as the location
12153      as "its condition has changed".  We need to
12154      update the conditions on the target's side.  */
12155   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12156     {
12157       loc = *loc2p;
12158
12159       if (!is_breakpoint (loc->owner)
12160           || pspace_num != loc->pspace->num)
12161         continue;
12162
12163       /* Flag the location appropriately.  We use a different state to
12164          let everyone know that we already updated the set of locations
12165          with addr bl->address and program space bl->pspace.  This is so
12166          we don't have to keep calling these functions just to mark locations
12167          that have already been marked.  */
12168       loc->condition_changed = condition_updated;
12169
12170       /* Free the agent expression bytecode as well.  We will compute
12171          it later on.  */
12172       if (loc->cond_bytecode)
12173         {
12174           free_agent_expr (loc->cond_bytecode);
12175           loc->cond_bytecode = NULL;
12176         }
12177     }
12178 }
12179
12180 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12181    into the inferior, only remove already-inserted locations that no
12182    longer should be inserted.  Functions that delete a breakpoint or
12183    breakpoints should pass false, so that deleting a breakpoint
12184    doesn't have the side effect of inserting the locations of other
12185    breakpoints that are marked not-inserted, but should_be_inserted
12186    returns true on them.
12187
12188    This behaviour is useful is situations close to tear-down -- e.g.,
12189    after an exec, while the target still has execution, but breakpoint
12190    shadows of the previous executable image should *NOT* be restored
12191    to the new image; or before detaching, where the target still has
12192    execution and wants to delete breakpoints from GDB's lists, and all
12193    breakpoints had already been removed from the inferior.  */
12194
12195 static void
12196 update_global_location_list (int should_insert)
12197 {
12198   struct breakpoint *b;
12199   struct bp_location **locp, *loc;
12200   struct cleanup *cleanups;
12201   /* Last breakpoint location address that was marked for update.  */
12202   CORE_ADDR last_addr = 0;
12203   /* Last breakpoint location program space that was marked for update.  */
12204   int last_pspace_num = -1;
12205
12206   /* Used in the duplicates detection below.  When iterating over all
12207      bp_locations, points to the first bp_location of a given address.
12208      Breakpoints and watchpoints of different types are never
12209      duplicates of each other.  Keep one pointer for each type of
12210      breakpoint/watchpoint, so we only need to loop over all locations
12211      once.  */
12212   struct bp_location *bp_loc_first;  /* breakpoint */
12213   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12214   struct bp_location *awp_loc_first; /* access watchpoint */
12215   struct bp_location *rwp_loc_first; /* read watchpoint */
12216
12217   /* Saved former bp_location array which we compare against the newly
12218      built bp_location from the current state of ALL_BREAKPOINTS.  */
12219   struct bp_location **old_location, **old_locp;
12220   unsigned old_location_count;
12221
12222   old_location = bp_location;
12223   old_location_count = bp_location_count;
12224   bp_location = NULL;
12225   bp_location_count = 0;
12226   cleanups = make_cleanup (xfree, old_location);
12227
12228   ALL_BREAKPOINTS (b)
12229     for (loc = b->loc; loc; loc = loc->next)
12230       bp_location_count++;
12231
12232   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12233   locp = bp_location;
12234   ALL_BREAKPOINTS (b)
12235     for (loc = b->loc; loc; loc = loc->next)
12236       *locp++ = loc;
12237   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12238          bp_location_compare);
12239
12240   bp_location_target_extensions_update ();
12241
12242   /* Identify bp_location instances that are no longer present in the
12243      new list, and therefore should be freed.  Note that it's not
12244      necessary that those locations should be removed from inferior --
12245      if there's another location at the same address (previously
12246      marked as duplicate), we don't need to remove/insert the
12247      location.
12248      
12249      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12250      and former bp_location array state respectively.  */
12251
12252   locp = bp_location;
12253   for (old_locp = old_location; old_locp < old_location + old_location_count;
12254        old_locp++)
12255     {
12256       struct bp_location *old_loc = *old_locp;
12257       struct bp_location **loc2p;
12258
12259       /* Tells if 'old_loc' is found among the new locations.  If
12260          not, we have to free it.  */
12261       int found_object = 0;
12262       /* Tells if the location should remain inserted in the target.  */
12263       int keep_in_target = 0;
12264       int removed = 0;
12265
12266       /* Skip LOCP entries which will definitely never be needed.
12267          Stop either at or being the one matching OLD_LOC.  */
12268       while (locp < bp_location + bp_location_count
12269              && (*locp)->address < old_loc->address)
12270         locp++;
12271
12272       for (loc2p = locp;
12273            (loc2p < bp_location + bp_location_count
12274             && (*loc2p)->address == old_loc->address);
12275            loc2p++)
12276         {
12277           /* Check if this is a new/duplicated location or a duplicated
12278              location that had its condition modified.  If so, we want to send
12279              its condition to the target if evaluation of conditions is taking
12280              place there.  */
12281           if ((*loc2p)->condition_changed == condition_modified
12282               && (last_addr != old_loc->address
12283                   || last_pspace_num != old_loc->pspace->num))
12284             {
12285               force_breakpoint_reinsertion (*loc2p);
12286               last_pspace_num = old_loc->pspace->num;
12287             }
12288
12289           if (*loc2p == old_loc)
12290             found_object = 1;
12291         }
12292
12293       /* We have already handled this address, update it so that we don't
12294          have to go through updates again.  */
12295       last_addr = old_loc->address;
12296
12297       /* Target-side condition evaluation: Handle deleted locations.  */
12298       if (!found_object)
12299         force_breakpoint_reinsertion (old_loc);
12300
12301       /* If this location is no longer present, and inserted, look if
12302          there's maybe a new location at the same address.  If so,
12303          mark that one inserted, and don't remove this one.  This is
12304          needed so that we don't have a time window where a breakpoint
12305          at certain location is not inserted.  */
12306
12307       if (old_loc->inserted)
12308         {
12309           /* If the location is inserted now, we might have to remove
12310              it.  */
12311
12312           if (found_object && should_be_inserted (old_loc))
12313             {
12314               /* The location is still present in the location list,
12315                  and still should be inserted.  Don't do anything.  */
12316               keep_in_target = 1;
12317             }
12318           else
12319             {
12320               /* This location still exists, but it won't be kept in the
12321                  target since it may have been disabled.  We proceed to
12322                  remove its target-side condition.  */
12323
12324               /* The location is either no longer present, or got
12325                  disabled.  See if there's another location at the
12326                  same address, in which case we don't need to remove
12327                  this one from the target.  */
12328
12329               /* OLD_LOC comes from existing struct breakpoint.  */
12330               if (breakpoint_address_is_meaningful (old_loc->owner))
12331                 {
12332                   for (loc2p = locp;
12333                        (loc2p < bp_location + bp_location_count
12334                         && (*loc2p)->address == old_loc->address);
12335                        loc2p++)
12336                     {
12337                       struct bp_location *loc2 = *loc2p;
12338
12339                       if (breakpoint_locations_match (loc2, old_loc))
12340                         {
12341                           /* Read watchpoint locations are switched to
12342                              access watchpoints, if the former are not
12343                              supported, but the latter are.  */
12344                           if (is_hardware_watchpoint (old_loc->owner))
12345                             {
12346                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12347                               loc2->watchpoint_type = old_loc->watchpoint_type;
12348                             }
12349
12350                           /* loc2 is a duplicated location. We need to check
12351                              if it should be inserted in case it will be
12352                              unduplicated.  */
12353                           if (loc2 != old_loc
12354                               && unduplicated_should_be_inserted (loc2))
12355                             {
12356                               swap_insertion (old_loc, loc2);
12357                               keep_in_target = 1;
12358                               break;
12359                             }
12360                         }
12361                     }
12362                 }
12363             }
12364
12365           if (!keep_in_target)
12366             {
12367               if (remove_breakpoint (old_loc, mark_uninserted))
12368                 {
12369                   /* This is just about all we can do.  We could keep
12370                      this location on the global list, and try to
12371                      remove it next time, but there's no particular
12372                      reason why we will succeed next time.
12373                      
12374                      Note that at this point, old_loc->owner is still
12375                      valid, as delete_breakpoint frees the breakpoint
12376                      only after calling us.  */
12377                   printf_filtered (_("warning: Error removing "
12378                                      "breakpoint %d\n"), 
12379                                    old_loc->owner->number);
12380                 }
12381               removed = 1;
12382             }
12383         }
12384
12385       if (!found_object)
12386         {
12387           if (removed && non_stop
12388               && breakpoint_address_is_meaningful (old_loc->owner)
12389               && !is_hardware_watchpoint (old_loc->owner))
12390             {
12391               /* This location was removed from the target.  In
12392                  non-stop mode, a race condition is possible where
12393                  we've removed a breakpoint, but stop events for that
12394                  breakpoint are already queued and will arrive later.
12395                  We apply an heuristic to be able to distinguish such
12396                  SIGTRAPs from other random SIGTRAPs: we keep this
12397                  breakpoint location for a bit, and will retire it
12398                  after we see some number of events.  The theory here
12399                  is that reporting of events should, "on the average",
12400                  be fair, so after a while we'll see events from all
12401                  threads that have anything of interest, and no longer
12402                  need to keep this breakpoint location around.  We
12403                  don't hold locations forever so to reduce chances of
12404                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12405                  SIGTRAP.
12406
12407                  The heuristic failing can be disastrous on
12408                  decr_pc_after_break targets.
12409
12410                  On decr_pc_after_break targets, like e.g., x86-linux,
12411                  if we fail to recognize a late breakpoint SIGTRAP,
12412                  because events_till_retirement has reached 0 too
12413                  soon, we'll fail to do the PC adjustment, and report
12414                  a random SIGTRAP to the user.  When the user resumes
12415                  the inferior, it will most likely immediately crash
12416                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12417                  corrupted, because of being resumed e.g., in the
12418                  middle of a multi-byte instruction, or skipped a
12419                  one-byte instruction.  This was actually seen happen
12420                  on native x86-linux, and should be less rare on
12421                  targets that do not support new thread events, like
12422                  remote, due to the heuristic depending on
12423                  thread_count.
12424
12425                  Mistaking a random SIGTRAP for a breakpoint trap
12426                  causes similar symptoms (PC adjustment applied when
12427                  it shouldn't), but then again, playing with SIGTRAPs
12428                  behind the debugger's back is asking for trouble.
12429
12430                  Since hardware watchpoint traps are always
12431                  distinguishable from other traps, so we don't need to
12432                  apply keep hardware watchpoint moribund locations
12433                  around.  We simply always ignore hardware watchpoint
12434                  traps we can no longer explain.  */
12435
12436               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12437               old_loc->owner = NULL;
12438
12439               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12440             }
12441           else
12442             {
12443               old_loc->owner = NULL;
12444               decref_bp_location (&old_loc);
12445             }
12446         }
12447     }
12448
12449   /* Rescan breakpoints at the same address and section, marking the
12450      first one as "first" and any others as "duplicates".  This is so
12451      that the bpt instruction is only inserted once.  If we have a
12452      permanent breakpoint at the same place as BPT, make that one the
12453      official one, and the rest as duplicates.  Permanent breakpoints
12454      are sorted first for the same address.
12455
12456      Do the same for hardware watchpoints, but also considering the
12457      watchpoint's type (regular/access/read) and length.  */
12458
12459   bp_loc_first = NULL;
12460   wp_loc_first = NULL;
12461   awp_loc_first = NULL;
12462   rwp_loc_first = NULL;
12463   ALL_BP_LOCATIONS (loc, locp)
12464     {
12465       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12466          non-NULL.  */
12467       struct bp_location **loc_first_p;
12468       b = loc->owner;
12469
12470       if (!unduplicated_should_be_inserted (loc)
12471           || !breakpoint_address_is_meaningful (b)
12472           /* Don't detect duplicate for tracepoint locations because they are
12473            never duplicated.  See the comments in field `duplicate' of
12474            `struct bp_location'.  */
12475           || is_tracepoint (b))
12476         {
12477           /* Clear the condition modification flag.  */
12478           loc->condition_changed = condition_unchanged;
12479           continue;
12480         }
12481
12482       /* Permanent breakpoint should always be inserted.  */
12483       if (b->enable_state == bp_permanent && ! loc->inserted)
12484         internal_error (__FILE__, __LINE__,
12485                         _("allegedly permanent breakpoint is not "
12486                         "actually inserted"));
12487
12488       if (b->type == bp_hardware_watchpoint)
12489         loc_first_p = &wp_loc_first;
12490       else if (b->type == bp_read_watchpoint)
12491         loc_first_p = &rwp_loc_first;
12492       else if (b->type == bp_access_watchpoint)
12493         loc_first_p = &awp_loc_first;
12494       else
12495         loc_first_p = &bp_loc_first;
12496
12497       if (*loc_first_p == NULL
12498           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12499           || !breakpoint_locations_match (loc, *loc_first_p))
12500         {
12501           *loc_first_p = loc;
12502           loc->duplicate = 0;
12503
12504           if (is_breakpoint (loc->owner) && loc->condition_changed)
12505             {
12506               loc->needs_update = 1;
12507               /* Clear the condition modification flag.  */
12508               loc->condition_changed = condition_unchanged;
12509             }
12510           continue;
12511         }
12512
12513
12514       /* This and the above ensure the invariant that the first location
12515          is not duplicated, and is the inserted one.
12516          All following are marked as duplicated, and are not inserted.  */
12517       if (loc->inserted)
12518         swap_insertion (loc, *loc_first_p);
12519       loc->duplicate = 1;
12520
12521       /* Clear the condition modification flag.  */
12522       loc->condition_changed = condition_unchanged;
12523
12524       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12525           && b->enable_state != bp_permanent)
12526         internal_error (__FILE__, __LINE__,
12527                         _("another breakpoint was inserted on top of "
12528                         "a permanent breakpoint"));
12529     }
12530
12531   if (breakpoints_always_inserted_mode ()
12532       && (have_live_inferiors ()
12533           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12534     {
12535       if (should_insert)
12536         insert_breakpoint_locations ();
12537       else
12538         {
12539           /* Though should_insert is false, we may need to update conditions
12540              on the target's side if it is evaluating such conditions.  We
12541              only update conditions for locations that are marked
12542              "needs_update".  */
12543           update_inserted_breakpoint_locations ();
12544         }
12545     }
12546
12547   if (should_insert)
12548     download_tracepoint_locations ();
12549
12550   do_cleanups (cleanups);
12551 }
12552
12553 void
12554 breakpoint_retire_moribund (void)
12555 {
12556   struct bp_location *loc;
12557   int ix;
12558
12559   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12560     if (--(loc->events_till_retirement) == 0)
12561       {
12562         decref_bp_location (&loc);
12563         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12564         --ix;
12565       }
12566 }
12567
12568 static void
12569 update_global_location_list_nothrow (int inserting)
12570 {
12571   volatile struct gdb_exception e;
12572
12573   TRY_CATCH (e, RETURN_MASK_ERROR)
12574     update_global_location_list (inserting);
12575 }
12576
12577 /* Clear BKP from a BPS.  */
12578
12579 static void
12580 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12581 {
12582   bpstat bs;
12583
12584   for (bs = bps; bs; bs = bs->next)
12585     if (bs->breakpoint_at == bpt)
12586       {
12587         bs->breakpoint_at = NULL;
12588         bs->old_val = NULL;
12589         /* bs->commands will be freed later.  */
12590       }
12591 }
12592
12593 /* Callback for iterate_over_threads.  */
12594 static int
12595 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12596 {
12597   struct breakpoint *bpt = data;
12598
12599   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12600   return 0;
12601 }
12602
12603 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12604    callbacks.  */
12605
12606 static void
12607 say_where (struct breakpoint *b)
12608 {
12609   struct ui_out *uiout = current_uiout;
12610   struct value_print_options opts;
12611
12612   get_user_print_options (&opts);
12613
12614   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12615      single string.  */
12616   if (b->loc == NULL)
12617     {
12618       printf_filtered (_(" (%s) pending."), b->addr_string);
12619     }
12620   else
12621     {
12622       if (opts.addressprint || b->loc->source_file == NULL)
12623         {
12624           printf_filtered (" at ");
12625           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12626                           gdb_stdout);
12627         }
12628       if (b->loc->source_file)
12629         {
12630           /* If there is a single location, we can print the location
12631              more nicely.  */
12632           if (b->loc->next == NULL)
12633             printf_filtered (": file %s, line %d.",
12634                              b->loc->source_file, b->loc->line_number);
12635           else
12636             /* This is not ideal, but each location may have a
12637                different file name, and this at least reflects the
12638                real situation somewhat.  */
12639             printf_filtered (": %s.", b->addr_string);
12640         }
12641
12642       if (b->loc->next)
12643         {
12644           struct bp_location *loc = b->loc;
12645           int n = 0;
12646           for (; loc; loc = loc->next)
12647             ++n;
12648           printf_filtered (" (%d locations)", n);
12649         }
12650     }
12651 }
12652
12653 /* Default bp_location_ops methods.  */
12654
12655 static void
12656 bp_location_dtor (struct bp_location *self)
12657 {
12658   xfree (self->cond);
12659   if (self->cond_bytecode)
12660     free_agent_expr (self->cond_bytecode);
12661   xfree (self->function_name);
12662   xfree (self->source_file);
12663 }
12664
12665 static const struct bp_location_ops bp_location_ops =
12666 {
12667   bp_location_dtor
12668 };
12669
12670 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12671    inherit from.  */
12672
12673 static void
12674 base_breakpoint_dtor (struct breakpoint *self)
12675 {
12676   decref_counted_command_line (&self->commands);
12677   xfree (self->cond_string);
12678   xfree (self->addr_string);
12679   xfree (self->filter);
12680   xfree (self->addr_string_range_end);
12681 }
12682
12683 static struct bp_location *
12684 base_breakpoint_allocate_location (struct breakpoint *self)
12685 {
12686   struct bp_location *loc;
12687
12688   loc = XNEW (struct bp_location);
12689   init_bp_location (loc, &bp_location_ops, self);
12690   return loc;
12691 }
12692
12693 static void
12694 base_breakpoint_re_set (struct breakpoint *b)
12695 {
12696   /* Nothing to re-set. */
12697 }
12698
12699 #define internal_error_pure_virtual_called() \
12700   gdb_assert_not_reached ("pure virtual function called")
12701
12702 static int
12703 base_breakpoint_insert_location (struct bp_location *bl)
12704 {
12705   internal_error_pure_virtual_called ();
12706 }
12707
12708 static int
12709 base_breakpoint_remove_location (struct bp_location *bl)
12710 {
12711   internal_error_pure_virtual_called ();
12712 }
12713
12714 static int
12715 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12716                                 struct address_space *aspace,
12717                                 CORE_ADDR bp_addr,
12718                                 const struct target_waitstatus *ws)
12719 {
12720   internal_error_pure_virtual_called ();
12721 }
12722
12723 static void
12724 base_breakpoint_check_status (bpstat bs)
12725 {
12726   /* Always stop.   */
12727 }
12728
12729 /* A "works_in_software_mode" breakpoint_ops method that just internal
12730    errors.  */
12731
12732 static int
12733 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12734 {
12735   internal_error_pure_virtual_called ();
12736 }
12737
12738 /* A "resources_needed" breakpoint_ops method that just internal
12739    errors.  */
12740
12741 static int
12742 base_breakpoint_resources_needed (const struct bp_location *bl)
12743 {
12744   internal_error_pure_virtual_called ();
12745 }
12746
12747 static enum print_stop_action
12748 base_breakpoint_print_it (bpstat bs)
12749 {
12750   internal_error_pure_virtual_called ();
12751 }
12752
12753 static void
12754 base_breakpoint_print_one_detail (const struct breakpoint *self,
12755                                   struct ui_out *uiout)
12756 {
12757   /* nothing */
12758 }
12759
12760 static void
12761 base_breakpoint_print_mention (struct breakpoint *b)
12762 {
12763   internal_error_pure_virtual_called ();
12764 }
12765
12766 static void
12767 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12768 {
12769   internal_error_pure_virtual_called ();
12770 }
12771
12772 static void
12773 base_breakpoint_create_sals_from_address (char **arg,
12774                                           struct linespec_result *canonical,
12775                                           enum bptype type_wanted,
12776                                           char *addr_start,
12777                                           char **copy_arg)
12778 {
12779   internal_error_pure_virtual_called ();
12780 }
12781
12782 static void
12783 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12784                                         struct linespec_result *c,
12785                                         struct linespec_sals *lsal,
12786                                         char *cond_string,
12787                                         char *extra_string,
12788                                         enum bptype type_wanted,
12789                                         enum bpdisp disposition,
12790                                         int thread,
12791                                         int task, int ignore_count,
12792                                         const struct breakpoint_ops *o,
12793                                         int from_tty, int enabled,
12794                                         int internal, unsigned flags)
12795 {
12796   internal_error_pure_virtual_called ();
12797 }
12798
12799 static void
12800 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12801                                  struct symtabs_and_lines *sals)
12802 {
12803   internal_error_pure_virtual_called ();
12804 }
12805
12806 static struct breakpoint_ops base_breakpoint_ops =
12807 {
12808   base_breakpoint_dtor,
12809   base_breakpoint_allocate_location,
12810   base_breakpoint_re_set,
12811   base_breakpoint_insert_location,
12812   base_breakpoint_remove_location,
12813   base_breakpoint_breakpoint_hit,
12814   base_breakpoint_check_status,
12815   base_breakpoint_resources_needed,
12816   base_breakpoint_works_in_software_mode,
12817   base_breakpoint_print_it,
12818   NULL,
12819   base_breakpoint_print_one_detail,
12820   base_breakpoint_print_mention,
12821   base_breakpoint_print_recreate,
12822   base_breakpoint_create_sals_from_address,
12823   base_breakpoint_create_breakpoints_sal,
12824   base_breakpoint_decode_linespec,
12825 };
12826
12827 /* Default breakpoint_ops methods.  */
12828
12829 static void
12830 bkpt_re_set (struct breakpoint *b)
12831 {
12832   /* FIXME: is this still reachable?  */
12833   if (b->addr_string == NULL)
12834     {
12835       /* Anything without a string can't be re-set.  */
12836       delete_breakpoint (b);
12837       return;
12838     }
12839
12840   breakpoint_re_set_default (b);
12841 }
12842
12843 static int
12844 bkpt_insert_location (struct bp_location *bl)
12845 {
12846   if (bl->loc_type == bp_loc_hardware_breakpoint)
12847     return target_insert_hw_breakpoint (bl->gdbarch,
12848                                         &bl->target_info);
12849   else
12850     return target_insert_breakpoint (bl->gdbarch,
12851                                      &bl->target_info);
12852 }
12853
12854 static int
12855 bkpt_remove_location (struct bp_location *bl)
12856 {
12857   if (bl->loc_type == bp_loc_hardware_breakpoint)
12858     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12859   else
12860     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12861 }
12862
12863 static int
12864 bkpt_breakpoint_hit (const struct bp_location *bl,
12865                      struct address_space *aspace, CORE_ADDR bp_addr,
12866                      const struct target_waitstatus *ws)
12867 {
12868   struct breakpoint *b = bl->owner;
12869
12870   if (ws->kind != TARGET_WAITKIND_STOPPED
12871       || ws->value.sig != GDB_SIGNAL_TRAP)
12872     return 0;
12873
12874   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12875                                  aspace, bp_addr))
12876     return 0;
12877
12878   if (overlay_debugging         /* unmapped overlay section */
12879       && section_is_overlay (bl->section)
12880       && !section_is_mapped (bl->section))
12881     return 0;
12882
12883   return 1;
12884 }
12885
12886 static int
12887 bkpt_resources_needed (const struct bp_location *bl)
12888 {
12889   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12890
12891   return 1;
12892 }
12893
12894 static enum print_stop_action
12895 bkpt_print_it (bpstat bs)
12896 {
12897   struct breakpoint *b;
12898   const struct bp_location *bl;
12899   int bp_temp;
12900   struct ui_out *uiout = current_uiout;
12901
12902   gdb_assert (bs->bp_location_at != NULL);
12903
12904   bl = bs->bp_location_at;
12905   b = bs->breakpoint_at;
12906
12907   bp_temp = b->disposition == disp_del;
12908   if (bl->address != bl->requested_address)
12909     breakpoint_adjustment_warning (bl->requested_address,
12910                                    bl->address,
12911                                    b->number, 1);
12912   annotate_breakpoint (b->number);
12913   if (bp_temp)
12914     ui_out_text (uiout, "\nTemporary breakpoint ");
12915   else
12916     ui_out_text (uiout, "\nBreakpoint ");
12917   if (ui_out_is_mi_like_p (uiout))
12918     {
12919       ui_out_field_string (uiout, "reason",
12920                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12921       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12922     }
12923   ui_out_field_int (uiout, "bkptno", b->number);
12924   ui_out_text (uiout, ", ");
12925
12926   return PRINT_SRC_AND_LOC;
12927 }
12928
12929 static void
12930 bkpt_print_mention (struct breakpoint *b)
12931 {
12932   if (ui_out_is_mi_like_p (current_uiout))
12933     return;
12934
12935   switch (b->type)
12936     {
12937     case bp_breakpoint:
12938     case bp_gnu_ifunc_resolver:
12939       if (b->disposition == disp_del)
12940         printf_filtered (_("Temporary breakpoint"));
12941       else
12942         printf_filtered (_("Breakpoint"));
12943       printf_filtered (_(" %d"), b->number);
12944       if (b->type == bp_gnu_ifunc_resolver)
12945         printf_filtered (_(" at gnu-indirect-function resolver"));
12946       break;
12947     case bp_hardware_breakpoint:
12948       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12949       break;
12950     case bp_dprintf:
12951       printf_filtered (_("Dprintf %d"), b->number);
12952       break;
12953     }
12954
12955   say_where (b);
12956 }
12957
12958 static void
12959 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12960 {
12961   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12962     fprintf_unfiltered (fp, "tbreak");
12963   else if (tp->type == bp_breakpoint)
12964     fprintf_unfiltered (fp, "break");
12965   else if (tp->type == bp_hardware_breakpoint
12966            && tp->disposition == disp_del)
12967     fprintf_unfiltered (fp, "thbreak");
12968   else if (tp->type == bp_hardware_breakpoint)
12969     fprintf_unfiltered (fp, "hbreak");
12970   else
12971     internal_error (__FILE__, __LINE__,
12972                     _("unhandled breakpoint type %d"), (int) tp->type);
12973
12974   fprintf_unfiltered (fp, " %s", tp->addr_string);
12975   print_recreate_thread (tp, fp);
12976 }
12977
12978 static void
12979 bkpt_create_sals_from_address (char **arg,
12980                                struct linespec_result *canonical,
12981                                enum bptype type_wanted,
12982                                char *addr_start, char **copy_arg)
12983 {
12984   create_sals_from_address_default (arg, canonical, type_wanted,
12985                                     addr_start, copy_arg);
12986 }
12987
12988 static void
12989 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12990                              struct linespec_result *canonical,
12991                              struct linespec_sals *lsal,
12992                              char *cond_string,
12993                              char *extra_string,
12994                              enum bptype type_wanted,
12995                              enum bpdisp disposition,
12996                              int thread,
12997                              int task, int ignore_count,
12998                              const struct breakpoint_ops *ops,
12999                              int from_tty, int enabled,
13000                              int internal, unsigned flags)
13001 {
13002   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13003                                   cond_string, extra_string,
13004                                   type_wanted,
13005                                   disposition, thread, task,
13006                                   ignore_count, ops, from_tty,
13007                                   enabled, internal, flags);
13008 }
13009
13010 static void
13011 bkpt_decode_linespec (struct breakpoint *b, char **s,
13012                       struct symtabs_and_lines *sals)
13013 {
13014   decode_linespec_default (b, s, sals);
13015 }
13016
13017 /* Virtual table for internal breakpoints.  */
13018
13019 static void
13020 internal_bkpt_re_set (struct breakpoint *b)
13021 {
13022   switch (b->type)
13023     {
13024       /* Delete overlay event and longjmp master breakpoints; they
13025          will be reset later by breakpoint_re_set.  */
13026     case bp_overlay_event:
13027     case bp_longjmp_master:
13028     case bp_std_terminate_master:
13029     case bp_exception_master:
13030       delete_breakpoint (b);
13031       break;
13032
13033       /* This breakpoint is special, it's set up when the inferior
13034          starts and we really don't want to touch it.  */
13035     case bp_shlib_event:
13036
13037       /* Like bp_shlib_event, this breakpoint type is special.  Once
13038          it is set up, we do not want to touch it.  */
13039     case bp_thread_event:
13040       break;
13041     }
13042 }
13043
13044 static void
13045 internal_bkpt_check_status (bpstat bs)
13046 {
13047   if (bs->breakpoint_at->type == bp_shlib_event)
13048     {
13049       /* If requested, stop when the dynamic linker notifies GDB of
13050          events.  This allows the user to get control and place
13051          breakpoints in initializer routines for dynamically loaded
13052          objects (among other things).  */
13053       bs->stop = stop_on_solib_events;
13054       bs->print = stop_on_solib_events;
13055     }
13056   else
13057     bs->stop = 0;
13058 }
13059
13060 static enum print_stop_action
13061 internal_bkpt_print_it (bpstat bs)
13062 {
13063   struct ui_out *uiout = current_uiout;
13064   struct breakpoint *b;
13065
13066   b = bs->breakpoint_at;
13067
13068   switch (b->type)
13069     {
13070     case bp_shlib_event:
13071       /* Did we stop because the user set the stop_on_solib_events
13072          variable?  (If so, we report this as a generic, "Stopped due
13073          to shlib event" message.) */
13074       print_solib_event (0);
13075       break;
13076
13077     case bp_thread_event:
13078       /* Not sure how we will get here.
13079          GDB should not stop for these breakpoints.  */
13080       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13081       break;
13082
13083     case bp_overlay_event:
13084       /* By analogy with the thread event, GDB should not stop for these.  */
13085       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13086       break;
13087
13088     case bp_longjmp_master:
13089       /* These should never be enabled.  */
13090       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13091       break;
13092
13093     case bp_std_terminate_master:
13094       /* These should never be enabled.  */
13095       printf_filtered (_("std::terminate Master Breakpoint: "
13096                          "gdb should not stop!\n"));
13097       break;
13098
13099     case bp_exception_master:
13100       /* These should never be enabled.  */
13101       printf_filtered (_("Exception Master Breakpoint: "
13102                          "gdb should not stop!\n"));
13103       break;
13104     }
13105
13106   return PRINT_NOTHING;
13107 }
13108
13109 static void
13110 internal_bkpt_print_mention (struct breakpoint *b)
13111 {
13112   /* Nothing to mention.  These breakpoints are internal.  */
13113 }
13114
13115 /* Virtual table for momentary breakpoints  */
13116
13117 static void
13118 momentary_bkpt_re_set (struct breakpoint *b)
13119 {
13120   /* Keep temporary breakpoints, which can be encountered when we step
13121      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13122      Otherwise these should have been blown away via the cleanup chain
13123      or by breakpoint_init_inferior when we rerun the executable.  */
13124 }
13125
13126 static void
13127 momentary_bkpt_check_status (bpstat bs)
13128 {
13129   /* Nothing.  The point of these breakpoints is causing a stop.  */
13130 }
13131
13132 static enum print_stop_action
13133 momentary_bkpt_print_it (bpstat bs)
13134 {
13135   struct ui_out *uiout = current_uiout;
13136
13137   if (ui_out_is_mi_like_p (uiout))
13138     {
13139       struct breakpoint *b = bs->breakpoint_at;
13140
13141       switch (b->type)
13142         {
13143         case bp_finish:
13144           ui_out_field_string
13145             (uiout, "reason",
13146              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13147           break;
13148
13149         case bp_until:
13150           ui_out_field_string
13151             (uiout, "reason",
13152              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13153           break;
13154         }
13155     }
13156
13157   return PRINT_UNKNOWN;
13158 }
13159
13160 static void
13161 momentary_bkpt_print_mention (struct breakpoint *b)
13162 {
13163   /* Nothing to mention.  These breakpoints are internal.  */
13164 }
13165
13166 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13167
13168    It gets cleared already on the removal of the first one of such placed
13169    breakpoints.  This is OK as they get all removed altogether.  */
13170
13171 static void
13172 longjmp_bkpt_dtor (struct breakpoint *self)
13173 {
13174   struct thread_info *tp = find_thread_id (self->thread);
13175
13176   if (tp)
13177     tp->initiating_frame = null_frame_id;
13178
13179   momentary_breakpoint_ops.dtor (self);
13180 }
13181
13182 /* Specific methods for probe breakpoints.  */
13183
13184 static int
13185 bkpt_probe_insert_location (struct bp_location *bl)
13186 {
13187   int v = bkpt_insert_location (bl);
13188
13189   if (v == 0)
13190     {
13191       /* The insertion was successful, now let's set the probe's semaphore
13192          if needed.  */
13193       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13194     }
13195
13196   return v;
13197 }
13198
13199 static int
13200 bkpt_probe_remove_location (struct bp_location *bl)
13201 {
13202   /* Let's clear the semaphore before removing the location.  */
13203   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13204
13205   return bkpt_remove_location (bl);
13206 }
13207
13208 static void
13209 bkpt_probe_create_sals_from_address (char **arg,
13210                                      struct linespec_result *canonical,
13211                                      enum bptype type_wanted,
13212                                      char *addr_start, char **copy_arg)
13213 {
13214   struct linespec_sals lsal;
13215
13216   lsal.sals = parse_probes (arg, canonical);
13217
13218   *copy_arg = xstrdup (canonical->addr_string);
13219   lsal.canonical = xstrdup (*copy_arg);
13220
13221   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13222 }
13223
13224 static void
13225 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13226                             struct symtabs_and_lines *sals)
13227 {
13228   *sals = parse_probes (s, NULL);
13229   if (!sals->sals)
13230     error (_("probe not found"));
13231 }
13232
13233 /* The breakpoint_ops structure to be used in tracepoints.  */
13234
13235 static void
13236 tracepoint_re_set (struct breakpoint *b)
13237 {
13238   breakpoint_re_set_default (b);
13239 }
13240
13241 static int
13242 tracepoint_breakpoint_hit (const struct bp_location *bl,
13243                            struct address_space *aspace, CORE_ADDR bp_addr,
13244                            const struct target_waitstatus *ws)
13245 {
13246   /* By definition, the inferior does not report stops at
13247      tracepoints.  */
13248   return 0;
13249 }
13250
13251 static void
13252 tracepoint_print_one_detail (const struct breakpoint *self,
13253                              struct ui_out *uiout)
13254 {
13255   struct tracepoint *tp = (struct tracepoint *) self;
13256   if (tp->static_trace_marker_id)
13257     {
13258       gdb_assert (self->type == bp_static_tracepoint);
13259
13260       ui_out_text (uiout, "\tmarker id is ");
13261       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13262                            tp->static_trace_marker_id);
13263       ui_out_text (uiout, "\n");
13264     }
13265 }
13266
13267 static void
13268 tracepoint_print_mention (struct breakpoint *b)
13269 {
13270   if (ui_out_is_mi_like_p (current_uiout))
13271     return;
13272
13273   switch (b->type)
13274     {
13275     case bp_tracepoint:
13276       printf_filtered (_("Tracepoint"));
13277       printf_filtered (_(" %d"), b->number);
13278       break;
13279     case bp_fast_tracepoint:
13280       printf_filtered (_("Fast tracepoint"));
13281       printf_filtered (_(" %d"), b->number);
13282       break;
13283     case bp_static_tracepoint:
13284       printf_filtered (_("Static tracepoint"));
13285       printf_filtered (_(" %d"), b->number);
13286       break;
13287     default:
13288       internal_error (__FILE__, __LINE__,
13289                       _("unhandled tracepoint type %d"), (int) b->type);
13290     }
13291
13292   say_where (b);
13293 }
13294
13295 static void
13296 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13297 {
13298   struct tracepoint *tp = (struct tracepoint *) self;
13299
13300   if (self->type == bp_fast_tracepoint)
13301     fprintf_unfiltered (fp, "ftrace");
13302   if (self->type == bp_static_tracepoint)
13303     fprintf_unfiltered (fp, "strace");
13304   else if (self->type == bp_tracepoint)
13305     fprintf_unfiltered (fp, "trace");
13306   else
13307     internal_error (__FILE__, __LINE__,
13308                     _("unhandled tracepoint type %d"), (int) self->type);
13309
13310   fprintf_unfiltered (fp, " %s", self->addr_string);
13311   print_recreate_thread (self, fp);
13312
13313   if (tp->pass_count)
13314     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13315 }
13316
13317 static void
13318 tracepoint_create_sals_from_address (char **arg,
13319                                      struct linespec_result *canonical,
13320                                      enum bptype type_wanted,
13321                                      char *addr_start, char **copy_arg)
13322 {
13323   create_sals_from_address_default (arg, canonical, type_wanted,
13324                                     addr_start, copy_arg);
13325 }
13326
13327 static void
13328 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13329                                    struct linespec_result *canonical,
13330                                    struct linespec_sals *lsal,
13331                                    char *cond_string,
13332                                    char *extra_string,
13333                                    enum bptype type_wanted,
13334                                    enum bpdisp disposition,
13335                                    int thread,
13336                                    int task, int ignore_count,
13337                                    const struct breakpoint_ops *ops,
13338                                    int from_tty, int enabled,
13339                                    int internal, unsigned flags)
13340 {
13341   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13342                                   cond_string, extra_string,
13343                                   type_wanted,
13344                                   disposition, thread, task,
13345                                   ignore_count, ops, from_tty,
13346                                   enabled, internal, flags);
13347 }
13348
13349 static void
13350 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13351                             struct symtabs_and_lines *sals)
13352 {
13353   decode_linespec_default (b, s, sals);
13354 }
13355
13356 struct breakpoint_ops tracepoint_breakpoint_ops;
13357
13358 /* The breakpoint_ops structure to be use on tracepoints placed in a
13359    static probe.  */
13360
13361 static void
13362 tracepoint_probe_create_sals_from_address (char **arg,
13363                                            struct linespec_result *canonical,
13364                                            enum bptype type_wanted,
13365                                            char *addr_start, char **copy_arg)
13366 {
13367   /* We use the same method for breakpoint on probes.  */
13368   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13369                                        addr_start, copy_arg);
13370 }
13371
13372 static void
13373 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13374                                   struct symtabs_and_lines *sals)
13375 {
13376   /* We use the same method for breakpoint on probes.  */
13377   bkpt_probe_decode_linespec (b, s, sals);
13378 }
13379
13380 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13381
13382 /* The breakpoint_ops structure to be used on static tracepoints with
13383    markers (`-m').  */
13384
13385 static void
13386 strace_marker_create_sals_from_address (char **arg,
13387                                         struct linespec_result *canonical,
13388                                         enum bptype type_wanted,
13389                                         char *addr_start, char **copy_arg)
13390 {
13391   struct linespec_sals lsal;
13392
13393   lsal.sals = decode_static_tracepoint_spec (arg);
13394
13395   *copy_arg = savestring (addr_start, *arg - addr_start);
13396
13397   canonical->addr_string = xstrdup (*copy_arg);
13398   lsal.canonical = xstrdup (*copy_arg);
13399   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13400 }
13401
13402 static void
13403 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13404                                       struct linespec_result *canonical,
13405                                       struct linespec_sals *lsal,
13406                                       char *cond_string,
13407                                       char *extra_string,
13408                                       enum bptype type_wanted,
13409                                       enum bpdisp disposition,
13410                                       int thread,
13411                                       int task, int ignore_count,
13412                                       const struct breakpoint_ops *ops,
13413                                       int from_tty, int enabled,
13414                                       int internal, unsigned flags)
13415 {
13416   int i;
13417
13418   /* If the user is creating a static tracepoint by marker id
13419      (strace -m MARKER_ID), then store the sals index, so that
13420      breakpoint_re_set can try to match up which of the newly
13421      found markers corresponds to this one, and, don't try to
13422      expand multiple locations for each sal, given than SALS
13423      already should contain all sals for MARKER_ID.  */
13424
13425   for (i = 0; i < lsal->sals.nelts; ++i)
13426     {
13427       struct symtabs_and_lines expanded;
13428       struct tracepoint *tp;
13429       struct cleanup *old_chain;
13430       char *addr_string;
13431
13432       expanded.nelts = 1;
13433       expanded.sals = &lsal->sals.sals[i];
13434
13435       addr_string = xstrdup (canonical->addr_string);
13436       old_chain = make_cleanup (xfree, addr_string);
13437
13438       tp = XCNEW (struct tracepoint);
13439       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13440                            addr_string, NULL,
13441                            cond_string, extra_string,
13442                            type_wanted, disposition,
13443                            thread, task, ignore_count, ops,
13444                            from_tty, enabled, internal, flags,
13445                            canonical->special_display);
13446       /* Given that its possible to have multiple markers with
13447          the same string id, if the user is creating a static
13448          tracepoint by marker id ("strace -m MARKER_ID"), then
13449          store the sals index, so that breakpoint_re_set can
13450          try to match up which of the newly found markers
13451          corresponds to this one  */
13452       tp->static_trace_marker_id_idx = i;
13453
13454       install_breakpoint (internal, &tp->base, 0);
13455
13456       discard_cleanups (old_chain);
13457     }
13458 }
13459
13460 static void
13461 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13462                                struct symtabs_and_lines *sals)
13463 {
13464   struct tracepoint *tp = (struct tracepoint *) b;
13465
13466   *sals = decode_static_tracepoint_spec (s);
13467   if (sals->nelts > tp->static_trace_marker_id_idx)
13468     {
13469       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13470       sals->nelts = 1;
13471     }
13472   else
13473     error (_("marker %s not found"), tp->static_trace_marker_id);
13474 }
13475
13476 static struct breakpoint_ops strace_marker_breakpoint_ops;
13477
13478 static int
13479 strace_marker_p (struct breakpoint *b)
13480 {
13481   return b->ops == &strace_marker_breakpoint_ops;
13482 }
13483
13484 /* Delete a breakpoint and clean up all traces of it in the data
13485    structures.  */
13486
13487 void
13488 delete_breakpoint (struct breakpoint *bpt)
13489 {
13490   struct breakpoint *b;
13491
13492   gdb_assert (bpt != NULL);
13493
13494   /* Has this bp already been deleted?  This can happen because
13495      multiple lists can hold pointers to bp's.  bpstat lists are
13496      especial culprits.
13497
13498      One example of this happening is a watchpoint's scope bp.  When
13499      the scope bp triggers, we notice that the watchpoint is out of
13500      scope, and delete it.  We also delete its scope bp.  But the
13501      scope bp is marked "auto-deleting", and is already on a bpstat.
13502      That bpstat is then checked for auto-deleting bp's, which are
13503      deleted.
13504
13505      A real solution to this problem might involve reference counts in
13506      bp's, and/or giving them pointers back to their referencing
13507      bpstat's, and teaching delete_breakpoint to only free a bp's
13508      storage when no more references were extent.  A cheaper bandaid
13509      was chosen.  */
13510   if (bpt->type == bp_none)
13511     return;
13512
13513   /* At least avoid this stale reference until the reference counting
13514      of breakpoints gets resolved.  */
13515   if (bpt->related_breakpoint != bpt)
13516     {
13517       struct breakpoint *related;
13518       struct watchpoint *w;
13519
13520       if (bpt->type == bp_watchpoint_scope)
13521         w = (struct watchpoint *) bpt->related_breakpoint;
13522       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13523         w = (struct watchpoint *) bpt;
13524       else
13525         w = NULL;
13526       if (w != NULL)
13527         watchpoint_del_at_next_stop (w);
13528
13529       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13530       for (related = bpt; related->related_breakpoint != bpt;
13531            related = related->related_breakpoint);
13532       related->related_breakpoint = bpt->related_breakpoint;
13533       bpt->related_breakpoint = bpt;
13534     }
13535
13536   /* watch_command_1 creates a watchpoint but only sets its number if
13537      update_watchpoint succeeds in creating its bp_locations.  If there's
13538      a problem in that process, we'll be asked to delete the half-created
13539      watchpoint.  In that case, don't announce the deletion.  */
13540   if (bpt->number)
13541     observer_notify_breakpoint_deleted (bpt);
13542
13543   if (breakpoint_chain == bpt)
13544     breakpoint_chain = bpt->next;
13545
13546   ALL_BREAKPOINTS (b)
13547     if (b->next == bpt)
13548     {
13549       b->next = bpt->next;
13550       break;
13551     }
13552
13553   /* Be sure no bpstat's are pointing at the breakpoint after it's
13554      been freed.  */
13555   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13556      in all threads for now.  Note that we cannot just remove bpstats
13557      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13558      commands are associated with the bpstat; if we remove it here,
13559      then the later call to bpstat_do_actions (&stop_bpstat); in
13560      event-top.c won't do anything, and temporary breakpoints with
13561      commands won't work.  */
13562
13563   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13564
13565   /* Now that breakpoint is removed from breakpoint list, update the
13566      global location list.  This will remove locations that used to
13567      belong to this breakpoint.  Do this before freeing the breakpoint
13568      itself, since remove_breakpoint looks at location's owner.  It
13569      might be better design to have location completely
13570      self-contained, but it's not the case now.  */
13571   update_global_location_list (0);
13572
13573   bpt->ops->dtor (bpt);
13574   /* On the chance that someone will soon try again to delete this
13575      same bp, we mark it as deleted before freeing its storage.  */
13576   bpt->type = bp_none;
13577   xfree (bpt);
13578 }
13579
13580 static void
13581 do_delete_breakpoint_cleanup (void *b)
13582 {
13583   delete_breakpoint (b);
13584 }
13585
13586 struct cleanup *
13587 make_cleanup_delete_breakpoint (struct breakpoint *b)
13588 {
13589   return make_cleanup (do_delete_breakpoint_cleanup, b);
13590 }
13591
13592 /* Iterator function to call a user-provided callback function once
13593    for each of B and its related breakpoints.  */
13594
13595 static void
13596 iterate_over_related_breakpoints (struct breakpoint *b,
13597                                   void (*function) (struct breakpoint *,
13598                                                     void *),
13599                                   void *data)
13600 {
13601   struct breakpoint *related;
13602
13603   related = b;
13604   do
13605     {
13606       struct breakpoint *next;
13607
13608       /* FUNCTION may delete RELATED.  */
13609       next = related->related_breakpoint;
13610
13611       if (next == related)
13612         {
13613           /* RELATED is the last ring entry.  */
13614           function (related, data);
13615
13616           /* FUNCTION may have deleted it, so we'd never reach back to
13617              B.  There's nothing left to do anyway, so just break
13618              out.  */
13619           break;
13620         }
13621       else
13622         function (related, data);
13623
13624       related = next;
13625     }
13626   while (related != b);
13627 }
13628
13629 static void
13630 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13631 {
13632   delete_breakpoint (b);
13633 }
13634
13635 /* A callback for map_breakpoint_numbers that calls
13636    delete_breakpoint.  */
13637
13638 static void
13639 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13640 {
13641   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13642 }
13643
13644 void
13645 delete_command (char *arg, int from_tty)
13646 {
13647   struct breakpoint *b, *b_tmp;
13648
13649   dont_repeat ();
13650
13651   if (arg == 0)
13652     {
13653       int breaks_to_delete = 0;
13654
13655       /* Delete all breakpoints if no argument.  Do not delete
13656          internal breakpoints, these have to be deleted with an
13657          explicit breakpoint number argument.  */
13658       ALL_BREAKPOINTS (b)
13659         if (user_breakpoint_p (b))
13660           {
13661             breaks_to_delete = 1;
13662             break;
13663           }
13664
13665       /* Ask user only if there are some breakpoints to delete.  */
13666       if (!from_tty
13667           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13668         {
13669           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13670             if (user_breakpoint_p (b))
13671               delete_breakpoint (b);
13672         }
13673     }
13674   else
13675     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13676 }
13677
13678 static int
13679 all_locations_are_pending (struct bp_location *loc)
13680 {
13681   for (; loc; loc = loc->next)
13682     if (!loc->shlib_disabled
13683         && !loc->pspace->executing_startup)
13684       return 0;
13685   return 1;
13686 }
13687
13688 /* Subroutine of update_breakpoint_locations to simplify it.
13689    Return non-zero if multiple fns in list LOC have the same name.
13690    Null names are ignored.  */
13691
13692 static int
13693 ambiguous_names_p (struct bp_location *loc)
13694 {
13695   struct bp_location *l;
13696   htab_t htab = htab_create_alloc (13, htab_hash_string,
13697                                    (int (*) (const void *, 
13698                                              const void *)) streq,
13699                                    NULL, xcalloc, xfree);
13700
13701   for (l = loc; l != NULL; l = l->next)
13702     {
13703       const char **slot;
13704       const char *name = l->function_name;
13705
13706       /* Allow for some names to be NULL, ignore them.  */
13707       if (name == NULL)
13708         continue;
13709
13710       slot = (const char **) htab_find_slot (htab, (const void *) name,
13711                                              INSERT);
13712       /* NOTE: We can assume slot != NULL here because xcalloc never
13713          returns NULL.  */
13714       if (*slot != NULL)
13715         {
13716           htab_delete (htab);
13717           return 1;
13718         }
13719       *slot = name;
13720     }
13721
13722   htab_delete (htab);
13723   return 0;
13724 }
13725
13726 /* When symbols change, it probably means the sources changed as well,
13727    and it might mean the static tracepoint markers are no longer at
13728    the same address or line numbers they used to be at last we
13729    checked.  Losing your static tracepoints whenever you rebuild is
13730    undesirable.  This function tries to resync/rematch gdb static
13731    tracepoints with the markers on the target, for static tracepoints
13732    that have not been set by marker id.  Static tracepoint that have
13733    been set by marker id are reset by marker id in breakpoint_re_set.
13734    The heuristic is:
13735
13736    1) For a tracepoint set at a specific address, look for a marker at
13737    the old PC.  If one is found there, assume to be the same marker.
13738    If the name / string id of the marker found is different from the
13739    previous known name, assume that means the user renamed the marker
13740    in the sources, and output a warning.
13741
13742    2) For a tracepoint set at a given line number, look for a marker
13743    at the new address of the old line number.  If one is found there,
13744    assume to be the same marker.  If the name / string id of the
13745    marker found is different from the previous known name, assume that
13746    means the user renamed the marker in the sources, and output a
13747    warning.
13748
13749    3) If a marker is no longer found at the same address or line, it
13750    may mean the marker no longer exists.  But it may also just mean
13751    the code changed a bit.  Maybe the user added a few lines of code
13752    that made the marker move up or down (in line number terms).  Ask
13753    the target for info about the marker with the string id as we knew
13754    it.  If found, update line number and address in the matching
13755    static tracepoint.  This will get confused if there's more than one
13756    marker with the same ID (possible in UST, although unadvised
13757    precisely because it confuses tools).  */
13758
13759 static struct symtab_and_line
13760 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13761 {
13762   struct tracepoint *tp = (struct tracepoint *) b;
13763   struct static_tracepoint_marker marker;
13764   CORE_ADDR pc;
13765
13766   pc = sal.pc;
13767   if (sal.line)
13768     find_line_pc (sal.symtab, sal.line, &pc);
13769
13770   if (target_static_tracepoint_marker_at (pc, &marker))
13771     {
13772       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13773         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13774                  b->number,
13775                  tp->static_trace_marker_id, marker.str_id);
13776
13777       xfree (tp->static_trace_marker_id);
13778       tp->static_trace_marker_id = xstrdup (marker.str_id);
13779       release_static_tracepoint_marker (&marker);
13780
13781       return sal;
13782     }
13783
13784   /* Old marker wasn't found on target at lineno.  Try looking it up
13785      by string ID.  */
13786   if (!sal.explicit_pc
13787       && sal.line != 0
13788       && sal.symtab != NULL
13789       && tp->static_trace_marker_id != NULL)
13790     {
13791       VEC(static_tracepoint_marker_p) *markers;
13792
13793       markers
13794         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13795
13796       if (!VEC_empty(static_tracepoint_marker_p, markers))
13797         {
13798           struct symtab_and_line sal2;
13799           struct symbol *sym;
13800           struct static_tracepoint_marker *tpmarker;
13801           struct ui_out *uiout = current_uiout;
13802
13803           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13804
13805           xfree (tp->static_trace_marker_id);
13806           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13807
13808           warning (_("marker for static tracepoint %d (%s) not "
13809                      "found at previous line number"),
13810                    b->number, tp->static_trace_marker_id);
13811
13812           init_sal (&sal2);
13813
13814           sal2.pc = tpmarker->address;
13815
13816           sal2 = find_pc_line (tpmarker->address, 0);
13817           sym = find_pc_sect_function (tpmarker->address, NULL);
13818           ui_out_text (uiout, "Now in ");
13819           if (sym)
13820             {
13821               ui_out_field_string (uiout, "func",
13822                                    SYMBOL_PRINT_NAME (sym));
13823               ui_out_text (uiout, " at ");
13824             }
13825           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13826           ui_out_text (uiout, ":");
13827
13828           if (ui_out_is_mi_like_p (uiout))
13829             {
13830               const char *fullname = symtab_to_fullname (sal2.symtab);
13831
13832               if (fullname)
13833                 ui_out_field_string (uiout, "fullname", fullname);
13834             }
13835
13836           ui_out_field_int (uiout, "line", sal2.line);
13837           ui_out_text (uiout, "\n");
13838
13839           b->loc->line_number = sal2.line;
13840
13841           xfree (b->loc->source_file);
13842           if (sym)
13843             b->loc->source_file = xstrdup (sal2.symtab->filename);
13844           else
13845             b->loc->source_file = NULL;
13846
13847           xfree (b->addr_string);
13848           b->addr_string = xstrprintf ("%s:%d",
13849                                        sal2.symtab->filename,
13850                                        b->loc->line_number);
13851
13852           /* Might be nice to check if function changed, and warn if
13853              so.  */
13854
13855           release_static_tracepoint_marker (tpmarker);
13856         }
13857     }
13858   return sal;
13859 }
13860
13861 /* Returns 1 iff locations A and B are sufficiently same that
13862    we don't need to report breakpoint as changed.  */
13863
13864 static int
13865 locations_are_equal (struct bp_location *a, struct bp_location *b)
13866 {
13867   while (a && b)
13868     {
13869       if (a->address != b->address)
13870         return 0;
13871
13872       if (a->shlib_disabled != b->shlib_disabled)
13873         return 0;
13874
13875       if (a->enabled != b->enabled)
13876         return 0;
13877
13878       a = a->next;
13879       b = b->next;
13880     }
13881
13882   if ((a == NULL) != (b == NULL))
13883     return 0;
13884
13885   return 1;
13886 }
13887
13888 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13889    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13890    a ranged breakpoint.  */
13891
13892 void
13893 update_breakpoint_locations (struct breakpoint *b,
13894                              struct symtabs_and_lines sals,
13895                              struct symtabs_and_lines sals_end)
13896 {
13897   int i;
13898   struct bp_location *existing_locations = b->loc;
13899
13900   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13901     {
13902       /* Ranged breakpoints have only one start location and one end
13903          location.  */
13904       b->enable_state = bp_disabled;
13905       update_global_location_list (1);
13906       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13907                            "multiple locations found\n"),
13908                          b->number);
13909       return;
13910     }
13911
13912   /* If there's no new locations, and all existing locations are
13913      pending, don't do anything.  This optimizes the common case where
13914      all locations are in the same shared library, that was unloaded.
13915      We'd like to retain the location, so that when the library is
13916      loaded again, we don't loose the enabled/disabled status of the
13917      individual locations.  */
13918   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13919     return;
13920
13921   b->loc = NULL;
13922
13923   for (i = 0; i < sals.nelts; ++i)
13924     {
13925       struct bp_location *new_loc;
13926
13927       switch_to_program_space_and_thread (sals.sals[i].pspace);
13928
13929       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13930
13931       /* Reparse conditions, they might contain references to the
13932          old symtab.  */
13933       if (b->cond_string != NULL)
13934         {
13935           char *s;
13936           volatile struct gdb_exception e;
13937
13938           s = b->cond_string;
13939           TRY_CATCH (e, RETURN_MASK_ERROR)
13940             {
13941               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13942                                            block_for_pc (sals.sals[i].pc), 
13943                                            0);
13944             }
13945           if (e.reason < 0)
13946             {
13947               warning (_("failed to reevaluate condition "
13948                          "for breakpoint %d: %s"), 
13949                        b->number, e.message);
13950               new_loc->enabled = 0;
13951             }
13952         }
13953
13954       if (sals_end.nelts)
13955         {
13956           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13957
13958           new_loc->length = end - sals.sals[0].pc + 1;
13959         }
13960     }
13961
13962   /* Update locations of permanent breakpoints.  */
13963   if (b->enable_state == bp_permanent)
13964     make_breakpoint_permanent (b);
13965
13966   /* If possible, carry over 'disable' status from existing
13967      breakpoints.  */
13968   {
13969     struct bp_location *e = existing_locations;
13970     /* If there are multiple breakpoints with the same function name,
13971        e.g. for inline functions, comparing function names won't work.
13972        Instead compare pc addresses; this is just a heuristic as things
13973        may have moved, but in practice it gives the correct answer
13974        often enough until a better solution is found.  */
13975     int have_ambiguous_names = ambiguous_names_p (b->loc);
13976
13977     for (; e; e = e->next)
13978       {
13979         if (!e->enabled && e->function_name)
13980           {
13981             struct bp_location *l = b->loc;
13982             if (have_ambiguous_names)
13983               {
13984                 for (; l; l = l->next)
13985                   if (breakpoint_locations_match (e, l))
13986                     {
13987                       l->enabled = 0;
13988                       break;
13989                     }
13990               }
13991             else
13992               {
13993                 for (; l; l = l->next)
13994                   if (l->function_name
13995                       && strcmp (e->function_name, l->function_name) == 0)
13996                     {
13997                       l->enabled = 0;
13998                       break;
13999                     }
14000               }
14001           }
14002       }
14003   }
14004
14005   if (!locations_are_equal (existing_locations, b->loc))
14006     observer_notify_breakpoint_modified (b);
14007
14008   update_global_location_list (1);
14009 }
14010
14011 /* Find the SaL locations corresponding to the given ADDR_STRING.
14012    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14013
14014 static struct symtabs_and_lines
14015 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14016 {
14017   char *s;
14018   struct symtabs_and_lines sals = {0};
14019   volatile struct gdb_exception e;
14020
14021   gdb_assert (b->ops != NULL);
14022   s = addr_string;
14023
14024   TRY_CATCH (e, RETURN_MASK_ERROR)
14025     {
14026       b->ops->decode_linespec (b, &s, &sals);
14027     }
14028   if (e.reason < 0)
14029     {
14030       int not_found_and_ok = 0;
14031       /* For pending breakpoints, it's expected that parsing will
14032          fail until the right shared library is loaded.  User has
14033          already told to create pending breakpoints and don't need
14034          extra messages.  If breakpoint is in bp_shlib_disabled
14035          state, then user already saw the message about that
14036          breakpoint being disabled, and don't want to see more
14037          errors.  */
14038       if (e.error == NOT_FOUND_ERROR
14039           && (b->condition_not_parsed 
14040               || (b->loc && b->loc->shlib_disabled)
14041               || (b->loc && b->loc->pspace->executing_startup)
14042               || b->enable_state == bp_disabled))
14043         not_found_and_ok = 1;
14044
14045       if (!not_found_and_ok)
14046         {
14047           /* We surely don't want to warn about the same breakpoint
14048              10 times.  One solution, implemented here, is disable
14049              the breakpoint on error.  Another solution would be to
14050              have separate 'warning emitted' flag.  Since this
14051              happens only when a binary has changed, I don't know
14052              which approach is better.  */
14053           b->enable_state = bp_disabled;
14054           throw_exception (e);
14055         }
14056     }
14057
14058   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14059     {
14060       int i;
14061
14062       for (i = 0; i < sals.nelts; ++i)
14063         resolve_sal_pc (&sals.sals[i]);
14064       if (b->condition_not_parsed && s && s[0])
14065         {
14066           char *cond_string, *extra_string;
14067           int thread, task;
14068
14069           find_condition_and_thread (s, sals.sals[0].pc,
14070                                      &cond_string, &thread, &task,
14071                                      &extra_string);
14072           if (cond_string)
14073             b->cond_string = cond_string;
14074           b->thread = thread;
14075           b->task = task;
14076           if (extra_string)
14077             b->extra_string = extra_string;
14078           b->condition_not_parsed = 0;
14079         }
14080
14081       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14082         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14083
14084       *found = 1;
14085     }
14086   else
14087     *found = 0;
14088
14089   return sals;
14090 }
14091
14092 /* The default re_set method, for typical hardware or software
14093    breakpoints.  Reevaluate the breakpoint and recreate its
14094    locations.  */
14095
14096 static void
14097 breakpoint_re_set_default (struct breakpoint *b)
14098 {
14099   int found;
14100   struct symtabs_and_lines sals, sals_end;
14101   struct symtabs_and_lines expanded = {0};
14102   struct symtabs_and_lines expanded_end = {0};
14103
14104   sals = addr_string_to_sals (b, b->addr_string, &found);
14105   if (found)
14106     {
14107       make_cleanup (xfree, sals.sals);
14108       expanded = sals;
14109     }
14110
14111   if (b->addr_string_range_end)
14112     {
14113       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14114       if (found)
14115         {
14116           make_cleanup (xfree, sals_end.sals);
14117           expanded_end = sals_end;
14118         }
14119     }
14120
14121   update_breakpoint_locations (b, expanded, expanded_end);
14122 }
14123
14124 /* Default method for creating SALs from an address string.  It basically
14125    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14126
14127 static void
14128 create_sals_from_address_default (char **arg,
14129                                   struct linespec_result *canonical,
14130                                   enum bptype type_wanted,
14131                                   char *addr_start, char **copy_arg)
14132 {
14133   parse_breakpoint_sals (arg, canonical);
14134 }
14135
14136 /* Call create_breakpoints_sal for the given arguments.  This is the default
14137    function for the `create_breakpoints_sal' method of
14138    breakpoint_ops.  */
14139
14140 static void
14141 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14142                                 struct linespec_result *canonical,
14143                                 struct linespec_sals *lsal,
14144                                 char *cond_string,
14145                                 char *extra_string,
14146                                 enum bptype type_wanted,
14147                                 enum bpdisp disposition,
14148                                 int thread,
14149                                 int task, int ignore_count,
14150                                 const struct breakpoint_ops *ops,
14151                                 int from_tty, int enabled,
14152                                 int internal, unsigned flags)
14153 {
14154   create_breakpoints_sal (gdbarch, canonical, cond_string,
14155                           extra_string,
14156                           type_wanted, disposition,
14157                           thread, task, ignore_count, ops, from_tty,
14158                           enabled, internal, flags);
14159 }
14160
14161 /* Decode the line represented by S by calling decode_line_full.  This is the
14162    default function for the `decode_linespec' method of breakpoint_ops.  */
14163
14164 static void
14165 decode_linespec_default (struct breakpoint *b, char **s,
14166                          struct symtabs_and_lines *sals)
14167 {
14168   struct linespec_result canonical;
14169
14170   init_linespec_result (&canonical);
14171   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14172                     (struct symtab *) NULL, 0,
14173                     &canonical, multiple_symbols_all,
14174                     b->filter);
14175
14176   /* We should get 0 or 1 resulting SALs.  */
14177   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14178
14179   if (VEC_length (linespec_sals, canonical.sals) > 0)
14180     {
14181       struct linespec_sals *lsal;
14182
14183       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14184       *sals = lsal->sals;
14185       /* Arrange it so the destructor does not free the
14186          contents.  */
14187       lsal->sals.sals = NULL;
14188     }
14189
14190   destroy_linespec_result (&canonical);
14191 }
14192
14193 /* Prepare the global context for a re-set of breakpoint B.  */
14194
14195 static struct cleanup *
14196 prepare_re_set_context (struct breakpoint *b)
14197 {
14198   struct cleanup *cleanups;
14199
14200   input_radix = b->input_radix;
14201   cleanups = save_current_space_and_thread ();
14202   if (b->pspace != NULL)
14203     switch_to_program_space_and_thread (b->pspace);
14204   set_language (b->language);
14205
14206   return cleanups;
14207 }
14208
14209 /* Reset a breakpoint given it's struct breakpoint * BINT.
14210    The value we return ends up being the return value from catch_errors.
14211    Unused in this case.  */
14212
14213 static int
14214 breakpoint_re_set_one (void *bint)
14215 {
14216   /* Get past catch_errs.  */
14217   struct breakpoint *b = (struct breakpoint *) bint;
14218   struct cleanup *cleanups;
14219
14220   cleanups = prepare_re_set_context (b);
14221   b->ops->re_set (b);
14222   do_cleanups (cleanups);
14223   return 0;
14224 }
14225
14226 /* Re-set all breakpoints after symbols have been re-loaded.  */
14227 void
14228 breakpoint_re_set (void)
14229 {
14230   struct breakpoint *b, *b_tmp;
14231   enum language save_language;
14232   int save_input_radix;
14233   struct cleanup *old_chain;
14234
14235   save_language = current_language->la_language;
14236   save_input_radix = input_radix;
14237   old_chain = save_current_program_space ();
14238
14239   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14240   {
14241     /* Format possible error msg.  */
14242     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14243                                 b->number);
14244     struct cleanup *cleanups = make_cleanup (xfree, message);
14245     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14246     do_cleanups (cleanups);
14247   }
14248   set_language (save_language);
14249   input_radix = save_input_radix;
14250
14251   jit_breakpoint_re_set ();
14252
14253   do_cleanups (old_chain);
14254
14255   create_overlay_event_breakpoint ();
14256   create_longjmp_master_breakpoint ();
14257   create_std_terminate_master_breakpoint ();
14258   create_exception_master_breakpoint ();
14259
14260   /* While we're at it, reset the skip list too.  */
14261   skip_re_set ();
14262 }
14263 \f
14264 /* Reset the thread number of this breakpoint:
14265
14266    - If the breakpoint is for all threads, leave it as-is.
14267    - Else, reset it to the current thread for inferior_ptid.  */
14268 void
14269 breakpoint_re_set_thread (struct breakpoint *b)
14270 {
14271   if (b->thread != -1)
14272     {
14273       if (in_thread_list (inferior_ptid))
14274         b->thread = pid_to_thread_id (inferior_ptid);
14275
14276       /* We're being called after following a fork.  The new fork is
14277          selected as current, and unless this was a vfork will have a
14278          different program space from the original thread.  Reset that
14279          as well.  */
14280       b->loc->pspace = current_program_space;
14281     }
14282 }
14283
14284 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14285    If from_tty is nonzero, it prints a message to that effect,
14286    which ends with a period (no newline).  */
14287
14288 void
14289 set_ignore_count (int bptnum, int count, int from_tty)
14290 {
14291   struct breakpoint *b;
14292
14293   if (count < 0)
14294     count = 0;
14295
14296   ALL_BREAKPOINTS (b)
14297     if (b->number == bptnum)
14298     {
14299       if (is_tracepoint (b))
14300         {
14301           if (from_tty && count != 0)
14302             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14303                              bptnum);
14304           return;
14305         }
14306       
14307       b->ignore_count = count;
14308       if (from_tty)
14309         {
14310           if (count == 0)
14311             printf_filtered (_("Will stop next time "
14312                                "breakpoint %d is reached."),
14313                              bptnum);
14314           else if (count == 1)
14315             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14316                              bptnum);
14317           else
14318             printf_filtered (_("Will ignore next %d "
14319                                "crossings of breakpoint %d."),
14320                              count, bptnum);
14321         }
14322       annotate_breakpoints_changed ();
14323       observer_notify_breakpoint_modified (b);
14324       return;
14325     }
14326
14327   error (_("No breakpoint number %d."), bptnum);
14328 }
14329
14330 /* Command to set ignore-count of breakpoint N to COUNT.  */
14331
14332 static void
14333 ignore_command (char *args, int from_tty)
14334 {
14335   char *p = args;
14336   int num;
14337
14338   if (p == 0)
14339     error_no_arg (_("a breakpoint number"));
14340
14341   num = get_number (&p);
14342   if (num == 0)
14343     error (_("bad breakpoint number: '%s'"), args);
14344   if (*p == 0)
14345     error (_("Second argument (specified ignore-count) is missing."));
14346
14347   set_ignore_count (num,
14348                     longest_to_int (value_as_long (parse_and_eval (p))),
14349                     from_tty);
14350   if (from_tty)
14351     printf_filtered ("\n");
14352 }
14353 \f
14354 /* Call FUNCTION on each of the breakpoints
14355    whose numbers are given in ARGS.  */
14356
14357 static void
14358 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14359                                                       void *),
14360                         void *data)
14361 {
14362   int num;
14363   struct breakpoint *b, *tmp;
14364   int match;
14365   struct get_number_or_range_state state;
14366
14367   if (args == 0)
14368     error_no_arg (_("one or more breakpoint numbers"));
14369
14370   init_number_or_range (&state, args);
14371
14372   while (!state.finished)
14373     {
14374       char *p = state.string;
14375
14376       match = 0;
14377
14378       num = get_number_or_range (&state);
14379       if (num == 0)
14380         {
14381           warning (_("bad breakpoint number at or near '%s'"), p);
14382         }
14383       else
14384         {
14385           ALL_BREAKPOINTS_SAFE (b, tmp)
14386             if (b->number == num)
14387               {
14388                 match = 1;
14389                 function (b, data);
14390                 break;
14391               }
14392           if (match == 0)
14393             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14394         }
14395     }
14396 }
14397
14398 static struct bp_location *
14399 find_location_by_number (char *number)
14400 {
14401   char *dot = strchr (number, '.');
14402   char *p1;
14403   int bp_num;
14404   int loc_num;
14405   struct breakpoint *b;
14406   struct bp_location *loc;  
14407
14408   *dot = '\0';
14409
14410   p1 = number;
14411   bp_num = get_number (&p1);
14412   if (bp_num == 0)
14413     error (_("Bad breakpoint number '%s'"), number);
14414
14415   ALL_BREAKPOINTS (b)
14416     if (b->number == bp_num)
14417       {
14418         break;
14419       }
14420
14421   if (!b || b->number != bp_num)
14422     error (_("Bad breakpoint number '%s'"), number);
14423   
14424   p1 = dot+1;
14425   loc_num = get_number (&p1);
14426   if (loc_num == 0)
14427     error (_("Bad breakpoint location number '%s'"), number);
14428
14429   --loc_num;
14430   loc = b->loc;
14431   for (;loc_num && loc; --loc_num, loc = loc->next)
14432     ;
14433   if (!loc)
14434     error (_("Bad breakpoint location number '%s'"), dot+1);
14435     
14436   return loc;  
14437 }
14438
14439
14440 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14441    If from_tty is nonzero, it prints a message to that effect,
14442    which ends with a period (no newline).  */
14443
14444 void
14445 disable_breakpoint (struct breakpoint *bpt)
14446 {
14447   /* Never disable a watchpoint scope breakpoint; we want to
14448      hit them when we leave scope so we can delete both the
14449      watchpoint and its scope breakpoint at that time.  */
14450   if (bpt->type == bp_watchpoint_scope)
14451     return;
14452
14453   /* You can't disable permanent breakpoints.  */
14454   if (bpt->enable_state == bp_permanent)
14455     return;
14456
14457   bpt->enable_state = bp_disabled;
14458
14459   /* Mark breakpoint locations modified.  */
14460   mark_breakpoint_modified (bpt);
14461
14462   if (target_supports_enable_disable_tracepoint ()
14463       && current_trace_status ()->running && is_tracepoint (bpt))
14464     {
14465       struct bp_location *location;
14466      
14467       for (location = bpt->loc; location; location = location->next)
14468         target_disable_tracepoint (location);
14469     }
14470
14471   update_global_location_list (0);
14472
14473   observer_notify_breakpoint_modified (bpt);
14474 }
14475
14476 /* A callback for iterate_over_related_breakpoints.  */
14477
14478 static void
14479 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14480 {
14481   disable_breakpoint (b);
14482 }
14483
14484 /* A callback for map_breakpoint_numbers that calls
14485    disable_breakpoint.  */
14486
14487 static void
14488 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14489 {
14490   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14491 }
14492
14493 static void
14494 disable_command (char *args, int from_tty)
14495 {
14496   if (args == 0)
14497     {
14498       struct breakpoint *bpt;
14499
14500       ALL_BREAKPOINTS (bpt)
14501         if (user_breakpoint_p (bpt))
14502           disable_breakpoint (bpt);
14503     }
14504   else if (strchr (args, '.'))
14505     {
14506       struct bp_location *loc = find_location_by_number (args);
14507       if (loc)
14508         {
14509           if (loc->enabled)
14510             {
14511               loc->enabled = 0;
14512               mark_breakpoint_location_modified (loc);
14513             }
14514           if (target_supports_enable_disable_tracepoint ()
14515               && current_trace_status ()->running && loc->owner
14516               && is_tracepoint (loc->owner))
14517             target_disable_tracepoint (loc);
14518         }
14519       update_global_location_list (0);
14520     }
14521   else
14522     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14523 }
14524
14525 static void
14526 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14527                         int count)
14528 {
14529   int target_resources_ok;
14530
14531   if (bpt->type == bp_hardware_breakpoint)
14532     {
14533       int i;
14534       i = hw_breakpoint_used_count ();
14535       target_resources_ok = 
14536         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14537                                             i + 1, 0);
14538       if (target_resources_ok == 0)
14539         error (_("No hardware breakpoint support in the target."));
14540       else if (target_resources_ok < 0)
14541         error (_("Hardware breakpoints used exceeds limit."));
14542     }
14543
14544   if (is_watchpoint (bpt))
14545     {
14546       /* Initialize it just to avoid a GCC false warning.  */
14547       enum enable_state orig_enable_state = 0;
14548       volatile struct gdb_exception e;
14549
14550       TRY_CATCH (e, RETURN_MASK_ALL)
14551         {
14552           struct watchpoint *w = (struct watchpoint *) bpt;
14553
14554           orig_enable_state = bpt->enable_state;
14555           bpt->enable_state = bp_enabled;
14556           update_watchpoint (w, 1 /* reparse */);
14557         }
14558       if (e.reason < 0)
14559         {
14560           bpt->enable_state = orig_enable_state;
14561           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14562                              bpt->number);
14563           return;
14564         }
14565     }
14566
14567   if (bpt->enable_state != bp_permanent)
14568     bpt->enable_state = bp_enabled;
14569
14570   bpt->enable_state = bp_enabled;
14571
14572   /* Mark breakpoint locations modified.  */
14573   mark_breakpoint_modified (bpt);
14574
14575   if (target_supports_enable_disable_tracepoint ()
14576       && current_trace_status ()->running && is_tracepoint (bpt))
14577     {
14578       struct bp_location *location;
14579
14580       for (location = bpt->loc; location; location = location->next)
14581         target_enable_tracepoint (location);
14582     }
14583
14584   bpt->disposition = disposition;
14585   bpt->enable_count = count;
14586   update_global_location_list (1);
14587   annotate_breakpoints_changed ();
14588   
14589   observer_notify_breakpoint_modified (bpt);
14590 }
14591
14592
14593 void
14594 enable_breakpoint (struct breakpoint *bpt)
14595 {
14596   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14597 }
14598
14599 static void
14600 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14601 {
14602   enable_breakpoint (bpt);
14603 }
14604
14605 /* A callback for map_breakpoint_numbers that calls
14606    enable_breakpoint.  */
14607
14608 static void
14609 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14610 {
14611   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14612 }
14613
14614 /* The enable command enables the specified breakpoints (or all defined
14615    breakpoints) so they once again become (or continue to be) effective
14616    in stopping the inferior.  */
14617
14618 static void
14619 enable_command (char *args, int from_tty)
14620 {
14621   if (args == 0)
14622     {
14623       struct breakpoint *bpt;
14624
14625       ALL_BREAKPOINTS (bpt)
14626         if (user_breakpoint_p (bpt))
14627           enable_breakpoint (bpt);
14628     }
14629   else if (strchr (args, '.'))
14630     {
14631       struct bp_location *loc = find_location_by_number (args);
14632       if (loc)
14633         {
14634           if (!loc->enabled)
14635             {
14636               loc->enabled = 1;
14637               mark_breakpoint_location_modified (loc);
14638             }
14639           if (target_supports_enable_disable_tracepoint ()
14640               && current_trace_status ()->running && loc->owner
14641               && is_tracepoint (loc->owner))
14642             target_enable_tracepoint (loc);
14643         }
14644       update_global_location_list (1);
14645     }
14646   else
14647     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14648 }
14649
14650 /* This struct packages up disposition data for application to multiple
14651    breakpoints.  */
14652
14653 struct disp_data
14654 {
14655   enum bpdisp disp;
14656   int count;
14657 };
14658
14659 static void
14660 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14661 {
14662   struct disp_data disp_data = *(struct disp_data *) arg;
14663
14664   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14665 }
14666
14667 static void
14668 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14669 {
14670   struct disp_data disp = { disp_disable, 1 };
14671
14672   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14673 }
14674
14675 static void
14676 enable_once_command (char *args, int from_tty)
14677 {
14678   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14679 }
14680
14681 static void
14682 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14683 {
14684   struct disp_data disp = { disp_disable, *(int *) countptr };
14685
14686   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14687 }
14688
14689 static void
14690 enable_count_command (char *args, int from_tty)
14691 {
14692   int count = get_number (&args);
14693
14694   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14695 }
14696
14697 static void
14698 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14699 {
14700   struct disp_data disp = { disp_del, 1 };
14701
14702   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14703 }
14704
14705 static void
14706 enable_delete_command (char *args, int from_tty)
14707 {
14708   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14709 }
14710 \f
14711 static void
14712 set_breakpoint_cmd (char *args, int from_tty)
14713 {
14714 }
14715
14716 static void
14717 show_breakpoint_cmd (char *args, int from_tty)
14718 {
14719 }
14720
14721 /* Invalidate last known value of any hardware watchpoint if
14722    the memory which that value represents has been written to by
14723    GDB itself.  */
14724
14725 static void
14726 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14727                                       CORE_ADDR addr, ssize_t len,
14728                                       const bfd_byte *data)
14729 {
14730   struct breakpoint *bp;
14731
14732   ALL_BREAKPOINTS (bp)
14733     if (bp->enable_state == bp_enabled
14734         && bp->type == bp_hardware_watchpoint)
14735       {
14736         struct watchpoint *wp = (struct watchpoint *) bp;
14737
14738         if (wp->val_valid && wp->val)
14739           {
14740             struct bp_location *loc;
14741
14742             for (loc = bp->loc; loc != NULL; loc = loc->next)
14743               if (loc->loc_type == bp_loc_hardware_watchpoint
14744                   && loc->address + loc->length > addr
14745                   && addr + len > loc->address)
14746                 {
14747                   value_free (wp->val);
14748                   wp->val = NULL;
14749                   wp->val_valid = 0;
14750                 }
14751           }
14752       }
14753 }
14754
14755 /* Create and insert a raw software breakpoint at PC.  Return an
14756    identifier, which should be used to remove the breakpoint later.
14757    In general, places which call this should be using something on the
14758    breakpoint chain instead; this function should be eliminated
14759    someday.  */
14760
14761 void *
14762 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14763                                   struct address_space *aspace, CORE_ADDR pc)
14764 {
14765   struct bp_target_info *bp_tgt;
14766
14767   bp_tgt = XZALLOC (struct bp_target_info);
14768
14769   bp_tgt->placed_address_space = aspace;
14770   bp_tgt->placed_address = pc;
14771
14772   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14773     {
14774       /* Could not insert the breakpoint.  */
14775       xfree (bp_tgt);
14776       return NULL;
14777     }
14778
14779   return bp_tgt;
14780 }
14781
14782 /* Remove a breakpoint BP inserted by
14783    deprecated_insert_raw_breakpoint.  */
14784
14785 int
14786 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14787 {
14788   struct bp_target_info *bp_tgt = bp;
14789   int ret;
14790
14791   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14792   xfree (bp_tgt);
14793
14794   return ret;
14795 }
14796
14797 /* One (or perhaps two) breakpoints used for software single
14798    stepping.  */
14799
14800 static void *single_step_breakpoints[2];
14801 static struct gdbarch *single_step_gdbarch[2];
14802
14803 /* Create and insert a breakpoint for software single step.  */
14804
14805 void
14806 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14807                                struct address_space *aspace, 
14808                                CORE_ADDR next_pc)
14809 {
14810   void **bpt_p;
14811
14812   if (single_step_breakpoints[0] == NULL)
14813     {
14814       bpt_p = &single_step_breakpoints[0];
14815       single_step_gdbarch[0] = gdbarch;
14816     }
14817   else
14818     {
14819       gdb_assert (single_step_breakpoints[1] == NULL);
14820       bpt_p = &single_step_breakpoints[1];
14821       single_step_gdbarch[1] = gdbarch;
14822     }
14823
14824   /* NOTE drow/2006-04-11: A future improvement to this function would
14825      be to only create the breakpoints once, and actually put them on
14826      the breakpoint chain.  That would let us use set_raw_breakpoint.
14827      We could adjust the addresses each time they were needed.  Doing
14828      this requires corresponding changes elsewhere where single step
14829      breakpoints are handled, however.  So, for now, we use this.  */
14830
14831   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14832   if (*bpt_p == NULL)
14833     error (_("Could not insert single-step breakpoint at %s"),
14834              paddress (gdbarch, next_pc));
14835 }
14836
14837 /* Check if the breakpoints used for software single stepping
14838    were inserted or not.  */
14839
14840 int
14841 single_step_breakpoints_inserted (void)
14842 {
14843   return (single_step_breakpoints[0] != NULL
14844           || single_step_breakpoints[1] != NULL);
14845 }
14846
14847 /* Remove and delete any breakpoints used for software single step.  */
14848
14849 void
14850 remove_single_step_breakpoints (void)
14851 {
14852   gdb_assert (single_step_breakpoints[0] != NULL);
14853
14854   /* See insert_single_step_breakpoint for more about this deprecated
14855      call.  */
14856   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14857                                     single_step_breakpoints[0]);
14858   single_step_gdbarch[0] = NULL;
14859   single_step_breakpoints[0] = NULL;
14860
14861   if (single_step_breakpoints[1] != NULL)
14862     {
14863       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14864                                         single_step_breakpoints[1]);
14865       single_step_gdbarch[1] = NULL;
14866       single_step_breakpoints[1] = NULL;
14867     }
14868 }
14869
14870 /* Delete software single step breakpoints without removing them from
14871    the inferior.  This is intended to be used if the inferior's address
14872    space where they were inserted is already gone, e.g. after exit or
14873    exec.  */
14874
14875 void
14876 cancel_single_step_breakpoints (void)
14877 {
14878   int i;
14879
14880   for (i = 0; i < 2; i++)
14881     if (single_step_breakpoints[i])
14882       {
14883         xfree (single_step_breakpoints[i]);
14884         single_step_breakpoints[i] = NULL;
14885         single_step_gdbarch[i] = NULL;
14886       }
14887 }
14888
14889 /* Detach software single-step breakpoints from INFERIOR_PTID without
14890    removing them.  */
14891
14892 static void
14893 detach_single_step_breakpoints (void)
14894 {
14895   int i;
14896
14897   for (i = 0; i < 2; i++)
14898     if (single_step_breakpoints[i])
14899       target_remove_breakpoint (single_step_gdbarch[i],
14900                                 single_step_breakpoints[i]);
14901 }
14902
14903 /* Check whether a software single-step breakpoint is inserted at
14904    PC.  */
14905
14906 static int
14907 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14908                                         CORE_ADDR pc)
14909 {
14910   int i;
14911
14912   for (i = 0; i < 2; i++)
14913     {
14914       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14915       if (bp_tgt
14916           && breakpoint_address_match (bp_tgt->placed_address_space,
14917                                        bp_tgt->placed_address,
14918                                        aspace, pc))
14919         return 1;
14920     }
14921
14922   return 0;
14923 }
14924
14925 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14926    non-zero otherwise.  */
14927 static int
14928 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14929 {
14930   if (syscall_catchpoint_p (bp)
14931       && bp->enable_state != bp_disabled
14932       && bp->enable_state != bp_call_disabled)
14933     return 1;
14934   else
14935     return 0;
14936 }
14937
14938 int
14939 catch_syscall_enabled (void)
14940 {
14941   struct catch_syscall_inferior_data *inf_data
14942     = get_catch_syscall_inferior_data (current_inferior ());
14943
14944   return inf_data->total_syscalls_count != 0;
14945 }
14946
14947 int
14948 catching_syscall_number (int syscall_number)
14949 {
14950   struct breakpoint *bp;
14951
14952   ALL_BREAKPOINTS (bp)
14953     if (is_syscall_catchpoint_enabled (bp))
14954       {
14955         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14956
14957         if (c->syscalls_to_be_caught)
14958           {
14959             int i, iter;
14960             for (i = 0;
14961                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14962                  i++)
14963               if (syscall_number == iter)
14964                 return 1;
14965           }
14966         else
14967           return 1;
14968       }
14969
14970   return 0;
14971 }
14972
14973 /* Complete syscall names.  Used by "catch syscall".  */
14974 static VEC (char_ptr) *
14975 catch_syscall_completer (struct cmd_list_element *cmd,
14976                          char *text, char *word)
14977 {
14978   const char **list = get_syscall_names ();
14979   VEC (char_ptr) *retlist
14980     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
14981
14982   xfree (list);
14983   return retlist;
14984 }
14985
14986 /* Tracepoint-specific operations.  */
14987
14988 /* Set tracepoint count to NUM.  */
14989 static void
14990 set_tracepoint_count (int num)
14991 {
14992   tracepoint_count = num;
14993   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14994 }
14995
14996 static void
14997 trace_command (char *arg, int from_tty)
14998 {
14999   struct breakpoint_ops *ops;
15000   const char *arg_cp = arg;
15001
15002   if (arg && probe_linespec_to_ops (&arg_cp))
15003     ops = &tracepoint_probe_breakpoint_ops;
15004   else
15005     ops = &tracepoint_breakpoint_ops;
15006
15007   create_breakpoint (get_current_arch (),
15008                      arg,
15009                      NULL, 0, NULL, 1 /* parse arg */,
15010                      0 /* tempflag */,
15011                      bp_tracepoint /* type_wanted */,
15012                      0 /* Ignore count */,
15013                      pending_break_support,
15014                      ops,
15015                      from_tty,
15016                      1 /* enabled */,
15017                      0 /* internal */, 0);
15018 }
15019
15020 static void
15021 ftrace_command (char *arg, int from_tty)
15022 {
15023   create_breakpoint (get_current_arch (),
15024                      arg,
15025                      NULL, 0, NULL, 1 /* parse arg */,
15026                      0 /* tempflag */,
15027                      bp_fast_tracepoint /* type_wanted */,
15028                      0 /* Ignore count */,
15029                      pending_break_support,
15030                      &tracepoint_breakpoint_ops,
15031                      from_tty,
15032                      1 /* enabled */,
15033                      0 /* internal */, 0);
15034 }
15035
15036 /* strace command implementation.  Creates a static tracepoint.  */
15037
15038 static void
15039 strace_command (char *arg, int from_tty)
15040 {
15041   struct breakpoint_ops *ops;
15042
15043   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15044      or with a normal static tracepoint.  */
15045   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15046     ops = &strace_marker_breakpoint_ops;
15047   else
15048     ops = &tracepoint_breakpoint_ops;
15049
15050   create_breakpoint (get_current_arch (),
15051                      arg,
15052                      NULL, 0, NULL, 1 /* parse arg */,
15053                      0 /* tempflag */,
15054                      bp_static_tracepoint /* type_wanted */,
15055                      0 /* Ignore count */,
15056                      pending_break_support,
15057                      ops,
15058                      from_tty,
15059                      1 /* enabled */,
15060                      0 /* internal */, 0);
15061 }
15062
15063 /* Set up a fake reader function that gets command lines from a linked
15064    list that was acquired during tracepoint uploading.  */
15065
15066 static struct uploaded_tp *this_utp;
15067 static int next_cmd;
15068
15069 static char *
15070 read_uploaded_action (void)
15071 {
15072   char *rslt;
15073
15074   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15075
15076   next_cmd++;
15077
15078   return rslt;
15079 }
15080
15081 /* Given information about a tracepoint as recorded on a target (which
15082    can be either a live system or a trace file), attempt to create an
15083    equivalent GDB tracepoint.  This is not a reliable process, since
15084    the target does not necessarily have all the information used when
15085    the tracepoint was originally defined.  */
15086   
15087 struct tracepoint *
15088 create_tracepoint_from_upload (struct uploaded_tp *utp)
15089 {
15090   char *addr_str, small_buf[100];
15091   struct tracepoint *tp;
15092
15093   if (utp->at_string)
15094     addr_str = utp->at_string;
15095   else
15096     {
15097       /* In the absence of a source location, fall back to raw
15098          address.  Since there is no way to confirm that the address
15099          means the same thing as when the trace was started, warn the
15100          user.  */
15101       warning (_("Uploaded tracepoint %d has no "
15102                  "source location, using raw address"),
15103                utp->number);
15104       sprintf (small_buf, "*%s", hex_string (utp->addr));
15105       addr_str = small_buf;
15106     }
15107
15108   /* There's not much we can do with a sequence of bytecodes.  */
15109   if (utp->cond && !utp->cond_string)
15110     warning (_("Uploaded tracepoint %d condition "
15111                "has no source form, ignoring it"),
15112              utp->number);
15113
15114   if (!create_breakpoint (get_current_arch (),
15115                           addr_str,
15116                           utp->cond_string, -1, NULL,
15117                           0 /* parse cond/thread */,
15118                           0 /* tempflag */,
15119                           utp->type /* type_wanted */,
15120                           0 /* Ignore count */,
15121                           pending_break_support,
15122                           &tracepoint_breakpoint_ops,
15123                           0 /* from_tty */,
15124                           utp->enabled /* enabled */,
15125                           0 /* internal */,
15126                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15127     return NULL;
15128
15129   /* Get the tracepoint we just created.  */
15130   tp = get_tracepoint (tracepoint_count);
15131   gdb_assert (tp != NULL);
15132
15133   if (utp->pass > 0)
15134     {
15135       sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
15136
15137       trace_pass_command (small_buf, 0);
15138     }
15139
15140   /* If we have uploaded versions of the original commands, set up a
15141      special-purpose "reader" function and call the usual command line
15142      reader, then pass the result to the breakpoint command-setting
15143      function.  */
15144   if (!VEC_empty (char_ptr, utp->cmd_strings))
15145     {
15146       struct command_line *cmd_list;
15147
15148       this_utp = utp;
15149       next_cmd = 0;
15150
15151       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15152
15153       breakpoint_set_commands (&tp->base, cmd_list);
15154     }
15155   else if (!VEC_empty (char_ptr, utp->actions)
15156            || !VEC_empty (char_ptr, utp->step_actions))
15157     warning (_("Uploaded tracepoint %d actions "
15158                "have no source form, ignoring them"),
15159              utp->number);
15160
15161   /* Copy any status information that might be available.  */
15162   tp->base.hit_count = utp->hit_count;
15163   tp->traceframe_usage = utp->traceframe_usage;
15164
15165   return tp;
15166 }
15167   
15168 /* Print information on tracepoint number TPNUM_EXP, or all if
15169    omitted.  */
15170
15171 static void
15172 tracepoints_info (char *args, int from_tty)
15173 {
15174   struct ui_out *uiout = current_uiout;
15175   int num_printed;
15176
15177   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15178
15179   if (num_printed == 0)
15180     {
15181       if (args == NULL || *args == '\0')
15182         ui_out_message (uiout, 0, "No tracepoints.\n");
15183       else
15184         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15185     }
15186
15187   default_collect_info ();
15188 }
15189
15190 /* The 'enable trace' command enables tracepoints.
15191    Not supported by all targets.  */
15192 static void
15193 enable_trace_command (char *args, int from_tty)
15194 {
15195   enable_command (args, from_tty);
15196 }
15197
15198 /* The 'disable trace' command disables tracepoints.
15199    Not supported by all targets.  */
15200 static void
15201 disable_trace_command (char *args, int from_tty)
15202 {
15203   disable_command (args, from_tty);
15204 }
15205
15206 /* Remove a tracepoint (or all if no argument).  */
15207 static void
15208 delete_trace_command (char *arg, int from_tty)
15209 {
15210   struct breakpoint *b, *b_tmp;
15211
15212   dont_repeat ();
15213
15214   if (arg == 0)
15215     {
15216       int breaks_to_delete = 0;
15217
15218       /* Delete all breakpoints if no argument.
15219          Do not delete internal or call-dummy breakpoints, these
15220          have to be deleted with an explicit breakpoint number 
15221          argument.  */
15222       ALL_TRACEPOINTS (b)
15223         if (is_tracepoint (b) && user_breakpoint_p (b))
15224           {
15225             breaks_to_delete = 1;
15226             break;
15227           }
15228
15229       /* Ask user only if there are some breakpoints to delete.  */
15230       if (!from_tty
15231           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15232         {
15233           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15234             if (is_tracepoint (b) && user_breakpoint_p (b))
15235               delete_breakpoint (b);
15236         }
15237     }
15238   else
15239     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15240 }
15241
15242 /* Helper function for trace_pass_command.  */
15243
15244 static void
15245 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15246 {
15247   tp->pass_count = count;
15248   observer_notify_breakpoint_modified (&tp->base);
15249   if (from_tty)
15250     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15251                      tp->base.number, count);
15252 }
15253
15254 /* Set passcount for tracepoint.
15255
15256    First command argument is passcount, second is tracepoint number.
15257    If tracepoint number omitted, apply to most recently defined.
15258    Also accepts special argument "all".  */
15259
15260 static void
15261 trace_pass_command (char *args, int from_tty)
15262 {
15263   struct tracepoint *t1;
15264   unsigned int count;
15265
15266   if (args == 0 || *args == 0)
15267     error (_("passcount command requires an "
15268              "argument (count + optional TP num)"));
15269
15270   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15271
15272   while (*args && isspace ((int) *args))
15273     args++;
15274
15275   if (*args && strncasecmp (args, "all", 3) == 0)
15276     {
15277       struct breakpoint *b;
15278
15279       args += 3;                        /* Skip special argument "all".  */
15280       if (*args)
15281         error (_("Junk at end of arguments."));
15282
15283       ALL_TRACEPOINTS (b)
15284       {
15285         t1 = (struct tracepoint *) b;
15286         trace_pass_set_count (t1, count, from_tty);
15287       }
15288     }
15289   else if (*args == '\0')
15290     {
15291       t1 = get_tracepoint_by_number (&args, NULL, 1);
15292       if (t1)
15293         trace_pass_set_count (t1, count, from_tty);
15294     }
15295   else
15296     {
15297       struct get_number_or_range_state state;
15298
15299       init_number_or_range (&state, args);
15300       while (!state.finished)
15301         {
15302           t1 = get_tracepoint_by_number (&args, &state, 1);
15303           if (t1)
15304             trace_pass_set_count (t1, count, from_tty);
15305         }
15306     }
15307 }
15308
15309 struct tracepoint *
15310 get_tracepoint (int num)
15311 {
15312   struct breakpoint *t;
15313
15314   ALL_TRACEPOINTS (t)
15315     if (t->number == num)
15316       return (struct tracepoint *) t;
15317
15318   return NULL;
15319 }
15320
15321 /* Find the tracepoint with the given target-side number (which may be
15322    different from the tracepoint number after disconnecting and
15323    reconnecting).  */
15324
15325 struct tracepoint *
15326 get_tracepoint_by_number_on_target (int num)
15327 {
15328   struct breakpoint *b;
15329
15330   ALL_TRACEPOINTS (b)
15331     {
15332       struct tracepoint *t = (struct tracepoint *) b;
15333
15334       if (t->number_on_target == num)
15335         return t;
15336     }
15337
15338   return NULL;
15339 }
15340
15341 /* Utility: parse a tracepoint number and look it up in the list.
15342    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15343    If OPTIONAL_P is true, then if the argument is missing, the most
15344    recent tracepoint (tracepoint_count) is returned.  */
15345 struct tracepoint *
15346 get_tracepoint_by_number (char **arg,
15347                           struct get_number_or_range_state *state,
15348                           int optional_p)
15349 {
15350   struct breakpoint *t;
15351   int tpnum;
15352   char *instring = arg == NULL ? NULL : *arg;
15353
15354   if (state)
15355     {
15356       gdb_assert (!state->finished);
15357       tpnum = get_number_or_range (state);
15358     }
15359   else if (arg == NULL || *arg == NULL || ! **arg)
15360     {
15361       if (optional_p)
15362         tpnum = tracepoint_count;
15363       else
15364         error_no_arg (_("tracepoint number"));
15365     }
15366   else
15367     tpnum = get_number (arg);
15368
15369   if (tpnum <= 0)
15370     {
15371       if (instring && *instring)
15372         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15373                          instring);
15374       else
15375         printf_filtered (_("Tracepoint argument missing "
15376                            "and no previous tracepoint\n"));
15377       return NULL;
15378     }
15379
15380   ALL_TRACEPOINTS (t)
15381     if (t->number == tpnum)
15382     {
15383       return (struct tracepoint *) t;
15384     }
15385
15386   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15387   return NULL;
15388 }
15389
15390 void
15391 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15392 {
15393   if (b->thread != -1)
15394     fprintf_unfiltered (fp, " thread %d", b->thread);
15395
15396   if (b->task != 0)
15397     fprintf_unfiltered (fp, " task %d", b->task);
15398
15399   fprintf_unfiltered (fp, "\n");
15400 }
15401
15402 /* Save information on user settable breakpoints (watchpoints, etc) to
15403    a new script file named FILENAME.  If FILTER is non-NULL, call it
15404    on each breakpoint and only include the ones for which it returns
15405    non-zero.  */
15406
15407 static void
15408 save_breakpoints (char *filename, int from_tty,
15409                   int (*filter) (const struct breakpoint *))
15410 {
15411   struct breakpoint *tp;
15412   int any = 0;
15413   char *pathname;
15414   struct cleanup *cleanup;
15415   struct ui_file *fp;
15416   int extra_trace_bits = 0;
15417
15418   if (filename == 0 || *filename == 0)
15419     error (_("Argument required (file name in which to save)"));
15420
15421   /* See if we have anything to save.  */
15422   ALL_BREAKPOINTS (tp)
15423   {
15424     /* Skip internal and momentary breakpoints.  */
15425     if (!user_breakpoint_p (tp))
15426       continue;
15427
15428     /* If we have a filter, only save the breakpoints it accepts.  */
15429     if (filter && !filter (tp))
15430       continue;
15431
15432     any = 1;
15433
15434     if (is_tracepoint (tp))
15435       {
15436         extra_trace_bits = 1;
15437
15438         /* We can stop searching.  */
15439         break;
15440       }
15441   }
15442
15443   if (!any)
15444     {
15445       warning (_("Nothing to save."));
15446       return;
15447     }
15448
15449   pathname = tilde_expand (filename);
15450   cleanup = make_cleanup (xfree, pathname);
15451   fp = gdb_fopen (pathname, "w");
15452   if (!fp)
15453     error (_("Unable to open file '%s' for saving (%s)"),
15454            filename, safe_strerror (errno));
15455   make_cleanup_ui_file_delete (fp);
15456
15457   if (extra_trace_bits)
15458     save_trace_state_variables (fp);
15459
15460   ALL_BREAKPOINTS (tp)
15461   {
15462     /* Skip internal and momentary breakpoints.  */
15463     if (!user_breakpoint_p (tp))
15464       continue;
15465
15466     /* If we have a filter, only save the breakpoints it accepts.  */
15467     if (filter && !filter (tp))
15468       continue;
15469
15470     tp->ops->print_recreate (tp, fp);
15471
15472     /* Note, we can't rely on tp->number for anything, as we can't
15473        assume the recreated breakpoint numbers will match.  Use $bpnum
15474        instead.  */
15475
15476     if (tp->cond_string)
15477       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15478
15479     if (tp->ignore_count)
15480       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15481
15482     if (tp->commands)
15483       {
15484         volatile struct gdb_exception ex;       
15485
15486         fprintf_unfiltered (fp, "  commands\n");
15487         
15488         ui_out_redirect (current_uiout, fp);
15489         TRY_CATCH (ex, RETURN_MASK_ALL)
15490           {
15491             print_command_lines (current_uiout, tp->commands->commands, 2);
15492           }
15493         ui_out_redirect (current_uiout, NULL);
15494
15495         if (ex.reason < 0)
15496           throw_exception (ex);
15497
15498         fprintf_unfiltered (fp, "  end\n");
15499       }
15500
15501     if (tp->enable_state == bp_disabled)
15502       fprintf_unfiltered (fp, "disable\n");
15503
15504     /* If this is a multi-location breakpoint, check if the locations
15505        should be individually disabled.  Watchpoint locations are
15506        special, and not user visible.  */
15507     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15508       {
15509         struct bp_location *loc;
15510         int n = 1;
15511
15512         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15513           if (!loc->enabled)
15514             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15515       }
15516   }
15517
15518   if (extra_trace_bits && *default_collect)
15519     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15520
15521   do_cleanups (cleanup);
15522   if (from_tty)
15523     printf_filtered (_("Saved to file '%s'.\n"), filename);
15524 }
15525
15526 /* The `save breakpoints' command.  */
15527
15528 static void
15529 save_breakpoints_command (char *args, int from_tty)
15530 {
15531   save_breakpoints (args, from_tty, NULL);
15532 }
15533
15534 /* The `save tracepoints' command.  */
15535
15536 static void
15537 save_tracepoints_command (char *args, int from_tty)
15538 {
15539   save_breakpoints (args, from_tty, is_tracepoint);
15540 }
15541
15542 /* Create a vector of all tracepoints.  */
15543
15544 VEC(breakpoint_p) *
15545 all_tracepoints (void)
15546 {
15547   VEC(breakpoint_p) *tp_vec = 0;
15548   struct breakpoint *tp;
15549
15550   ALL_TRACEPOINTS (tp)
15551   {
15552     VEC_safe_push (breakpoint_p, tp_vec, tp);
15553   }
15554
15555   return tp_vec;
15556 }
15557
15558 \f
15559 /* This help string is used for the break, hbreak, tbreak and thbreak
15560    commands.  It is defined as a macro to prevent duplication.
15561    COMMAND should be a string constant containing the name of the
15562    command.  */
15563 #define BREAK_ARGS_HELP(command) \
15564 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15565 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15566 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15567 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15568 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15569 If a line number is specified, break at start of code for that line.\n\
15570 If a function is specified, break at start of code for that function.\n\
15571 If an address is specified, break at that exact address.\n\
15572 With no LOCATION, uses current execution address of the selected\n\
15573 stack frame.  This is useful for breaking on return to a stack frame.\n\
15574 \n\
15575 THREADNUM is the number from \"info threads\".\n\
15576 CONDITION is a boolean expression.\n\
15577 \n\
15578 Multiple breakpoints at one place are permitted, and useful if their\n\
15579 conditions are different.\n\
15580 \n\
15581 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15582
15583 /* List of subcommands for "catch".  */
15584 static struct cmd_list_element *catch_cmdlist;
15585
15586 /* List of subcommands for "tcatch".  */
15587 static struct cmd_list_element *tcatch_cmdlist;
15588
15589 void
15590 add_catch_command (char *name, char *docstring,
15591                    void (*sfunc) (char *args, int from_tty,
15592                                   struct cmd_list_element *command),
15593                    completer_ftype *completer,
15594                    void *user_data_catch,
15595                    void *user_data_tcatch)
15596 {
15597   struct cmd_list_element *command;
15598
15599   command = add_cmd (name, class_breakpoint, NULL, docstring,
15600                      &catch_cmdlist);
15601   set_cmd_sfunc (command, sfunc);
15602   set_cmd_context (command, user_data_catch);
15603   set_cmd_completer (command, completer);
15604
15605   command = add_cmd (name, class_breakpoint, NULL, docstring,
15606                      &tcatch_cmdlist);
15607   set_cmd_sfunc (command, sfunc);
15608   set_cmd_context (command, user_data_tcatch);
15609   set_cmd_completer (command, completer);
15610 }
15611
15612 static void
15613 clear_syscall_counts (struct inferior *inf)
15614 {
15615   struct catch_syscall_inferior_data *inf_data
15616     = get_catch_syscall_inferior_data (inf);
15617
15618   inf_data->total_syscalls_count = 0;
15619   inf_data->any_syscall_count = 0;
15620   VEC_free (int, inf_data->syscalls_counts);
15621 }
15622
15623 static void
15624 save_command (char *arg, int from_tty)
15625 {
15626   printf_unfiltered (_("\"save\" must be followed by "
15627                        "the name of a save subcommand.\n"));
15628   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15629 }
15630
15631 struct breakpoint *
15632 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15633                           void *data)
15634 {
15635   struct breakpoint *b, *b_tmp;
15636
15637   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15638     {
15639       if ((*callback) (b, data))
15640         return b;
15641     }
15642
15643   return NULL;
15644 }
15645
15646 /* Zero if any of the breakpoint's locations could be a location where
15647    functions have been inlined, nonzero otherwise.  */
15648
15649 static int
15650 is_non_inline_function (struct breakpoint *b)
15651 {
15652   /* The shared library event breakpoint is set on the address of a
15653      non-inline function.  */
15654   if (b->type == bp_shlib_event)
15655     return 1;
15656
15657   return 0;
15658 }
15659
15660 /* Nonzero if the specified PC cannot be a location where functions
15661    have been inlined.  */
15662
15663 int
15664 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15665                            const struct target_waitstatus *ws)
15666 {
15667   struct breakpoint *b;
15668   struct bp_location *bl;
15669
15670   ALL_BREAKPOINTS (b)
15671     {
15672       if (!is_non_inline_function (b))
15673         continue;
15674
15675       for (bl = b->loc; bl != NULL; bl = bl->next)
15676         {
15677           if (!bl->shlib_disabled
15678               && bpstat_check_location (bl, aspace, pc, ws))
15679             return 1;
15680         }
15681     }
15682
15683   return 0;
15684 }
15685
15686 void
15687 initialize_breakpoint_ops (void)
15688 {
15689   static int initialized = 0;
15690
15691   struct breakpoint_ops *ops;
15692
15693   if (initialized)
15694     return;
15695   initialized = 1;
15696
15697   /* The breakpoint_ops structure to be inherit by all kinds of
15698      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15699      internal and momentary breakpoints, etc.).  */
15700   ops = &bkpt_base_breakpoint_ops;
15701   *ops = base_breakpoint_ops;
15702   ops->re_set = bkpt_re_set;
15703   ops->insert_location = bkpt_insert_location;
15704   ops->remove_location = bkpt_remove_location;
15705   ops->breakpoint_hit = bkpt_breakpoint_hit;
15706   ops->create_sals_from_address = bkpt_create_sals_from_address;
15707   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15708   ops->decode_linespec = bkpt_decode_linespec;
15709
15710   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15711   ops = &bkpt_breakpoint_ops;
15712   *ops = bkpt_base_breakpoint_ops;
15713   ops->re_set = bkpt_re_set;
15714   ops->resources_needed = bkpt_resources_needed;
15715   ops->print_it = bkpt_print_it;
15716   ops->print_mention = bkpt_print_mention;
15717   ops->print_recreate = bkpt_print_recreate;
15718
15719   /* Ranged breakpoints.  */
15720   ops = &ranged_breakpoint_ops;
15721   *ops = bkpt_breakpoint_ops;
15722   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15723   ops->resources_needed = resources_needed_ranged_breakpoint;
15724   ops->print_it = print_it_ranged_breakpoint;
15725   ops->print_one = print_one_ranged_breakpoint;
15726   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15727   ops->print_mention = print_mention_ranged_breakpoint;
15728   ops->print_recreate = print_recreate_ranged_breakpoint;
15729
15730   /* Internal breakpoints.  */
15731   ops = &internal_breakpoint_ops;
15732   *ops = bkpt_base_breakpoint_ops;
15733   ops->re_set = internal_bkpt_re_set;
15734   ops->check_status = internal_bkpt_check_status;
15735   ops->print_it = internal_bkpt_print_it;
15736   ops->print_mention = internal_bkpt_print_mention;
15737
15738   /* Momentary breakpoints.  */
15739   ops = &momentary_breakpoint_ops;
15740   *ops = bkpt_base_breakpoint_ops;
15741   ops->re_set = momentary_bkpt_re_set;
15742   ops->check_status = momentary_bkpt_check_status;
15743   ops->print_it = momentary_bkpt_print_it;
15744   ops->print_mention = momentary_bkpt_print_mention;
15745
15746   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15747   ops = &longjmp_breakpoint_ops;
15748   *ops = momentary_breakpoint_ops;
15749   ops->dtor = longjmp_bkpt_dtor;
15750
15751   /* Probe breakpoints.  */
15752   ops = &bkpt_probe_breakpoint_ops;
15753   *ops = bkpt_breakpoint_ops;
15754   ops->insert_location = bkpt_probe_insert_location;
15755   ops->remove_location = bkpt_probe_remove_location;
15756   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15757   ops->decode_linespec = bkpt_probe_decode_linespec;
15758
15759   /* GNU v3 exception catchpoints.  */
15760   ops = &gnu_v3_exception_catchpoint_ops;
15761   *ops = bkpt_breakpoint_ops;
15762   ops->print_it = print_it_exception_catchpoint;
15763   ops->print_one = print_one_exception_catchpoint;
15764   ops->print_mention = print_mention_exception_catchpoint;
15765   ops->print_recreate = print_recreate_exception_catchpoint;
15766
15767   /* Watchpoints.  */
15768   ops = &watchpoint_breakpoint_ops;
15769   *ops = base_breakpoint_ops;
15770   ops->dtor = dtor_watchpoint;
15771   ops->re_set = re_set_watchpoint;
15772   ops->insert_location = insert_watchpoint;
15773   ops->remove_location = remove_watchpoint;
15774   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15775   ops->check_status = check_status_watchpoint;
15776   ops->resources_needed = resources_needed_watchpoint;
15777   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15778   ops->print_it = print_it_watchpoint;
15779   ops->print_mention = print_mention_watchpoint;
15780   ops->print_recreate = print_recreate_watchpoint;
15781
15782   /* Masked watchpoints.  */
15783   ops = &masked_watchpoint_breakpoint_ops;
15784   *ops = watchpoint_breakpoint_ops;
15785   ops->insert_location = insert_masked_watchpoint;
15786   ops->remove_location = remove_masked_watchpoint;
15787   ops->resources_needed = resources_needed_masked_watchpoint;
15788   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15789   ops->print_it = print_it_masked_watchpoint;
15790   ops->print_one_detail = print_one_detail_masked_watchpoint;
15791   ops->print_mention = print_mention_masked_watchpoint;
15792   ops->print_recreate = print_recreate_masked_watchpoint;
15793
15794   /* Tracepoints.  */
15795   ops = &tracepoint_breakpoint_ops;
15796   *ops = base_breakpoint_ops;
15797   ops->re_set = tracepoint_re_set;
15798   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15799   ops->print_one_detail = tracepoint_print_one_detail;
15800   ops->print_mention = tracepoint_print_mention;
15801   ops->print_recreate = tracepoint_print_recreate;
15802   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15803   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15804   ops->decode_linespec = tracepoint_decode_linespec;
15805
15806   /* Probe tracepoints.  */
15807   ops = &tracepoint_probe_breakpoint_ops;
15808   *ops = tracepoint_breakpoint_ops;
15809   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15810   ops->decode_linespec = tracepoint_probe_decode_linespec;
15811
15812   /* Static tracepoints with marker (`-m').  */
15813   ops = &strace_marker_breakpoint_ops;
15814   *ops = tracepoint_breakpoint_ops;
15815   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15816   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15817   ops->decode_linespec = strace_marker_decode_linespec;
15818
15819   /* Fork catchpoints.  */
15820   ops = &catch_fork_breakpoint_ops;
15821   *ops = base_breakpoint_ops;
15822   ops->insert_location = insert_catch_fork;
15823   ops->remove_location = remove_catch_fork;
15824   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15825   ops->print_it = print_it_catch_fork;
15826   ops->print_one = print_one_catch_fork;
15827   ops->print_mention = print_mention_catch_fork;
15828   ops->print_recreate = print_recreate_catch_fork;
15829
15830   /* Vfork catchpoints.  */
15831   ops = &catch_vfork_breakpoint_ops;
15832   *ops = base_breakpoint_ops;
15833   ops->insert_location = insert_catch_vfork;
15834   ops->remove_location = remove_catch_vfork;
15835   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15836   ops->print_it = print_it_catch_vfork;
15837   ops->print_one = print_one_catch_vfork;
15838   ops->print_mention = print_mention_catch_vfork;
15839   ops->print_recreate = print_recreate_catch_vfork;
15840
15841   /* Exec catchpoints.  */
15842   ops = &catch_exec_breakpoint_ops;
15843   *ops = base_breakpoint_ops;
15844   ops->dtor = dtor_catch_exec;
15845   ops->insert_location = insert_catch_exec;
15846   ops->remove_location = remove_catch_exec;
15847   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15848   ops->print_it = print_it_catch_exec;
15849   ops->print_one = print_one_catch_exec;
15850   ops->print_mention = print_mention_catch_exec;
15851   ops->print_recreate = print_recreate_catch_exec;
15852
15853   /* Syscall catchpoints.  */
15854   ops = &catch_syscall_breakpoint_ops;
15855   *ops = base_breakpoint_ops;
15856   ops->dtor = dtor_catch_syscall;
15857   ops->insert_location = insert_catch_syscall;
15858   ops->remove_location = remove_catch_syscall;
15859   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15860   ops->print_it = print_it_catch_syscall;
15861   ops->print_one = print_one_catch_syscall;
15862   ops->print_mention = print_mention_catch_syscall;
15863   ops->print_recreate = print_recreate_catch_syscall;
15864
15865   /* Solib-related catchpoints.  */
15866   ops = &catch_solib_breakpoint_ops;
15867   *ops = base_breakpoint_ops;
15868   ops->dtor = dtor_catch_solib;
15869   ops->insert_location = insert_catch_solib;
15870   ops->remove_location = remove_catch_solib;
15871   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15872   ops->check_status = check_status_catch_solib;
15873   ops->print_it = print_it_catch_solib;
15874   ops->print_one = print_one_catch_solib;
15875   ops->print_mention = print_mention_catch_solib;
15876   ops->print_recreate = print_recreate_catch_solib;
15877
15878   ops = &dprintf_breakpoint_ops;
15879   *ops = bkpt_base_breakpoint_ops;
15880   ops->re_set = bkpt_re_set;
15881   ops->resources_needed = bkpt_resources_needed;
15882   ops->print_it = bkpt_print_it;
15883   ops->print_mention = bkpt_print_mention;
15884   ops->print_recreate = bkpt_print_recreate;
15885 }
15886
15887 /* Chain containing all defined "enable breakpoint" subcommands.  */
15888
15889 static struct cmd_list_element *enablebreaklist = NULL;
15890
15891 void
15892 _initialize_breakpoint (void)
15893 {
15894   struct cmd_list_element *c;
15895
15896   initialize_breakpoint_ops ();
15897
15898   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15899   observer_attach_inferior_exit (clear_syscall_counts);
15900   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15901
15902   breakpoint_objfile_key
15903     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15904
15905   catch_syscall_inferior_data
15906     = register_inferior_data_with_cleanup (NULL,
15907                                            catch_syscall_inferior_data_cleanup);
15908
15909   breakpoint_chain = 0;
15910   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15911      before a breakpoint is set.  */
15912   breakpoint_count = 0;
15913
15914   tracepoint_count = 0;
15915
15916   add_com ("ignore", class_breakpoint, ignore_command, _("\
15917 Set ignore-count of breakpoint number N to COUNT.\n\
15918 Usage is `ignore N COUNT'."));
15919   if (xdb_commands)
15920     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15921
15922   add_com ("commands", class_breakpoint, commands_command, _("\
15923 Set commands to be executed when a breakpoint is hit.\n\
15924 Give breakpoint number as argument after \"commands\".\n\
15925 With no argument, the targeted breakpoint is the last one set.\n\
15926 The commands themselves follow starting on the next line.\n\
15927 Type a line containing \"end\" to indicate the end of them.\n\
15928 Give \"silent\" as the first line to make the breakpoint silent;\n\
15929 then no output is printed when it is hit, except what the commands print."));
15930
15931   c = add_com ("condition", class_breakpoint, condition_command, _("\
15932 Specify breakpoint number N to break only if COND is true.\n\
15933 Usage is `condition N COND', where N is an integer and COND is an\n\
15934 expression to be evaluated whenever breakpoint N is reached."));
15935   set_cmd_completer (c, condition_completer);
15936
15937   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15938 Set a temporary breakpoint.\n\
15939 Like \"break\" except the breakpoint is only temporary,\n\
15940 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15941 by using \"enable delete\" on the breakpoint number.\n\
15942 \n"
15943 BREAK_ARGS_HELP ("tbreak")));
15944   set_cmd_completer (c, location_completer);
15945
15946   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15947 Set a hardware assisted breakpoint.\n\
15948 Like \"break\" except the breakpoint requires hardware support,\n\
15949 some target hardware may not have this support.\n\
15950 \n"
15951 BREAK_ARGS_HELP ("hbreak")));
15952   set_cmd_completer (c, location_completer);
15953
15954   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15955 Set a temporary hardware assisted breakpoint.\n\
15956 Like \"hbreak\" except the breakpoint is only temporary,\n\
15957 so it will be deleted when hit.\n\
15958 \n"
15959 BREAK_ARGS_HELP ("thbreak")));
15960   set_cmd_completer (c, location_completer);
15961
15962   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15963 Enable some breakpoints.\n\
15964 Give breakpoint numbers (separated by spaces) as arguments.\n\
15965 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15966 This is used to cancel the effect of the \"disable\" command.\n\
15967 With a subcommand you can enable temporarily."),
15968                   &enablelist, "enable ", 1, &cmdlist);
15969   if (xdb_commands)
15970     add_com ("ab", class_breakpoint, enable_command, _("\
15971 Enable some breakpoints.\n\
15972 Give breakpoint numbers (separated by spaces) as arguments.\n\
15973 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15974 This is used to cancel the effect of the \"disable\" command.\n\
15975 With a subcommand you can enable temporarily."));
15976
15977   add_com_alias ("en", "enable", class_breakpoint, 1);
15978
15979   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15980 Enable some breakpoints.\n\
15981 Give breakpoint numbers (separated by spaces) as arguments.\n\
15982 This is used to cancel the effect of the \"disable\" command.\n\
15983 May be abbreviated to simply \"enable\".\n"),
15984                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15985
15986   add_cmd ("once", no_class, enable_once_command, _("\
15987 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15988 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15989            &enablebreaklist);
15990
15991   add_cmd ("delete", no_class, enable_delete_command, _("\
15992 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15993 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15994            &enablebreaklist);
15995
15996   add_cmd ("count", no_class, enable_count_command, _("\
15997 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15998 If a breakpoint is hit while enabled in this fashion,\n\
15999 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16000            &enablebreaklist);
16001
16002   add_cmd ("delete", no_class, enable_delete_command, _("\
16003 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16004 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16005            &enablelist);
16006
16007   add_cmd ("once", no_class, enable_once_command, _("\
16008 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16009 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16010            &enablelist);
16011
16012   add_cmd ("count", no_class, enable_count_command, _("\
16013 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16014 If a breakpoint is hit while enabled in this fashion,\n\
16015 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16016            &enablelist);
16017
16018   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16019 Disable some breakpoints.\n\
16020 Arguments are breakpoint numbers with spaces in between.\n\
16021 To disable all breakpoints, give no argument.\n\
16022 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16023                   &disablelist, "disable ", 1, &cmdlist);
16024   add_com_alias ("dis", "disable", class_breakpoint, 1);
16025   add_com_alias ("disa", "disable", class_breakpoint, 1);
16026   if (xdb_commands)
16027     add_com ("sb", class_breakpoint, disable_command, _("\
16028 Disable some breakpoints.\n\
16029 Arguments are breakpoint numbers with spaces in between.\n\
16030 To disable all breakpoints, give no argument.\n\
16031 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16032
16033   add_cmd ("breakpoints", class_alias, disable_command, _("\
16034 Disable some breakpoints.\n\
16035 Arguments are breakpoint numbers with spaces in between.\n\
16036 To disable all breakpoints, give no argument.\n\
16037 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16038 This command may be abbreviated \"disable\"."),
16039            &disablelist);
16040
16041   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16042 Delete some breakpoints or auto-display expressions.\n\
16043 Arguments are breakpoint numbers with spaces in between.\n\
16044 To delete all breakpoints, give no argument.\n\
16045 \n\
16046 Also a prefix command for deletion of other GDB objects.\n\
16047 The \"unset\" command is also an alias for \"delete\"."),
16048                   &deletelist, "delete ", 1, &cmdlist);
16049   add_com_alias ("d", "delete", class_breakpoint, 1);
16050   add_com_alias ("del", "delete", class_breakpoint, 1);
16051   if (xdb_commands)
16052     add_com ("db", class_breakpoint, delete_command, _("\
16053 Delete some breakpoints.\n\
16054 Arguments are breakpoint numbers with spaces in between.\n\
16055 To delete all breakpoints, give no argument.\n"));
16056
16057   add_cmd ("breakpoints", class_alias, delete_command, _("\
16058 Delete some breakpoints or auto-display expressions.\n\
16059 Arguments are breakpoint numbers with spaces in between.\n\
16060 To delete all breakpoints, give no argument.\n\
16061 This command may be abbreviated \"delete\"."),
16062            &deletelist);
16063
16064   add_com ("clear", class_breakpoint, clear_command, _("\
16065 Clear breakpoint at specified line or function.\n\
16066 Argument may be line number, function name, or \"*\" and an address.\n\
16067 If line number is specified, all breakpoints in that line are cleared.\n\
16068 If function is specified, breakpoints at beginning of function are cleared.\n\
16069 If an address is specified, breakpoints at that address are cleared.\n\
16070 \n\
16071 With no argument, clears all breakpoints in the line that the selected frame\n\
16072 is executing in.\n\
16073 \n\
16074 See also the \"delete\" command which clears breakpoints by number."));
16075   add_com_alias ("cl", "clear", class_breakpoint, 1);
16076
16077   c = add_com ("break", class_breakpoint, break_command, _("\
16078 Set breakpoint at specified line or function.\n"
16079 BREAK_ARGS_HELP ("break")));
16080   set_cmd_completer (c, location_completer);
16081
16082   add_com_alias ("b", "break", class_run, 1);
16083   add_com_alias ("br", "break", class_run, 1);
16084   add_com_alias ("bre", "break", class_run, 1);
16085   add_com_alias ("brea", "break", class_run, 1);
16086
16087   if (xdb_commands)
16088    add_com_alias ("ba", "break", class_breakpoint, 1);
16089
16090   if (dbx_commands)
16091     {
16092       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16093 Break in function/address or break at a line in the current file."),
16094                              &stoplist, "stop ", 1, &cmdlist);
16095       add_cmd ("in", class_breakpoint, stopin_command,
16096                _("Break in function or address."), &stoplist);
16097       add_cmd ("at", class_breakpoint, stopat_command,
16098                _("Break at a line in the current file."), &stoplist);
16099       add_com ("status", class_info, breakpoints_info, _("\
16100 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16101 The \"Type\" column indicates one of:\n\
16102 \tbreakpoint     - normal breakpoint\n\
16103 \twatchpoint     - watchpoint\n\
16104 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16105 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16106 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16107 address and file/line number respectively.\n\
16108 \n\
16109 Convenience variable \"$_\" and default examine address for \"x\"\n\
16110 are set to the address of the last breakpoint listed unless the command\n\
16111 is prefixed with \"server \".\n\n\
16112 Convenience variable \"$bpnum\" contains the number of the last\n\
16113 breakpoint set."));
16114     }
16115
16116   add_info ("breakpoints", breakpoints_info, _("\
16117 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16118 The \"Type\" column indicates one of:\n\
16119 \tbreakpoint     - normal breakpoint\n\
16120 \twatchpoint     - watchpoint\n\
16121 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16122 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16123 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16124 address and file/line number respectively.\n\
16125 \n\
16126 Convenience variable \"$_\" and default examine address for \"x\"\n\
16127 are set to the address of the last breakpoint listed unless the command\n\
16128 is prefixed with \"server \".\n\n\
16129 Convenience variable \"$bpnum\" contains the number of the last\n\
16130 breakpoint set."));
16131
16132   add_info_alias ("b", "breakpoints", 1);
16133
16134   if (xdb_commands)
16135     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16136 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16137 The \"Type\" column indicates one of:\n\
16138 \tbreakpoint     - normal breakpoint\n\
16139 \twatchpoint     - watchpoint\n\
16140 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16141 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16142 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16143 address and file/line number respectively.\n\
16144 \n\
16145 Convenience variable \"$_\" and default examine address for \"x\"\n\
16146 are set to the address of the last breakpoint listed unless the command\n\
16147 is prefixed with \"server \".\n\n\
16148 Convenience variable \"$bpnum\" contains the number of the last\n\
16149 breakpoint set."));
16150
16151   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16152 Status of all breakpoints, or breakpoint number NUMBER.\n\
16153 The \"Type\" column indicates one of:\n\
16154 \tbreakpoint     - normal breakpoint\n\
16155 \twatchpoint     - watchpoint\n\
16156 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16157 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16158 \tuntil          - internal breakpoint used by the \"until\" command\n\
16159 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16160 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16161 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16162 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16163 address and file/line number respectively.\n\
16164 \n\
16165 Convenience variable \"$_\" and default examine address for \"x\"\n\
16166 are set to the address of the last breakpoint listed unless the command\n\
16167 is prefixed with \"server \".\n\n\
16168 Convenience variable \"$bpnum\" contains the number of the last\n\
16169 breakpoint set."),
16170            &maintenanceinfolist);
16171
16172   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16173 Set catchpoints to catch events."),
16174                   &catch_cmdlist, "catch ",
16175                   0/*allow-unknown*/, &cmdlist);
16176
16177   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16178 Set temporary catchpoints to catch events."),
16179                   &tcatch_cmdlist, "tcatch ",
16180                   0/*allow-unknown*/, &cmdlist);
16181
16182   /* Add catch and tcatch sub-commands.  */
16183   add_catch_command ("catch", _("\
16184 Catch an exception, when caught."),
16185                      catch_catch_command,
16186                      NULL,
16187                      CATCH_PERMANENT,
16188                      CATCH_TEMPORARY);
16189   add_catch_command ("throw", _("\
16190 Catch an exception, when thrown."),
16191                      catch_throw_command,
16192                      NULL,
16193                      CATCH_PERMANENT,
16194                      CATCH_TEMPORARY);
16195   add_catch_command ("fork", _("Catch calls to fork."),
16196                      catch_fork_command_1,
16197                      NULL,
16198                      (void *) (uintptr_t) catch_fork_permanent,
16199                      (void *) (uintptr_t) catch_fork_temporary);
16200   add_catch_command ("vfork", _("Catch calls to vfork."),
16201                      catch_fork_command_1,
16202                      NULL,
16203                      (void *) (uintptr_t) catch_vfork_permanent,
16204                      (void *) (uintptr_t) catch_vfork_temporary);
16205   add_catch_command ("exec", _("Catch calls to exec."),
16206                      catch_exec_command_1,
16207                      NULL,
16208                      CATCH_PERMANENT,
16209                      CATCH_TEMPORARY);
16210   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16211 Usage: catch load [REGEX]\n\
16212 If REGEX is given, only stop for libraries matching the regular expression."),
16213                      catch_load_command_1,
16214                      NULL,
16215                      CATCH_PERMANENT,
16216                      CATCH_TEMPORARY);
16217   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16218 Usage: catch unload [REGEX]\n\
16219 If REGEX is given, only stop for libraries matching the regular expression."),
16220                      catch_unload_command_1,
16221                      NULL,
16222                      CATCH_PERMANENT,
16223                      CATCH_TEMPORARY);
16224   add_catch_command ("syscall", _("\
16225 Catch system calls by their names and/or numbers.\n\
16226 Arguments say which system calls to catch.  If no arguments\n\
16227 are given, every system call will be caught.\n\
16228 Arguments, if given, should be one or more system call names\n\
16229 (if your system supports that), or system call numbers."),
16230                      catch_syscall_command_1,
16231                      catch_syscall_completer,
16232                      CATCH_PERMANENT,
16233                      CATCH_TEMPORARY);
16234
16235   c = add_com ("watch", class_breakpoint, watch_command, _("\
16236 Set a watchpoint for an expression.\n\
16237 Usage: watch [-l|-location] EXPRESSION\n\
16238 A watchpoint stops execution of your program whenever the value of\n\
16239 an expression changes.\n\
16240 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16241 the memory to which it refers."));
16242   set_cmd_completer (c, expression_completer);
16243
16244   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16245 Set a read watchpoint for an expression.\n\
16246 Usage: rwatch [-l|-location] EXPRESSION\n\
16247 A watchpoint stops execution of your program whenever the value of\n\
16248 an expression is read.\n\
16249 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16250 the memory to which it refers."));
16251   set_cmd_completer (c, expression_completer);
16252
16253   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16254 Set a watchpoint for an expression.\n\
16255 Usage: awatch [-l|-location] EXPRESSION\n\
16256 A watchpoint stops execution of your program whenever the value of\n\
16257 an expression is either read or written.\n\
16258 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16259 the memory to which it refers."));
16260   set_cmd_completer (c, expression_completer);
16261
16262   add_info ("watchpoints", watchpoints_info, _("\
16263 Status of specified watchpoints (all watchpoints if no argument)."));
16264
16265   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16266      respond to changes - contrary to the description.  */
16267   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16268                             &can_use_hw_watchpoints, _("\
16269 Set debugger's willingness to use watchpoint hardware."), _("\
16270 Show debugger's willingness to use watchpoint hardware."), _("\
16271 If zero, gdb will not use hardware for new watchpoints, even if\n\
16272 such is available.  (However, any hardware watchpoints that were\n\
16273 created before setting this to nonzero, will continue to use watchpoint\n\
16274 hardware.)"),
16275                             NULL,
16276                             show_can_use_hw_watchpoints,
16277                             &setlist, &showlist);
16278
16279   can_use_hw_watchpoints = 1;
16280
16281   /* Tracepoint manipulation commands.  */
16282
16283   c = add_com ("trace", class_breakpoint, trace_command, _("\
16284 Set a tracepoint at specified line or function.\n\
16285 \n"
16286 BREAK_ARGS_HELP ("trace") "\n\
16287 Do \"help tracepoints\" for info on other tracepoint commands."));
16288   set_cmd_completer (c, location_completer);
16289
16290   add_com_alias ("tp", "trace", class_alias, 0);
16291   add_com_alias ("tr", "trace", class_alias, 1);
16292   add_com_alias ("tra", "trace", class_alias, 1);
16293   add_com_alias ("trac", "trace", class_alias, 1);
16294
16295   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16296 Set a fast tracepoint at specified line or function.\n\
16297 \n"
16298 BREAK_ARGS_HELP ("ftrace") "\n\
16299 Do \"help tracepoints\" for info on other tracepoint commands."));
16300   set_cmd_completer (c, location_completer);
16301
16302   c = add_com ("strace", class_breakpoint, strace_command, _("\
16303 Set a static tracepoint at specified line, function or marker.\n\
16304 \n\
16305 strace [LOCATION] [if CONDITION]\n\
16306 LOCATION may be a line number, function name, \"*\" and an address,\n\
16307 or -m MARKER_ID.\n\
16308 If a line number is specified, probe the marker at start of code\n\
16309 for that line.  If a function is specified, probe the marker at start\n\
16310 of code for that function.  If an address is specified, probe the marker\n\
16311 at that exact address.  If a marker id is specified, probe the marker\n\
16312 with that name.  With no LOCATION, uses current execution address of\n\
16313 the selected stack frame.\n\
16314 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16315 This collects arbitrary user data passed in the probe point call to the\n\
16316 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16317 by printing the $_sdata variable like any other convenience variable.\n\
16318 \n\
16319 CONDITION is a boolean expression.\n\
16320 \n\
16321 Multiple tracepoints at one place are permitted, and useful if their\n\
16322 conditions are different.\n\
16323 \n\
16324 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16325 Do \"help tracepoints\" for info on other tracepoint commands."));
16326   set_cmd_completer (c, location_completer);
16327
16328   add_info ("tracepoints", tracepoints_info, _("\
16329 Status of specified tracepoints (all tracepoints if no argument).\n\
16330 Convenience variable \"$tpnum\" contains the number of the\n\
16331 last tracepoint set."));
16332
16333   add_info_alias ("tp", "tracepoints", 1);
16334
16335   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16336 Delete specified tracepoints.\n\
16337 Arguments are tracepoint numbers, separated by spaces.\n\
16338 No argument means delete all tracepoints."),
16339            &deletelist);
16340
16341   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16342 Disable specified tracepoints.\n\
16343 Arguments are tracepoint numbers, separated by spaces.\n\
16344 No argument means disable all tracepoints."),
16345            &disablelist);
16346   deprecate_cmd (c, "disable");
16347
16348   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16349 Enable specified tracepoints.\n\
16350 Arguments are tracepoint numbers, separated by spaces.\n\
16351 No argument means enable all tracepoints."),
16352            &enablelist);
16353   deprecate_cmd (c, "enable");
16354
16355   add_com ("passcount", class_trace, trace_pass_command, _("\
16356 Set the passcount for a tracepoint.\n\
16357 The trace will end when the tracepoint has been passed 'count' times.\n\
16358 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16359 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16360
16361   add_prefix_cmd ("save", class_breakpoint, save_command,
16362                   _("Save breakpoint definitions as a script."),
16363                   &save_cmdlist, "save ",
16364                   0/*allow-unknown*/, &cmdlist);
16365
16366   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16367 Save current breakpoint definitions as a script.\n\
16368 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16369 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16370 session to restore them."),
16371                &save_cmdlist);
16372   set_cmd_completer (c, filename_completer);
16373
16374   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16375 Save current tracepoint definitions as a script.\n\
16376 Use the 'source' command in another debug session to restore them."),
16377                &save_cmdlist);
16378   set_cmd_completer (c, filename_completer);
16379
16380   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16381   deprecate_cmd (c, "save tracepoints");
16382
16383   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16384 Breakpoint specific settings\n\
16385 Configure various breakpoint-specific variables such as\n\
16386 pending breakpoint behavior"),
16387                   &breakpoint_set_cmdlist, "set breakpoint ",
16388                   0/*allow-unknown*/, &setlist);
16389   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16390 Breakpoint specific settings\n\
16391 Configure various breakpoint-specific variables such as\n\
16392 pending breakpoint behavior"),
16393                   &breakpoint_show_cmdlist, "show breakpoint ",
16394                   0/*allow-unknown*/, &showlist);
16395
16396   add_setshow_auto_boolean_cmd ("pending", no_class,
16397                                 &pending_break_support, _("\
16398 Set debugger's behavior regarding pending breakpoints."), _("\
16399 Show debugger's behavior regarding pending breakpoints."), _("\
16400 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16401 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16402 an error.  If auto, an unrecognized breakpoint location results in a\n\
16403 user-query to see if a pending breakpoint should be created."),
16404                                 NULL,
16405                                 show_pending_break_support,
16406                                 &breakpoint_set_cmdlist,
16407                                 &breakpoint_show_cmdlist);
16408
16409   pending_break_support = AUTO_BOOLEAN_AUTO;
16410
16411   add_setshow_boolean_cmd ("auto-hw", no_class,
16412                            &automatic_hardware_breakpoints, _("\
16413 Set automatic usage of hardware breakpoints."), _("\
16414 Show automatic usage of hardware breakpoints."), _("\
16415 If set, the debugger will automatically use hardware breakpoints for\n\
16416 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16417 a warning will be emitted for such breakpoints."),
16418                            NULL,
16419                            show_automatic_hardware_breakpoints,
16420                            &breakpoint_set_cmdlist,
16421                            &breakpoint_show_cmdlist);
16422
16423   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16424                                 &always_inserted_mode, _("\
16425 Set mode for inserting breakpoints."), _("\
16426 Show mode for inserting breakpoints."), _("\
16427 When this mode is off, breakpoints are inserted in inferior when it is\n\
16428 resumed, and removed when execution stops.  When this mode is on,\n\
16429 breakpoints are inserted immediately and removed only when the user\n\
16430 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16431 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16432 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16433 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16434 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16435                                 NULL,
16436                                 &show_always_inserted_mode,
16437                                 &breakpoint_set_cmdlist,
16438                                 &breakpoint_show_cmdlist);
16439
16440   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16441                         condition_evaluation_enums,
16442                         &condition_evaluation_mode_1, _("\
16443 Set mode of breakpoint condition evaluation."), _("\
16444 Show mode of breakpoint condition evaluation."), _("\
16445 When this is set to \"host\", breakpoint conditions will be\n\
16446 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16447 breakpoint conditions will be downloaded to the target (if the target\n\
16448 supports such feature) and conditions will be evaluated on the target's side.\n\
16449 If this is set to \"auto\" (default), this will be automatically set to\n\
16450 \"target\" if it supports condition evaluation, otherwise it will\n\
16451 be set to \"gdb\""),
16452                            &set_condition_evaluation_mode,
16453                            &show_condition_evaluation_mode,
16454                            &breakpoint_set_cmdlist,
16455                            &breakpoint_show_cmdlist);
16456
16457   add_com ("break-range", class_breakpoint, break_range_command, _("\
16458 Set a breakpoint for an address range.\n\
16459 break-range START-LOCATION, END-LOCATION\n\
16460 where START-LOCATION and END-LOCATION can be one of the following:\n\
16461   LINENUM, for that line in the current file,\n\
16462   FILE:LINENUM, for that line in that file,\n\
16463   +OFFSET, for that number of lines after the current line\n\
16464            or the start of the range\n\
16465   FUNCTION, for the first line in that function,\n\
16466   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16467   *ADDRESS, for the instruction at that address.\n\
16468 \n\
16469 The breakpoint will stop execution of the inferior whenever it executes\n\
16470 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16471 range (including START-LOCATION and END-LOCATION)."));
16472
16473   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16474 Set a dynamic printf at specified line or function.\n\
16475 dprintf location,format string,arg1,arg2,...\n\
16476 location may be a line number, function name, or \"*\" and an address.\n\
16477 If a line number is specified, break at start of code for that line.\n\
16478 If a function is specified, break at start of code for that function.\n\
16479 "));
16480   set_cmd_completer (c, location_completer);
16481
16482   add_setshow_enum_cmd ("dprintf-style", class_support,
16483                         dprintf_style_enums, &dprintf_style, _("\
16484 Set the style of usage for dynamic printf."), _("\
16485 Show the style of usage for dynamic printf."), _("\
16486 This setting chooses how GDB will do a dynamic printf.\n\
16487 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16488 console, as with the \"printf\" command.\n\
16489 If the value is \"call\", the print is done by calling a function in your\n\
16490 program; by default printf(), but you can choose a different function or\n\
16491 output stream by setting dprintf-function and dprintf-channel."),
16492                         update_dprintf_commands, NULL,
16493                         &setlist, &showlist);
16494
16495   dprintf_function = xstrdup ("printf");
16496   add_setshow_string_cmd ("dprintf-function", class_support,
16497                           &dprintf_function, _("\
16498 Set the function to use for dynamic printf"), _("\
16499 Show the function to use for dynamic printf"), NULL,
16500                           update_dprintf_commands, NULL,
16501                           &setlist, &showlist);
16502
16503   dprintf_channel = xstrdup ("");
16504   add_setshow_string_cmd ("dprintf-channel", class_support,
16505                           &dprintf_channel, _("\
16506 Set the channel to use for dynamic printf"), _("\
16507 Show the channel to use for dynamic printf"), NULL,
16508                           update_dprintf_commands, NULL,
16509                           &setlist, &showlist);
16510
16511   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16512                            &disconnected_dprintf, _("\
16513 Set whether dprintf continues after GDB disconnects."), _("\
16514 Show whether dprintf continues after GDB disconnects."), _("\
16515 Use this to let dprintf commands continue to hit and produce output\n\
16516 even if GDB disconnects or detaches from the target."),
16517                            NULL,
16518                            NULL,
16519                            &setlist, &showlist);
16520
16521   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16522 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16523 (target agent only) This is useful for formatted output in user-defined commands."));
16524
16525   automatic_hardware_breakpoints = 1;
16526
16527   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16528 }