gdb/
[platform/upstream/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 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 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_RETHROW,
90   EX_EVENT_CATCH
91 };
92
93 /* Prototypes for local functions.  */
94
95 static void enable_delete_command (char *, int);
96
97 static void enable_once_command (char *, int);
98
99 static void enable_count_command (char *, int);
100
101 static void disable_command (char *, int);
102
103 static void enable_command (char *, int);
104
105 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
106                                                       void *),
107                                     void *);
108
109 static void ignore_command (char *, int);
110
111 static int breakpoint_re_set_one (void *);
112
113 static void breakpoint_re_set_default (struct breakpoint *);
114
115 static void create_sals_from_address_default (char **,
116                                               struct linespec_result *,
117                                               enum bptype, char *,
118                                               char **);
119
120 static void create_breakpoints_sal_default (struct gdbarch *,
121                                             struct linespec_result *,
122                                             struct linespec_sals *,
123                                             char *, char *, enum bptype,
124                                             enum bpdisp, int, int,
125                                             int,
126                                             const struct breakpoint_ops *,
127                                             int, int, int, unsigned);
128
129 static void decode_linespec_default (struct breakpoint *, char **,
130                                      struct symtabs_and_lines *);
131
132 static void clear_command (char *, int);
133
134 static void catch_command (char *, int);
135
136 static int can_use_hardware_watchpoint (struct value *);
137
138 static void break_command_1 (char *, int, int);
139
140 static void mention (struct breakpoint *);
141
142 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
143                                                                enum bptype,
144                                                                const struct breakpoint_ops *);
145 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
146                                                        const struct symtab_and_line *);
147
148 /* This function is used in gdbtk sources and thus can not be made
149    static.  */
150 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
151                                        struct symtab_and_line,
152                                        enum bptype,
153                                        const struct breakpoint_ops *);
154
155 static struct breakpoint *
156   momentary_breakpoint_from_master (struct breakpoint *orig,
157                                     enum bptype type,
158                                     const struct breakpoint_ops *ops);
159
160 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
161
162 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
163                                             CORE_ADDR bpaddr,
164                                             enum bptype bptype);
165
166 static void describe_other_breakpoints (struct gdbarch *,
167                                         struct program_space *, CORE_ADDR,
168                                         struct obj_section *, int);
169
170 static int breakpoint_address_match (struct address_space *aspace1,
171                                      CORE_ADDR addr1,
172                                      struct address_space *aspace2,
173                                      CORE_ADDR addr2);
174
175 static int watchpoint_locations_match (struct bp_location *loc1,
176                                        struct bp_location *loc2);
177
178 static int breakpoint_location_address_match (struct bp_location *bl,
179                                               struct address_space *aspace,
180                                               CORE_ADDR addr);
181
182 static void breakpoints_info (char *, int);
183
184 static void watchpoints_info (char *, int);
185
186 static int breakpoint_1 (char *, int, 
187                          int (*) (const struct breakpoint *));
188
189 static int breakpoint_cond_eval (void *);
190
191 static void cleanup_executing_breakpoints (void *);
192
193 static void commands_command (char *, int);
194
195 static void condition_command (char *, int);
196
197 typedef enum
198   {
199     mark_inserted,
200     mark_uninserted
201   }
202 insertion_state_t;
203
204 static int remove_breakpoint (struct bp_location *, insertion_state_t);
205 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
206
207 static enum print_stop_action print_bp_stop_message (bpstat bs);
208
209 static int watchpoint_check (void *);
210
211 static void maintenance_info_breakpoints (char *, int);
212
213 static int hw_breakpoint_used_count (void);
214
215 static int hw_watchpoint_use_count (struct breakpoint *);
216
217 static int hw_watchpoint_used_count_others (struct breakpoint *except,
218                                             enum bptype type,
219                                             int *other_type_used);
220
221 static void hbreak_command (char *, int);
222
223 static void thbreak_command (char *, int);
224
225 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
226                                     int count);
227
228 static void stop_command (char *arg, int from_tty);
229
230 static void stopin_command (char *arg, int from_tty);
231
232 static void stopat_command (char *arg, int from_tty);
233
234 static void tcatch_command (char *arg, int from_tty);
235
236 static void detach_single_step_breakpoints (void);
237
238 static int single_step_breakpoint_inserted_here_p (struct address_space *,
239                                                    CORE_ADDR pc);
240
241 static void free_bp_location (struct bp_location *loc);
242 static void incref_bp_location (struct bp_location *loc);
243 static void decref_bp_location (struct bp_location **loc);
244
245 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
246
247 static void update_global_location_list (int);
248
249 static void update_global_location_list_nothrow (int);
250
251 static int is_hardware_watchpoint (const struct breakpoint *bpt);
252
253 static void insert_breakpoint_locations (void);
254
255 static int syscall_catchpoint_p (struct breakpoint *b);
256
257 static void tracepoints_info (char *, int);
258
259 static void delete_trace_command (char *, int);
260
261 static void enable_trace_command (char *, int);
262
263 static void disable_trace_command (char *, int);
264
265 static void trace_pass_command (char *, int);
266
267 static void set_tracepoint_count (int num);
268
269 static int is_masked_watchpoint (const struct breakpoint *b);
270
271 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
272
273 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
274    otherwise.  */
275
276 static int strace_marker_p (struct breakpoint *b);
277
278 /* The abstract base class all breakpoint_ops structures inherit
279    from.  */
280 struct breakpoint_ops base_breakpoint_ops;
281
282 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
283    that are implemented on top of software or hardware breakpoints
284    (user breakpoints, internal and momentary breakpoints, etc.).  */
285 static struct breakpoint_ops bkpt_base_breakpoint_ops;
286
287 /* Internal breakpoints class type.  */
288 static struct breakpoint_ops internal_breakpoint_ops;
289
290 /* Momentary breakpoints class type.  */
291 static struct breakpoint_ops momentary_breakpoint_ops;
292
293 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
294 static struct breakpoint_ops longjmp_breakpoint_ops;
295
296 /* The breakpoint_ops structure to be used in regular user created
297    breakpoints.  */
298 struct breakpoint_ops bkpt_breakpoint_ops;
299
300 /* Breakpoints set on probes.  */
301 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
302
303 /* Dynamic printf class type.  */
304 static struct breakpoint_ops dprintf_breakpoint_ops;
305
306 /* The style in which to perform a dynamic printf.  This is a user
307    option because different output options have different tradeoffs;
308    if GDB does the printing, there is better error handling if there
309    is a problem with any of the arguments, but using an inferior
310    function lets you have special-purpose printers and sending of
311    output to the same place as compiled-in print functions.  */
312
313 static const char dprintf_style_gdb[] = "gdb";
314 static const char dprintf_style_call[] = "call";
315 static const char dprintf_style_agent[] = "agent";
316 static const char *const dprintf_style_enums[] = {
317   dprintf_style_gdb,
318   dprintf_style_call,
319   dprintf_style_agent,
320   NULL
321 };
322 static const char *dprintf_style = dprintf_style_gdb;
323
324 /* The function to use for dynamic printf if the preferred style is to
325    call into the inferior.  The value is simply a string that is
326    copied into the command, so it can be anything that GDB can
327    evaluate to a callable address, not necessarily a function name.  */
328
329 static char *dprintf_function = "";
330
331 /* The channel to use for dynamic printf if the preferred style is to
332    call into the inferior; if a nonempty string, it will be passed to
333    the call as the first argument, with the format string as the
334    second.  As with the dprintf function, this can be anything that
335    GDB knows how to evaluate, so in addition to common choices like
336    "stderr", this could be an app-specific expression like
337    "mystreams[curlogger]".  */
338
339 static char *dprintf_channel = "";
340
341 /* True if dprintf commands should continue to operate even if GDB
342    has disconnected.  */
343 static int disconnected_dprintf = 1;
344
345 /* A reference-counted struct command_line.  This lets multiple
346    breakpoints share a single command list.  */
347 struct counted_command_line
348 {
349   /* The reference count.  */
350   int refc;
351
352   /* The command list.  */
353   struct command_line *commands;
354 };
355
356 struct command_line *
357 breakpoint_commands (struct breakpoint *b)
358 {
359   return b->commands ? b->commands->commands : NULL;
360 }
361
362 /* Flag indicating that a command has proceeded the inferior past the
363    current breakpoint.  */
364
365 static int breakpoint_proceeded;
366
367 const char *
368 bpdisp_text (enum bpdisp disp)
369 {
370   /* NOTE: the following values are a part of MI protocol and
371      represent values of 'disp' field returned when inferior stops at
372      a breakpoint.  */
373   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
374
375   return bpdisps[(int) disp];
376 }
377
378 /* Prototypes for exported functions.  */
379 /* If FALSE, gdb will not use hardware support for watchpoints, even
380    if such is available.  */
381 static int can_use_hw_watchpoints;
382
383 static void
384 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
385                              struct cmd_list_element *c,
386                              const char *value)
387 {
388   fprintf_filtered (file,
389                     _("Debugger's willingness to use "
390                       "watchpoint hardware is %s.\n"),
391                     value);
392 }
393
394 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
395    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
396    for unrecognized breakpoint locations.
397    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
398 static enum auto_boolean pending_break_support;
399 static void
400 show_pending_break_support (struct ui_file *file, int from_tty,
401                             struct cmd_list_element *c,
402                             const char *value)
403 {
404   fprintf_filtered (file,
405                     _("Debugger's behavior regarding "
406                       "pending breakpoints is %s.\n"),
407                     value);
408 }
409
410 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
411    set with "break" but falling in read-only memory.
412    If 0, gdb will warn about such breakpoints, but won't automatically
413    use hardware breakpoints.  */
414 static int automatic_hardware_breakpoints;
415 static void
416 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
417                                      struct cmd_list_element *c,
418                                      const char *value)
419 {
420   fprintf_filtered (file,
421                     _("Automatic usage of hardware breakpoints is %s.\n"),
422                     value);
423 }
424
425 /* If on, gdb will keep breakpoints inserted even as inferior is
426    stopped, and immediately insert any new breakpoints.  If off, gdb
427    will insert breakpoints into inferior only when resuming it, and
428    will remove breakpoints upon stop.  If auto, GDB will behave as ON
429    if in non-stop mode, and as OFF if all-stop mode.*/
430
431 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
432
433 static void
434 show_always_inserted_mode (struct ui_file *file, int from_tty,
435                      struct cmd_list_element *c, const char *value)
436 {
437   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
438     fprintf_filtered (file,
439                       _("Always inserted breakpoint "
440                         "mode is %s (currently %s).\n"),
441                       value,
442                       breakpoints_always_inserted_mode () ? "on" : "off");
443   else
444     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
445                       value);
446 }
447
448 int
449 breakpoints_always_inserted_mode (void)
450 {
451   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
452           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
453 }
454
455 static const char condition_evaluation_both[] = "host or target";
456
457 /* Modes for breakpoint condition evaluation.  */
458 static const char condition_evaluation_auto[] = "auto";
459 static const char condition_evaluation_host[] = "host";
460 static const char condition_evaluation_target[] = "target";
461 static const char *const condition_evaluation_enums[] = {
462   condition_evaluation_auto,
463   condition_evaluation_host,
464   condition_evaluation_target,
465   NULL
466 };
467
468 /* Global that holds the current mode for breakpoint condition evaluation.  */
469 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
470
471 /* Global that we use to display information to the user (gets its value from
472    condition_evaluation_mode_1.  */
473 static const char *condition_evaluation_mode = condition_evaluation_auto;
474
475 /* Translate a condition evaluation mode MODE into either "host"
476    or "target".  This is used mostly to translate from "auto" to the
477    real setting that is being used.  It returns the translated
478    evaluation mode.  */
479
480 static const char *
481 translate_condition_evaluation_mode (const char *mode)
482 {
483   if (mode == condition_evaluation_auto)
484     {
485       if (target_supports_evaluation_of_breakpoint_conditions ())
486         return condition_evaluation_target;
487       else
488         return condition_evaluation_host;
489     }
490   else
491     return mode;
492 }
493
494 /* Discovers what condition_evaluation_auto translates to.  */
495
496 static const char *
497 breakpoint_condition_evaluation_mode (void)
498 {
499   return translate_condition_evaluation_mode (condition_evaluation_mode);
500 }
501
502 /* Return true if GDB should evaluate breakpoint conditions or false
503    otherwise.  */
504
505 static int
506 gdb_evaluates_breakpoint_condition_p (void)
507 {
508   const char *mode = breakpoint_condition_evaluation_mode ();
509
510   return (mode == condition_evaluation_host);
511 }
512
513 void _initialize_breakpoint (void);
514
515 /* Are we executing breakpoint commands?  */
516 static int executing_breakpoint_commands;
517
518 /* Are overlay event breakpoints enabled? */
519 static int overlay_events_enabled;
520
521 /* See description in breakpoint.h. */
522 int target_exact_watchpoints = 0;
523
524 /* Walk the following statement or block through all breakpoints.
525    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
526    current breakpoint.  */
527
528 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
529
530 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
531         for (B = breakpoint_chain;      \
532              B ? (TMP=B->next, 1): 0;   \
533              B = TMP)
534
535 /* Similar iterator for the low-level breakpoints.  SAFE variant is
536    not provided so update_global_location_list must not be called
537    while executing the block of ALL_BP_LOCATIONS.  */
538
539 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
540         for (BP_TMP = bp_location;                                      \
541              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
542              BP_TMP++)
543
544 /* Iterates through locations with address ADDRESS for the currently selected
545    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
546    to where the loop should start from.
547    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
548    appropriate location to start with.  */
549
550 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
551         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
552              BP_LOCP_TMP = BP_LOCP_START;                               \
553              BP_LOCP_START                                              \
554              && (BP_LOCP_TMP < bp_location + bp_location_count          \
555              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
556              BP_LOCP_TMP++)
557
558 /* Iterator for tracepoints only.  */
559
560 #define ALL_TRACEPOINTS(B)  \
561   for (B = breakpoint_chain; B; B = B->next)  \
562     if (is_tracepoint (B))
563
564 /* Chains of all breakpoints defined.  */
565
566 struct breakpoint *breakpoint_chain;
567
568 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
569
570 static struct bp_location **bp_location;
571
572 /* Number of elements of BP_LOCATION.  */
573
574 static unsigned bp_location_count;
575
576 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
577    ADDRESS for the current elements of BP_LOCATION which get a valid
578    result from bp_location_has_shadow.  You can use it for roughly
579    limiting the subrange of BP_LOCATION to scan for shadow bytes for
580    an address you need to read.  */
581
582 static CORE_ADDR bp_location_placed_address_before_address_max;
583
584 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
585    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
586    BP_LOCATION which get a valid result from bp_location_has_shadow.
587    You can use it for roughly limiting the subrange of BP_LOCATION to
588    scan for shadow bytes for an address you need to read.  */
589
590 static CORE_ADDR bp_location_shadow_len_after_address_max;
591
592 /* The locations that no longer correspond to any breakpoint, unlinked
593    from bp_location array, but for which a hit may still be reported
594    by a target.  */
595 VEC(bp_location_p) *moribund_locations = NULL;
596
597 /* Number of last breakpoint made.  */
598
599 static int breakpoint_count;
600
601 /* The value of `breakpoint_count' before the last command that
602    created breakpoints.  If the last (break-like) command created more
603    than one breakpoint, then the difference between BREAKPOINT_COUNT
604    and PREV_BREAKPOINT_COUNT is more than one.  */
605 static int prev_breakpoint_count;
606
607 /* Number of last tracepoint made.  */
608
609 static int tracepoint_count;
610
611 static struct cmd_list_element *breakpoint_set_cmdlist;
612 static struct cmd_list_element *breakpoint_show_cmdlist;
613 struct cmd_list_element *save_cmdlist;
614
615 /* Return whether a breakpoint is an active enabled breakpoint.  */
616 static int
617 breakpoint_enabled (struct breakpoint *b)
618 {
619   return (b->enable_state == bp_enabled);
620 }
621
622 /* Set breakpoint count to NUM.  */
623
624 static void
625 set_breakpoint_count (int num)
626 {
627   prev_breakpoint_count = breakpoint_count;
628   breakpoint_count = num;
629   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
630 }
631
632 /* Used by `start_rbreak_breakpoints' below, to record the current
633    breakpoint count before "rbreak" creates any breakpoint.  */
634 static int rbreak_start_breakpoint_count;
635
636 /* Called at the start an "rbreak" command to record the first
637    breakpoint made.  */
638
639 void
640 start_rbreak_breakpoints (void)
641 {
642   rbreak_start_breakpoint_count = breakpoint_count;
643 }
644
645 /* Called at the end of an "rbreak" command to record the last
646    breakpoint made.  */
647
648 void
649 end_rbreak_breakpoints (void)
650 {
651   prev_breakpoint_count = rbreak_start_breakpoint_count;
652 }
653
654 /* Used in run_command to zero the hit count when a new run starts.  */
655
656 void
657 clear_breakpoint_hit_counts (void)
658 {
659   struct breakpoint *b;
660
661   ALL_BREAKPOINTS (b)
662     b->hit_count = 0;
663 }
664
665 /* Allocate a new counted_command_line with reference count of 1.
666    The new structure owns COMMANDS.  */
667
668 static struct counted_command_line *
669 alloc_counted_command_line (struct command_line *commands)
670 {
671   struct counted_command_line *result
672     = xmalloc (sizeof (struct counted_command_line));
673
674   result->refc = 1;
675   result->commands = commands;
676   return result;
677 }
678
679 /* Increment reference count.  This does nothing if CMD is NULL.  */
680
681 static void
682 incref_counted_command_line (struct counted_command_line *cmd)
683 {
684   if (cmd)
685     ++cmd->refc;
686 }
687
688 /* Decrement reference count.  If the reference count reaches 0,
689    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
690    nothing if *CMDP is NULL.  */
691
692 static void
693 decref_counted_command_line (struct counted_command_line **cmdp)
694 {
695   if (*cmdp)
696     {
697       if (--(*cmdp)->refc == 0)
698         {
699           free_command_lines (&(*cmdp)->commands);
700           xfree (*cmdp);
701         }
702       *cmdp = NULL;
703     }
704 }
705
706 /* A cleanup function that calls decref_counted_command_line.  */
707
708 static void
709 do_cleanup_counted_command_line (void *arg)
710 {
711   decref_counted_command_line (arg);
712 }
713
714 /* Create a cleanup that calls decref_counted_command_line on the
715    argument.  */
716
717 static struct cleanup *
718 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
719 {
720   return make_cleanup (do_cleanup_counted_command_line, cmdp);
721 }
722
723 \f
724 /* Return the breakpoint with the specified number, or NULL
725    if the number does not refer to an existing breakpoint.  */
726
727 struct breakpoint *
728 get_breakpoint (int num)
729 {
730   struct breakpoint *b;
731
732   ALL_BREAKPOINTS (b)
733     if (b->number == num)
734       return b;
735   
736   return NULL;
737 }
738
739 \f
740
741 /* Mark locations as "conditions have changed" in case the target supports
742    evaluating conditions on its side.  */
743
744 static void
745 mark_breakpoint_modified (struct breakpoint *b)
746 {
747   struct bp_location *loc;
748
749   /* This is only meaningful if the target is
750      evaluating conditions and if the user has
751      opted for condition evaluation on the target's
752      side.  */
753   if (gdb_evaluates_breakpoint_condition_p ()
754       || !target_supports_evaluation_of_breakpoint_conditions ())
755     return;
756
757   if (!is_breakpoint (b))
758     return;
759
760   for (loc = b->loc; loc; loc = loc->next)
761     loc->condition_changed = condition_modified;
762 }
763
764 /* Mark location as "conditions have changed" in case the target supports
765    evaluating conditions on its side.  */
766
767 static void
768 mark_breakpoint_location_modified (struct bp_location *loc)
769 {
770   /* This is only meaningful if the target is
771      evaluating conditions and if the user has
772      opted for condition evaluation on the target's
773      side.  */
774   if (gdb_evaluates_breakpoint_condition_p ()
775       || !target_supports_evaluation_of_breakpoint_conditions ())
776
777     return;
778
779   if (!is_breakpoint (loc->owner))
780     return;
781
782   loc->condition_changed = condition_modified;
783 }
784
785 /* Sets the condition-evaluation mode using the static global
786    condition_evaluation_mode.  */
787
788 static void
789 set_condition_evaluation_mode (char *args, int from_tty,
790                                struct cmd_list_element *c)
791 {
792   const char *old_mode, *new_mode;
793
794   if ((condition_evaluation_mode_1 == condition_evaluation_target)
795       && !target_supports_evaluation_of_breakpoint_conditions ())
796     {
797       condition_evaluation_mode_1 = condition_evaluation_mode;
798       warning (_("Target does not support breakpoint condition evaluation.\n"
799                  "Using host evaluation mode instead."));
800       return;
801     }
802
803   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
804   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
805
806   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
807      settings was "auto".  */
808   condition_evaluation_mode = condition_evaluation_mode_1;
809
810   /* Only update the mode if the user picked a different one.  */
811   if (new_mode != old_mode)
812     {
813       struct bp_location *loc, **loc_tmp;
814       /* If the user switched to a different evaluation mode, we
815          need to synch the changes with the target as follows:
816
817          "host" -> "target": Send all (valid) conditions to the target.
818          "target" -> "host": Remove all the conditions from the target.
819       */
820
821       if (new_mode == condition_evaluation_target)
822         {
823           /* Mark everything modified and synch conditions with the
824              target.  */
825           ALL_BP_LOCATIONS (loc, loc_tmp)
826             mark_breakpoint_location_modified (loc);
827         }
828       else
829         {
830           /* Manually mark non-duplicate locations to synch conditions
831              with the target.  We do this to remove all the conditions the
832              target knows about.  */
833           ALL_BP_LOCATIONS (loc, loc_tmp)
834             if (is_breakpoint (loc->owner) && loc->inserted)
835               loc->needs_update = 1;
836         }
837
838       /* Do the update.  */
839       update_global_location_list (1);
840     }
841
842   return;
843 }
844
845 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
846    what "auto" is translating to.  */
847
848 static void
849 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
850                                 struct cmd_list_element *c, const char *value)
851 {
852   if (condition_evaluation_mode == condition_evaluation_auto)
853     fprintf_filtered (file,
854                       _("Breakpoint condition evaluation "
855                         "mode is %s (currently %s).\n"),
856                       value,
857                       breakpoint_condition_evaluation_mode ());
858   else
859     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
860                       value);
861 }
862
863 /* A comparison function for bp_location AP and BP that is used by
864    bsearch.  This comparison function only cares about addresses, unlike
865    the more general bp_location_compare function.  */
866
867 static int
868 bp_location_compare_addrs (const void *ap, const void *bp)
869 {
870   struct bp_location *a = *(void **) ap;
871   struct bp_location *b = *(void **) bp;
872
873   if (a->address == b->address)
874     return 0;
875   else
876     return ((a->address > b->address) - (a->address < b->address));
877 }
878
879 /* Helper function to skip all bp_locations with addresses
880    less than ADDRESS.  It returns the first bp_location that
881    is greater than or equal to ADDRESS.  If none is found, just
882    return NULL.  */
883
884 static struct bp_location **
885 get_first_locp_gte_addr (CORE_ADDR address)
886 {
887   struct bp_location dummy_loc;
888   struct bp_location *dummy_locp = &dummy_loc;
889   struct bp_location **locp_found = NULL;
890
891   /* Initialize the dummy location's address field.  */
892   memset (&dummy_loc, 0, sizeof (struct bp_location));
893   dummy_loc.address = address;
894
895   /* Find a close match to the first location at ADDRESS.  */
896   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
897                         sizeof (struct bp_location **),
898                         bp_location_compare_addrs);
899
900   /* Nothing was found, nothing left to do.  */
901   if (locp_found == NULL)
902     return NULL;
903
904   /* We may have found a location that is at ADDRESS but is not the first in the
905      location's list.  Go backwards (if possible) and locate the first one.  */
906   while ((locp_found - 1) >= bp_location
907          && (*(locp_found - 1))->address == address)
908     locp_found--;
909
910   return locp_found;
911 }
912
913 void
914 set_breakpoint_condition (struct breakpoint *b, char *exp,
915                           int from_tty)
916 {
917   xfree (b->cond_string);
918   b->cond_string = NULL;
919
920   if (is_watchpoint (b))
921     {
922       struct watchpoint *w = (struct watchpoint *) b;
923
924       xfree (w->cond_exp);
925       w->cond_exp = NULL;
926     }
927   else
928     {
929       struct bp_location *loc;
930
931       for (loc = b->loc; loc; loc = loc->next)
932         {
933           xfree (loc->cond);
934           loc->cond = NULL;
935
936           /* No need to free the condition agent expression
937              bytecode (if we have one).  We will handle this
938              when we go through update_global_location_list.  */
939         }
940     }
941
942   if (*exp == 0)
943     {
944       if (from_tty)
945         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
946     }
947   else
948     {
949       const char *arg = exp;
950
951       /* I don't know if it matters whether this is the string the user
952          typed in or the decompiled expression.  */
953       b->cond_string = xstrdup (arg);
954       b->condition_not_parsed = 0;
955
956       if (is_watchpoint (b))
957         {
958           struct watchpoint *w = (struct watchpoint *) b;
959
960           innermost_block = NULL;
961           arg = exp;
962           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
963           if (*arg)
964             error (_("Junk at end of expression"));
965           w->cond_exp_valid_block = innermost_block;
966         }
967       else
968         {
969           struct bp_location *loc;
970
971           for (loc = b->loc; loc; loc = loc->next)
972             {
973               arg = exp;
974               loc->cond =
975                 parse_exp_1 (&arg, loc->address,
976                              block_for_pc (loc->address), 0);
977               if (*arg)
978                 error (_("Junk at end of expression"));
979             }
980         }
981     }
982   mark_breakpoint_modified (b);
983
984   observer_notify_breakpoint_modified (b);
985 }
986
987 /* Completion for the "condition" command.  */
988
989 static VEC (char_ptr) *
990 condition_completer (struct cmd_list_element *cmd,
991                      const char *text, const char *word)
992 {
993   const char *space;
994
995   text = skip_spaces_const (text);
996   space = skip_to_space_const (text);
997   if (*space == '\0')
998     {
999       int len;
1000       struct breakpoint *b;
1001       VEC (char_ptr) *result = NULL;
1002
1003       if (text[0] == '$')
1004         {
1005           /* We don't support completion of history indices.  */
1006           if (isdigit (text[1]))
1007             return NULL;
1008           return complete_internalvar (&text[1]);
1009         }
1010
1011       /* We're completing the breakpoint number.  */
1012       len = strlen (text);
1013
1014       ALL_BREAKPOINTS (b)
1015         {
1016           char number[50];
1017
1018           xsnprintf (number, sizeof (number), "%d", b->number);
1019
1020           if (strncmp (number, text, len) == 0)
1021             VEC_safe_push (char_ptr, result, xstrdup (number));
1022         }
1023
1024       return result;
1025     }
1026
1027   /* We're completing the expression part.  */
1028   text = skip_spaces_const (space);
1029   return expression_completer (cmd, text, word);
1030 }
1031
1032 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1033
1034 static void
1035 condition_command (char *arg, int from_tty)
1036 {
1037   struct breakpoint *b;
1038   char *p;
1039   int bnum;
1040
1041   if (arg == 0)
1042     error_no_arg (_("breakpoint number"));
1043
1044   p = arg;
1045   bnum = get_number (&p);
1046   if (bnum == 0)
1047     error (_("Bad breakpoint argument: '%s'"), arg);
1048
1049   ALL_BREAKPOINTS (b)
1050     if (b->number == bnum)
1051       {
1052         /* Check if this breakpoint has a Python object assigned to
1053            it, and if it has a definition of the "stop"
1054            method.  This method and conditions entered into GDB from
1055            the CLI are mutually exclusive.  */
1056         if (b->py_bp_object
1057             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1058           error (_("Cannot set a condition where a Python 'stop' "
1059                    "method has been defined in the breakpoint."));
1060         set_breakpoint_condition (b, p, from_tty);
1061
1062         if (is_breakpoint (b))
1063           update_global_location_list (1);
1064
1065         return;
1066       }
1067
1068   error (_("No breakpoint number %d."), bnum);
1069 }
1070
1071 /* Check that COMMAND do not contain commands that are suitable
1072    only for tracepoints and not suitable for ordinary breakpoints.
1073    Throw if any such commands is found.  */
1074
1075 static void
1076 check_no_tracepoint_commands (struct command_line *commands)
1077 {
1078   struct command_line *c;
1079
1080   for (c = commands; c; c = c->next)
1081     {
1082       int i;
1083
1084       if (c->control_type == while_stepping_control)
1085         error (_("The 'while-stepping' command can "
1086                  "only be used for tracepoints"));
1087
1088       for (i = 0; i < c->body_count; ++i)
1089         check_no_tracepoint_commands ((c->body_list)[i]);
1090
1091       /* Not that command parsing removes leading whitespace and comment
1092          lines and also empty lines.  So, we only need to check for
1093          command directly.  */
1094       if (strstr (c->line, "collect ") == c->line)
1095         error (_("The 'collect' command can only be used for tracepoints"));
1096
1097       if (strstr (c->line, "teval ") == c->line)
1098         error (_("The 'teval' command can only be used for tracepoints"));
1099     }
1100 }
1101
1102 /* Encapsulate tests for different types of tracepoints.  */
1103
1104 static int
1105 is_tracepoint_type (enum bptype type)
1106 {
1107   return (type == bp_tracepoint
1108           || type == bp_fast_tracepoint
1109           || type == bp_static_tracepoint);
1110 }
1111
1112 int
1113 is_tracepoint (const struct breakpoint *b)
1114 {
1115   return is_tracepoint_type (b->type);
1116 }
1117
1118 /* A helper function that validates that COMMANDS are valid for a
1119    breakpoint.  This function will throw an exception if a problem is
1120    found.  */
1121
1122 static void
1123 validate_commands_for_breakpoint (struct breakpoint *b,
1124                                   struct command_line *commands)
1125 {
1126   if (is_tracepoint (b))
1127     {
1128       struct tracepoint *t = (struct tracepoint *) b;
1129       struct command_line *c;
1130       struct command_line *while_stepping = 0;
1131
1132       /* Reset the while-stepping step count.  The previous commands
1133          might have included a while-stepping action, while the new
1134          ones might not.  */
1135       t->step_count = 0;
1136
1137       /* We need to verify that each top-level element of commands is
1138          valid for tracepoints, that there's at most one
1139          while-stepping element, and that the while-stepping's body
1140          has valid tracing commands excluding nested while-stepping.
1141          We also need to validate the tracepoint action line in the
1142          context of the tracepoint --- validate_actionline actually
1143          has side effects, like setting the tracepoint's
1144          while-stepping STEP_COUNT, in addition to checking if the
1145          collect/teval actions parse and make sense in the
1146          tracepoint's context.  */
1147       for (c = commands; c; c = c->next)
1148         {
1149           if (c->control_type == while_stepping_control)
1150             {
1151               if (b->type == bp_fast_tracepoint)
1152                 error (_("The 'while-stepping' command "
1153                          "cannot be used for fast tracepoint"));
1154               else if (b->type == bp_static_tracepoint)
1155                 error (_("The 'while-stepping' command "
1156                          "cannot be used for static tracepoint"));
1157
1158               if (while_stepping)
1159                 error (_("The 'while-stepping' command "
1160                          "can be used only once"));
1161               else
1162                 while_stepping = c;
1163             }
1164
1165           validate_actionline (c->line, b);
1166         }
1167       if (while_stepping)
1168         {
1169           struct command_line *c2;
1170
1171           gdb_assert (while_stepping->body_count == 1);
1172           c2 = while_stepping->body_list[0];
1173           for (; c2; c2 = c2->next)
1174             {
1175               if (c2->control_type == while_stepping_control)
1176                 error (_("The 'while-stepping' command cannot be nested"));
1177             }
1178         }
1179     }
1180   else
1181     {
1182       check_no_tracepoint_commands (commands);
1183     }
1184 }
1185
1186 /* Return a vector of all the static tracepoints set at ADDR.  The
1187    caller is responsible for releasing the vector.  */
1188
1189 VEC(breakpoint_p) *
1190 static_tracepoints_here (CORE_ADDR addr)
1191 {
1192   struct breakpoint *b;
1193   VEC(breakpoint_p) *found = 0;
1194   struct bp_location *loc;
1195
1196   ALL_BREAKPOINTS (b)
1197     if (b->type == bp_static_tracepoint)
1198       {
1199         for (loc = b->loc; loc; loc = loc->next)
1200           if (loc->address == addr)
1201             VEC_safe_push(breakpoint_p, found, b);
1202       }
1203
1204   return found;
1205 }
1206
1207 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1208    validate that only allowed commands are included.  */
1209
1210 void
1211 breakpoint_set_commands (struct breakpoint *b, 
1212                          struct command_line *commands)
1213 {
1214   validate_commands_for_breakpoint (b, commands);
1215
1216   decref_counted_command_line (&b->commands);
1217   b->commands = alloc_counted_command_line (commands);
1218   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       observer_notify_breakpoint_modified (b);
1335     }
1336 }
1337
1338 static void
1339 commands_command_1 (char *arg, int from_tty, 
1340                     struct command_line *control)
1341 {
1342   struct cleanup *cleanups;
1343   struct commands_info info;
1344
1345   info.from_tty = from_tty;
1346   info.control = control;
1347   info.cmd = NULL;
1348   /* If we read command lines from the user, then `info' will hold an
1349      extra reference to the commands that we must clean up.  */
1350   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1351
1352   if (arg == NULL || !*arg)
1353     {
1354       if (breakpoint_count - prev_breakpoint_count > 1)
1355         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1356                           breakpoint_count);
1357       else if (breakpoint_count > 0)
1358         arg = xstrprintf ("%d", breakpoint_count);
1359       else
1360         {
1361           /* So that we don't try to free the incoming non-NULL
1362              argument in the cleanup below.  Mapping breakpoint
1363              numbers will fail in this case.  */
1364           arg = NULL;
1365         }
1366     }
1367   else
1368     /* The command loop has some static state, so we need to preserve
1369        our argument.  */
1370     arg = xstrdup (arg);
1371
1372   if (arg != NULL)
1373     make_cleanup (xfree, arg);
1374
1375   info.arg = arg;
1376
1377   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1378
1379   if (info.cmd == NULL)
1380     error (_("No breakpoints specified."));
1381
1382   do_cleanups (cleanups);
1383 }
1384
1385 static void
1386 commands_command (char *arg, int from_tty)
1387 {
1388   commands_command_1 (arg, from_tty, NULL);
1389 }
1390
1391 /* Like commands_command, but instead of reading the commands from
1392    input stream, takes them from an already parsed command structure.
1393
1394    This is used by cli-script.c to DTRT with breakpoint commands
1395    that are part of if and while bodies.  */
1396 enum command_control_type
1397 commands_from_control_command (char *arg, struct command_line *cmd)
1398 {
1399   commands_command_1 (arg, 0, cmd);
1400   return simple_control;
1401 }
1402
1403 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1404
1405 static int
1406 bp_location_has_shadow (struct bp_location *bl)
1407 {
1408   if (bl->loc_type != bp_loc_software_breakpoint)
1409     return 0;
1410   if (!bl->inserted)
1411     return 0;
1412   if (bl->target_info.shadow_len == 0)
1413     /* BL isn't valid, or doesn't shadow memory.  */
1414     return 0;
1415   return 1;
1416 }
1417
1418 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1419    by replacing any memory breakpoints with their shadowed contents.
1420
1421    If READBUF is not NULL, this buffer must not overlap with any of
1422    the breakpoint location's shadow_contents buffers.  Otherwise,
1423    a failed assertion internal error will be raised.
1424
1425    The range of shadowed area by each bp_location is:
1426      bl->address - bp_location_placed_address_before_address_max
1427      up to bl->address + bp_location_shadow_len_after_address_max
1428    The range we were requested to resolve shadows for is:
1429      memaddr ... memaddr + len
1430    Thus the safe cutoff boundaries for performance optimization are
1431      memaddr + len <= (bl->address
1432                        - bp_location_placed_address_before_address_max)
1433    and:
1434      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1435
1436 void
1437 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1438                         const gdb_byte *writebuf_org,
1439                         ULONGEST memaddr, LONGEST len)
1440 {
1441   /* Left boundary, right boundary and median element of our binary
1442      search.  */
1443   unsigned bc_l, bc_r, bc;
1444
1445   /* Find BC_L which is a leftmost element which may affect BUF
1446      content.  It is safe to report lower value but a failure to
1447      report higher one.  */
1448
1449   bc_l = 0;
1450   bc_r = bp_location_count;
1451   while (bc_l + 1 < bc_r)
1452     {
1453       struct bp_location *bl;
1454
1455       bc = (bc_l + bc_r) / 2;
1456       bl = bp_location[bc];
1457
1458       /* Check first BL->ADDRESS will not overflow due to the added
1459          constant.  Then advance the left boundary only if we are sure
1460          the BC element can in no way affect the BUF content (MEMADDR
1461          to MEMADDR + LEN range).
1462
1463          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1464          offset so that we cannot miss a breakpoint with its shadow
1465          range tail still reaching MEMADDR.  */
1466
1467       if ((bl->address + bp_location_shadow_len_after_address_max
1468            >= bl->address)
1469           && (bl->address + bp_location_shadow_len_after_address_max
1470               <= memaddr))
1471         bc_l = bc;
1472       else
1473         bc_r = bc;
1474     }
1475
1476   /* Due to the binary search above, we need to make sure we pick the
1477      first location that's at BC_L's address.  E.g., if there are
1478      multiple locations at the same address, BC_L may end up pointing
1479      at a duplicate location, and miss the "master"/"inserted"
1480      location.  Say, given locations L1, L2 and L3 at addresses A and
1481      B:
1482
1483       L1@A, L2@A, L3@B, ...
1484
1485      BC_L could end up pointing at location L2, while the "master"
1486      location could be L1.  Since the `loc->inserted' flag is only set
1487      on "master" locations, we'd forget to restore the shadow of L1
1488      and L2.  */
1489   while (bc_l > 0
1490          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1491     bc_l--;
1492
1493   /* Now do full processing of the found relevant range of elements.  */
1494
1495   for (bc = bc_l; bc < bp_location_count; bc++)
1496   {
1497     struct bp_location *bl = bp_location[bc];
1498     CORE_ADDR bp_addr = 0;
1499     int bp_size = 0;
1500     int bptoffset = 0;
1501
1502     /* bp_location array has BL->OWNER always non-NULL.  */
1503     if (bl->owner->type == bp_none)
1504       warning (_("reading through apparently deleted breakpoint #%d?"),
1505                bl->owner->number);
1506
1507     /* Performance optimization: any further element can no longer affect BUF
1508        content.  */
1509
1510     if (bl->address >= bp_location_placed_address_before_address_max
1511         && memaddr + len <= (bl->address
1512                              - bp_location_placed_address_before_address_max))
1513       break;
1514
1515     if (!bp_location_has_shadow (bl))
1516       continue;
1517     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1518                                    current_program_space->aspace, 0))
1519       continue;
1520
1521     /* Addresses and length of the part of the breakpoint that
1522        we need to copy.  */
1523     bp_addr = bl->target_info.placed_address;
1524     bp_size = bl->target_info.shadow_len;
1525
1526     if (bp_addr + bp_size <= memaddr)
1527       /* The breakpoint is entirely before the chunk of memory we
1528          are reading.  */
1529       continue;
1530
1531     if (bp_addr >= memaddr + len)
1532       /* The breakpoint is entirely after the chunk of memory we are
1533          reading.  */
1534       continue;
1535
1536     /* Offset within shadow_contents.  */
1537     if (bp_addr < memaddr)
1538       {
1539         /* Only copy the second part of the breakpoint.  */
1540         bp_size -= memaddr - bp_addr;
1541         bptoffset = memaddr - bp_addr;
1542         bp_addr = memaddr;
1543       }
1544
1545     if (bp_addr + bp_size > memaddr + len)
1546       {
1547         /* Only copy the first part of the breakpoint.  */
1548         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1549       }
1550
1551     if (readbuf != NULL)
1552       {
1553         /* Verify that the readbuf buffer does not overlap with
1554            the shadow_contents buffer.  */
1555         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1556                     || readbuf >= (bl->target_info.shadow_contents
1557                                    + bl->target_info.shadow_len));
1558
1559         /* Update the read buffer with this inserted breakpoint's
1560            shadow.  */
1561         memcpy (readbuf + bp_addr - memaddr,
1562                 bl->target_info.shadow_contents + bptoffset, bp_size);
1563       }
1564     else
1565       {
1566         struct gdbarch *gdbarch = bl->gdbarch;
1567         const unsigned char *bp;
1568         CORE_ADDR placed_address = bl->target_info.placed_address;
1569         int placed_size = bl->target_info.placed_size;
1570
1571         /* Update the shadow with what we want to write to memory.  */
1572         memcpy (bl->target_info.shadow_contents + bptoffset,
1573                 writebuf_org + bp_addr - memaddr, bp_size);
1574
1575         /* Determine appropriate breakpoint contents and size for this
1576            address.  */
1577         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1578
1579         /* Update the final write buffer with this inserted
1580            breakpoint's INSN.  */
1581         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1582       }
1583   }
1584 }
1585 \f
1586
1587 /* Return true if BPT is either a software breakpoint or a hardware
1588    breakpoint.  */
1589
1590 int
1591 is_breakpoint (const struct breakpoint *bpt)
1592 {
1593   return (bpt->type == bp_breakpoint
1594           || bpt->type == bp_hardware_breakpoint
1595           || bpt->type == bp_dprintf);
1596 }
1597
1598 /* Return true if BPT is of any hardware watchpoint kind.  */
1599
1600 static int
1601 is_hardware_watchpoint (const struct breakpoint *bpt)
1602 {
1603   return (bpt->type == bp_hardware_watchpoint
1604           || bpt->type == bp_read_watchpoint
1605           || bpt->type == bp_access_watchpoint);
1606 }
1607
1608 /* Return true if BPT is of any watchpoint kind, hardware or
1609    software.  */
1610
1611 int
1612 is_watchpoint (const struct breakpoint *bpt)
1613 {
1614   return (is_hardware_watchpoint (bpt)
1615           || bpt->type == bp_watchpoint);
1616 }
1617
1618 /* Returns true if the current thread and its running state are safe
1619    to evaluate or update watchpoint B.  Watchpoints on local
1620    expressions need to be evaluated in the context of the thread that
1621    was current when the watchpoint was created, and, that thread needs
1622    to be stopped to be able to select the correct frame context.
1623    Watchpoints on global expressions can be evaluated on any thread,
1624    and in any state.  It is presently left to the target allowing
1625    memory accesses when threads are running.  */
1626
1627 static int
1628 watchpoint_in_thread_scope (struct watchpoint *b)
1629 {
1630   return (b->base.pspace == current_program_space
1631           && (ptid_equal (b->watchpoint_thread, null_ptid)
1632               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1633                   && !is_executing (inferior_ptid))));
1634 }
1635
1636 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1637    associated bp_watchpoint_scope breakpoint.  */
1638
1639 static void
1640 watchpoint_del_at_next_stop (struct watchpoint *w)
1641 {
1642   struct breakpoint *b = &w->base;
1643
1644   if (b->related_breakpoint != b)
1645     {
1646       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1647       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1648       b->related_breakpoint->disposition = disp_del_at_next_stop;
1649       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1650       b->related_breakpoint = b;
1651     }
1652   b->disposition = disp_del_at_next_stop;
1653 }
1654
1655 /* Assuming that B is a watchpoint:
1656    - Reparse watchpoint expression, if REPARSE is non-zero
1657    - Evaluate expression and store the result in B->val
1658    - Evaluate the condition if there is one, and store the result
1659      in b->loc->cond.
1660    - Update the list of values that must be watched in B->loc.
1661
1662    If the watchpoint disposition is disp_del_at_next_stop, then do
1663    nothing.  If this is local watchpoint that is out of scope, delete
1664    it.
1665
1666    Even with `set breakpoint always-inserted on' the watchpoints are
1667    removed + inserted on each stop here.  Normal breakpoints must
1668    never be removed because they might be missed by a running thread
1669    when debugging in non-stop mode.  On the other hand, hardware
1670    watchpoints (is_hardware_watchpoint; processed here) are specific
1671    to each LWP since they are stored in each LWP's hardware debug
1672    registers.  Therefore, such LWP must be stopped first in order to
1673    be able to modify its hardware watchpoints.
1674
1675    Hardware watchpoints must be reset exactly once after being
1676    presented to the user.  It cannot be done sooner, because it would
1677    reset the data used to present the watchpoint hit to the user.  And
1678    it must not be done later because it could display the same single
1679    watchpoint hit during multiple GDB stops.  Note that the latter is
1680    relevant only to the hardware watchpoint types bp_read_watchpoint
1681    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1682    not user-visible - its hit is suppressed if the memory content has
1683    not changed.
1684
1685    The following constraints influence the location where we can reset
1686    hardware watchpoints:
1687
1688    * target_stopped_by_watchpoint and target_stopped_data_address are
1689      called several times when GDB stops.
1690
1691    [linux] 
1692    * Multiple hardware watchpoints can be hit at the same time,
1693      causing GDB to stop.  GDB only presents one hardware watchpoint
1694      hit at a time as the reason for stopping, and all the other hits
1695      are presented later, one after the other, each time the user
1696      requests the execution to be resumed.  Execution is not resumed
1697      for the threads still having pending hit event stored in
1698      LWP_INFO->STATUS.  While the watchpoint is already removed from
1699      the inferior on the first stop the thread hit event is kept being
1700      reported from its cached value by linux_nat_stopped_data_address
1701      until the real thread resume happens after the watchpoint gets
1702      presented and thus its LWP_INFO->STATUS gets reset.
1703
1704    Therefore the hardware watchpoint hit can get safely reset on the
1705    watchpoint removal from inferior.  */
1706
1707 static void
1708 update_watchpoint (struct watchpoint *b, int reparse)
1709 {
1710   int within_current_scope;
1711   struct frame_id saved_frame_id;
1712   int frame_saved;
1713
1714   /* If this is a local watchpoint, we only want to check if the
1715      watchpoint frame is in scope if the current thread is the thread
1716      that was used to create the watchpoint.  */
1717   if (!watchpoint_in_thread_scope (b))
1718     return;
1719
1720   if (b->base.disposition == disp_del_at_next_stop)
1721     return;
1722  
1723   frame_saved = 0;
1724
1725   /* Determine if the watchpoint is within scope.  */
1726   if (b->exp_valid_block == NULL)
1727     within_current_scope = 1;
1728   else
1729     {
1730       struct frame_info *fi = get_current_frame ();
1731       struct gdbarch *frame_arch = get_frame_arch (fi);
1732       CORE_ADDR frame_pc = get_frame_pc (fi);
1733
1734       /* If we're in a function epilogue, unwinding may not work
1735          properly, so do not attempt to recreate locations at this
1736          point.  See similar comments in watchpoint_check.  */
1737       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1738         return;
1739
1740       /* Save the current frame's ID so we can restore it after
1741          evaluating the watchpoint expression on its own frame.  */
1742       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1743          took a frame parameter, so that we didn't have to change the
1744          selected frame.  */
1745       frame_saved = 1;
1746       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1747
1748       fi = frame_find_by_id (b->watchpoint_frame);
1749       within_current_scope = (fi != NULL);
1750       if (within_current_scope)
1751         select_frame (fi);
1752     }
1753
1754   /* We don't free locations.  They are stored in the bp_location array
1755      and update_global_location_list will eventually delete them and
1756      remove breakpoints if needed.  */
1757   b->base.loc = NULL;
1758
1759   if (within_current_scope && reparse)
1760     {
1761       const char *s;
1762
1763       if (b->exp)
1764         {
1765           xfree (b->exp);
1766           b->exp = NULL;
1767         }
1768       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1769       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1770       /* If the meaning of expression itself changed, the old value is
1771          no longer relevant.  We don't want to report a watchpoint hit
1772          to the user when the old value and the new value may actually
1773          be completely different objects.  */
1774       value_free (b->val);
1775       b->val = NULL;
1776       b->val_valid = 0;
1777
1778       /* Note that unlike with breakpoints, the watchpoint's condition
1779          expression is stored in the breakpoint object, not in the
1780          locations (re)created below.  */
1781       if (b->base.cond_string != NULL)
1782         {
1783           if (b->cond_exp != NULL)
1784             {
1785               xfree (b->cond_exp);
1786               b->cond_exp = NULL;
1787             }
1788
1789           s = b->base.cond_string;
1790           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1791         }
1792     }
1793
1794   /* If we failed to parse the expression, for example because
1795      it refers to a global variable in a not-yet-loaded shared library,
1796      don't try to insert watchpoint.  We don't automatically delete
1797      such watchpoint, though, since failure to parse expression
1798      is different from out-of-scope watchpoint.  */
1799   if ( !target_has_execution)
1800     {
1801       /* Without execution, memory can't change.  No use to try and
1802          set watchpoint locations.  The watchpoint will be reset when
1803          the target gains execution, through breakpoint_re_set.  */
1804     }
1805   else if (within_current_scope && b->exp)
1806     {
1807       int pc = 0;
1808       struct value *val_chain, *v, *result, *next;
1809       struct program_space *frame_pspace;
1810
1811       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1812
1813       /* Avoid setting b->val if it's already set.  The meaning of
1814          b->val is 'the last value' user saw, and we should update
1815          it only if we reported that last value to user.  As it
1816          happens, the code that reports it updates b->val directly.
1817          We don't keep track of the memory value for masked
1818          watchpoints.  */
1819       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1820         {
1821           b->val = v;
1822           b->val_valid = 1;
1823         }
1824
1825       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1826
1827       /* Look at each value on the value chain.  */
1828       for (v = val_chain; v; v = value_next (v))
1829         {
1830           /* If it's a memory location, and GDB actually needed
1831              its contents to evaluate the expression, then we
1832              must watch it.  If the first value returned is
1833              still lazy, that means an error occurred reading it;
1834              watch it anyway in case it becomes readable.  */
1835           if (VALUE_LVAL (v) == lval_memory
1836               && (v == val_chain || ! value_lazy (v)))
1837             {
1838               struct type *vtype = check_typedef (value_type (v));
1839
1840               /* We only watch structs and arrays if user asked
1841                  for it explicitly, never if they just happen to
1842                  appear in the middle of some value chain.  */
1843               if (v == result
1844                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1845                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1846                 {
1847                   CORE_ADDR addr;
1848                   int type;
1849                   struct bp_location *loc, **tmp;
1850
1851                   addr = value_address (v);
1852                   type = hw_write;
1853                   if (b->base.type == bp_read_watchpoint)
1854                     type = hw_read;
1855                   else if (b->base.type == bp_access_watchpoint)
1856                     type = hw_access;
1857
1858                   loc = allocate_bp_location (&b->base);
1859                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1860                     ;
1861                   *tmp = loc;
1862                   loc->gdbarch = get_type_arch (value_type (v));
1863
1864                   loc->pspace = frame_pspace;
1865                   loc->address = addr;
1866                   loc->length = TYPE_LENGTH (value_type (v));
1867                   loc->watchpoint_type = type;
1868                 }
1869             }
1870         }
1871
1872       /* Change the type of breakpoint between hardware assisted or
1873          an ordinary watchpoint depending on the hardware support
1874          and free hardware slots.  REPARSE is set when the inferior
1875          is started.  */
1876       if (reparse)
1877         {
1878           int reg_cnt;
1879           enum bp_loc_type loc_type;
1880           struct bp_location *bl;
1881
1882           reg_cnt = can_use_hardware_watchpoint (val_chain);
1883
1884           if (reg_cnt)
1885             {
1886               int i, target_resources_ok, other_type_used;
1887               enum bptype type;
1888
1889               /* Use an exact watchpoint when there's only one memory region to be
1890                  watched, and only one debug register is needed to watch it.  */
1891               b->exact = target_exact_watchpoints && reg_cnt == 1;
1892
1893               /* We need to determine how many resources are already
1894                  used for all other hardware watchpoints plus this one
1895                  to see if we still have enough resources to also fit
1896                  this watchpoint in as well.  */
1897
1898               /* If this is a software watchpoint, we try to turn it
1899                  to a hardware one -- count resources as if B was of
1900                  hardware watchpoint type.  */
1901               type = b->base.type;
1902               if (type == bp_watchpoint)
1903                 type = bp_hardware_watchpoint;
1904
1905               /* This watchpoint may or may not have been placed on
1906                  the list yet at this point (it won't be in the list
1907                  if we're trying to create it for the first time,
1908                  through watch_command), so always account for it
1909                  manually.  */
1910
1911               /* Count resources used by all watchpoints except B.  */
1912               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1913
1914               /* Add in the resources needed for B.  */
1915               i += hw_watchpoint_use_count (&b->base);
1916
1917               target_resources_ok
1918                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1919               if (target_resources_ok <= 0)
1920                 {
1921                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1922
1923                   if (target_resources_ok == 0 && !sw_mode)
1924                     error (_("Target does not support this type of "
1925                              "hardware watchpoint."));
1926                   else if (target_resources_ok < 0 && !sw_mode)
1927                     error (_("There are not enough available hardware "
1928                              "resources for this watchpoint."));
1929
1930                   /* Downgrade to software watchpoint.  */
1931                   b->base.type = bp_watchpoint;
1932                 }
1933               else
1934                 {
1935                   /* If this was a software watchpoint, we've just
1936                      found we have enough resources to turn it to a
1937                      hardware watchpoint.  Otherwise, this is a
1938                      nop.  */
1939                   b->base.type = type;
1940                 }
1941             }
1942           else if (!b->base.ops->works_in_software_mode (&b->base))
1943             error (_("Expression cannot be implemented with "
1944                      "read/access watchpoint."));
1945           else
1946             b->base.type = bp_watchpoint;
1947
1948           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1949                       : bp_loc_hardware_watchpoint);
1950           for (bl = b->base.loc; bl; bl = bl->next)
1951             bl->loc_type = loc_type;
1952         }
1953
1954       for (v = val_chain; v; v = next)
1955         {
1956           next = value_next (v);
1957           if (v != b->val)
1958             value_free (v);
1959         }
1960
1961       /* If a software watchpoint is not watching any memory, then the
1962          above left it without any location set up.  But,
1963          bpstat_stop_status requires a location to be able to report
1964          stops, so make sure there's at least a dummy one.  */
1965       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1966         {
1967           struct breakpoint *base = &b->base;
1968           base->loc = allocate_bp_location (base);
1969           base->loc->pspace = frame_pspace;
1970           base->loc->address = -1;
1971           base->loc->length = -1;
1972           base->loc->watchpoint_type = -1;
1973         }
1974     }
1975   else if (!within_current_scope)
1976     {
1977       printf_filtered (_("\
1978 Watchpoint %d deleted because the program has left the block\n\
1979 in which its expression is valid.\n"),
1980                        b->base.number);
1981       watchpoint_del_at_next_stop (b);
1982     }
1983
1984   /* Restore the selected frame.  */
1985   if (frame_saved)
1986     select_frame (frame_find_by_id (saved_frame_id));
1987 }
1988
1989
1990 /* Returns 1 iff breakpoint location should be
1991    inserted in the inferior.  We don't differentiate the type of BL's owner
1992    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1993    breakpoint_ops is not defined, because in insert_bp_location,
1994    tracepoint's insert_location will not be called.  */
1995 static int
1996 should_be_inserted (struct bp_location *bl)
1997 {
1998   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1999     return 0;
2000
2001   if (bl->owner->disposition == disp_del_at_next_stop)
2002     return 0;
2003
2004   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2005     return 0;
2006
2007   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2008     return 0;
2009
2010   /* This is set for example, when we're attached to the parent of a
2011      vfork, and have detached from the child.  The child is running
2012      free, and we expect it to do an exec or exit, at which point the
2013      OS makes the parent schedulable again (and the target reports
2014      that the vfork is done).  Until the child is done with the shared
2015      memory region, do not insert breakpoints in the parent, otherwise
2016      the child could still trip on the parent's breakpoints.  Since
2017      the parent is blocked anyway, it won't miss any breakpoint.  */
2018   if (bl->pspace->breakpoints_not_allowed)
2019     return 0;
2020
2021   return 1;
2022 }
2023
2024 /* Same as should_be_inserted but does the check assuming
2025    that the location is not duplicated.  */
2026
2027 static int
2028 unduplicated_should_be_inserted (struct bp_location *bl)
2029 {
2030   int result;
2031   const int save_duplicate = bl->duplicate;
2032
2033   bl->duplicate = 0;
2034   result = should_be_inserted (bl);
2035   bl->duplicate = save_duplicate;
2036   return result;
2037 }
2038
2039 /* Parses a conditional described by an expression COND into an
2040    agent expression bytecode suitable for evaluation
2041    by the bytecode interpreter.  Return NULL if there was
2042    any error during parsing.  */
2043
2044 static struct agent_expr *
2045 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2046 {
2047   struct agent_expr *aexpr = NULL;
2048   volatile struct gdb_exception ex;
2049
2050   if (!cond)
2051     return NULL;
2052
2053   /* We don't want to stop processing, so catch any errors
2054      that may show up.  */
2055   TRY_CATCH (ex, RETURN_MASK_ERROR)
2056     {
2057       aexpr = gen_eval_for_expr (scope, cond);
2058     }
2059
2060   if (ex.reason < 0)
2061     {
2062       /* If we got here, it means the condition could not be parsed to a valid
2063          bytecode expression and thus can't be evaluated on the target's side.
2064          It's no use iterating through the conditions.  */
2065       return NULL;
2066     }
2067
2068   /* We have a valid agent expression.  */
2069   return aexpr;
2070 }
2071
2072 /* Based on location BL, create a list of breakpoint conditions to be
2073    passed on to the target.  If we have duplicated locations with different
2074    conditions, we will add such conditions to the list.  The idea is that the
2075    target will evaluate the list of conditions and will only notify GDB when
2076    one of them is true.  */
2077
2078 static void
2079 build_target_condition_list (struct bp_location *bl)
2080 {
2081   struct bp_location **locp = NULL, **loc2p;
2082   int null_condition_or_parse_error = 0;
2083   int modified = bl->needs_update;
2084   struct bp_location *loc;
2085
2086   /* This is only meaningful if the target is
2087      evaluating conditions and if the user has
2088      opted for condition evaluation on the target's
2089      side.  */
2090   if (gdb_evaluates_breakpoint_condition_p ()
2091       || !target_supports_evaluation_of_breakpoint_conditions ())
2092     return;
2093
2094   /* Do a first pass to check for locations with no assigned
2095      conditions or conditions that fail to parse to a valid agent expression
2096      bytecode.  If any of these happen, then it's no use to send conditions
2097      to the target since this location will always trigger and generate a
2098      response back to GDB.  */
2099   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2100     {
2101       loc = (*loc2p);
2102       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2103         {
2104           if (modified)
2105             {
2106               struct agent_expr *aexpr;
2107
2108               /* Re-parse the conditions since something changed.  In that
2109                  case we already freed the condition bytecodes (see
2110                  force_breakpoint_reinsertion).  We just
2111                  need to parse the condition to bytecodes again.  */
2112               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2113               loc->cond_bytecode = aexpr;
2114
2115               /* Check if we managed to parse the conditional expression
2116                  correctly.  If not, we will not send this condition
2117                  to the target.  */
2118               if (aexpr)
2119                 continue;
2120             }
2121
2122           /* If we have a NULL bytecode expression, it means something
2123              went wrong or we have a null condition expression.  */
2124           if (!loc->cond_bytecode)
2125             {
2126               null_condition_or_parse_error = 1;
2127               break;
2128             }
2129         }
2130     }
2131
2132   /* If any of these happened, it means we will have to evaluate the conditions
2133      for the location's address on gdb's side.  It is no use keeping bytecodes
2134      for all the other duplicate locations, thus we free all of them here.
2135
2136      This is so we have a finer control over which locations' conditions are
2137      being evaluated by GDB or the remote stub.  */
2138   if (null_condition_or_parse_error)
2139     {
2140       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2141         {
2142           loc = (*loc2p);
2143           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2144             {
2145               /* Only go as far as the first NULL bytecode is
2146                  located.  */
2147               if (!loc->cond_bytecode)
2148                 return;
2149
2150               free_agent_expr (loc->cond_bytecode);
2151               loc->cond_bytecode = NULL;
2152             }
2153         }
2154     }
2155
2156   /* No NULL conditions or failed bytecode generation.  Build a condition list
2157      for this location's address.  */
2158   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2159     {
2160       loc = (*loc2p);
2161       if (loc->cond
2162           && is_breakpoint (loc->owner)
2163           && loc->pspace->num == bl->pspace->num
2164           && loc->owner->enable_state == bp_enabled
2165           && loc->enabled)
2166         /* Add the condition to the vector.  This will be used later to send the
2167            conditions to the target.  */
2168         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2169                        loc->cond_bytecode);
2170     }
2171
2172   return;
2173 }
2174
2175 /* Parses a command described by string CMD into an agent expression
2176    bytecode suitable for evaluation by the bytecode interpreter.
2177    Return NULL if there was any error during parsing.  */
2178
2179 static struct agent_expr *
2180 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2181 {
2182   struct cleanup *old_cleanups = 0;
2183   struct expression *expr, **argvec;
2184   struct agent_expr *aexpr = NULL;
2185   volatile struct gdb_exception ex;
2186   const char *cmdrest;
2187   const char *format_start, *format_end;
2188   struct format_piece *fpieces;
2189   int nargs;
2190   struct gdbarch *gdbarch = get_current_arch ();
2191
2192   if (!cmd)
2193     return NULL;
2194
2195   cmdrest = cmd;
2196
2197   if (*cmdrest == ',')
2198     ++cmdrest;
2199   cmdrest = skip_spaces_const (cmdrest);
2200
2201   if (*cmdrest++ != '"')
2202     error (_("No format string following the location"));
2203
2204   format_start = cmdrest;
2205
2206   fpieces = parse_format_string (&cmdrest);
2207
2208   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2209
2210   format_end = cmdrest;
2211
2212   if (*cmdrest++ != '"')
2213     error (_("Bad format string, non-terminated '\"'."));
2214   
2215   cmdrest = skip_spaces_const (cmdrest);
2216
2217   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2218     error (_("Invalid argument syntax"));
2219
2220   if (*cmdrest == ',')
2221     cmdrest++;
2222   cmdrest = skip_spaces_const (cmdrest);
2223
2224   /* For each argument, make an expression.  */
2225
2226   argvec = (struct expression **) alloca (strlen (cmd)
2227                                          * sizeof (struct expression *));
2228
2229   nargs = 0;
2230   while (*cmdrest != '\0')
2231     {
2232       const char *cmd1;
2233
2234       cmd1 = cmdrest;
2235       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2236       argvec[nargs++] = expr;
2237       cmdrest = cmd1;
2238       if (*cmdrest == ',')
2239         ++cmdrest;
2240     }
2241
2242   /* We don't want to stop processing, so catch any errors
2243      that may show up.  */
2244   TRY_CATCH (ex, RETURN_MASK_ERROR)
2245     {
2246       aexpr = gen_printf (scope, gdbarch, 0, 0,
2247                           format_start, format_end - format_start,
2248                           fpieces, nargs, argvec);
2249     }
2250
2251   if (ex.reason < 0)
2252     {
2253       /* If we got here, it means the command could not be parsed to a valid
2254          bytecode expression and thus can't be evaluated on the target's side.
2255          It's no use iterating through the other commands.  */
2256       return NULL;
2257     }
2258
2259   do_cleanups (old_cleanups);
2260
2261   /* We have a valid agent expression, return it.  */
2262   return aexpr;
2263 }
2264
2265 /* Based on location BL, create a list of breakpoint commands to be
2266    passed on to the target.  If we have duplicated locations with
2267    different commands, we will add any such to the list.  */
2268
2269 static void
2270 build_target_command_list (struct bp_location *bl)
2271 {
2272   struct bp_location **locp = NULL, **loc2p;
2273   int null_command_or_parse_error = 0;
2274   int modified = bl->needs_update;
2275   struct bp_location *loc;
2276
2277   /* For now, limit to agent-style dprintf breakpoints.  */
2278   if (bl->owner->type != bp_dprintf
2279       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2280     return;
2281
2282   if (!target_can_run_breakpoint_commands ())
2283     return;
2284
2285   /* Do a first pass to check for locations with no assigned
2286      conditions or conditions that fail to parse to a valid agent expression
2287      bytecode.  If any of these happen, then it's no use to send conditions
2288      to the target since this location will always trigger and generate a
2289      response back to GDB.  */
2290   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2291     {
2292       loc = (*loc2p);
2293       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2294         {
2295           if (modified)
2296             {
2297               struct agent_expr *aexpr;
2298
2299               /* Re-parse the commands since something changed.  In that
2300                  case we already freed the command bytecodes (see
2301                  force_breakpoint_reinsertion).  We just
2302                  need to parse the command to bytecodes again.  */
2303               aexpr = parse_cmd_to_aexpr (bl->address,
2304                                           loc->owner->extra_string);
2305               loc->cmd_bytecode = aexpr;
2306
2307               if (!aexpr)
2308                 continue;
2309             }
2310
2311           /* If we have a NULL bytecode expression, it means something
2312              went wrong or we have a null command expression.  */
2313           if (!loc->cmd_bytecode)
2314             {
2315               null_command_or_parse_error = 1;
2316               break;
2317             }
2318         }
2319     }
2320
2321   /* If anything failed, then we're not doing target-side commands,
2322      and so clean up.  */
2323   if (null_command_or_parse_error)
2324     {
2325       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2326         {
2327           loc = (*loc2p);
2328           if (is_breakpoint (loc->owner)
2329               && loc->pspace->num == bl->pspace->num)
2330             {
2331               /* Only go as far as the first NULL bytecode is
2332                  located.  */
2333               if (loc->cmd_bytecode == NULL)
2334                 return;
2335
2336               free_agent_expr (loc->cmd_bytecode);
2337               loc->cmd_bytecode = NULL;
2338             }
2339         }
2340     }
2341
2342   /* No NULL commands or failed bytecode generation.  Build a command list
2343      for this location's address.  */
2344   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2345     {
2346       loc = (*loc2p);
2347       if (loc->owner->extra_string
2348           && is_breakpoint (loc->owner)
2349           && loc->pspace->num == bl->pspace->num
2350           && loc->owner->enable_state == bp_enabled
2351           && loc->enabled)
2352         /* Add the command to the vector.  This will be used later
2353            to send the commands to the target.  */
2354         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2355                        loc->cmd_bytecode);
2356     }
2357
2358   bl->target_info.persist = 0;
2359   /* Maybe flag this location as persistent.  */
2360   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2361     bl->target_info.persist = 1;
2362 }
2363
2364 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2365    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2366    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2367    Returns 0 for success, 1 if the bp_location type is not supported or
2368    -1 for failure.
2369
2370    NOTE drow/2003-09-09: This routine could be broken down to an
2371    object-style method for each breakpoint or catchpoint type.  */
2372 static int
2373 insert_bp_location (struct bp_location *bl,
2374                     struct ui_file *tmp_error_stream,
2375                     int *disabled_breaks,
2376                     int *hw_breakpoint_error,
2377                     int *hw_bp_error_explained_already)
2378 {
2379   int val = 0;
2380   char *hw_bp_err_string = NULL;
2381   struct gdb_exception e;
2382
2383   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2384     return 0;
2385
2386   /* Note we don't initialize bl->target_info, as that wipes out
2387      the breakpoint location's shadow_contents if the breakpoint
2388      is still inserted at that location.  This in turn breaks
2389      target_read_memory which depends on these buffers when
2390      a memory read is requested at the breakpoint location:
2391      Once the target_info has been wiped, we fail to see that
2392      we have a breakpoint inserted at that address and thus
2393      read the breakpoint instead of returning the data saved in
2394      the breakpoint location's shadow contents.  */
2395   bl->target_info.placed_address = bl->address;
2396   bl->target_info.placed_address_space = bl->pspace->aspace;
2397   bl->target_info.length = bl->length;
2398
2399   /* When working with target-side conditions, we must pass all the conditions
2400      for the same breakpoint address down to the target since GDB will not
2401      insert those locations.  With a list of breakpoint conditions, the target
2402      can decide when to stop and notify GDB.  */
2403
2404   if (is_breakpoint (bl->owner))
2405     {
2406       build_target_condition_list (bl);
2407       build_target_command_list (bl);
2408       /* Reset the modification marker.  */
2409       bl->needs_update = 0;
2410     }
2411
2412   if (bl->loc_type == bp_loc_software_breakpoint
2413       || bl->loc_type == bp_loc_hardware_breakpoint)
2414     {
2415       if (bl->owner->type != bp_hardware_breakpoint)
2416         {
2417           /* If the explicitly specified breakpoint type
2418              is not hardware breakpoint, check the memory map to see
2419              if the breakpoint address is in read only memory or not.
2420
2421              Two important cases are:
2422              - location type is not hardware breakpoint, memory
2423              is readonly.  We change the type of the location to
2424              hardware breakpoint.
2425              - location type is hardware breakpoint, memory is
2426              read-write.  This means we've previously made the
2427              location hardware one, but then the memory map changed,
2428              so we undo.
2429              
2430              When breakpoints are removed, remove_breakpoints will use
2431              location types we've just set here, the only possible
2432              problem is that memory map has changed during running
2433              program, but it's not going to work anyway with current
2434              gdb.  */
2435           struct mem_region *mr 
2436             = lookup_mem_region (bl->target_info.placed_address);
2437           
2438           if (mr)
2439             {
2440               if (automatic_hardware_breakpoints)
2441                 {
2442                   enum bp_loc_type new_type;
2443                   
2444                   if (mr->attrib.mode != MEM_RW)
2445                     new_type = bp_loc_hardware_breakpoint;
2446                   else 
2447                     new_type = bp_loc_software_breakpoint;
2448                   
2449                   if (new_type != bl->loc_type)
2450                     {
2451                       static int said = 0;
2452
2453                       bl->loc_type = new_type;
2454                       if (!said)
2455                         {
2456                           fprintf_filtered (gdb_stdout,
2457                                             _("Note: automatically using "
2458                                               "hardware breakpoints for "
2459                                               "read-only addresses.\n"));
2460                           said = 1;
2461                         }
2462                     }
2463                 }
2464               else if (bl->loc_type == bp_loc_software_breakpoint
2465                        && mr->attrib.mode != MEM_RW)        
2466                 warning (_("cannot set software breakpoint "
2467                            "at readonly address %s"),
2468                          paddress (bl->gdbarch, bl->address));
2469             }
2470         }
2471         
2472       /* First check to see if we have to handle an overlay.  */
2473       if (overlay_debugging == ovly_off
2474           || bl->section == NULL
2475           || !(section_is_overlay (bl->section)))
2476         {
2477           /* No overlay handling: just set the breakpoint.  */
2478           TRY_CATCH (e, RETURN_MASK_ALL)
2479             {
2480               val = bl->owner->ops->insert_location (bl);
2481             }
2482           if (e.reason < 0)
2483             {
2484               val = 1;
2485               hw_bp_err_string = (char *) e.message;
2486             }
2487         }
2488       else
2489         {
2490           /* This breakpoint is in an overlay section.
2491              Shall we set a breakpoint at the LMA?  */
2492           if (!overlay_events_enabled)
2493             {
2494               /* Yes -- overlay event support is not active, 
2495                  so we must try to set a breakpoint at the LMA.
2496                  This will not work for a hardware breakpoint.  */
2497               if (bl->loc_type == bp_loc_hardware_breakpoint)
2498                 warning (_("hardware breakpoint %d not supported in overlay!"),
2499                          bl->owner->number);
2500               else
2501                 {
2502                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2503                                                              bl->section);
2504                   /* Set a software (trap) breakpoint at the LMA.  */
2505                   bl->overlay_target_info = bl->target_info;
2506                   bl->overlay_target_info.placed_address = addr;
2507                   val = target_insert_breakpoint (bl->gdbarch,
2508                                                   &bl->overlay_target_info);
2509                   if (val != 0)
2510                     fprintf_unfiltered (tmp_error_stream,
2511                                         "Overlay breakpoint %d "
2512                                         "failed: in ROM?\n",
2513                                         bl->owner->number);
2514                 }
2515             }
2516           /* Shall we set a breakpoint at the VMA? */
2517           if (section_is_mapped (bl->section))
2518             {
2519               /* Yes.  This overlay section is mapped into memory.  */
2520               TRY_CATCH (e, RETURN_MASK_ALL)
2521                 {
2522                   val = bl->owner->ops->insert_location (bl);
2523                 }
2524               if (e.reason < 0)
2525                 {
2526                   val = 1;
2527                   hw_bp_err_string = (char *) e.message;
2528                 }
2529             }
2530           else
2531             {
2532               /* No.  This breakpoint will not be inserted.  
2533                  No error, but do not mark the bp as 'inserted'.  */
2534               return 0;
2535             }
2536         }
2537
2538       if (val)
2539         {
2540           /* Can't set the breakpoint.  */
2541           if (solib_name_from_address (bl->pspace, bl->address))
2542             {
2543               /* See also: disable_breakpoints_in_shlibs.  */
2544               val = 0;
2545               bl->shlib_disabled = 1;
2546               observer_notify_breakpoint_modified (bl->owner);
2547               if (!*disabled_breaks)
2548                 {
2549                   fprintf_unfiltered (tmp_error_stream, 
2550                                       "Cannot insert breakpoint %d.\n", 
2551                                       bl->owner->number);
2552                   fprintf_unfiltered (tmp_error_stream, 
2553                                       "Temporarily disabling shared "
2554                                       "library breakpoints:\n");
2555                 }
2556               *disabled_breaks = 1;
2557               fprintf_unfiltered (tmp_error_stream,
2558                                   "breakpoint #%d\n", bl->owner->number);
2559             }
2560           else
2561             {
2562               if (bl->loc_type == bp_loc_hardware_breakpoint)
2563                 {
2564                   *hw_breakpoint_error = 1;
2565                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2566                   fprintf_unfiltered (tmp_error_stream,
2567                                       "Cannot insert hardware breakpoint %d%s",
2568                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2569                   if (hw_bp_err_string)
2570                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2571                 }
2572               else
2573                 {
2574                   fprintf_unfiltered (tmp_error_stream, 
2575                                       "Cannot insert breakpoint %d.\n", 
2576                                       bl->owner->number);
2577                   fprintf_filtered (tmp_error_stream, 
2578                                     "Error accessing memory address ");
2579                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2580                                   tmp_error_stream);
2581                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2582                                     safe_strerror (val));
2583                 }
2584
2585             }
2586         }
2587       else
2588         bl->inserted = 1;
2589
2590       return val;
2591     }
2592
2593   else if (bl->loc_type == bp_loc_hardware_watchpoint
2594            /* NOTE drow/2003-09-08: This state only exists for removing
2595               watchpoints.  It's not clear that it's necessary...  */
2596            && bl->owner->disposition != disp_del_at_next_stop)
2597     {
2598       gdb_assert (bl->owner->ops != NULL
2599                   && bl->owner->ops->insert_location != NULL);
2600
2601       val = bl->owner->ops->insert_location (bl);
2602
2603       /* If trying to set a read-watchpoint, and it turns out it's not
2604          supported, try emulating one with an access watchpoint.  */
2605       if (val == 1 && bl->watchpoint_type == hw_read)
2606         {
2607           struct bp_location *loc, **loc_temp;
2608
2609           /* But don't try to insert it, if there's already another
2610              hw_access location that would be considered a duplicate
2611              of this one.  */
2612           ALL_BP_LOCATIONS (loc, loc_temp)
2613             if (loc != bl
2614                 && loc->watchpoint_type == hw_access
2615                 && watchpoint_locations_match (bl, loc))
2616               {
2617                 bl->duplicate = 1;
2618                 bl->inserted = 1;
2619                 bl->target_info = loc->target_info;
2620                 bl->watchpoint_type = hw_access;
2621                 val = 0;
2622                 break;
2623               }
2624
2625           if (val == 1)
2626             {
2627               bl->watchpoint_type = hw_access;
2628               val = bl->owner->ops->insert_location (bl);
2629
2630               if (val)
2631                 /* Back to the original value.  */
2632                 bl->watchpoint_type = hw_read;
2633             }
2634         }
2635
2636       bl->inserted = (val == 0);
2637     }
2638
2639   else if (bl->owner->type == bp_catchpoint)
2640     {
2641       gdb_assert (bl->owner->ops != NULL
2642                   && bl->owner->ops->insert_location != NULL);
2643
2644       val = bl->owner->ops->insert_location (bl);
2645       if (val)
2646         {
2647           bl->owner->enable_state = bp_disabled;
2648
2649           if (val == 1)
2650             warning (_("\
2651 Error inserting catchpoint %d: Your system does not support this type\n\
2652 of catchpoint."), bl->owner->number);
2653           else
2654             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2655         }
2656
2657       bl->inserted = (val == 0);
2658
2659       /* We've already printed an error message if there was a problem
2660          inserting this catchpoint, and we've disabled the catchpoint,
2661          so just return success.  */
2662       return 0;
2663     }
2664
2665   return 0;
2666 }
2667
2668 /* This function is called when program space PSPACE is about to be
2669    deleted.  It takes care of updating breakpoints to not reference
2670    PSPACE anymore.  */
2671
2672 void
2673 breakpoint_program_space_exit (struct program_space *pspace)
2674 {
2675   struct breakpoint *b, *b_temp;
2676   struct bp_location *loc, **loc_temp;
2677
2678   /* Remove any breakpoint that was set through this program space.  */
2679   ALL_BREAKPOINTS_SAFE (b, b_temp)
2680     {
2681       if (b->pspace == pspace)
2682         delete_breakpoint (b);
2683     }
2684
2685   /* Breakpoints set through other program spaces could have locations
2686      bound to PSPACE as well.  Remove those.  */
2687   ALL_BP_LOCATIONS (loc, loc_temp)
2688     {
2689       struct bp_location *tmp;
2690
2691       if (loc->pspace == pspace)
2692         {
2693           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2694           if (loc->owner->loc == loc)
2695             loc->owner->loc = loc->next;
2696           else
2697             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2698               if (tmp->next == loc)
2699                 {
2700                   tmp->next = loc->next;
2701                   break;
2702                 }
2703         }
2704     }
2705
2706   /* Now update the global location list to permanently delete the
2707      removed locations above.  */
2708   update_global_location_list (0);
2709 }
2710
2711 /* Make sure all breakpoints are inserted in inferior.
2712    Throws exception on any error.
2713    A breakpoint that is already inserted won't be inserted
2714    again, so calling this function twice is safe.  */
2715 void
2716 insert_breakpoints (void)
2717 {
2718   struct breakpoint *bpt;
2719
2720   ALL_BREAKPOINTS (bpt)
2721     if (is_hardware_watchpoint (bpt))
2722       {
2723         struct watchpoint *w = (struct watchpoint *) bpt;
2724
2725         update_watchpoint (w, 0 /* don't reparse.  */);
2726       }
2727
2728   update_global_location_list (1);
2729
2730   /* update_global_location_list does not insert breakpoints when
2731      always_inserted_mode is not enabled.  Explicitly insert them
2732      now.  */
2733   if (!breakpoints_always_inserted_mode ())
2734     insert_breakpoint_locations ();
2735 }
2736
2737 /* Invoke CALLBACK for each of bp_location.  */
2738
2739 void
2740 iterate_over_bp_locations (walk_bp_location_callback callback)
2741 {
2742   struct bp_location *loc, **loc_tmp;
2743
2744   ALL_BP_LOCATIONS (loc, loc_tmp)
2745     {
2746       callback (loc, NULL);
2747     }
2748 }
2749
2750 /* This is used when we need to synch breakpoint conditions between GDB and the
2751    target.  It is the case with deleting and disabling of breakpoints when using
2752    always-inserted mode.  */
2753
2754 static void
2755 update_inserted_breakpoint_locations (void)
2756 {
2757   struct bp_location *bl, **blp_tmp;
2758   int error_flag = 0;
2759   int val = 0;
2760   int disabled_breaks = 0;
2761   int hw_breakpoint_error = 0;
2762   int hw_bp_details_reported = 0;
2763
2764   struct ui_file *tmp_error_stream = mem_fileopen ();
2765   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2766
2767   /* Explicitly mark the warning -- this will only be printed if
2768      there was an error.  */
2769   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2770
2771   save_current_space_and_thread ();
2772
2773   ALL_BP_LOCATIONS (bl, blp_tmp)
2774     {
2775       /* We only want to update software breakpoints and hardware
2776          breakpoints.  */
2777       if (!is_breakpoint (bl->owner))
2778         continue;
2779
2780       /* We only want to update locations that are already inserted
2781          and need updating.  This is to avoid unwanted insertion during
2782          deletion of breakpoints.  */
2783       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2784         continue;
2785
2786       switch_to_program_space_and_thread (bl->pspace);
2787
2788       /* For targets that support global breakpoints, there's no need
2789          to select an inferior to insert breakpoint to.  In fact, even
2790          if we aren't attached to any process yet, we should still
2791          insert breakpoints.  */
2792       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2793           && ptid_equal (inferior_ptid, null_ptid))
2794         continue;
2795
2796       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2797                                     &hw_breakpoint_error, &hw_bp_details_reported);
2798       if (val)
2799         error_flag = val;
2800     }
2801
2802   if (error_flag)
2803     {
2804       target_terminal_ours_for_output ();
2805       error_stream (tmp_error_stream);
2806     }
2807
2808   do_cleanups (cleanups);
2809 }
2810
2811 /* Used when starting or continuing the program.  */
2812
2813 static void
2814 insert_breakpoint_locations (void)
2815 {
2816   struct breakpoint *bpt;
2817   struct bp_location *bl, **blp_tmp;
2818   int error_flag = 0;
2819   int val = 0;
2820   int disabled_breaks = 0;
2821   int hw_breakpoint_error = 0;
2822   int hw_bp_error_explained_already = 0;
2823
2824   struct ui_file *tmp_error_stream = mem_fileopen ();
2825   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2826   
2827   /* Explicitly mark the warning -- this will only be printed if
2828      there was an error.  */
2829   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2830
2831   save_current_space_and_thread ();
2832
2833   ALL_BP_LOCATIONS (bl, blp_tmp)
2834     {
2835       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2836         continue;
2837
2838       /* There is no point inserting thread-specific breakpoints if
2839          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2840          has BL->OWNER always non-NULL.  */
2841       if (bl->owner->thread != -1
2842           && !valid_thread_id (bl->owner->thread))
2843         continue;
2844
2845       switch_to_program_space_and_thread (bl->pspace);
2846
2847       /* For targets that support global breakpoints, there's no need
2848          to select an inferior to insert breakpoint to.  In fact, even
2849          if we aren't attached to any process yet, we should still
2850          insert breakpoints.  */
2851       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2852           && ptid_equal (inferior_ptid, null_ptid))
2853         continue;
2854
2855       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2856                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2857       if (val)
2858         error_flag = val;
2859     }
2860
2861   /* If we failed to insert all locations of a watchpoint, remove
2862      them, as half-inserted watchpoint is of limited use.  */
2863   ALL_BREAKPOINTS (bpt)  
2864     {
2865       int some_failed = 0;
2866       struct bp_location *loc;
2867
2868       if (!is_hardware_watchpoint (bpt))
2869         continue;
2870
2871       if (!breakpoint_enabled (bpt))
2872         continue;
2873
2874       if (bpt->disposition == disp_del_at_next_stop)
2875         continue;
2876       
2877       for (loc = bpt->loc; loc; loc = loc->next)
2878         if (!loc->inserted && should_be_inserted (loc))
2879           {
2880             some_failed = 1;
2881             break;
2882           }
2883       if (some_failed)
2884         {
2885           for (loc = bpt->loc; loc; loc = loc->next)
2886             if (loc->inserted)
2887               remove_breakpoint (loc, mark_uninserted);
2888
2889           hw_breakpoint_error = 1;
2890           fprintf_unfiltered (tmp_error_stream,
2891                               "Could not insert hardware watchpoint %d.\n", 
2892                               bpt->number);
2893           error_flag = -1;
2894         }
2895     }
2896
2897   if (error_flag)
2898     {
2899       /* If a hardware breakpoint or watchpoint was inserted, add a
2900          message about possibly exhausted resources.  */
2901       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2902         {
2903           fprintf_unfiltered (tmp_error_stream, 
2904                               "Could not insert hardware breakpoints:\n\
2905 You may have requested too many hardware breakpoints/watchpoints.\n");
2906         }
2907       target_terminal_ours_for_output ();
2908       error_stream (tmp_error_stream);
2909     }
2910
2911   do_cleanups (cleanups);
2912 }
2913
2914 /* Used when the program stops.
2915    Returns zero if successful, or non-zero if there was a problem
2916    removing a breakpoint location.  */
2917
2918 int
2919 remove_breakpoints (void)
2920 {
2921   struct bp_location *bl, **blp_tmp;
2922   int val = 0;
2923
2924   ALL_BP_LOCATIONS (bl, blp_tmp)
2925   {
2926     if (bl->inserted && !is_tracepoint (bl->owner))
2927       val |= remove_breakpoint (bl, mark_uninserted);
2928   }
2929   return val;
2930 }
2931
2932 /* Remove breakpoints of process PID.  */
2933
2934 int
2935 remove_breakpoints_pid (int pid)
2936 {
2937   struct bp_location *bl, **blp_tmp;
2938   int val;
2939   struct inferior *inf = find_inferior_pid (pid);
2940
2941   ALL_BP_LOCATIONS (bl, blp_tmp)
2942   {
2943     if (bl->pspace != inf->pspace)
2944       continue;
2945
2946     if (bl->owner->type == bp_dprintf)
2947       continue;
2948
2949     if (bl->inserted)
2950       {
2951         val = remove_breakpoint (bl, mark_uninserted);
2952         if (val != 0)
2953           return val;
2954       }
2955   }
2956   return 0;
2957 }
2958
2959 int
2960 reattach_breakpoints (int pid)
2961 {
2962   struct cleanup *old_chain;
2963   struct bp_location *bl, **blp_tmp;
2964   int val;
2965   struct ui_file *tmp_error_stream;
2966   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2967   struct inferior *inf;
2968   struct thread_info *tp;
2969
2970   tp = any_live_thread_of_process (pid);
2971   if (tp == NULL)
2972     return 1;
2973
2974   inf = find_inferior_pid (pid);
2975   old_chain = save_inferior_ptid ();
2976
2977   inferior_ptid = tp->ptid;
2978
2979   tmp_error_stream = mem_fileopen ();
2980   make_cleanup_ui_file_delete (tmp_error_stream);
2981
2982   ALL_BP_LOCATIONS (bl, blp_tmp)
2983   {
2984     if (bl->pspace != inf->pspace)
2985       continue;
2986
2987     if (bl->inserted)
2988       {
2989         bl->inserted = 0;
2990         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2991         if (val != 0)
2992           {
2993             do_cleanups (old_chain);
2994             return val;
2995           }
2996       }
2997   }
2998   do_cleanups (old_chain);
2999   return 0;
3000 }
3001
3002 static int internal_breakpoint_number = -1;
3003
3004 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3005    If INTERNAL is non-zero, the breakpoint number will be populated
3006    from internal_breakpoint_number and that variable decremented.
3007    Otherwise the breakpoint number will be populated from
3008    breakpoint_count and that value incremented.  Internal breakpoints
3009    do not set the internal var bpnum.  */
3010 static void
3011 set_breakpoint_number (int internal, struct breakpoint *b)
3012 {
3013   if (internal)
3014     b->number = internal_breakpoint_number--;
3015   else
3016     {
3017       set_breakpoint_count (breakpoint_count + 1);
3018       b->number = breakpoint_count;
3019     }
3020 }
3021
3022 static struct breakpoint *
3023 create_internal_breakpoint (struct gdbarch *gdbarch,
3024                             CORE_ADDR address, enum bptype type,
3025                             const struct breakpoint_ops *ops)
3026 {
3027   struct symtab_and_line sal;
3028   struct breakpoint *b;
3029
3030   init_sal (&sal);              /* Initialize to zeroes.  */
3031
3032   sal.pc = address;
3033   sal.section = find_pc_overlay (sal.pc);
3034   sal.pspace = current_program_space;
3035
3036   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3037   b->number = internal_breakpoint_number--;
3038   b->disposition = disp_donttouch;
3039
3040   return b;
3041 }
3042
3043 static const char *const longjmp_names[] =
3044   {
3045     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3046   };
3047 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3048
3049 /* Per-objfile data private to breakpoint.c.  */
3050 struct breakpoint_objfile_data
3051 {
3052   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3053   struct minimal_symbol *overlay_msym;
3054
3055   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3056   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3057
3058   /* True if we have looked for longjmp probes.  */
3059   int longjmp_searched;
3060
3061   /* SystemTap probe points for longjmp (if any).  */
3062   VEC (probe_p) *longjmp_probes;
3063
3064   /* Minimal symbol for "std::terminate()" (if any).  */
3065   struct minimal_symbol *terminate_msym;
3066
3067   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3068   struct minimal_symbol *exception_msym;
3069
3070   /* True if we have looked for exception probes.  */
3071   int exception_searched;
3072
3073   /* SystemTap probe points for unwinding (if any).  */
3074   VEC (probe_p) *exception_probes;
3075 };
3076
3077 static const struct objfile_data *breakpoint_objfile_key;
3078
3079 /* Minimal symbol not found sentinel.  */
3080 static struct minimal_symbol msym_not_found;
3081
3082 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3083
3084 static int
3085 msym_not_found_p (const struct minimal_symbol *msym)
3086 {
3087   return msym == &msym_not_found;
3088 }
3089
3090 /* Return per-objfile data needed by breakpoint.c.
3091    Allocate the data if necessary.  */
3092
3093 static struct breakpoint_objfile_data *
3094 get_breakpoint_objfile_data (struct objfile *objfile)
3095 {
3096   struct breakpoint_objfile_data *bp_objfile_data;
3097
3098   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3099   if (bp_objfile_data == NULL)
3100     {
3101       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3102                                        sizeof (*bp_objfile_data));
3103
3104       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3105       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3106     }
3107   return bp_objfile_data;
3108 }
3109
3110 static void
3111 free_breakpoint_probes (struct objfile *obj, void *data)
3112 {
3113   struct breakpoint_objfile_data *bp_objfile_data = data;
3114
3115   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3116   VEC_free (probe_p, bp_objfile_data->exception_probes);
3117 }
3118
3119 static void
3120 create_overlay_event_breakpoint (void)
3121 {
3122   struct objfile *objfile;
3123   const char *const func_name = "_ovly_debug_event";
3124
3125   ALL_OBJFILES (objfile)
3126     {
3127       struct breakpoint *b;
3128       struct breakpoint_objfile_data *bp_objfile_data;
3129       CORE_ADDR addr;
3130
3131       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3132
3133       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3134         continue;
3135
3136       if (bp_objfile_data->overlay_msym == NULL)
3137         {
3138           struct minimal_symbol *m;
3139
3140           m = lookup_minimal_symbol_text (func_name, objfile);
3141           if (m == NULL)
3142             {
3143               /* Avoid future lookups in this objfile.  */
3144               bp_objfile_data->overlay_msym = &msym_not_found;
3145               continue;
3146             }
3147           bp_objfile_data->overlay_msym = m;
3148         }
3149
3150       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3151       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3152                                       bp_overlay_event,
3153                                       &internal_breakpoint_ops);
3154       b->addr_string = xstrdup (func_name);
3155
3156       if (overlay_debugging == ovly_auto)
3157         {
3158           b->enable_state = bp_enabled;
3159           overlay_events_enabled = 1;
3160         }
3161       else
3162        {
3163          b->enable_state = bp_disabled;
3164          overlay_events_enabled = 0;
3165        }
3166     }
3167   update_global_location_list (1);
3168 }
3169
3170 static void
3171 create_longjmp_master_breakpoint (void)
3172 {
3173   struct program_space *pspace;
3174   struct cleanup *old_chain;
3175
3176   old_chain = save_current_program_space ();
3177
3178   ALL_PSPACES (pspace)
3179   {
3180     struct objfile *objfile;
3181
3182     set_current_program_space (pspace);
3183
3184     ALL_OBJFILES (objfile)
3185     {
3186       int i;
3187       struct gdbarch *gdbarch;
3188       struct breakpoint_objfile_data *bp_objfile_data;
3189
3190       gdbarch = get_objfile_arch (objfile);
3191       if (!gdbarch_get_longjmp_target_p (gdbarch))
3192         continue;
3193
3194       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3195
3196       if (!bp_objfile_data->longjmp_searched)
3197         {
3198           bp_objfile_data->longjmp_probes
3199             = find_probes_in_objfile (objfile, "libc", "longjmp");
3200           bp_objfile_data->longjmp_searched = 1;
3201         }
3202
3203       if (bp_objfile_data->longjmp_probes != NULL)
3204         {
3205           int i;
3206           struct probe *probe;
3207           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3208
3209           for (i = 0;
3210                VEC_iterate (probe_p,
3211                             bp_objfile_data->longjmp_probes,
3212                             i, probe);
3213                ++i)
3214             {
3215               struct breakpoint *b;
3216
3217               b = create_internal_breakpoint (gdbarch, probe->address,
3218                                               bp_longjmp_master,
3219                                               &internal_breakpoint_ops);
3220               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3221               b->enable_state = bp_disabled;
3222             }
3223
3224           continue;
3225         }
3226
3227       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3228         {
3229           struct breakpoint *b;
3230           const char *func_name;
3231           CORE_ADDR addr;
3232
3233           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3234             continue;
3235
3236           func_name = longjmp_names[i];
3237           if (bp_objfile_data->longjmp_msym[i] == NULL)
3238             {
3239               struct minimal_symbol *m;
3240
3241               m = lookup_minimal_symbol_text (func_name, objfile);
3242               if (m == NULL)
3243                 {
3244                   /* Prevent future lookups in this objfile.  */
3245                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3246                   continue;
3247                 }
3248               bp_objfile_data->longjmp_msym[i] = m;
3249             }
3250
3251           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3252           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3253                                           &internal_breakpoint_ops);
3254           b->addr_string = xstrdup (func_name);
3255           b->enable_state = bp_disabled;
3256         }
3257     }
3258   }
3259   update_global_location_list (1);
3260
3261   do_cleanups (old_chain);
3262 }
3263
3264 /* Create a master std::terminate breakpoint.  */
3265 static void
3266 create_std_terminate_master_breakpoint (void)
3267 {
3268   struct program_space *pspace;
3269   struct cleanup *old_chain;
3270   const char *const func_name = "std::terminate()";
3271
3272   old_chain = save_current_program_space ();
3273
3274   ALL_PSPACES (pspace)
3275   {
3276     struct objfile *objfile;
3277     CORE_ADDR addr;
3278
3279     set_current_program_space (pspace);
3280
3281     ALL_OBJFILES (objfile)
3282     {
3283       struct breakpoint *b;
3284       struct breakpoint_objfile_data *bp_objfile_data;
3285
3286       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3287
3288       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3289         continue;
3290
3291       if (bp_objfile_data->terminate_msym == NULL)
3292         {
3293           struct minimal_symbol *m;
3294
3295           m = lookup_minimal_symbol (func_name, NULL, objfile);
3296           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3297                             && MSYMBOL_TYPE (m) != mst_file_text))
3298             {
3299               /* Prevent future lookups in this objfile.  */
3300               bp_objfile_data->terminate_msym = &msym_not_found;
3301               continue;
3302             }
3303           bp_objfile_data->terminate_msym = m;
3304         }
3305
3306       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3307       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3308                                       bp_std_terminate_master,
3309                                       &internal_breakpoint_ops);
3310       b->addr_string = xstrdup (func_name);
3311       b->enable_state = bp_disabled;
3312     }
3313   }
3314
3315   update_global_location_list (1);
3316
3317   do_cleanups (old_chain);
3318 }
3319
3320 /* Install a master breakpoint on the unwinder's debug hook.  */
3321
3322 static void
3323 create_exception_master_breakpoint (void)
3324 {
3325   struct objfile *objfile;
3326   const char *const func_name = "_Unwind_DebugHook";
3327
3328   ALL_OBJFILES (objfile)
3329     {
3330       struct breakpoint *b;
3331       struct gdbarch *gdbarch;
3332       struct breakpoint_objfile_data *bp_objfile_data;
3333       CORE_ADDR addr;
3334
3335       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3336
3337       /* We prefer the SystemTap probe point if it exists.  */
3338       if (!bp_objfile_data->exception_searched)
3339         {
3340           bp_objfile_data->exception_probes
3341             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3342           bp_objfile_data->exception_searched = 1;
3343         }
3344
3345       if (bp_objfile_data->exception_probes != NULL)
3346         {
3347           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3348           int i;
3349           struct probe *probe;
3350
3351           for (i = 0;
3352                VEC_iterate (probe_p,
3353                             bp_objfile_data->exception_probes,
3354                             i, probe);
3355                ++i)
3356             {
3357               struct breakpoint *b;
3358
3359               b = create_internal_breakpoint (gdbarch, probe->address,
3360                                               bp_exception_master,
3361                                               &internal_breakpoint_ops);
3362               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3363               b->enable_state = bp_disabled;
3364             }
3365
3366           continue;
3367         }
3368
3369       /* Otherwise, try the hook function.  */
3370
3371       if (msym_not_found_p (bp_objfile_data->exception_msym))
3372         continue;
3373
3374       gdbarch = get_objfile_arch (objfile);
3375
3376       if (bp_objfile_data->exception_msym == NULL)
3377         {
3378           struct minimal_symbol *debug_hook;
3379
3380           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3381           if (debug_hook == NULL)
3382             {
3383               bp_objfile_data->exception_msym = &msym_not_found;
3384               continue;
3385             }
3386
3387           bp_objfile_data->exception_msym = debug_hook;
3388         }
3389
3390       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3391       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3392                                                  &current_target);
3393       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3394                                       &internal_breakpoint_ops);
3395       b->addr_string = xstrdup (func_name);
3396       b->enable_state = bp_disabled;
3397     }
3398
3399   update_global_location_list (1);
3400 }
3401
3402 void
3403 update_breakpoints_after_exec (void)
3404 {
3405   struct breakpoint *b, *b_tmp;
3406   struct bp_location *bploc, **bplocp_tmp;
3407
3408   /* We're about to delete breakpoints from GDB's lists.  If the
3409      INSERTED flag is true, GDB will try to lift the breakpoints by
3410      writing the breakpoints' "shadow contents" back into memory.  The
3411      "shadow contents" are NOT valid after an exec, so GDB should not
3412      do that.  Instead, the target is responsible from marking
3413      breakpoints out as soon as it detects an exec.  We don't do that
3414      here instead, because there may be other attempts to delete
3415      breakpoints after detecting an exec and before reaching here.  */
3416   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3417     if (bploc->pspace == current_program_space)
3418       gdb_assert (!bploc->inserted);
3419
3420   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3421   {
3422     if (b->pspace != current_program_space)
3423       continue;
3424
3425     /* Solib breakpoints must be explicitly reset after an exec().  */
3426     if (b->type == bp_shlib_event)
3427       {
3428         delete_breakpoint (b);
3429         continue;
3430       }
3431
3432     /* JIT breakpoints must be explicitly reset after an exec().  */
3433     if (b->type == bp_jit_event)
3434       {
3435         delete_breakpoint (b);
3436         continue;
3437       }
3438
3439     /* Thread event breakpoints must be set anew after an exec(),
3440        as must overlay event and longjmp master breakpoints.  */
3441     if (b->type == bp_thread_event || b->type == bp_overlay_event
3442         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3443         || b->type == bp_exception_master)
3444       {
3445         delete_breakpoint (b);
3446         continue;
3447       }
3448
3449     /* Step-resume breakpoints are meaningless after an exec().  */
3450     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3451       {
3452         delete_breakpoint (b);
3453         continue;
3454       }
3455
3456     /* Longjmp and longjmp-resume breakpoints are also meaningless
3457        after an exec.  */
3458     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3459         || b->type == bp_longjmp_call_dummy
3460         || b->type == bp_exception || b->type == bp_exception_resume)
3461       {
3462         delete_breakpoint (b);
3463         continue;
3464       }
3465
3466     if (b->type == bp_catchpoint)
3467       {
3468         /* For now, none of the bp_catchpoint breakpoints need to
3469            do anything at this point.  In the future, if some of
3470            the catchpoints need to something, we will need to add
3471            a new method, and call this method from here.  */
3472         continue;
3473       }
3474
3475     /* bp_finish is a special case.  The only way we ought to be able
3476        to see one of these when an exec() has happened, is if the user
3477        caught a vfork, and then said "finish".  Ordinarily a finish just
3478        carries them to the call-site of the current callee, by setting
3479        a temporary bp there and resuming.  But in this case, the finish
3480        will carry them entirely through the vfork & exec.
3481
3482        We don't want to allow a bp_finish to remain inserted now.  But
3483        we can't safely delete it, 'cause finish_command has a handle to
3484        the bp on a bpstat, and will later want to delete it.  There's a
3485        chance (and I've seen it happen) that if we delete the bp_finish
3486        here, that its storage will get reused by the time finish_command
3487        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3488        We really must allow finish_command to delete a bp_finish.
3489
3490        In the absence of a general solution for the "how do we know
3491        it's safe to delete something others may have handles to?"
3492        problem, what we'll do here is just uninsert the bp_finish, and
3493        let finish_command delete it.
3494
3495        (We know the bp_finish is "doomed" in the sense that it's
3496        momentary, and will be deleted as soon as finish_command sees
3497        the inferior stopped.  So it doesn't matter that the bp's
3498        address is probably bogus in the new a.out, unlike e.g., the
3499        solib breakpoints.)  */
3500
3501     if (b->type == bp_finish)
3502       {
3503         continue;
3504       }
3505
3506     /* Without a symbolic address, we have little hope of the
3507        pre-exec() address meaning the same thing in the post-exec()
3508        a.out.  */
3509     if (b->addr_string == NULL)
3510       {
3511         delete_breakpoint (b);
3512         continue;
3513       }
3514   }
3515   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3516   create_overlay_event_breakpoint ();
3517   create_longjmp_master_breakpoint ();
3518   create_std_terminate_master_breakpoint ();
3519   create_exception_master_breakpoint ();
3520 }
3521
3522 int
3523 detach_breakpoints (ptid_t ptid)
3524 {
3525   struct bp_location *bl, **blp_tmp;
3526   int val = 0;
3527   struct cleanup *old_chain = save_inferior_ptid ();
3528   struct inferior *inf = current_inferior ();
3529
3530   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3531     error (_("Cannot detach breakpoints of inferior_ptid"));
3532
3533   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3534   inferior_ptid = ptid;
3535   ALL_BP_LOCATIONS (bl, blp_tmp)
3536   {
3537     if (bl->pspace != inf->pspace)
3538       continue;
3539
3540     if (bl->inserted)
3541       val |= remove_breakpoint_1 (bl, mark_inserted);
3542   }
3543
3544   /* Detach single-step breakpoints as well.  */
3545   detach_single_step_breakpoints ();
3546
3547   do_cleanups (old_chain);
3548   return val;
3549 }
3550
3551 /* Remove the breakpoint location BL from the current address space.
3552    Note that this is used to detach breakpoints from a child fork.
3553    When we get here, the child isn't in the inferior list, and neither
3554    do we have objects to represent its address space --- we should
3555    *not* look at bl->pspace->aspace here.  */
3556
3557 static int
3558 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3559 {
3560   int val;
3561
3562   /* BL is never in moribund_locations by our callers.  */
3563   gdb_assert (bl->owner != NULL);
3564
3565   if (bl->owner->enable_state == bp_permanent)
3566     /* Permanent breakpoints cannot be inserted or removed.  */
3567     return 0;
3568
3569   /* The type of none suggests that owner is actually deleted.
3570      This should not ever happen.  */
3571   gdb_assert (bl->owner->type != bp_none);
3572
3573   if (bl->loc_type == bp_loc_software_breakpoint
3574       || bl->loc_type == bp_loc_hardware_breakpoint)
3575     {
3576       /* "Normal" instruction breakpoint: either the standard
3577          trap-instruction bp (bp_breakpoint), or a
3578          bp_hardware_breakpoint.  */
3579
3580       /* First check to see if we have to handle an overlay.  */
3581       if (overlay_debugging == ovly_off
3582           || bl->section == NULL
3583           || !(section_is_overlay (bl->section)))
3584         {
3585           /* No overlay handling: just remove the breakpoint.  */
3586           val = bl->owner->ops->remove_location (bl);
3587         }
3588       else
3589         {
3590           /* This breakpoint is in an overlay section.
3591              Did we set a breakpoint at the LMA?  */
3592           if (!overlay_events_enabled)
3593               {
3594                 /* Yes -- overlay event support is not active, so we
3595                    should have set a breakpoint at the LMA.  Remove it.  
3596                 */
3597                 /* Ignore any failures: if the LMA is in ROM, we will
3598                    have already warned when we failed to insert it.  */
3599                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3600                   target_remove_hw_breakpoint (bl->gdbarch,
3601                                                &bl->overlay_target_info);
3602                 else
3603                   target_remove_breakpoint (bl->gdbarch,
3604                                             &bl->overlay_target_info);
3605               }
3606           /* Did we set a breakpoint at the VMA? 
3607              If so, we will have marked the breakpoint 'inserted'.  */
3608           if (bl->inserted)
3609             {
3610               /* Yes -- remove it.  Previously we did not bother to
3611                  remove the breakpoint if the section had been
3612                  unmapped, but let's not rely on that being safe.  We
3613                  don't know what the overlay manager might do.  */
3614
3615               /* However, we should remove *software* breakpoints only
3616                  if the section is still mapped, or else we overwrite
3617                  wrong code with the saved shadow contents.  */
3618               if (bl->loc_type == bp_loc_hardware_breakpoint
3619                   || section_is_mapped (bl->section))
3620                 val = bl->owner->ops->remove_location (bl);
3621               else
3622                 val = 0;
3623             }
3624           else
3625             {
3626               /* No -- not inserted, so no need to remove.  No error.  */
3627               val = 0;
3628             }
3629         }
3630
3631       /* In some cases, we might not be able to remove a breakpoint
3632          in a shared library that has already been removed, but we
3633          have not yet processed the shlib unload event.  */
3634       if (val && solib_name_from_address (bl->pspace, bl->address))
3635         val = 0;
3636
3637       if (val)
3638         return val;
3639       bl->inserted = (is == mark_inserted);
3640     }
3641   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3642     {
3643       gdb_assert (bl->owner->ops != NULL
3644                   && bl->owner->ops->remove_location != NULL);
3645
3646       bl->inserted = (is == mark_inserted);
3647       bl->owner->ops->remove_location (bl);
3648
3649       /* Failure to remove any of the hardware watchpoints comes here.  */
3650       if ((is == mark_uninserted) && (bl->inserted))
3651         warning (_("Could not remove hardware watchpoint %d."),
3652                  bl->owner->number);
3653     }
3654   else if (bl->owner->type == bp_catchpoint
3655            && breakpoint_enabled (bl->owner)
3656            && !bl->duplicate)
3657     {
3658       gdb_assert (bl->owner->ops != NULL
3659                   && bl->owner->ops->remove_location != NULL);
3660
3661       val = bl->owner->ops->remove_location (bl);
3662       if (val)
3663         return val;
3664
3665       bl->inserted = (is == mark_inserted);
3666     }
3667
3668   return 0;
3669 }
3670
3671 static int
3672 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3673 {
3674   int ret;
3675   struct cleanup *old_chain;
3676
3677   /* BL is never in moribund_locations by our callers.  */
3678   gdb_assert (bl->owner != NULL);
3679
3680   if (bl->owner->enable_state == bp_permanent)
3681     /* Permanent breakpoints cannot be inserted or removed.  */
3682     return 0;
3683
3684   /* The type of none suggests that owner is actually deleted.
3685      This should not ever happen.  */
3686   gdb_assert (bl->owner->type != bp_none);
3687
3688   old_chain = save_current_space_and_thread ();
3689
3690   switch_to_program_space_and_thread (bl->pspace);
3691
3692   ret = remove_breakpoint_1 (bl, is);
3693
3694   do_cleanups (old_chain);
3695   return ret;
3696 }
3697
3698 /* Clear the "inserted" flag in all breakpoints.  */
3699
3700 void
3701 mark_breakpoints_out (void)
3702 {
3703   struct bp_location *bl, **blp_tmp;
3704
3705   ALL_BP_LOCATIONS (bl, blp_tmp)
3706     if (bl->pspace == current_program_space)
3707       bl->inserted = 0;
3708 }
3709
3710 /* Clear the "inserted" flag in all breakpoints and delete any
3711    breakpoints which should go away between runs of the program.
3712
3713    Plus other such housekeeping that has to be done for breakpoints
3714    between runs.
3715
3716    Note: this function gets called at the end of a run (by
3717    generic_mourn_inferior) and when a run begins (by
3718    init_wait_for_inferior).  */
3719
3720
3721
3722 void
3723 breakpoint_init_inferior (enum inf_context context)
3724 {
3725   struct breakpoint *b, *b_tmp;
3726   struct bp_location *bl, **blp_tmp;
3727   int ix;
3728   struct program_space *pspace = current_program_space;
3729
3730   /* If breakpoint locations are shared across processes, then there's
3731      nothing to do.  */
3732   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3733     return;
3734
3735   ALL_BP_LOCATIONS (bl, blp_tmp)
3736   {
3737     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3738     if (bl->pspace == pspace
3739         && bl->owner->enable_state != bp_permanent)
3740       bl->inserted = 0;
3741   }
3742
3743   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3744   {
3745     if (b->loc && b->loc->pspace != pspace)
3746       continue;
3747
3748     switch (b->type)
3749       {
3750       case bp_call_dummy:
3751       case bp_longjmp_call_dummy:
3752
3753         /* If the call dummy breakpoint is at the entry point it will
3754            cause problems when the inferior is rerun, so we better get
3755            rid of it.  */
3756
3757       case bp_watchpoint_scope:
3758
3759         /* Also get rid of scope breakpoints.  */
3760
3761       case bp_shlib_event:
3762
3763         /* Also remove solib event breakpoints.  Their addresses may
3764            have changed since the last time we ran the program.
3765            Actually we may now be debugging against different target;
3766            and so the solib backend that installed this breakpoint may
3767            not be used in by the target.  E.g.,
3768
3769            (gdb) file prog-linux
3770            (gdb) run               # native linux target
3771            ...
3772            (gdb) kill
3773            (gdb) file prog-win.exe
3774            (gdb) tar rem :9999     # remote Windows gdbserver.
3775         */
3776
3777       case bp_step_resume:
3778
3779         /* Also remove step-resume breakpoints.  */
3780
3781         delete_breakpoint (b);
3782         break;
3783
3784       case bp_watchpoint:
3785       case bp_hardware_watchpoint:
3786       case bp_read_watchpoint:
3787       case bp_access_watchpoint:
3788         {
3789           struct watchpoint *w = (struct watchpoint *) b;
3790
3791           /* Likewise for watchpoints on local expressions.  */
3792           if (w->exp_valid_block != NULL)
3793             delete_breakpoint (b);
3794           else if (context == inf_starting)
3795             {
3796               /* Reset val field to force reread of starting value in
3797                  insert_breakpoints.  */
3798               if (w->val)
3799                 value_free (w->val);
3800               w->val = NULL;
3801               w->val_valid = 0;
3802           }
3803         }
3804         break;
3805       default:
3806         break;
3807       }
3808   }
3809
3810   /* Get rid of the moribund locations.  */
3811   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3812     decref_bp_location (&bl);
3813   VEC_free (bp_location_p, moribund_locations);
3814 }
3815
3816 /* These functions concern about actual breakpoints inserted in the
3817    target --- to e.g. check if we need to do decr_pc adjustment or if
3818    we need to hop over the bkpt --- so we check for address space
3819    match, not program space.  */
3820
3821 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3822    exists at PC.  It returns ordinary_breakpoint_here if it's an
3823    ordinary breakpoint, or permanent_breakpoint_here if it's a
3824    permanent breakpoint.
3825    - When continuing from a location with an ordinary breakpoint, we
3826      actually single step once before calling insert_breakpoints.
3827    - When continuing from a location with a permanent breakpoint, we
3828      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3829      the target, to advance the PC past the breakpoint.  */
3830
3831 enum breakpoint_here
3832 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3833 {
3834   struct bp_location *bl, **blp_tmp;
3835   int any_breakpoint_here = 0;
3836
3837   ALL_BP_LOCATIONS (bl, blp_tmp)
3838     {
3839       if (bl->loc_type != bp_loc_software_breakpoint
3840           && bl->loc_type != bp_loc_hardware_breakpoint)
3841         continue;
3842
3843       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3844       if ((breakpoint_enabled (bl->owner)
3845            || bl->owner->enable_state == bp_permanent)
3846           && breakpoint_location_address_match (bl, aspace, pc))
3847         {
3848           if (overlay_debugging 
3849               && section_is_overlay (bl->section)
3850               && !section_is_mapped (bl->section))
3851             continue;           /* unmapped overlay -- can't be a match */
3852           else if (bl->owner->enable_state == bp_permanent)
3853             return permanent_breakpoint_here;
3854           else
3855             any_breakpoint_here = 1;
3856         }
3857     }
3858
3859   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3860 }
3861
3862 /* Return true if there's a moribund breakpoint at PC.  */
3863
3864 int
3865 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3866 {
3867   struct bp_location *loc;
3868   int ix;
3869
3870   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3871     if (breakpoint_location_address_match (loc, aspace, pc))
3872       return 1;
3873
3874   return 0;
3875 }
3876
3877 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3878    inserted using regular breakpoint_chain / bp_location array
3879    mechanism.  This does not check for single-step breakpoints, which
3880    are inserted and removed using direct target manipulation.  */
3881
3882 int
3883 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3884                                     CORE_ADDR pc)
3885 {
3886   struct bp_location *bl, **blp_tmp;
3887
3888   ALL_BP_LOCATIONS (bl, blp_tmp)
3889     {
3890       if (bl->loc_type != bp_loc_software_breakpoint
3891           && bl->loc_type != bp_loc_hardware_breakpoint)
3892         continue;
3893
3894       if (bl->inserted
3895           && breakpoint_location_address_match (bl, aspace, pc))
3896         {
3897           if (overlay_debugging 
3898               && section_is_overlay (bl->section)
3899               && !section_is_mapped (bl->section))
3900             continue;           /* unmapped overlay -- can't be a match */
3901           else
3902             return 1;
3903         }
3904     }
3905   return 0;
3906 }
3907
3908 /* Returns non-zero iff there's either regular breakpoint
3909    or a single step breakpoint inserted at PC.  */
3910
3911 int
3912 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3913 {
3914   if (regular_breakpoint_inserted_here_p (aspace, pc))
3915     return 1;
3916
3917   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3918     return 1;
3919
3920   return 0;
3921 }
3922
3923 /* This function returns non-zero iff there is a software breakpoint
3924    inserted at PC.  */
3925
3926 int
3927 software_breakpoint_inserted_here_p (struct address_space *aspace,
3928                                      CORE_ADDR pc)
3929 {
3930   struct bp_location *bl, **blp_tmp;
3931
3932   ALL_BP_LOCATIONS (bl, blp_tmp)
3933     {
3934       if (bl->loc_type != bp_loc_software_breakpoint)
3935         continue;
3936
3937       if (bl->inserted
3938           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3939                                        aspace, pc))
3940         {
3941           if (overlay_debugging 
3942               && section_is_overlay (bl->section)
3943               && !section_is_mapped (bl->section))
3944             continue;           /* unmapped overlay -- can't be a match */
3945           else
3946             return 1;
3947         }
3948     }
3949
3950   /* Also check for software single-step breakpoints.  */
3951   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3952     return 1;
3953
3954   return 0;
3955 }
3956
3957 int
3958 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3959                                        CORE_ADDR addr, ULONGEST len)
3960 {
3961   struct breakpoint *bpt;
3962
3963   ALL_BREAKPOINTS (bpt)
3964     {
3965       struct bp_location *loc;
3966
3967       if (bpt->type != bp_hardware_watchpoint
3968           && bpt->type != bp_access_watchpoint)
3969         continue;
3970
3971       if (!breakpoint_enabled (bpt))
3972         continue;
3973
3974       for (loc = bpt->loc; loc; loc = loc->next)
3975         if (loc->pspace->aspace == aspace && loc->inserted)
3976           {
3977             CORE_ADDR l, h;
3978
3979             /* Check for intersection.  */
3980             l = max (loc->address, addr);
3981             h = min (loc->address + loc->length, addr + len);
3982             if (l < h)
3983               return 1;
3984           }
3985     }
3986   return 0;
3987 }
3988
3989 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3990    PC is valid for process/thread PTID.  */
3991
3992 int
3993 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3994                          ptid_t ptid)
3995 {
3996   struct bp_location *bl, **blp_tmp;
3997   /* The thread and task IDs associated to PTID, computed lazily.  */
3998   int thread = -1;
3999   int task = 0;
4000   
4001   ALL_BP_LOCATIONS (bl, blp_tmp)
4002     {
4003       if (bl->loc_type != bp_loc_software_breakpoint
4004           && bl->loc_type != bp_loc_hardware_breakpoint)
4005         continue;
4006
4007       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4008       if (!breakpoint_enabled (bl->owner)
4009           && bl->owner->enable_state != bp_permanent)
4010         continue;
4011
4012       if (!breakpoint_location_address_match (bl, aspace, pc))
4013         continue;
4014
4015       if (bl->owner->thread != -1)
4016         {
4017           /* This is a thread-specific breakpoint.  Check that ptid
4018              matches that thread.  If thread hasn't been computed yet,
4019              it is now time to do so.  */
4020           if (thread == -1)
4021             thread = pid_to_thread_id (ptid);
4022           if (bl->owner->thread != thread)
4023             continue;
4024         }
4025
4026       if (bl->owner->task != 0)
4027         {
4028           /* This is a task-specific breakpoint.  Check that ptid
4029              matches that task.  If task hasn't been computed yet,
4030              it is now time to do so.  */
4031           if (task == 0)
4032             task = ada_get_task_number (ptid);
4033           if (bl->owner->task != task)
4034             continue;
4035         }
4036
4037       if (overlay_debugging 
4038           && section_is_overlay (bl->section)
4039           && !section_is_mapped (bl->section))
4040         continue;           /* unmapped overlay -- can't be a match */
4041
4042       return 1;
4043     }
4044
4045   return 0;
4046 }
4047 \f
4048
4049 /* bpstat stuff.  External routines' interfaces are documented
4050    in breakpoint.h.  */
4051
4052 int
4053 is_catchpoint (struct breakpoint *ep)
4054 {
4055   return (ep->type == bp_catchpoint);
4056 }
4057
4058 /* Frees any storage that is part of a bpstat.  Does not walk the
4059    'next' chain.  */
4060
4061 static void
4062 bpstat_free (bpstat bs)
4063 {
4064   if (bs->old_val != NULL)
4065     value_free (bs->old_val);
4066   decref_counted_command_line (&bs->commands);
4067   decref_bp_location (&bs->bp_location_at);
4068   xfree (bs);
4069 }
4070
4071 /* Clear a bpstat so that it says we are not at any breakpoint.
4072    Also free any storage that is part of a bpstat.  */
4073
4074 void
4075 bpstat_clear (bpstat *bsp)
4076 {
4077   bpstat p;
4078   bpstat q;
4079
4080   if (bsp == 0)
4081     return;
4082   p = *bsp;
4083   while (p != NULL)
4084     {
4085       q = p->next;
4086       bpstat_free (p);
4087       p = q;
4088     }
4089   *bsp = NULL;
4090 }
4091
4092 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4093    is part of the bpstat is copied as well.  */
4094
4095 bpstat
4096 bpstat_copy (bpstat bs)
4097 {
4098   bpstat p = NULL;
4099   bpstat tmp;
4100   bpstat retval = NULL;
4101
4102   if (bs == NULL)
4103     return bs;
4104
4105   for (; bs != NULL; bs = bs->next)
4106     {
4107       tmp = (bpstat) xmalloc (sizeof (*tmp));
4108       memcpy (tmp, bs, sizeof (*tmp));
4109       incref_counted_command_line (tmp->commands);
4110       incref_bp_location (tmp->bp_location_at);
4111       if (bs->old_val != NULL)
4112         {
4113           tmp->old_val = value_copy (bs->old_val);
4114           release_value (tmp->old_val);
4115         }
4116
4117       if (p == NULL)
4118         /* This is the first thing in the chain.  */
4119         retval = tmp;
4120       else
4121         p->next = tmp;
4122       p = tmp;
4123     }
4124   p->next = NULL;
4125   return retval;
4126 }
4127
4128 /* Find the bpstat associated with this breakpoint.  */
4129
4130 bpstat
4131 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4132 {
4133   if (bsp == NULL)
4134     return NULL;
4135
4136   for (; bsp != NULL; bsp = bsp->next)
4137     {
4138       if (bsp->breakpoint_at == breakpoint)
4139         return bsp;
4140     }
4141   return NULL;
4142 }
4143
4144 /* See breakpoint.h.  */
4145
4146 enum bpstat_signal_value
4147 bpstat_explains_signal (bpstat bsp)
4148 {
4149   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4150
4151   for (; bsp != NULL; bsp = bsp->next)
4152     {
4153       /* Ensure that, if we ever entered this loop, then we at least
4154          return BPSTAT_SIGNAL_HIDE.  */
4155       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4156
4157       if (bsp->breakpoint_at != NULL)
4158         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4159
4160       if (newval > result)
4161         result = newval;
4162     }
4163
4164   return result;
4165 }
4166
4167 /* Put in *NUM the breakpoint number of the first breakpoint we are
4168    stopped at.  *BSP upon return is a bpstat which points to the
4169    remaining breakpoints stopped at (but which is not guaranteed to be
4170    good for anything but further calls to bpstat_num).
4171
4172    Return 0 if passed a bpstat which does not indicate any breakpoints.
4173    Return -1 if stopped at a breakpoint that has been deleted since
4174    we set it.
4175    Return 1 otherwise.  */
4176
4177 int
4178 bpstat_num (bpstat *bsp, int *num)
4179 {
4180   struct breakpoint *b;
4181
4182   if ((*bsp) == NULL)
4183     return 0;                   /* No more breakpoint values */
4184
4185   /* We assume we'll never have several bpstats that correspond to a
4186      single breakpoint -- otherwise, this function might return the
4187      same number more than once and this will look ugly.  */
4188   b = (*bsp)->breakpoint_at;
4189   *bsp = (*bsp)->next;
4190   if (b == NULL)
4191     return -1;                  /* breakpoint that's been deleted since */
4192
4193   *num = b->number;             /* We have its number */
4194   return 1;
4195 }
4196
4197 /* See breakpoint.h.  */
4198
4199 void
4200 bpstat_clear_actions (void)
4201 {
4202   struct thread_info *tp;
4203   bpstat bs;
4204
4205   if (ptid_equal (inferior_ptid, null_ptid))
4206     return;
4207
4208   tp = find_thread_ptid (inferior_ptid);
4209   if (tp == NULL)
4210     return;
4211
4212   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4213     {
4214       decref_counted_command_line (&bs->commands);
4215
4216       if (bs->old_val != NULL)
4217         {
4218           value_free (bs->old_val);
4219           bs->old_val = NULL;
4220         }
4221     }
4222 }
4223
4224 /* Called when a command is about to proceed the inferior.  */
4225
4226 static void
4227 breakpoint_about_to_proceed (void)
4228 {
4229   if (!ptid_equal (inferior_ptid, null_ptid))
4230     {
4231       struct thread_info *tp = inferior_thread ();
4232
4233       /* Allow inferior function calls in breakpoint commands to not
4234          interrupt the command list.  When the call finishes
4235          successfully, the inferior will be standing at the same
4236          breakpoint as if nothing happened.  */
4237       if (tp->control.in_infcall)
4238         return;
4239     }
4240
4241   breakpoint_proceeded = 1;
4242 }
4243
4244 /* Stub for cleaning up our state if we error-out of a breakpoint
4245    command.  */
4246 static void
4247 cleanup_executing_breakpoints (void *ignore)
4248 {
4249   executing_breakpoint_commands = 0;
4250 }
4251
4252 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4253    or its equivalent.  */
4254
4255 static int
4256 command_line_is_silent (struct command_line *cmd)
4257 {
4258   return cmd && (strcmp ("silent", cmd->line) == 0
4259                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4260 }
4261
4262 /* Execute all the commands associated with all the breakpoints at
4263    this location.  Any of these commands could cause the process to
4264    proceed beyond this point, etc.  We look out for such changes by
4265    checking the global "breakpoint_proceeded" after each command.
4266
4267    Returns true if a breakpoint command resumed the inferior.  In that
4268    case, it is the caller's responsibility to recall it again with the
4269    bpstat of the current thread.  */
4270
4271 static int
4272 bpstat_do_actions_1 (bpstat *bsp)
4273 {
4274   bpstat bs;
4275   struct cleanup *old_chain;
4276   int again = 0;
4277
4278   /* Avoid endless recursion if a `source' command is contained
4279      in bs->commands.  */
4280   if (executing_breakpoint_commands)
4281     return 0;
4282
4283   executing_breakpoint_commands = 1;
4284   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4285
4286   prevent_dont_repeat ();
4287
4288   /* This pointer will iterate over the list of bpstat's.  */
4289   bs = *bsp;
4290
4291   breakpoint_proceeded = 0;
4292   for (; bs != NULL; bs = bs->next)
4293     {
4294       struct counted_command_line *ccmd;
4295       struct command_line *cmd;
4296       struct cleanup *this_cmd_tree_chain;
4297
4298       /* Take ownership of the BSP's command tree, if it has one.
4299
4300          The command tree could legitimately contain commands like
4301          'step' and 'next', which call clear_proceed_status, which
4302          frees stop_bpstat's command tree.  To make sure this doesn't
4303          free the tree we're executing out from under us, we need to
4304          take ownership of the tree ourselves.  Since a given bpstat's
4305          commands are only executed once, we don't need to copy it; we
4306          can clear the pointer in the bpstat, and make sure we free
4307          the tree when we're done.  */
4308       ccmd = bs->commands;
4309       bs->commands = NULL;
4310       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4311       cmd = ccmd ? ccmd->commands : NULL;
4312       if (command_line_is_silent (cmd))
4313         {
4314           /* The action has been already done by bpstat_stop_status.  */
4315           cmd = cmd->next;
4316         }
4317
4318       while (cmd != NULL)
4319         {
4320           execute_control_command (cmd);
4321
4322           if (breakpoint_proceeded)
4323             break;
4324           else
4325             cmd = cmd->next;
4326         }
4327
4328       /* We can free this command tree now.  */
4329       do_cleanups (this_cmd_tree_chain);
4330
4331       if (breakpoint_proceeded)
4332         {
4333           if (target_can_async_p ())
4334             /* If we are in async mode, then the target might be still
4335                running, not stopped at any breakpoint, so nothing for
4336                us to do here -- just return to the event loop.  */
4337             ;
4338           else
4339             /* In sync mode, when execute_control_command returns
4340                we're already standing on the next breakpoint.
4341                Breakpoint commands for that stop were not run, since
4342                execute_command does not run breakpoint commands --
4343                only command_line_handler does, but that one is not
4344                involved in execution of breakpoint commands.  So, we
4345                can now execute breakpoint commands.  It should be
4346                noted that making execute_command do bpstat actions is
4347                not an option -- in this case we'll have recursive
4348                invocation of bpstat for each breakpoint with a
4349                command, and can easily blow up GDB stack.  Instead, we
4350                return true, which will trigger the caller to recall us
4351                with the new stop_bpstat.  */
4352             again = 1;
4353           break;
4354         }
4355     }
4356   do_cleanups (old_chain);
4357   return again;
4358 }
4359
4360 void
4361 bpstat_do_actions (void)
4362 {
4363   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4364
4365   /* Do any commands attached to breakpoint we are stopped at.  */
4366   while (!ptid_equal (inferior_ptid, null_ptid)
4367          && target_has_execution
4368          && !is_exited (inferior_ptid)
4369          && !is_executing (inferior_ptid))
4370     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4371        and only return when it is stopped at the next breakpoint, we
4372        keep doing breakpoint actions until it returns false to
4373        indicate the inferior was not resumed.  */
4374     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4375       break;
4376
4377   discard_cleanups (cleanup_if_error);
4378 }
4379
4380 /* Print out the (old or new) value associated with a watchpoint.  */
4381
4382 static void
4383 watchpoint_value_print (struct value *val, struct ui_file *stream)
4384 {
4385   if (val == NULL)
4386     fprintf_unfiltered (stream, _("<unreadable>"));
4387   else
4388     {
4389       struct value_print_options opts;
4390       get_user_print_options (&opts);
4391       value_print (val, stream, &opts);
4392     }
4393 }
4394
4395 /* Generic routine for printing messages indicating why we
4396    stopped.  The behavior of this function depends on the value
4397    'print_it' in the bpstat structure.  Under some circumstances we
4398    may decide not to print anything here and delegate the task to
4399    normal_stop().  */
4400
4401 static enum print_stop_action
4402 print_bp_stop_message (bpstat bs)
4403 {
4404   switch (bs->print_it)
4405     {
4406     case print_it_noop:
4407       /* Nothing should be printed for this bpstat entry.  */
4408       return PRINT_UNKNOWN;
4409       break;
4410
4411     case print_it_done:
4412       /* We still want to print the frame, but we already printed the
4413          relevant messages.  */
4414       return PRINT_SRC_AND_LOC;
4415       break;
4416
4417     case print_it_normal:
4418       {
4419         struct breakpoint *b = bs->breakpoint_at;
4420
4421         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4422            which has since been deleted.  */
4423         if (b == NULL)
4424           return PRINT_UNKNOWN;
4425
4426         /* Normal case.  Call the breakpoint's print_it method.  */
4427         return b->ops->print_it (bs);
4428       }
4429       break;
4430
4431     default:
4432       internal_error (__FILE__, __LINE__,
4433                       _("print_bp_stop_message: unrecognized enum value"));
4434       break;
4435     }
4436 }
4437
4438 /* A helper function that prints a shared library stopped event.  */
4439
4440 static void
4441 print_solib_event (int is_catchpoint)
4442 {
4443   int any_deleted
4444     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4445   int any_added
4446     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4447
4448   if (!is_catchpoint)
4449     {
4450       if (any_added || any_deleted)
4451         ui_out_text (current_uiout,
4452                      _("Stopped due to shared library event:\n"));
4453       else
4454         ui_out_text (current_uiout,
4455                      _("Stopped due to shared library event (no "
4456                        "libraries added or removed)\n"));
4457     }
4458
4459   if (ui_out_is_mi_like_p (current_uiout))
4460     ui_out_field_string (current_uiout, "reason",
4461                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4462
4463   if (any_deleted)
4464     {
4465       struct cleanup *cleanup;
4466       char *name;
4467       int ix;
4468
4469       ui_out_text (current_uiout, _("  Inferior unloaded "));
4470       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4471                                                     "removed");
4472       for (ix = 0;
4473            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4474                         ix, name);
4475            ++ix)
4476         {
4477           if (ix > 0)
4478             ui_out_text (current_uiout, "    ");
4479           ui_out_field_string (current_uiout, "library", name);
4480           ui_out_text (current_uiout, "\n");
4481         }
4482
4483       do_cleanups (cleanup);
4484     }
4485
4486   if (any_added)
4487     {
4488       struct so_list *iter;
4489       int ix;
4490       struct cleanup *cleanup;
4491
4492       ui_out_text (current_uiout, _("  Inferior loaded "));
4493       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4494                                                     "added");
4495       for (ix = 0;
4496            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4497                         ix, iter);
4498            ++ix)
4499         {
4500           if (ix > 0)
4501             ui_out_text (current_uiout, "    ");
4502           ui_out_field_string (current_uiout, "library", iter->so_name);
4503           ui_out_text (current_uiout, "\n");
4504         }
4505
4506       do_cleanups (cleanup);
4507     }
4508 }
4509
4510 /* Print a message indicating what happened.  This is called from
4511    normal_stop().  The input to this routine is the head of the bpstat
4512    list - a list of the eventpoints that caused this stop.  KIND is
4513    the target_waitkind for the stopping event.  This
4514    routine calls the generic print routine for printing a message
4515    about reasons for stopping.  This will print (for example) the
4516    "Breakpoint n," part of the output.  The return value of this
4517    routine is one of:
4518
4519    PRINT_UNKNOWN: Means we printed nothing.
4520    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4521    code to print the location.  An example is 
4522    "Breakpoint 1, " which should be followed by
4523    the location.
4524    PRINT_SRC_ONLY: Means we printed something, but there is no need
4525    to also print the location part of the message.
4526    An example is the catch/throw messages, which
4527    don't require a location appended to the end.
4528    PRINT_NOTHING: We have done some printing and we don't need any 
4529    further info to be printed.  */
4530
4531 enum print_stop_action
4532 bpstat_print (bpstat bs, int kind)
4533 {
4534   int val;
4535
4536   /* Maybe another breakpoint in the chain caused us to stop.
4537      (Currently all watchpoints go on the bpstat whether hit or not.
4538      That probably could (should) be changed, provided care is taken
4539      with respect to bpstat_explains_signal).  */
4540   for (; bs; bs = bs->next)
4541     {
4542       val = print_bp_stop_message (bs);
4543       if (val == PRINT_SRC_ONLY 
4544           || val == PRINT_SRC_AND_LOC 
4545           || val == PRINT_NOTHING)
4546         return val;
4547     }
4548
4549   /* If we had hit a shared library event breakpoint,
4550      print_bp_stop_message would print out this message.  If we hit an
4551      OS-level shared library event, do the same thing.  */
4552   if (kind == TARGET_WAITKIND_LOADED)
4553     {
4554       print_solib_event (0);
4555       return PRINT_NOTHING;
4556     }
4557
4558   /* We reached the end of the chain, or we got a null BS to start
4559      with and nothing was printed.  */
4560   return PRINT_UNKNOWN;
4561 }
4562
4563 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4564    used inside a catch_errors to evaluate the breakpoint condition.
4565    The argument is a "struct expression *" that has been cast to a
4566    "char *" to make it pass through catch_errors.  */
4567
4568 static int
4569 breakpoint_cond_eval (void *exp)
4570 {
4571   struct value *mark = value_mark ();
4572   int i = !value_true (evaluate_expression ((struct expression *) exp));
4573
4574   value_free_to_mark (mark);
4575   return i;
4576 }
4577
4578 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4579
4580 static bpstat
4581 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4582 {
4583   bpstat bs;
4584
4585   bs = (bpstat) xmalloc (sizeof (*bs));
4586   bs->next = NULL;
4587   **bs_link_pointer = bs;
4588   *bs_link_pointer = &bs->next;
4589   bs->breakpoint_at = bl->owner;
4590   bs->bp_location_at = bl;
4591   incref_bp_location (bl);
4592   /* If the condition is false, etc., don't do the commands.  */
4593   bs->commands = NULL;
4594   bs->old_val = NULL;
4595   bs->print_it = print_it_normal;
4596   return bs;
4597 }
4598 \f
4599 /* The target has stopped with waitstatus WS.  Check if any hardware
4600    watchpoints have triggered, according to the target.  */
4601
4602 int
4603 watchpoints_triggered (struct target_waitstatus *ws)
4604 {
4605   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4606   CORE_ADDR addr;
4607   struct breakpoint *b;
4608
4609   if (!stopped_by_watchpoint)
4610     {
4611       /* We were not stopped by a watchpoint.  Mark all watchpoints
4612          as not triggered.  */
4613       ALL_BREAKPOINTS (b)
4614         if (is_hardware_watchpoint (b))
4615           {
4616             struct watchpoint *w = (struct watchpoint *) b;
4617
4618             w->watchpoint_triggered = watch_triggered_no;
4619           }
4620
4621       return 0;
4622     }
4623
4624   if (!target_stopped_data_address (&current_target, &addr))
4625     {
4626       /* We were stopped by a watchpoint, but we don't know where.
4627          Mark all watchpoints as unknown.  */
4628       ALL_BREAKPOINTS (b)
4629         if (is_hardware_watchpoint (b))
4630           {
4631             struct watchpoint *w = (struct watchpoint *) b;
4632
4633             w->watchpoint_triggered = watch_triggered_unknown;
4634           }
4635
4636       return stopped_by_watchpoint;
4637     }
4638
4639   /* The target could report the data address.  Mark watchpoints
4640      affected by this data address as triggered, and all others as not
4641      triggered.  */
4642
4643   ALL_BREAKPOINTS (b)
4644     if (is_hardware_watchpoint (b))
4645       {
4646         struct watchpoint *w = (struct watchpoint *) b;
4647         struct bp_location *loc;
4648
4649         w->watchpoint_triggered = watch_triggered_no;
4650         for (loc = b->loc; loc; loc = loc->next)
4651           {
4652             if (is_masked_watchpoint (b))
4653               {
4654                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4655                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4656
4657                 if (newaddr == start)
4658                   {
4659                     w->watchpoint_triggered = watch_triggered_yes;
4660                     break;
4661                   }
4662               }
4663             /* Exact match not required.  Within range is sufficient.  */
4664             else if (target_watchpoint_addr_within_range (&current_target,
4665                                                          addr, loc->address,
4666                                                          loc->length))
4667               {
4668                 w->watchpoint_triggered = watch_triggered_yes;
4669                 break;
4670               }
4671           }
4672       }
4673
4674   return 1;
4675 }
4676
4677 /* Possible return values for watchpoint_check (this can't be an enum
4678    because of check_errors).  */
4679 /* The watchpoint has been deleted.  */
4680 #define WP_DELETED 1
4681 /* The value has changed.  */
4682 #define WP_VALUE_CHANGED 2
4683 /* The value has not changed.  */
4684 #define WP_VALUE_NOT_CHANGED 3
4685 /* Ignore this watchpoint, no matter if the value changed or not.  */
4686 #define WP_IGNORE 4
4687
4688 #define BP_TEMPFLAG 1
4689 #define BP_HARDWAREFLAG 2
4690
4691 /* Evaluate watchpoint condition expression and check if its value
4692    changed.
4693
4694    P should be a pointer to struct bpstat, but is defined as a void *
4695    in order for this function to be usable with catch_errors.  */
4696
4697 static int
4698 watchpoint_check (void *p)
4699 {
4700   bpstat bs = (bpstat) p;
4701   struct watchpoint *b;
4702   struct frame_info *fr;
4703   int within_current_scope;
4704
4705   /* BS is built from an existing struct breakpoint.  */
4706   gdb_assert (bs->breakpoint_at != NULL);
4707   b = (struct watchpoint *) bs->breakpoint_at;
4708
4709   /* If this is a local watchpoint, we only want to check if the
4710      watchpoint frame is in scope if the current thread is the thread
4711      that was used to create the watchpoint.  */
4712   if (!watchpoint_in_thread_scope (b))
4713     return WP_IGNORE;
4714
4715   if (b->exp_valid_block == NULL)
4716     within_current_scope = 1;
4717   else
4718     {
4719       struct frame_info *frame = get_current_frame ();
4720       struct gdbarch *frame_arch = get_frame_arch (frame);
4721       CORE_ADDR frame_pc = get_frame_pc (frame);
4722
4723       /* in_function_epilogue_p() returns a non-zero value if we're
4724          still in the function but the stack frame has already been
4725          invalidated.  Since we can't rely on the values of local
4726          variables after the stack has been destroyed, we are treating
4727          the watchpoint in that state as `not changed' without further
4728          checking.  Don't mark watchpoints as changed if the current
4729          frame is in an epilogue - even if they are in some other
4730          frame, our view of the stack is likely to be wrong and
4731          frame_find_by_id could error out.  */
4732       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4733         return WP_IGNORE;
4734
4735       fr = frame_find_by_id (b->watchpoint_frame);
4736       within_current_scope = (fr != NULL);
4737
4738       /* If we've gotten confused in the unwinder, we might have
4739          returned a frame that can't describe this variable.  */
4740       if (within_current_scope)
4741         {
4742           struct symbol *function;
4743
4744           function = get_frame_function (fr);
4745           if (function == NULL
4746               || !contained_in (b->exp_valid_block,
4747                                 SYMBOL_BLOCK_VALUE (function)))
4748             within_current_scope = 0;
4749         }
4750
4751       if (within_current_scope)
4752         /* If we end up stopping, the current frame will get selected
4753            in normal_stop.  So this call to select_frame won't affect
4754            the user.  */
4755         select_frame (fr);
4756     }
4757
4758   if (within_current_scope)
4759     {
4760       /* We use value_{,free_to_}mark because it could be a *long*
4761          time before we return to the command level and call
4762          free_all_values.  We can't call free_all_values because we
4763          might be in the middle of evaluating a function call.  */
4764
4765       int pc = 0;
4766       struct value *mark;
4767       struct value *new_val;
4768
4769       if (is_masked_watchpoint (&b->base))
4770         /* Since we don't know the exact trigger address (from
4771            stopped_data_address), just tell the user we've triggered
4772            a mask watchpoint.  */
4773         return WP_VALUE_CHANGED;
4774
4775       mark = value_mark ();
4776       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4777
4778       /* We use value_equal_contents instead of value_equal because
4779          the latter coerces an array to a pointer, thus comparing just
4780          the address of the array instead of its contents.  This is
4781          not what we want.  */
4782       if ((b->val != NULL) != (new_val != NULL)
4783           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4784         {
4785           if (new_val != NULL)
4786             {
4787               release_value (new_val);
4788               value_free_to_mark (mark);
4789             }
4790           bs->old_val = b->val;
4791           b->val = new_val;
4792           b->val_valid = 1;
4793           return WP_VALUE_CHANGED;
4794         }
4795       else
4796         {
4797           /* Nothing changed.  */
4798           value_free_to_mark (mark);
4799           return WP_VALUE_NOT_CHANGED;
4800         }
4801     }
4802   else
4803     {
4804       struct ui_out *uiout = current_uiout;
4805
4806       /* This seems like the only logical thing to do because
4807          if we temporarily ignored the watchpoint, then when
4808          we reenter the block in which it is valid it contains
4809          garbage (in the case of a function, it may have two
4810          garbage values, one before and one after the prologue).
4811          So we can't even detect the first assignment to it and
4812          watch after that (since the garbage may or may not equal
4813          the first value assigned).  */
4814       /* We print all the stop information in
4815          breakpoint_ops->print_it, but in this case, by the time we
4816          call breakpoint_ops->print_it this bp will be deleted
4817          already.  So we have no choice but print the information
4818          here.  */
4819       if (ui_out_is_mi_like_p (uiout))
4820         ui_out_field_string
4821           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4822       ui_out_text (uiout, "\nWatchpoint ");
4823       ui_out_field_int (uiout, "wpnum", b->base.number);
4824       ui_out_text (uiout,
4825                    " deleted because the program has left the block in\n\
4826 which its expression is valid.\n");     
4827
4828       /* Make sure the watchpoint's commands aren't executed.  */
4829       decref_counted_command_line (&b->base.commands);
4830       watchpoint_del_at_next_stop (b);
4831
4832       return WP_DELETED;
4833     }
4834 }
4835
4836 /* Return true if it looks like target has stopped due to hitting
4837    breakpoint location BL.  This function does not check if we should
4838    stop, only if BL explains the stop.  */
4839
4840 static int
4841 bpstat_check_location (const struct bp_location *bl,
4842                        struct address_space *aspace, CORE_ADDR bp_addr,
4843                        const struct target_waitstatus *ws)
4844 {
4845   struct breakpoint *b = bl->owner;
4846
4847   /* BL is from an existing breakpoint.  */
4848   gdb_assert (b != NULL);
4849
4850   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4851 }
4852
4853 /* Determine if the watched values have actually changed, and we
4854    should stop.  If not, set BS->stop to 0.  */
4855
4856 static void
4857 bpstat_check_watchpoint (bpstat bs)
4858 {
4859   const struct bp_location *bl;
4860   struct watchpoint *b;
4861
4862   /* BS is built for existing struct breakpoint.  */
4863   bl = bs->bp_location_at;
4864   gdb_assert (bl != NULL);
4865   b = (struct watchpoint *) bs->breakpoint_at;
4866   gdb_assert (b != NULL);
4867
4868     {
4869       int must_check_value = 0;
4870       
4871       if (b->base.type == bp_watchpoint)
4872         /* For a software watchpoint, we must always check the
4873            watched value.  */
4874         must_check_value = 1;
4875       else if (b->watchpoint_triggered == watch_triggered_yes)
4876         /* We have a hardware watchpoint (read, write, or access)
4877            and the target earlier reported an address watched by
4878            this watchpoint.  */
4879         must_check_value = 1;
4880       else if (b->watchpoint_triggered == watch_triggered_unknown
4881                && b->base.type == bp_hardware_watchpoint)
4882         /* We were stopped by a hardware watchpoint, but the target could
4883            not report the data address.  We must check the watchpoint's
4884            value.  Access and read watchpoints are out of luck; without
4885            a data address, we can't figure it out.  */
4886         must_check_value = 1;
4887
4888       if (must_check_value)
4889         {
4890           char *message
4891             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4892                           b->base.number);
4893           struct cleanup *cleanups = make_cleanup (xfree, message);
4894           int e = catch_errors (watchpoint_check, bs, message,
4895                                 RETURN_MASK_ALL);
4896           do_cleanups (cleanups);
4897           switch (e)
4898             {
4899             case WP_DELETED:
4900               /* We've already printed what needs to be printed.  */
4901               bs->print_it = print_it_done;
4902               /* Stop.  */
4903               break;
4904             case WP_IGNORE:
4905               bs->print_it = print_it_noop;
4906               bs->stop = 0;
4907               break;
4908             case WP_VALUE_CHANGED:
4909               if (b->base.type == bp_read_watchpoint)
4910                 {
4911                   /* There are two cases to consider here:
4912
4913                      1. We're watching the triggered memory for reads.
4914                      In that case, trust the target, and always report
4915                      the watchpoint hit to the user.  Even though
4916                      reads don't cause value changes, the value may
4917                      have changed since the last time it was read, and
4918                      since we're not trapping writes, we will not see
4919                      those, and as such we should ignore our notion of
4920                      old value.
4921
4922                      2. We're watching the triggered memory for both
4923                      reads and writes.  There are two ways this may
4924                      happen:
4925
4926                      2.1. This is a target that can't break on data
4927                      reads only, but can break on accesses (reads or
4928                      writes), such as e.g., x86.  We detect this case
4929                      at the time we try to insert read watchpoints.
4930
4931                      2.2. Otherwise, the target supports read
4932                      watchpoints, but, the user set an access or write
4933                      watchpoint watching the same memory as this read
4934                      watchpoint.
4935
4936                      If we're watching memory writes as well as reads,
4937                      ignore watchpoint hits when we find that the
4938                      value hasn't changed, as reads don't cause
4939                      changes.  This still gives false positives when
4940                      the program writes the same value to memory as
4941                      what there was already in memory (we will confuse
4942                      it for a read), but it's much better than
4943                      nothing.  */
4944
4945                   int other_write_watchpoint = 0;
4946
4947                   if (bl->watchpoint_type == hw_read)
4948                     {
4949                       struct breakpoint *other_b;
4950
4951                       ALL_BREAKPOINTS (other_b)
4952                         if (other_b->type == bp_hardware_watchpoint
4953                             || other_b->type == bp_access_watchpoint)
4954                           {
4955                             struct watchpoint *other_w =
4956                               (struct watchpoint *) other_b;
4957
4958                             if (other_w->watchpoint_triggered
4959                                 == watch_triggered_yes)
4960                               {
4961                                 other_write_watchpoint = 1;
4962                                 break;
4963                               }
4964                           }
4965                     }
4966
4967                   if (other_write_watchpoint
4968                       || bl->watchpoint_type == hw_access)
4969                     {
4970                       /* We're watching the same memory for writes,
4971                          and the value changed since the last time we
4972                          updated it, so this trap must be for a write.
4973                          Ignore it.  */
4974                       bs->print_it = print_it_noop;
4975                       bs->stop = 0;
4976                     }
4977                 }
4978               break;
4979             case WP_VALUE_NOT_CHANGED:
4980               if (b->base.type == bp_hardware_watchpoint
4981                   || b->base.type == bp_watchpoint)
4982                 {
4983                   /* Don't stop: write watchpoints shouldn't fire if
4984                      the value hasn't changed.  */
4985                   bs->print_it = print_it_noop;
4986                   bs->stop = 0;
4987                 }
4988               /* Stop.  */
4989               break;
4990             default:
4991               /* Can't happen.  */
4992             case 0:
4993               /* Error from catch_errors.  */
4994               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4995               watchpoint_del_at_next_stop (b);
4996               /* We've already printed what needs to be printed.  */
4997               bs->print_it = print_it_done;
4998               break;
4999             }
5000         }
5001       else      /* must_check_value == 0 */
5002         {
5003           /* This is a case where some watchpoint(s) triggered, but
5004              not at the address of this watchpoint, or else no
5005              watchpoint triggered after all.  So don't print
5006              anything for this watchpoint.  */
5007           bs->print_it = print_it_noop;
5008           bs->stop = 0;
5009         }
5010     }
5011 }
5012
5013
5014 /* Check conditions (condition proper, frame, thread and ignore count)
5015    of breakpoint referred to by BS.  If we should not stop for this
5016    breakpoint, set BS->stop to 0.  */
5017
5018 static void
5019 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5020 {
5021   int thread_id = pid_to_thread_id (ptid);
5022   const struct bp_location *bl;
5023   struct breakpoint *b;
5024
5025   /* BS is built for existing struct breakpoint.  */
5026   bl = bs->bp_location_at;
5027   gdb_assert (bl != NULL);
5028   b = bs->breakpoint_at;
5029   gdb_assert (b != NULL);
5030
5031   /* Even if the target evaluated the condition on its end and notified GDB, we
5032      need to do so again since GDB does not know if we stopped due to a
5033      breakpoint or a single step breakpoint.  */
5034
5035   if (frame_id_p (b->frame_id)
5036       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5037     bs->stop = 0;
5038   else if (bs->stop)
5039     {
5040       int value_is_zero = 0;
5041       struct expression *cond;
5042
5043       /* Evaluate Python breakpoints that have a "stop"
5044          method implemented.  */
5045       if (b->py_bp_object)
5046         bs->stop = gdbpy_should_stop (b->py_bp_object);
5047
5048       if (is_watchpoint (b))
5049         {
5050           struct watchpoint *w = (struct watchpoint *) b;
5051
5052           cond = w->cond_exp;
5053         }
5054       else
5055         cond = bl->cond;
5056
5057       if (cond && b->disposition != disp_del_at_next_stop)
5058         {
5059           int within_current_scope = 1;
5060           struct watchpoint * w;
5061
5062           /* We use value_mark and value_free_to_mark because it could
5063              be a long time before we return to the command level and
5064              call free_all_values.  We can't call free_all_values
5065              because we might be in the middle of evaluating a
5066              function call.  */
5067           struct value *mark = value_mark ();
5068
5069           if (is_watchpoint (b))
5070             w = (struct watchpoint *) b;
5071           else
5072             w = NULL;
5073
5074           /* Need to select the frame, with all that implies so that
5075              the conditions will have the right context.  Because we
5076              use the frame, we will not see an inlined function's
5077              variables when we arrive at a breakpoint at the start
5078              of the inlined function; the current frame will be the
5079              call site.  */
5080           if (w == NULL || w->cond_exp_valid_block == NULL)
5081             select_frame (get_current_frame ());
5082           else
5083             {
5084               struct frame_info *frame;
5085
5086               /* For local watchpoint expressions, which particular
5087                  instance of a local is being watched matters, so we
5088                  keep track of the frame to evaluate the expression
5089                  in.  To evaluate the condition however, it doesn't
5090                  really matter which instantiation of the function
5091                  where the condition makes sense triggers the
5092                  watchpoint.  This allows an expression like "watch
5093                  global if q > 10" set in `func', catch writes to
5094                  global on all threads that call `func', or catch
5095                  writes on all recursive calls of `func' by a single
5096                  thread.  We simply always evaluate the condition in
5097                  the innermost frame that's executing where it makes
5098                  sense to evaluate the condition.  It seems
5099                  intuitive.  */
5100               frame = block_innermost_frame (w->cond_exp_valid_block);
5101               if (frame != NULL)
5102                 select_frame (frame);
5103               else
5104                 within_current_scope = 0;
5105             }
5106           if (within_current_scope)
5107             value_is_zero
5108               = catch_errors (breakpoint_cond_eval, cond,
5109                               "Error in testing breakpoint condition:\n",
5110                               RETURN_MASK_ALL);
5111           else
5112             {
5113               warning (_("Watchpoint condition cannot be tested "
5114                          "in the current scope"));
5115               /* If we failed to set the right context for this
5116                  watchpoint, unconditionally report it.  */
5117               value_is_zero = 0;
5118             }
5119           /* FIXME-someday, should give breakpoint #.  */
5120           value_free_to_mark (mark);
5121         }
5122
5123       if (cond && value_is_zero)
5124         {
5125           bs->stop = 0;
5126         }
5127       else if (b->thread != -1 && b->thread != thread_id)
5128         {
5129           bs->stop = 0;
5130         }
5131       else if (b->ignore_count > 0)
5132         {
5133           b->ignore_count--;
5134           bs->stop = 0;
5135           /* Increase the hit count even though we don't stop.  */
5136           ++(b->hit_count);
5137           observer_notify_breakpoint_modified (b);
5138         }       
5139     }
5140 }
5141
5142
5143 /* Get a bpstat associated with having just stopped at address
5144    BP_ADDR in thread PTID.
5145
5146    Determine whether we stopped at a breakpoint, etc, or whether we
5147    don't understand this stop.  Result is a chain of bpstat's such
5148    that:
5149
5150    if we don't understand the stop, the result is a null pointer.
5151
5152    if we understand why we stopped, the result is not null.
5153
5154    Each element of the chain refers to a particular breakpoint or
5155    watchpoint at which we have stopped.  (We may have stopped for
5156    several reasons concurrently.)
5157
5158    Each element of the chain has valid next, breakpoint_at,
5159    commands, FIXME??? fields.  */
5160
5161 bpstat
5162 bpstat_stop_status (struct address_space *aspace,
5163                     CORE_ADDR bp_addr, ptid_t ptid,
5164                     const struct target_waitstatus *ws)
5165 {
5166   struct breakpoint *b = NULL;
5167   struct bp_location *bl;
5168   struct bp_location *loc;
5169   /* First item of allocated bpstat's.  */
5170   bpstat bs_head = NULL, *bs_link = &bs_head;
5171   /* Pointer to the last thing in the chain currently.  */
5172   bpstat bs;
5173   int ix;
5174   int need_remove_insert;
5175   int removed_any;
5176
5177   /* First, build the bpstat chain with locations that explain a
5178      target stop, while being careful to not set the target running,
5179      as that may invalidate locations (in particular watchpoint
5180      locations are recreated).  Resuming will happen here with
5181      breakpoint conditions or watchpoint expressions that include
5182      inferior function calls.  */
5183
5184   ALL_BREAKPOINTS (b)
5185     {
5186       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5187         continue;
5188
5189       for (bl = b->loc; bl != NULL; bl = bl->next)
5190         {
5191           /* For hardware watchpoints, we look only at the first
5192              location.  The watchpoint_check function will work on the
5193              entire expression, not the individual locations.  For
5194              read watchpoints, the watchpoints_triggered function has
5195              checked all locations already.  */
5196           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5197             break;
5198
5199           if (!bl->enabled || bl->shlib_disabled)
5200             continue;
5201
5202           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5203             continue;
5204
5205           /* Come here if it's a watchpoint, or if the break address
5206              matches.  */
5207
5208           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5209                                                    explain stop.  */
5210
5211           /* Assume we stop.  Should we find a watchpoint that is not
5212              actually triggered, or if the condition of the breakpoint
5213              evaluates as false, we'll reset 'stop' to 0.  */
5214           bs->stop = 1;
5215           bs->print = 1;
5216
5217           /* If this is a scope breakpoint, mark the associated
5218              watchpoint as triggered so that we will handle the
5219              out-of-scope event.  We'll get to the watchpoint next
5220              iteration.  */
5221           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5222             {
5223               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5224
5225               w->watchpoint_triggered = watch_triggered_yes;
5226             }
5227         }
5228     }
5229
5230   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5231     {
5232       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5233         {
5234           bs = bpstat_alloc (loc, &bs_link);
5235           /* For hits of moribund locations, we should just proceed.  */
5236           bs->stop = 0;
5237           bs->print = 0;
5238           bs->print_it = print_it_noop;
5239         }
5240     }
5241
5242   /* A bit of special processing for shlib breakpoints.  We need to
5243      process solib loading here, so that the lists of loaded and
5244      unloaded libraries are correct before we handle "catch load" and
5245      "catch unload".  */
5246   for (bs = bs_head; bs != NULL; bs = bs->next)
5247     {
5248       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5249         {
5250           handle_solib_event ();
5251           break;
5252         }
5253     }
5254
5255   /* Now go through the locations that caused the target to stop, and
5256      check whether we're interested in reporting this stop to higher
5257      layers, or whether we should resume the target transparently.  */
5258
5259   removed_any = 0;
5260
5261   for (bs = bs_head; bs != NULL; bs = bs->next)
5262     {
5263       if (!bs->stop)
5264         continue;
5265
5266       b = bs->breakpoint_at;
5267       b->ops->check_status (bs);
5268       if (bs->stop)
5269         {
5270           bpstat_check_breakpoint_conditions (bs, ptid);
5271
5272           if (bs->stop)
5273             {
5274               ++(b->hit_count);
5275               observer_notify_breakpoint_modified (b);
5276
5277               /* We will stop here.  */
5278               if (b->disposition == disp_disable)
5279                 {
5280                   --(b->enable_count);
5281                   if (b->enable_count <= 0
5282                       && b->enable_state != bp_permanent)
5283                     b->enable_state = bp_disabled;
5284                   removed_any = 1;
5285                 }
5286               if (b->silent)
5287                 bs->print = 0;
5288               bs->commands = b->commands;
5289               incref_counted_command_line (bs->commands);
5290               if (command_line_is_silent (bs->commands
5291                                           ? bs->commands->commands : NULL))
5292                 bs->print = 0;
5293             }
5294
5295         }
5296
5297       /* Print nothing for this entry if we don't stop or don't
5298          print.  */
5299       if (!bs->stop || !bs->print)
5300         bs->print_it = print_it_noop;
5301     }
5302
5303   /* If we aren't stopping, the value of some hardware watchpoint may
5304      not have changed, but the intermediate memory locations we are
5305      watching may have.  Don't bother if we're stopping; this will get
5306      done later.  */
5307   need_remove_insert = 0;
5308   if (! bpstat_causes_stop (bs_head))
5309     for (bs = bs_head; bs != NULL; bs = bs->next)
5310       if (!bs->stop
5311           && bs->breakpoint_at
5312           && is_hardware_watchpoint (bs->breakpoint_at))
5313         {
5314           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5315
5316           update_watchpoint (w, 0 /* don't reparse.  */);
5317           need_remove_insert = 1;
5318         }
5319
5320   if (need_remove_insert)
5321     update_global_location_list (1);
5322   else if (removed_any)
5323     update_global_location_list (0);
5324
5325   return bs_head;
5326 }
5327
5328 static void
5329 handle_jit_event (void)
5330 {
5331   struct frame_info *frame;
5332   struct gdbarch *gdbarch;
5333
5334   /* Switch terminal for any messages produced by
5335      breakpoint_re_set.  */
5336   target_terminal_ours_for_output ();
5337
5338   frame = get_current_frame ();
5339   gdbarch = get_frame_arch (frame);
5340
5341   jit_event_handler (gdbarch);
5342
5343   target_terminal_inferior ();
5344 }
5345
5346 /* Handle an solib event by calling solib_add.  */
5347
5348 void
5349 handle_solib_event (void)
5350 {
5351   clear_program_space_solib_cache (current_inferior ()->pspace);
5352
5353   /* Check for any newly added shared libraries if we're supposed to
5354      be adding them automatically.  Switch terminal for any messages
5355      produced by breakpoint_re_set.  */
5356   target_terminal_ours_for_output ();
5357   solib_add (NULL, 0, &current_target, auto_solib_add);
5358   target_terminal_inferior ();
5359 }
5360
5361 /* Prepare WHAT final decision for infrun.  */
5362
5363 /* Decide what infrun needs to do with this bpstat.  */
5364
5365 struct bpstat_what
5366 bpstat_what (bpstat bs_head)
5367 {
5368   struct bpstat_what retval;
5369   int jit_event = 0;
5370   bpstat bs;
5371
5372   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5373   retval.call_dummy = STOP_NONE;
5374   retval.is_longjmp = 0;
5375
5376   for (bs = bs_head; bs != NULL; bs = bs->next)
5377     {
5378       /* Extract this BS's action.  After processing each BS, we check
5379          if its action overrides all we've seem so far.  */
5380       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5381       enum bptype bptype;
5382
5383       if (bs->breakpoint_at == NULL)
5384         {
5385           /* I suspect this can happen if it was a momentary
5386              breakpoint which has since been deleted.  */
5387           bptype = bp_none;
5388         }
5389       else
5390         bptype = bs->breakpoint_at->type;
5391
5392       switch (bptype)
5393         {
5394         case bp_none:
5395           break;
5396         case bp_breakpoint:
5397         case bp_hardware_breakpoint:
5398         case bp_until:
5399         case bp_finish:
5400         case bp_shlib_event:
5401           if (bs->stop)
5402             {
5403               if (bs->print)
5404                 this_action = BPSTAT_WHAT_STOP_NOISY;
5405               else
5406                 this_action = BPSTAT_WHAT_STOP_SILENT;
5407             }
5408           else
5409             this_action = BPSTAT_WHAT_SINGLE;
5410           break;
5411         case bp_watchpoint:
5412         case bp_hardware_watchpoint:
5413         case bp_read_watchpoint:
5414         case bp_access_watchpoint:
5415           if (bs->stop)
5416             {
5417               if (bs->print)
5418                 this_action = BPSTAT_WHAT_STOP_NOISY;
5419               else
5420                 this_action = BPSTAT_WHAT_STOP_SILENT;
5421             }
5422           else
5423             {
5424               /* There was a watchpoint, but we're not stopping.
5425                  This requires no further action.  */
5426             }
5427           break;
5428         case bp_longjmp:
5429         case bp_longjmp_call_dummy:
5430         case bp_exception:
5431           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5432           retval.is_longjmp = bptype != bp_exception;
5433           break;
5434         case bp_longjmp_resume:
5435         case bp_exception_resume:
5436           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5437           retval.is_longjmp = bptype == bp_longjmp_resume;
5438           break;
5439         case bp_step_resume:
5440           if (bs->stop)
5441             this_action = BPSTAT_WHAT_STEP_RESUME;
5442           else
5443             {
5444               /* It is for the wrong frame.  */
5445               this_action = BPSTAT_WHAT_SINGLE;
5446             }
5447           break;
5448         case bp_hp_step_resume:
5449           if (bs->stop)
5450             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5451           else
5452             {
5453               /* It is for the wrong frame.  */
5454               this_action = BPSTAT_WHAT_SINGLE;
5455             }
5456           break;
5457         case bp_watchpoint_scope:
5458         case bp_thread_event:
5459         case bp_overlay_event:
5460         case bp_longjmp_master:
5461         case bp_std_terminate_master:
5462         case bp_exception_master:
5463           this_action = BPSTAT_WHAT_SINGLE;
5464           break;
5465         case bp_catchpoint:
5466           if (bs->stop)
5467             {
5468               if (bs->print)
5469                 this_action = BPSTAT_WHAT_STOP_NOISY;
5470               else
5471                 this_action = BPSTAT_WHAT_STOP_SILENT;
5472             }
5473           else
5474             {
5475               /* There was a catchpoint, but we're not stopping.
5476                  This requires no further action.  */
5477             }
5478           break;
5479         case bp_jit_event:
5480           jit_event = 1;
5481           this_action = BPSTAT_WHAT_SINGLE;
5482           break;
5483         case bp_call_dummy:
5484           /* Make sure the action is stop (silent or noisy),
5485              so infrun.c pops the dummy frame.  */
5486           retval.call_dummy = STOP_STACK_DUMMY;
5487           this_action = BPSTAT_WHAT_STOP_SILENT;
5488           break;
5489         case bp_std_terminate:
5490           /* Make sure the action is stop (silent or noisy),
5491              so infrun.c pops the dummy frame.  */
5492           retval.call_dummy = STOP_STD_TERMINATE;
5493           this_action = BPSTAT_WHAT_STOP_SILENT;
5494           break;
5495         case bp_tracepoint:
5496         case bp_fast_tracepoint:
5497         case bp_static_tracepoint:
5498           /* Tracepoint hits should not be reported back to GDB, and
5499              if one got through somehow, it should have been filtered
5500              out already.  */
5501           internal_error (__FILE__, __LINE__,
5502                           _("bpstat_what: tracepoint encountered"));
5503           break;
5504         case bp_gnu_ifunc_resolver:
5505           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5506           this_action = BPSTAT_WHAT_SINGLE;
5507           break;
5508         case bp_gnu_ifunc_resolver_return:
5509           /* The breakpoint will be removed, execution will restart from the
5510              PC of the former breakpoint.  */
5511           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5512           break;
5513
5514         case bp_dprintf:
5515           if (bs->stop)
5516             this_action = BPSTAT_WHAT_STOP_SILENT;
5517           else
5518             this_action = BPSTAT_WHAT_SINGLE;
5519           break;
5520
5521         default:
5522           internal_error (__FILE__, __LINE__,
5523                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5524         }
5525
5526       retval.main_action = max (retval.main_action, this_action);
5527     }
5528
5529   /* These operations may affect the bs->breakpoint_at state so they are
5530      delayed after MAIN_ACTION is decided above.  */
5531
5532   if (jit_event)
5533     {
5534       if (debug_infrun)
5535         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5536
5537       handle_jit_event ();
5538     }
5539
5540   for (bs = bs_head; bs != NULL; bs = bs->next)
5541     {
5542       struct breakpoint *b = bs->breakpoint_at;
5543
5544       if (b == NULL)
5545         continue;
5546       switch (b->type)
5547         {
5548         case bp_gnu_ifunc_resolver:
5549           gnu_ifunc_resolver_stop (b);
5550           break;
5551         case bp_gnu_ifunc_resolver_return:
5552           gnu_ifunc_resolver_return_stop (b);
5553           break;
5554         }
5555     }
5556
5557   return retval;
5558 }
5559
5560 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5561    without hardware support).  This isn't related to a specific bpstat,
5562    just to things like whether watchpoints are set.  */
5563
5564 int
5565 bpstat_should_step (void)
5566 {
5567   struct breakpoint *b;
5568
5569   ALL_BREAKPOINTS (b)
5570     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5571       return 1;
5572   return 0;
5573 }
5574
5575 int
5576 bpstat_causes_stop (bpstat bs)
5577 {
5578   for (; bs != NULL; bs = bs->next)
5579     if (bs->stop)
5580       return 1;
5581
5582   return 0;
5583 }
5584
5585 \f
5586
5587 /* Compute a string of spaces suitable to indent the next line
5588    so it starts at the position corresponding to the table column
5589    named COL_NAME in the currently active table of UIOUT.  */
5590
5591 static char *
5592 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5593 {
5594   static char wrap_indent[80];
5595   int i, total_width, width, align;
5596   char *text;
5597
5598   total_width = 0;
5599   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5600     {
5601       if (strcmp (text, col_name) == 0)
5602         {
5603           gdb_assert (total_width < sizeof wrap_indent);
5604           memset (wrap_indent, ' ', total_width);
5605           wrap_indent[total_width] = 0;
5606
5607           return wrap_indent;
5608         }
5609
5610       total_width += width + 1;
5611     }
5612
5613   return NULL;
5614 }
5615
5616 /* Determine if the locations of this breakpoint will have their conditions
5617    evaluated by the target, host or a mix of both.  Returns the following:
5618
5619     "host": Host evals condition.
5620     "host or target": Host or Target evals condition.
5621     "target": Target evals condition.
5622 */
5623
5624 static const char *
5625 bp_condition_evaluator (struct breakpoint *b)
5626 {
5627   struct bp_location *bl;
5628   char host_evals = 0;
5629   char target_evals = 0;
5630
5631   if (!b)
5632     return NULL;
5633
5634   if (!is_breakpoint (b))
5635     return NULL;
5636
5637   if (gdb_evaluates_breakpoint_condition_p ()
5638       || !target_supports_evaluation_of_breakpoint_conditions ())
5639     return condition_evaluation_host;
5640
5641   for (bl = b->loc; bl; bl = bl->next)
5642     {
5643       if (bl->cond_bytecode)
5644         target_evals++;
5645       else
5646         host_evals++;
5647     }
5648
5649   if (host_evals && target_evals)
5650     return condition_evaluation_both;
5651   else if (target_evals)
5652     return condition_evaluation_target;
5653   else
5654     return condition_evaluation_host;
5655 }
5656
5657 /* Determine the breakpoint location's condition evaluator.  This is
5658    similar to bp_condition_evaluator, but for locations.  */
5659
5660 static const char *
5661 bp_location_condition_evaluator (struct bp_location *bl)
5662 {
5663   if (bl && !is_breakpoint (bl->owner))
5664     return NULL;
5665
5666   if (gdb_evaluates_breakpoint_condition_p ()
5667       || !target_supports_evaluation_of_breakpoint_conditions ())
5668     return condition_evaluation_host;
5669
5670   if (bl && bl->cond_bytecode)
5671     return condition_evaluation_target;
5672   else
5673     return condition_evaluation_host;
5674 }
5675
5676 /* Print the LOC location out of the list of B->LOC locations.  */
5677
5678 static void
5679 print_breakpoint_location (struct breakpoint *b,
5680                            struct bp_location *loc)
5681 {
5682   struct ui_out *uiout = current_uiout;
5683   struct cleanup *old_chain = save_current_program_space ();
5684
5685   if (loc != NULL && loc->shlib_disabled)
5686     loc = NULL;
5687
5688   if (loc != NULL)
5689     set_current_program_space (loc->pspace);
5690
5691   if (b->display_canonical)
5692     ui_out_field_string (uiout, "what", b->addr_string);
5693   else if (loc && loc->symtab)
5694     {
5695       struct symbol *sym 
5696         = find_pc_sect_function (loc->address, loc->section);
5697       if (sym)
5698         {
5699           ui_out_text (uiout, "in ");
5700           ui_out_field_string (uiout, "func",
5701                                SYMBOL_PRINT_NAME (sym));
5702           ui_out_text (uiout, " ");
5703           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5704           ui_out_text (uiout, "at ");
5705         }
5706       ui_out_field_string (uiout, "file",
5707                            symtab_to_filename_for_display (loc->symtab));
5708       ui_out_text (uiout, ":");
5709
5710       if (ui_out_is_mi_like_p (uiout))
5711         ui_out_field_string (uiout, "fullname",
5712                              symtab_to_fullname (loc->symtab));
5713       
5714       ui_out_field_int (uiout, "line", loc->line_number);
5715     }
5716   else if (loc)
5717     {
5718       struct ui_file *stb = mem_fileopen ();
5719       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5720
5721       print_address_symbolic (loc->gdbarch, loc->address, stb,
5722                               demangle, "");
5723       ui_out_field_stream (uiout, "at", stb);
5724
5725       do_cleanups (stb_chain);
5726     }
5727   else
5728     ui_out_field_string (uiout, "pending", b->addr_string);
5729
5730   if (loc && is_breakpoint (b)
5731       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5732       && bp_condition_evaluator (b) == condition_evaluation_both)
5733     {
5734       ui_out_text (uiout, " (");
5735       ui_out_field_string (uiout, "evaluated-by",
5736                            bp_location_condition_evaluator (loc));
5737       ui_out_text (uiout, ")");
5738     }
5739
5740   do_cleanups (old_chain);
5741 }
5742
5743 static const char *
5744 bptype_string (enum bptype type)
5745 {
5746   struct ep_type_description
5747     {
5748       enum bptype type;
5749       char *description;
5750     };
5751   static struct ep_type_description bptypes[] =
5752   {
5753     {bp_none, "?deleted?"},
5754     {bp_breakpoint, "breakpoint"},
5755     {bp_hardware_breakpoint, "hw breakpoint"},
5756     {bp_until, "until"},
5757     {bp_finish, "finish"},
5758     {bp_watchpoint, "watchpoint"},
5759     {bp_hardware_watchpoint, "hw watchpoint"},
5760     {bp_read_watchpoint, "read watchpoint"},
5761     {bp_access_watchpoint, "acc watchpoint"},
5762     {bp_longjmp, "longjmp"},
5763     {bp_longjmp_resume, "longjmp resume"},
5764     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5765     {bp_exception, "exception"},
5766     {bp_exception_resume, "exception resume"},
5767     {bp_step_resume, "step resume"},
5768     {bp_hp_step_resume, "high-priority step resume"},
5769     {bp_watchpoint_scope, "watchpoint scope"},
5770     {bp_call_dummy, "call dummy"},
5771     {bp_std_terminate, "std::terminate"},
5772     {bp_shlib_event, "shlib events"},
5773     {bp_thread_event, "thread events"},
5774     {bp_overlay_event, "overlay events"},
5775     {bp_longjmp_master, "longjmp master"},
5776     {bp_std_terminate_master, "std::terminate master"},
5777     {bp_exception_master, "exception master"},
5778     {bp_catchpoint, "catchpoint"},
5779     {bp_tracepoint, "tracepoint"},
5780     {bp_fast_tracepoint, "fast tracepoint"},
5781     {bp_static_tracepoint, "static tracepoint"},
5782     {bp_dprintf, "dprintf"},
5783     {bp_jit_event, "jit events"},
5784     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5785     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5786   };
5787
5788   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5789       || ((int) type != bptypes[(int) type].type))
5790     internal_error (__FILE__, __LINE__,
5791                     _("bptypes table does not describe type #%d."),
5792                     (int) type);
5793
5794   return bptypes[(int) type].description;
5795 }
5796
5797 DEF_VEC_I(int);
5798
5799 /* For MI, output a field named 'thread-groups' with a list as the value.
5800    For CLI, prefix the list with the string 'inf'. */
5801
5802 static void
5803 output_thread_groups (struct ui_out *uiout,
5804                       const char *field_name,
5805                       VEC(int) *inf_num,
5806                       int mi_only)
5807 {
5808   struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
5809                                                                 field_name);
5810   int is_mi = ui_out_is_mi_like_p (uiout);
5811   int inf;
5812   int i;
5813
5814   /* For backward compatibility, don't display inferiors in CLI unless
5815      there are several.  Always display them for MI. */
5816   if (!is_mi && mi_only)
5817     return;
5818
5819   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5820     {
5821       if (is_mi)
5822         {
5823           char mi_group[10];
5824
5825           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5826           ui_out_field_string (uiout, NULL, mi_group);
5827         }
5828       else
5829         {
5830           if (i == 0)
5831             ui_out_text (uiout, " inf ");
5832           else
5833             ui_out_text (uiout, ", ");
5834         
5835           ui_out_text (uiout, plongest (inf));
5836         }
5837     }
5838
5839   do_cleanups (back_to);
5840 }
5841
5842 /* Print B to gdb_stdout.  */
5843
5844 static void
5845 print_one_breakpoint_location (struct breakpoint *b,
5846                                struct bp_location *loc,
5847                                int loc_number,
5848                                struct bp_location **last_loc,
5849                                int allflag)
5850 {
5851   struct command_line *l;
5852   static char bpenables[] = "nynny";
5853
5854   struct ui_out *uiout = current_uiout;
5855   int header_of_multiple = 0;
5856   int part_of_multiple = (loc != NULL);
5857   struct value_print_options opts;
5858
5859   get_user_print_options (&opts);
5860
5861   gdb_assert (!loc || loc_number != 0);
5862   /* See comment in print_one_breakpoint concerning treatment of
5863      breakpoints with single disabled location.  */
5864   if (loc == NULL 
5865       && (b->loc != NULL 
5866           && (b->loc->next != NULL || !b->loc->enabled)))
5867     header_of_multiple = 1;
5868   if (loc == NULL)
5869     loc = b->loc;
5870
5871   annotate_record ();
5872
5873   /* 1 */
5874   annotate_field (0);
5875   if (part_of_multiple)
5876     {
5877       char *formatted;
5878       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5879       ui_out_field_string (uiout, "number", formatted);
5880       xfree (formatted);
5881     }
5882   else
5883     {
5884       ui_out_field_int (uiout, "number", b->number);
5885     }
5886
5887   /* 2 */
5888   annotate_field (1);
5889   if (part_of_multiple)
5890     ui_out_field_skip (uiout, "type");
5891   else
5892     ui_out_field_string (uiout, "type", bptype_string (b->type));
5893
5894   /* 3 */
5895   annotate_field (2);
5896   if (part_of_multiple)
5897     ui_out_field_skip (uiout, "disp");
5898   else
5899     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5900
5901
5902   /* 4 */
5903   annotate_field (3);
5904   if (part_of_multiple)
5905     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5906   else
5907     ui_out_field_fmt (uiout, "enabled", "%c", 
5908                       bpenables[(int) b->enable_state]);
5909   ui_out_spaces (uiout, 2);
5910
5911   
5912   /* 5 and 6 */
5913   if (b->ops != NULL && b->ops->print_one != NULL)
5914     {
5915       /* Although the print_one can possibly print all locations,
5916          calling it here is not likely to get any nice result.  So,
5917          make sure there's just one location.  */
5918       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5919       b->ops->print_one (b, last_loc);
5920     }
5921   else
5922     switch (b->type)
5923       {
5924       case bp_none:
5925         internal_error (__FILE__, __LINE__,
5926                         _("print_one_breakpoint: bp_none encountered\n"));
5927         break;
5928
5929       case bp_watchpoint:
5930       case bp_hardware_watchpoint:
5931       case bp_read_watchpoint:
5932       case bp_access_watchpoint:
5933         {
5934           struct watchpoint *w = (struct watchpoint *) b;
5935
5936           /* Field 4, the address, is omitted (which makes the columns
5937              not line up too nicely with the headers, but the effect
5938              is relatively readable).  */
5939           if (opts.addressprint)
5940             ui_out_field_skip (uiout, "addr");
5941           annotate_field (5);
5942           ui_out_field_string (uiout, "what", w->exp_string);
5943         }
5944         break;
5945
5946       case bp_breakpoint:
5947       case bp_hardware_breakpoint:
5948       case bp_until:
5949       case bp_finish:
5950       case bp_longjmp:
5951       case bp_longjmp_resume:
5952       case bp_longjmp_call_dummy:
5953       case bp_exception:
5954       case bp_exception_resume:
5955       case bp_step_resume:
5956       case bp_hp_step_resume:
5957       case bp_watchpoint_scope:
5958       case bp_call_dummy:
5959       case bp_std_terminate:
5960       case bp_shlib_event:
5961       case bp_thread_event:
5962       case bp_overlay_event:
5963       case bp_longjmp_master:
5964       case bp_std_terminate_master:
5965       case bp_exception_master:
5966       case bp_tracepoint:
5967       case bp_fast_tracepoint:
5968       case bp_static_tracepoint:
5969       case bp_dprintf:
5970       case bp_jit_event:
5971       case bp_gnu_ifunc_resolver:
5972       case bp_gnu_ifunc_resolver_return:
5973         if (opts.addressprint)
5974           {
5975             annotate_field (4);
5976             if (header_of_multiple)
5977               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5978             else if (b->loc == NULL || loc->shlib_disabled)
5979               ui_out_field_string (uiout, "addr", "<PENDING>");
5980             else
5981               ui_out_field_core_addr (uiout, "addr",
5982                                       loc->gdbarch, loc->address);
5983           }
5984         annotate_field (5);
5985         if (!header_of_multiple)
5986           print_breakpoint_location (b, loc);
5987         if (b->loc)
5988           *last_loc = b->loc;
5989         break;
5990       }
5991
5992
5993   if (loc != NULL && !header_of_multiple)
5994     {
5995       struct inferior *inf;
5996       VEC(int) *inf_num = NULL;
5997       int mi_only = 1;
5998
5999       ALL_INFERIORS (inf)
6000         {
6001           if (inf->pspace == loc->pspace)
6002             VEC_safe_push (int, inf_num, inf->num);
6003         }
6004
6005         /* For backward compatibility, don't display inferiors in CLI unless
6006            there are several.  Always display for MI. */
6007         if (allflag
6008             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6009                 && (number_of_program_spaces () > 1
6010                     || number_of_inferiors () > 1)
6011                 /* LOC is for existing B, it cannot be in
6012                    moribund_locations and thus having NULL OWNER.  */
6013                 && loc->owner->type != bp_catchpoint))
6014         mi_only = 0;
6015       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6016       VEC_free (int, inf_num);
6017     }
6018
6019   if (!part_of_multiple)
6020     {
6021       if (b->thread != -1)
6022         {
6023           /* FIXME: This seems to be redundant and lost here; see the
6024              "stop only in" line a little further down.  */
6025           ui_out_text (uiout, " thread ");
6026           ui_out_field_int (uiout, "thread", b->thread);
6027         }
6028       else if (b->task != 0)
6029         {
6030           ui_out_text (uiout, " task ");
6031           ui_out_field_int (uiout, "task", b->task);
6032         }
6033     }
6034
6035   ui_out_text (uiout, "\n");
6036
6037   if (!part_of_multiple)
6038     b->ops->print_one_detail (b, uiout);
6039
6040   if (part_of_multiple && frame_id_p (b->frame_id))
6041     {
6042       annotate_field (6);
6043       ui_out_text (uiout, "\tstop only in stack frame at ");
6044       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6045          the frame ID.  */
6046       ui_out_field_core_addr (uiout, "frame",
6047                               b->gdbarch, b->frame_id.stack_addr);
6048       ui_out_text (uiout, "\n");
6049     }
6050   
6051   if (!part_of_multiple && b->cond_string)
6052     {
6053       annotate_field (7);
6054       if (is_tracepoint (b))
6055         ui_out_text (uiout, "\ttrace only if ");
6056       else
6057         ui_out_text (uiout, "\tstop only if ");
6058       ui_out_field_string (uiout, "cond", b->cond_string);
6059
6060       /* Print whether the target is doing the breakpoint's condition
6061          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6062       if (is_breakpoint (b)
6063           && breakpoint_condition_evaluation_mode ()
6064           == condition_evaluation_target)
6065         {
6066           ui_out_text (uiout, " (");
6067           ui_out_field_string (uiout, "evaluated-by",
6068                                bp_condition_evaluator (b));
6069           ui_out_text (uiout, " evals)");
6070         }
6071       ui_out_text (uiout, "\n");
6072     }
6073
6074   if (!part_of_multiple && b->thread != -1)
6075     {
6076       /* FIXME should make an annotation for this.  */
6077       ui_out_text (uiout, "\tstop only in thread ");
6078       ui_out_field_int (uiout, "thread", b->thread);
6079       ui_out_text (uiout, "\n");
6080     }
6081   
6082   if (!part_of_multiple)
6083     {
6084       if (b->hit_count)
6085         {
6086           /* FIXME should make an annotation for this.  */
6087           if (is_catchpoint (b))
6088             ui_out_text (uiout, "\tcatchpoint");
6089           else if (is_tracepoint (b))
6090             ui_out_text (uiout, "\ttracepoint");
6091           else
6092             ui_out_text (uiout, "\tbreakpoint");
6093           ui_out_text (uiout, " already hit ");
6094           ui_out_field_int (uiout, "times", b->hit_count);
6095           if (b->hit_count == 1)
6096             ui_out_text (uiout, " time\n");
6097           else
6098             ui_out_text (uiout, " times\n");
6099         }
6100       else
6101         {
6102           /* Output the count also if it is zero, but only if this is mi.  */
6103           if (ui_out_is_mi_like_p (uiout))
6104             ui_out_field_int (uiout, "times", b->hit_count);
6105         }
6106     }
6107
6108   if (!part_of_multiple && b->ignore_count)
6109     {
6110       annotate_field (8);
6111       ui_out_text (uiout, "\tignore next ");
6112       ui_out_field_int (uiout, "ignore", b->ignore_count);
6113       ui_out_text (uiout, " hits\n");
6114     }
6115
6116   /* Note that an enable count of 1 corresponds to "enable once"
6117      behavior, which is reported by the combination of enablement and
6118      disposition, so we don't need to mention it here.  */
6119   if (!part_of_multiple && b->enable_count > 1)
6120     {
6121       annotate_field (8);
6122       ui_out_text (uiout, "\tdisable after ");
6123       /* Tweak the wording to clarify that ignore and enable counts
6124          are distinct, and have additive effect.  */
6125       if (b->ignore_count)
6126         ui_out_text (uiout, "additional ");
6127       else
6128         ui_out_text (uiout, "next ");
6129       ui_out_field_int (uiout, "enable", b->enable_count);
6130       ui_out_text (uiout, " hits\n");
6131     }
6132
6133   if (!part_of_multiple && is_tracepoint (b))
6134     {
6135       struct tracepoint *tp = (struct tracepoint *) b;
6136
6137       if (tp->traceframe_usage)
6138         {
6139           ui_out_text (uiout, "\ttrace buffer usage ");
6140           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6141           ui_out_text (uiout, " bytes\n");
6142         }
6143     }
6144
6145   l = b->commands ? b->commands->commands : NULL;
6146   if (!part_of_multiple && l)
6147     {
6148       struct cleanup *script_chain;
6149
6150       annotate_field (9);
6151       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6152       print_command_lines (uiout, l, 4);
6153       do_cleanups (script_chain);
6154     }
6155
6156   if (is_tracepoint (b))
6157     {
6158       struct tracepoint *t = (struct tracepoint *) b;
6159
6160       if (!part_of_multiple && t->pass_count)
6161         {
6162           annotate_field (10);
6163           ui_out_text (uiout, "\tpass count ");
6164           ui_out_field_int (uiout, "pass", t->pass_count);
6165           ui_out_text (uiout, " \n");
6166         }
6167
6168       /* Don't display it when tracepoint or tracepoint location is
6169          pending.   */
6170       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6171         {
6172           annotate_field (11);
6173
6174           if (ui_out_is_mi_like_p (uiout))
6175             ui_out_field_string (uiout, "installed",
6176                                  loc->inserted ? "y" : "n");
6177           else
6178             {
6179               if (loc->inserted)
6180                 ui_out_text (uiout, "\t");
6181               else
6182                 ui_out_text (uiout, "\tnot ");
6183               ui_out_text (uiout, "installed on target\n");
6184             }
6185         }
6186     }
6187
6188   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6189     {
6190       if (is_watchpoint (b))
6191         {
6192           struct watchpoint *w = (struct watchpoint *) b;
6193
6194           ui_out_field_string (uiout, "original-location", w->exp_string);
6195         }
6196       else if (b->addr_string)
6197         ui_out_field_string (uiout, "original-location", b->addr_string);
6198     }
6199 }
6200
6201 static void
6202 print_one_breakpoint (struct breakpoint *b,
6203                       struct bp_location **last_loc, 
6204                       int allflag)
6205 {
6206   struct cleanup *bkpt_chain;
6207   struct ui_out *uiout = current_uiout;
6208
6209   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6210
6211   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6212   do_cleanups (bkpt_chain);
6213
6214   /* If this breakpoint has custom print function,
6215      it's already printed.  Otherwise, print individual
6216      locations, if any.  */
6217   if (b->ops == NULL || b->ops->print_one == NULL)
6218     {
6219       /* If breakpoint has a single location that is disabled, we
6220          print it as if it had several locations, since otherwise it's
6221          hard to represent "breakpoint enabled, location disabled"
6222          situation.
6223
6224          Note that while hardware watchpoints have several locations
6225          internally, that's not a property exposed to user.  */
6226       if (b->loc 
6227           && !is_hardware_watchpoint (b)
6228           && (b->loc->next || !b->loc->enabled))
6229         {
6230           struct bp_location *loc;
6231           int n = 1;
6232
6233           for (loc = b->loc; loc; loc = loc->next, ++n)
6234             {
6235               struct cleanup *inner2 =
6236                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6237               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6238               do_cleanups (inner2);
6239             }
6240         }
6241     }
6242 }
6243
6244 static int
6245 breakpoint_address_bits (struct breakpoint *b)
6246 {
6247   int print_address_bits = 0;
6248   struct bp_location *loc;
6249
6250   for (loc = b->loc; loc; loc = loc->next)
6251     {
6252       int addr_bit;
6253
6254       /* Software watchpoints that aren't watching memory don't have
6255          an address to print.  */
6256       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6257         continue;
6258
6259       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6260       if (addr_bit > print_address_bits)
6261         print_address_bits = addr_bit;
6262     }
6263
6264   return print_address_bits;
6265 }
6266
6267 struct captured_breakpoint_query_args
6268   {
6269     int bnum;
6270   };
6271
6272 static int
6273 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6274 {
6275   struct captured_breakpoint_query_args *args = data;
6276   struct breakpoint *b;
6277   struct bp_location *dummy_loc = NULL;
6278
6279   ALL_BREAKPOINTS (b)
6280     {
6281       if (args->bnum == b->number)
6282         {
6283           print_one_breakpoint (b, &dummy_loc, 0);
6284           return GDB_RC_OK;
6285         }
6286     }
6287   return GDB_RC_NONE;
6288 }
6289
6290 enum gdb_rc
6291 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6292                       char **error_message)
6293 {
6294   struct captured_breakpoint_query_args args;
6295
6296   args.bnum = bnum;
6297   /* For the moment we don't trust print_one_breakpoint() to not throw
6298      an error.  */
6299   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6300                                  error_message, RETURN_MASK_ALL) < 0)
6301     return GDB_RC_FAIL;
6302   else
6303     return GDB_RC_OK;
6304 }
6305
6306 /* Return true if this breakpoint was set by the user, false if it is
6307    internal or momentary.  */
6308
6309 int
6310 user_breakpoint_p (struct breakpoint *b)
6311 {
6312   return b->number > 0;
6313 }
6314
6315 /* Print information on user settable breakpoint (watchpoint, etc)
6316    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6317    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6318    FILTER is non-NULL, call it on each breakpoint and only include the
6319    ones for which it returns non-zero.  Return the total number of
6320    breakpoints listed.  */
6321
6322 static int
6323 breakpoint_1 (char *args, int allflag, 
6324               int (*filter) (const struct breakpoint *))
6325 {
6326   struct breakpoint *b;
6327   struct bp_location *last_loc = NULL;
6328   int nr_printable_breakpoints;
6329   struct cleanup *bkpttbl_chain;
6330   struct value_print_options opts;
6331   int print_address_bits = 0;
6332   int print_type_col_width = 14;
6333   struct ui_out *uiout = current_uiout;
6334
6335   get_user_print_options (&opts);
6336
6337   /* Compute the number of rows in the table, as well as the size
6338      required for address fields.  */
6339   nr_printable_breakpoints = 0;
6340   ALL_BREAKPOINTS (b)
6341     {
6342       /* If we have a filter, only list the breakpoints it accepts.  */
6343       if (filter && !filter (b))
6344         continue;
6345
6346       /* If we have an "args" string, it is a list of breakpoints to 
6347          accept.  Skip the others.  */
6348       if (args != NULL && *args != '\0')
6349         {
6350           if (allflag && parse_and_eval_long (args) != b->number)
6351             continue;
6352           if (!allflag && !number_is_in_list (args, b->number))
6353             continue;
6354         }
6355
6356       if (allflag || user_breakpoint_p (b))
6357         {
6358           int addr_bit, type_len;
6359
6360           addr_bit = breakpoint_address_bits (b);
6361           if (addr_bit > print_address_bits)
6362             print_address_bits = addr_bit;
6363
6364           type_len = strlen (bptype_string (b->type));
6365           if (type_len > print_type_col_width)
6366             print_type_col_width = type_len;
6367
6368           nr_printable_breakpoints++;
6369         }
6370     }
6371
6372   if (opts.addressprint)
6373     bkpttbl_chain 
6374       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6375                                              nr_printable_breakpoints,
6376                                              "BreakpointTable");
6377   else
6378     bkpttbl_chain 
6379       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6380                                              nr_printable_breakpoints,
6381                                              "BreakpointTable");
6382
6383   if (nr_printable_breakpoints > 0)
6384     annotate_breakpoints_headers ();
6385   if (nr_printable_breakpoints > 0)
6386     annotate_field (0);
6387   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6388   if (nr_printable_breakpoints > 0)
6389     annotate_field (1);
6390   ui_out_table_header (uiout, print_type_col_width, ui_left,
6391                        "type", "Type");                         /* 2 */
6392   if (nr_printable_breakpoints > 0)
6393     annotate_field (2);
6394   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6395   if (nr_printable_breakpoints > 0)
6396     annotate_field (3);
6397   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6398   if (opts.addressprint)
6399     {
6400       if (nr_printable_breakpoints > 0)
6401         annotate_field (4);
6402       if (print_address_bits <= 32)
6403         ui_out_table_header (uiout, 10, ui_left, 
6404                              "addr", "Address");                /* 5 */
6405       else
6406         ui_out_table_header (uiout, 18, ui_left, 
6407                              "addr", "Address");                /* 5 */
6408     }
6409   if (nr_printable_breakpoints > 0)
6410     annotate_field (5);
6411   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6412   ui_out_table_body (uiout);
6413   if (nr_printable_breakpoints > 0)
6414     annotate_breakpoints_table ();
6415
6416   ALL_BREAKPOINTS (b)
6417     {
6418       QUIT;
6419       /* If we have a filter, only list the breakpoints it accepts.  */
6420       if (filter && !filter (b))
6421         continue;
6422
6423       /* If we have an "args" string, it is a list of breakpoints to 
6424          accept.  Skip the others.  */
6425
6426       if (args != NULL && *args != '\0')
6427         {
6428           if (allflag)  /* maintenance info breakpoint */
6429             {
6430               if (parse_and_eval_long (args) != b->number)
6431                 continue;
6432             }
6433           else          /* all others */
6434             {
6435               if (!number_is_in_list (args, b->number))
6436                 continue;
6437             }
6438         }
6439       /* We only print out user settable breakpoints unless the
6440          allflag is set.  */
6441       if (allflag || user_breakpoint_p (b))
6442         print_one_breakpoint (b, &last_loc, allflag);
6443     }
6444
6445   do_cleanups (bkpttbl_chain);
6446
6447   if (nr_printable_breakpoints == 0)
6448     {
6449       /* If there's a filter, let the caller decide how to report
6450          empty list.  */
6451       if (!filter)
6452         {
6453           if (args == NULL || *args == '\0')
6454             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6455           else
6456             ui_out_message (uiout, 0, 
6457                             "No breakpoint or watchpoint matching '%s'.\n",
6458                             args);
6459         }
6460     }
6461   else
6462     {
6463       if (last_loc && !server_command)
6464         set_next_address (last_loc->gdbarch, last_loc->address);
6465     }
6466
6467   /* FIXME?  Should this be moved up so that it is only called when
6468      there have been breakpoints? */
6469   annotate_breakpoints_table_end ();
6470
6471   return nr_printable_breakpoints;
6472 }
6473
6474 /* Display the value of default-collect in a way that is generally
6475    compatible with the breakpoint list.  */
6476
6477 static void
6478 default_collect_info (void)
6479 {
6480   struct ui_out *uiout = current_uiout;
6481
6482   /* If it has no value (which is frequently the case), say nothing; a
6483      message like "No default-collect." gets in user's face when it's
6484      not wanted.  */
6485   if (!*default_collect)
6486     return;
6487
6488   /* The following phrase lines up nicely with per-tracepoint collect
6489      actions.  */
6490   ui_out_text (uiout, "default collect ");
6491   ui_out_field_string (uiout, "default-collect", default_collect);
6492   ui_out_text (uiout, " \n");
6493 }
6494   
6495 static void
6496 breakpoints_info (char *args, int from_tty)
6497 {
6498   breakpoint_1 (args, 0, NULL);
6499
6500   default_collect_info ();
6501 }
6502
6503 static void
6504 watchpoints_info (char *args, int from_tty)
6505 {
6506   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6507   struct ui_out *uiout = current_uiout;
6508
6509   if (num_printed == 0)
6510     {
6511       if (args == NULL || *args == '\0')
6512         ui_out_message (uiout, 0, "No watchpoints.\n");
6513       else
6514         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6515     }
6516 }
6517
6518 static void
6519 maintenance_info_breakpoints (char *args, int from_tty)
6520 {
6521   breakpoint_1 (args, 1, NULL);
6522
6523   default_collect_info ();
6524 }
6525
6526 static int
6527 breakpoint_has_pc (struct breakpoint *b,
6528                    struct program_space *pspace,
6529                    CORE_ADDR pc, struct obj_section *section)
6530 {
6531   struct bp_location *bl = b->loc;
6532
6533   for (; bl; bl = bl->next)
6534     {
6535       if (bl->pspace == pspace
6536           && bl->address == pc
6537           && (!overlay_debugging || bl->section == section))
6538         return 1;         
6539     }
6540   return 0;
6541 }
6542
6543 /* Print a message describing any user-breakpoints set at PC.  This
6544    concerns with logical breakpoints, so we match program spaces, not
6545    address spaces.  */
6546
6547 static void
6548 describe_other_breakpoints (struct gdbarch *gdbarch,
6549                             struct program_space *pspace, CORE_ADDR pc,
6550                             struct obj_section *section, int thread)
6551 {
6552   int others = 0;
6553   struct breakpoint *b;
6554
6555   ALL_BREAKPOINTS (b)
6556     others += (user_breakpoint_p (b)
6557                && breakpoint_has_pc (b, pspace, pc, section));
6558   if (others > 0)
6559     {
6560       if (others == 1)
6561         printf_filtered (_("Note: breakpoint "));
6562       else /* if (others == ???) */
6563         printf_filtered (_("Note: breakpoints "));
6564       ALL_BREAKPOINTS (b)
6565         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6566           {
6567             others--;
6568             printf_filtered ("%d", b->number);
6569             if (b->thread == -1 && thread != -1)
6570               printf_filtered (" (all threads)");
6571             else if (b->thread != -1)
6572               printf_filtered (" (thread %d)", b->thread);
6573             printf_filtered ("%s%s ",
6574                              ((b->enable_state == bp_disabled
6575                                || b->enable_state == bp_call_disabled)
6576                               ? " (disabled)"
6577                               : b->enable_state == bp_permanent 
6578                               ? " (permanent)"
6579                               : ""),
6580                              (others > 1) ? "," 
6581                              : ((others == 1) ? " and" : ""));
6582           }
6583       printf_filtered (_("also set at pc "));
6584       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6585       printf_filtered (".\n");
6586     }
6587 }
6588 \f
6589
6590 /* Return true iff it is meaningful to use the address member of
6591    BPT.  For some breakpoint types, the address member is irrelevant
6592    and it makes no sense to attempt to compare it to other addresses
6593    (or use it for any other purpose either).
6594
6595    More specifically, each of the following breakpoint types will
6596    always have a zero valued address and we don't want to mark
6597    breakpoints of any of these types to be a duplicate of an actual
6598    breakpoint at address zero:
6599
6600       bp_watchpoint
6601       bp_catchpoint
6602
6603 */
6604
6605 static int
6606 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6607 {
6608   enum bptype type = bpt->type;
6609
6610   return (type != bp_watchpoint && type != bp_catchpoint);
6611 }
6612
6613 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6614    true if LOC1 and LOC2 represent the same watchpoint location.  */
6615
6616 static int
6617 watchpoint_locations_match (struct bp_location *loc1, 
6618                             struct bp_location *loc2)
6619 {
6620   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6621   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6622
6623   /* Both of them must exist.  */
6624   gdb_assert (w1 != NULL);
6625   gdb_assert (w2 != NULL);
6626
6627   /* If the target can evaluate the condition expression in hardware,
6628      then we we need to insert both watchpoints even if they are at
6629      the same place.  Otherwise the watchpoint will only trigger when
6630      the condition of whichever watchpoint was inserted evaluates to
6631      true, not giving a chance for GDB to check the condition of the
6632      other watchpoint.  */
6633   if ((w1->cond_exp
6634        && target_can_accel_watchpoint_condition (loc1->address, 
6635                                                  loc1->length,
6636                                                  loc1->watchpoint_type,
6637                                                  w1->cond_exp))
6638       || (w2->cond_exp
6639           && target_can_accel_watchpoint_condition (loc2->address, 
6640                                                     loc2->length,
6641                                                     loc2->watchpoint_type,
6642                                                     w2->cond_exp)))
6643     return 0;
6644
6645   /* Note that this checks the owner's type, not the location's.  In
6646      case the target does not support read watchpoints, but does
6647      support access watchpoints, we'll have bp_read_watchpoint
6648      watchpoints with hw_access locations.  Those should be considered
6649      duplicates of hw_read locations.  The hw_read locations will
6650      become hw_access locations later.  */
6651   return (loc1->owner->type == loc2->owner->type
6652           && loc1->pspace->aspace == loc2->pspace->aspace
6653           && loc1->address == loc2->address
6654           && loc1->length == loc2->length);
6655 }
6656
6657 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6658    same breakpoint location.  In most targets, this can only be true
6659    if ASPACE1 matches ASPACE2.  On targets that have global
6660    breakpoints, the address space doesn't really matter.  */
6661
6662 static int
6663 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6664                           struct address_space *aspace2, CORE_ADDR addr2)
6665 {
6666   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6667            || aspace1 == aspace2)
6668           && addr1 == addr2);
6669 }
6670
6671 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6672    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6673    matches ASPACE2.  On targets that have global breakpoints, the address
6674    space doesn't really matter.  */
6675
6676 static int
6677 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6678                                 int len1, struct address_space *aspace2,
6679                                 CORE_ADDR addr2)
6680 {
6681   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6682            || aspace1 == aspace2)
6683           && addr2 >= addr1 && addr2 < addr1 + len1);
6684 }
6685
6686 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6687    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6688    matches the breakpoint's address space.  On targets that have global
6689    breakpoints, the address space doesn't really matter.  */
6690
6691 static int
6692 breakpoint_location_address_match (struct bp_location *bl,
6693                                    struct address_space *aspace,
6694                                    CORE_ADDR addr)
6695 {
6696   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6697                                     aspace, addr)
6698           || (bl->length
6699               && breakpoint_address_match_range (bl->pspace->aspace,
6700                                                  bl->address, bl->length,
6701                                                  aspace, addr)));
6702 }
6703
6704 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6705    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6706    true, otherwise returns false.  */
6707
6708 static int
6709 tracepoint_locations_match (struct bp_location *loc1,
6710                             struct bp_location *loc2)
6711 {
6712   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6713     /* Since tracepoint locations are never duplicated with others', tracepoint
6714        locations at the same address of different tracepoints are regarded as
6715        different locations.  */
6716     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6717   else
6718     return 0;
6719 }
6720
6721 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6722    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6723    represent the same location.  */
6724
6725 static int
6726 breakpoint_locations_match (struct bp_location *loc1, 
6727                             struct bp_location *loc2)
6728 {
6729   int hw_point1, hw_point2;
6730
6731   /* Both of them must not be in moribund_locations.  */
6732   gdb_assert (loc1->owner != NULL);
6733   gdb_assert (loc2->owner != NULL);
6734
6735   hw_point1 = is_hardware_watchpoint (loc1->owner);
6736   hw_point2 = is_hardware_watchpoint (loc2->owner);
6737
6738   if (hw_point1 != hw_point2)
6739     return 0;
6740   else if (hw_point1)
6741     return watchpoint_locations_match (loc1, loc2);
6742   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6743     return tracepoint_locations_match (loc1, loc2);
6744   else
6745     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6746     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6747                                      loc2->pspace->aspace, loc2->address)
6748             && loc1->length == loc2->length);
6749 }
6750
6751 static void
6752 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6753                                int bnum, int have_bnum)
6754 {
6755   /* The longest string possibly returned by hex_string_custom
6756      is 50 chars.  These must be at least that big for safety.  */
6757   char astr1[64];
6758   char astr2[64];
6759
6760   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6761   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6762   if (have_bnum)
6763     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6764              bnum, astr1, astr2);
6765   else
6766     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6767 }
6768
6769 /* Adjust a breakpoint's address to account for architectural
6770    constraints on breakpoint placement.  Return the adjusted address.
6771    Note: Very few targets require this kind of adjustment.  For most
6772    targets, this function is simply the identity function.  */
6773
6774 static CORE_ADDR
6775 adjust_breakpoint_address (struct gdbarch *gdbarch,
6776                            CORE_ADDR bpaddr, enum bptype bptype)
6777 {
6778   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6779     {
6780       /* Very few targets need any kind of breakpoint adjustment.  */
6781       return bpaddr;
6782     }
6783   else if (bptype == bp_watchpoint
6784            || bptype == bp_hardware_watchpoint
6785            || bptype == bp_read_watchpoint
6786            || bptype == bp_access_watchpoint
6787            || bptype == bp_catchpoint)
6788     {
6789       /* Watchpoints and the various bp_catch_* eventpoints should not
6790          have their addresses modified.  */
6791       return bpaddr;
6792     }
6793   else
6794     {
6795       CORE_ADDR adjusted_bpaddr;
6796
6797       /* Some targets have architectural constraints on the placement
6798          of breakpoint instructions.  Obtain the adjusted address.  */
6799       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6800
6801       /* An adjusted breakpoint address can significantly alter
6802          a user's expectations.  Print a warning if an adjustment
6803          is required.  */
6804       if (adjusted_bpaddr != bpaddr)
6805         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6806
6807       return adjusted_bpaddr;
6808     }
6809 }
6810
6811 void
6812 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6813                   struct breakpoint *owner)
6814 {
6815   memset (loc, 0, sizeof (*loc));
6816
6817   gdb_assert (ops != NULL);
6818
6819   loc->ops = ops;
6820   loc->owner = owner;
6821   loc->cond = NULL;
6822   loc->cond_bytecode = NULL;
6823   loc->shlib_disabled = 0;
6824   loc->enabled = 1;
6825
6826   switch (owner->type)
6827     {
6828     case bp_breakpoint:
6829     case bp_until:
6830     case bp_finish:
6831     case bp_longjmp:
6832     case bp_longjmp_resume:
6833     case bp_longjmp_call_dummy:
6834     case bp_exception:
6835     case bp_exception_resume:
6836     case bp_step_resume:
6837     case bp_hp_step_resume:
6838     case bp_watchpoint_scope:
6839     case bp_call_dummy:
6840     case bp_std_terminate:
6841     case bp_shlib_event:
6842     case bp_thread_event:
6843     case bp_overlay_event:
6844     case bp_jit_event:
6845     case bp_longjmp_master:
6846     case bp_std_terminate_master:
6847     case bp_exception_master:
6848     case bp_gnu_ifunc_resolver:
6849     case bp_gnu_ifunc_resolver_return:
6850     case bp_dprintf:
6851       loc->loc_type = bp_loc_software_breakpoint;
6852       mark_breakpoint_location_modified (loc);
6853       break;
6854     case bp_hardware_breakpoint:
6855       loc->loc_type = bp_loc_hardware_breakpoint;
6856       mark_breakpoint_location_modified (loc);
6857       break;
6858     case bp_hardware_watchpoint:
6859     case bp_read_watchpoint:
6860     case bp_access_watchpoint:
6861       loc->loc_type = bp_loc_hardware_watchpoint;
6862       break;
6863     case bp_watchpoint:
6864     case bp_catchpoint:
6865     case bp_tracepoint:
6866     case bp_fast_tracepoint:
6867     case bp_static_tracepoint:
6868       loc->loc_type = bp_loc_other;
6869       break;
6870     default:
6871       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6872     }
6873
6874   loc->refc = 1;
6875 }
6876
6877 /* Allocate a struct bp_location.  */
6878
6879 static struct bp_location *
6880 allocate_bp_location (struct breakpoint *bpt)
6881 {
6882   return bpt->ops->allocate_location (bpt);
6883 }
6884
6885 static void
6886 free_bp_location (struct bp_location *loc)
6887 {
6888   loc->ops->dtor (loc);
6889   xfree (loc);
6890 }
6891
6892 /* Increment reference count.  */
6893
6894 static void
6895 incref_bp_location (struct bp_location *bl)
6896 {
6897   ++bl->refc;
6898 }
6899
6900 /* Decrement reference count.  If the reference count reaches 0,
6901    destroy the bp_location.  Sets *BLP to NULL.  */
6902
6903 static void
6904 decref_bp_location (struct bp_location **blp)
6905 {
6906   gdb_assert ((*blp)->refc > 0);
6907
6908   if (--(*blp)->refc == 0)
6909     free_bp_location (*blp);
6910   *blp = NULL;
6911 }
6912
6913 /* Add breakpoint B at the end of the global breakpoint chain.  */
6914
6915 static void
6916 add_to_breakpoint_chain (struct breakpoint *b)
6917 {
6918   struct breakpoint *b1;
6919
6920   /* Add this breakpoint to the end of the chain so that a list of
6921      breakpoints will come out in order of increasing numbers.  */
6922
6923   b1 = breakpoint_chain;
6924   if (b1 == 0)
6925     breakpoint_chain = b;
6926   else
6927     {
6928       while (b1->next)
6929         b1 = b1->next;
6930       b1->next = b;
6931     }
6932 }
6933
6934 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6935
6936 static void
6937 init_raw_breakpoint_without_location (struct breakpoint *b,
6938                                       struct gdbarch *gdbarch,
6939                                       enum bptype bptype,
6940                                       const struct breakpoint_ops *ops)
6941 {
6942   memset (b, 0, sizeof (*b));
6943
6944   gdb_assert (ops != NULL);
6945
6946   b->ops = ops;
6947   b->type = bptype;
6948   b->gdbarch = gdbarch;
6949   b->language = current_language->la_language;
6950   b->input_radix = input_radix;
6951   b->thread = -1;
6952   b->enable_state = bp_enabled;
6953   b->next = 0;
6954   b->silent = 0;
6955   b->ignore_count = 0;
6956   b->commands = NULL;
6957   b->frame_id = null_frame_id;
6958   b->condition_not_parsed = 0;
6959   b->py_bp_object = NULL;
6960   b->related_breakpoint = b;
6961 }
6962
6963 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6964    that has type BPTYPE and has no locations as yet.  */
6965
6966 static struct breakpoint *
6967 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6968                                      enum bptype bptype,
6969                                      const struct breakpoint_ops *ops)
6970 {
6971   struct breakpoint *b = XNEW (struct breakpoint);
6972
6973   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6974   add_to_breakpoint_chain (b);
6975   return b;
6976 }
6977
6978 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6979    resolutions should be made as the user specified the location explicitly
6980    enough.  */
6981
6982 static void
6983 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6984 {
6985   gdb_assert (loc->owner != NULL);
6986
6987   if (loc->owner->type == bp_breakpoint
6988       || loc->owner->type == bp_hardware_breakpoint
6989       || is_tracepoint (loc->owner))
6990     {
6991       int is_gnu_ifunc;
6992       const char *function_name;
6993       CORE_ADDR func_addr;
6994
6995       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6996                                           &func_addr, NULL, &is_gnu_ifunc);
6997
6998       if (is_gnu_ifunc && !explicit_loc)
6999         {
7000           struct breakpoint *b = loc->owner;
7001
7002           gdb_assert (loc->pspace == current_program_space);
7003           if (gnu_ifunc_resolve_name (function_name,
7004                                       &loc->requested_address))
7005             {
7006               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7007               loc->address = adjust_breakpoint_address (loc->gdbarch,
7008                                                         loc->requested_address,
7009                                                         b->type);
7010             }
7011           else if (b->type == bp_breakpoint && b->loc == loc
7012                    && loc->next == NULL && b->related_breakpoint == b)
7013             {
7014               /* Create only the whole new breakpoint of this type but do not
7015                  mess more complicated breakpoints with multiple locations.  */
7016               b->type = bp_gnu_ifunc_resolver;
7017               /* Remember the resolver's address for use by the return
7018                  breakpoint.  */
7019               loc->related_address = func_addr;
7020             }
7021         }
7022
7023       if (function_name)
7024         loc->function_name = xstrdup (function_name);
7025     }
7026 }
7027
7028 /* Attempt to determine architecture of location identified by SAL.  */
7029 struct gdbarch *
7030 get_sal_arch (struct symtab_and_line sal)
7031 {
7032   if (sal.section)
7033     return get_objfile_arch (sal.section->objfile);
7034   if (sal.symtab)
7035     return get_objfile_arch (sal.symtab->objfile);
7036
7037   return NULL;
7038 }
7039
7040 /* Low level routine for partially initializing a breakpoint of type
7041    BPTYPE.  The newly created breakpoint's address, section, source
7042    file name, and line number are provided by SAL.
7043
7044    It is expected that the caller will complete the initialization of
7045    the newly created breakpoint struct as well as output any status
7046    information regarding the creation of a new breakpoint.  */
7047
7048 static void
7049 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7050                      struct symtab_and_line sal, enum bptype bptype,
7051                      const struct breakpoint_ops *ops)
7052 {
7053   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7054
7055   add_location_to_breakpoint (b, &sal);
7056
7057   if (bptype != bp_catchpoint)
7058     gdb_assert (sal.pspace != NULL);
7059
7060   /* Store the program space that was used to set the breakpoint,
7061      except for ordinary breakpoints, which are independent of the
7062      program space.  */
7063   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7064     b->pspace = sal.pspace;
7065 }
7066
7067 /* set_raw_breakpoint is a low level routine for allocating and
7068    partially initializing a breakpoint of type BPTYPE.  The newly
7069    created breakpoint's address, section, source file name, and line
7070    number are provided by SAL.  The newly created and partially
7071    initialized breakpoint is added to the breakpoint chain and
7072    is also returned as the value of this function.
7073
7074    It is expected that the caller will complete the initialization of
7075    the newly created breakpoint struct as well as output any status
7076    information regarding the creation of a new breakpoint.  In
7077    particular, set_raw_breakpoint does NOT set the breakpoint
7078    number!  Care should be taken to not allow an error to occur
7079    prior to completing the initialization of the breakpoint.  If this
7080    should happen, a bogus breakpoint will be left on the chain.  */
7081
7082 struct breakpoint *
7083 set_raw_breakpoint (struct gdbarch *gdbarch,
7084                     struct symtab_and_line sal, enum bptype bptype,
7085                     const struct breakpoint_ops *ops)
7086 {
7087   struct breakpoint *b = XNEW (struct breakpoint);
7088
7089   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7090   add_to_breakpoint_chain (b);
7091   return b;
7092 }
7093
7094
7095 /* Note that the breakpoint object B describes a permanent breakpoint
7096    instruction, hard-wired into the inferior's code.  */
7097 void
7098 make_breakpoint_permanent (struct breakpoint *b)
7099 {
7100   struct bp_location *bl;
7101
7102   b->enable_state = bp_permanent;
7103
7104   /* By definition, permanent breakpoints are already present in the
7105      code.  Mark all locations as inserted.  For now,
7106      make_breakpoint_permanent is called in just one place, so it's
7107      hard to say if it's reasonable to have permanent breakpoint with
7108      multiple locations or not, but it's easy to implement.  */
7109   for (bl = b->loc; bl; bl = bl->next)
7110     bl->inserted = 1;
7111 }
7112
7113 /* Call this routine when stepping and nexting to enable a breakpoint
7114    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7115    initiated the operation.  */
7116
7117 void
7118 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7119 {
7120   struct breakpoint *b, *b_tmp;
7121   int thread = tp->num;
7122
7123   /* To avoid having to rescan all objfile symbols at every step,
7124      we maintain a list of continually-inserted but always disabled
7125      longjmp "master" breakpoints.  Here, we simply create momentary
7126      clones of those and enable them for the requested thread.  */
7127   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7128     if (b->pspace == current_program_space
7129         && (b->type == bp_longjmp_master
7130             || b->type == bp_exception_master))
7131       {
7132         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7133         struct breakpoint *clone;
7134
7135         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7136            after their removal.  */
7137         clone = momentary_breakpoint_from_master (b, type,
7138                                                   &longjmp_breakpoint_ops);
7139         clone->thread = thread;
7140       }
7141
7142   tp->initiating_frame = frame;
7143 }
7144
7145 /* Delete all longjmp breakpoints from THREAD.  */
7146 void
7147 delete_longjmp_breakpoint (int thread)
7148 {
7149   struct breakpoint *b, *b_tmp;
7150
7151   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7152     if (b->type == bp_longjmp || b->type == bp_exception)
7153       {
7154         if (b->thread == thread)
7155           delete_breakpoint (b);
7156       }
7157 }
7158
7159 void
7160 delete_longjmp_breakpoint_at_next_stop (int thread)
7161 {
7162   struct breakpoint *b, *b_tmp;
7163
7164   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7165     if (b->type == bp_longjmp || b->type == bp_exception)
7166       {
7167         if (b->thread == thread)
7168           b->disposition = disp_del_at_next_stop;
7169       }
7170 }
7171
7172 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7173    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7174    pointer to any of them.  Return NULL if this system cannot place longjmp
7175    breakpoints.  */
7176
7177 struct breakpoint *
7178 set_longjmp_breakpoint_for_call_dummy (void)
7179 {
7180   struct breakpoint *b, *retval = NULL;
7181
7182   ALL_BREAKPOINTS (b)
7183     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7184       {
7185         struct breakpoint *new_b;
7186
7187         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7188                                                   &momentary_breakpoint_ops);
7189         new_b->thread = pid_to_thread_id (inferior_ptid);
7190
7191         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7192
7193         gdb_assert (new_b->related_breakpoint == new_b);
7194         if (retval == NULL)
7195           retval = new_b;
7196         new_b->related_breakpoint = retval;
7197         while (retval->related_breakpoint != new_b->related_breakpoint)
7198           retval = retval->related_breakpoint;
7199         retval->related_breakpoint = new_b;
7200       }
7201
7202   return retval;
7203 }
7204
7205 /* Verify all existing dummy frames and their associated breakpoints for
7206    THREAD.  Remove those which can no longer be found in the current frame
7207    stack.
7208
7209    You should call this function only at places where it is safe to currently
7210    unwind the whole stack.  Failed stack unwind would discard live dummy
7211    frames.  */
7212
7213 void
7214 check_longjmp_breakpoint_for_call_dummy (int thread)
7215 {
7216   struct breakpoint *b, *b_tmp;
7217
7218   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7219     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7220       {
7221         struct breakpoint *dummy_b = b->related_breakpoint;
7222
7223         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7224           dummy_b = dummy_b->related_breakpoint;
7225         if (dummy_b->type != bp_call_dummy
7226             || frame_find_by_id (dummy_b->frame_id) != NULL)
7227           continue;
7228         
7229         dummy_frame_discard (dummy_b->frame_id);
7230
7231         while (b->related_breakpoint != b)
7232           {
7233             if (b_tmp == b->related_breakpoint)
7234               b_tmp = b->related_breakpoint->next;
7235             delete_breakpoint (b->related_breakpoint);
7236           }
7237         delete_breakpoint (b);
7238       }
7239 }
7240
7241 void
7242 enable_overlay_breakpoints (void)
7243 {
7244   struct breakpoint *b;
7245
7246   ALL_BREAKPOINTS (b)
7247     if (b->type == bp_overlay_event)
7248     {
7249       b->enable_state = bp_enabled;
7250       update_global_location_list (1);
7251       overlay_events_enabled = 1;
7252     }
7253 }
7254
7255 void
7256 disable_overlay_breakpoints (void)
7257 {
7258   struct breakpoint *b;
7259
7260   ALL_BREAKPOINTS (b)
7261     if (b->type == bp_overlay_event)
7262     {
7263       b->enable_state = bp_disabled;
7264       update_global_location_list (0);
7265       overlay_events_enabled = 0;
7266     }
7267 }
7268
7269 /* Set an active std::terminate breakpoint for each std::terminate
7270    master breakpoint.  */
7271 void
7272 set_std_terminate_breakpoint (void)
7273 {
7274   struct breakpoint *b, *b_tmp;
7275
7276   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7277     if (b->pspace == current_program_space
7278         && b->type == bp_std_terminate_master)
7279       {
7280         momentary_breakpoint_from_master (b, bp_std_terminate,
7281                                           &momentary_breakpoint_ops);
7282       }
7283 }
7284
7285 /* Delete all the std::terminate breakpoints.  */
7286 void
7287 delete_std_terminate_breakpoint (void)
7288 {
7289   struct breakpoint *b, *b_tmp;
7290
7291   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7292     if (b->type == bp_std_terminate)
7293       delete_breakpoint (b);
7294 }
7295
7296 struct breakpoint *
7297 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7298 {
7299   struct breakpoint *b;
7300
7301   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7302                                   &internal_breakpoint_ops);
7303
7304   b->enable_state = bp_enabled;
7305   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7306   b->addr_string
7307     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7308
7309   update_global_location_list_nothrow (1);
7310
7311   return b;
7312 }
7313
7314 void
7315 remove_thread_event_breakpoints (void)
7316 {
7317   struct breakpoint *b, *b_tmp;
7318
7319   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7320     if (b->type == bp_thread_event
7321         && b->loc->pspace == current_program_space)
7322       delete_breakpoint (b);
7323 }
7324
7325 struct lang_and_radix
7326   {
7327     enum language lang;
7328     int radix;
7329   };
7330
7331 /* Create a breakpoint for JIT code registration and unregistration.  */
7332
7333 struct breakpoint *
7334 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7335 {
7336   struct breakpoint *b;
7337
7338   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7339                                   &internal_breakpoint_ops);
7340   update_global_location_list_nothrow (1);
7341   return b;
7342 }
7343
7344 /* Remove JIT code registration and unregistration breakpoint(s).  */
7345
7346 void
7347 remove_jit_event_breakpoints (void)
7348 {
7349   struct breakpoint *b, *b_tmp;
7350
7351   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7352     if (b->type == bp_jit_event
7353         && b->loc->pspace == current_program_space)
7354       delete_breakpoint (b);
7355 }
7356
7357 void
7358 remove_solib_event_breakpoints (void)
7359 {
7360   struct breakpoint *b, *b_tmp;
7361
7362   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7363     if (b->type == bp_shlib_event
7364         && b->loc->pspace == current_program_space)
7365       delete_breakpoint (b);
7366 }
7367
7368 struct breakpoint *
7369 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7370 {
7371   struct breakpoint *b;
7372
7373   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7374                                   &internal_breakpoint_ops);
7375   update_global_location_list_nothrow (1);
7376   return b;
7377 }
7378
7379 /* Disable any breakpoints that are on code in shared libraries.  Only
7380    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7381
7382 void
7383 disable_breakpoints_in_shlibs (void)
7384 {
7385   struct bp_location *loc, **locp_tmp;
7386
7387   ALL_BP_LOCATIONS (loc, locp_tmp)
7388   {
7389     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7390     struct breakpoint *b = loc->owner;
7391
7392     /* We apply the check to all breakpoints, including disabled for
7393        those with loc->duplicate set.  This is so that when breakpoint
7394        becomes enabled, or the duplicate is removed, gdb will try to
7395        insert all breakpoints.  If we don't set shlib_disabled here,
7396        we'll try to insert those breakpoints and fail.  */
7397     if (((b->type == bp_breakpoint)
7398          || (b->type == bp_jit_event)
7399          || (b->type == bp_hardware_breakpoint)
7400          || (is_tracepoint (b)))
7401         && loc->pspace == current_program_space
7402         && !loc->shlib_disabled
7403         && solib_name_from_address (loc->pspace, loc->address)
7404         )
7405       {
7406         loc->shlib_disabled = 1;
7407       }
7408   }
7409 }
7410
7411 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7412    library.  Only apply to enabled breakpoints, disabled ones can just stay
7413    disabled.  */
7414
7415 static void
7416 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7417 {
7418   struct bp_location *loc, **locp_tmp;
7419   int disabled_shlib_breaks = 0;
7420
7421   /* SunOS a.out shared libraries are always mapped, so do not
7422      disable breakpoints; they will only be reported as unloaded
7423      through clear_solib when GDB discards its shared library
7424      list.  See clear_solib for more information.  */
7425   if (exec_bfd != NULL
7426       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7427     return;
7428
7429   ALL_BP_LOCATIONS (loc, locp_tmp)
7430   {
7431     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7432     struct breakpoint *b = loc->owner;
7433
7434     if (solib->pspace == loc->pspace
7435         && !loc->shlib_disabled
7436         && (((b->type == bp_breakpoint
7437               || b->type == bp_jit_event
7438               || b->type == bp_hardware_breakpoint)
7439              && (loc->loc_type == bp_loc_hardware_breakpoint
7440                  || loc->loc_type == bp_loc_software_breakpoint))
7441             || is_tracepoint (b))
7442         && solib_contains_address_p (solib, loc->address))
7443       {
7444         loc->shlib_disabled = 1;
7445         /* At this point, we cannot rely on remove_breakpoint
7446            succeeding so we must mark the breakpoint as not inserted
7447            to prevent future errors occurring in remove_breakpoints.  */
7448         loc->inserted = 0;
7449
7450         /* This may cause duplicate notifications for the same breakpoint.  */
7451         observer_notify_breakpoint_modified (b);
7452
7453         if (!disabled_shlib_breaks)
7454           {
7455             target_terminal_ours_for_output ();
7456             warning (_("Temporarily disabling breakpoints "
7457                        "for unloaded shared library \"%s\""),
7458                      solib->so_name);
7459           }
7460         disabled_shlib_breaks = 1;
7461       }
7462   }
7463 }
7464
7465 /* FORK & VFORK catchpoints.  */
7466
7467 /* An instance of this type is used to represent a fork or vfork
7468    catchpoint.  It includes a "struct breakpoint" as a kind of base
7469    class; users downcast to "struct breakpoint *" when needed.  A
7470    breakpoint is really of this type iff its ops pointer points to
7471    CATCH_FORK_BREAKPOINT_OPS.  */
7472
7473 struct fork_catchpoint
7474 {
7475   /* The base class.  */
7476   struct breakpoint base;
7477
7478   /* Process id of a child process whose forking triggered this
7479      catchpoint.  This field is only valid immediately after this
7480      catchpoint has triggered.  */
7481   ptid_t forked_inferior_pid;
7482 };
7483
7484 /* Implement the "insert" breakpoint_ops method for fork
7485    catchpoints.  */
7486
7487 static int
7488 insert_catch_fork (struct bp_location *bl)
7489 {
7490   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7491 }
7492
7493 /* Implement the "remove" breakpoint_ops method for fork
7494    catchpoints.  */
7495
7496 static int
7497 remove_catch_fork (struct bp_location *bl)
7498 {
7499   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7500 }
7501
7502 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7503    catchpoints.  */
7504
7505 static int
7506 breakpoint_hit_catch_fork (const struct bp_location *bl,
7507                            struct address_space *aspace, CORE_ADDR bp_addr,
7508                            const struct target_waitstatus *ws)
7509 {
7510   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7511
7512   if (ws->kind != TARGET_WAITKIND_FORKED)
7513     return 0;
7514
7515   c->forked_inferior_pid = ws->value.related_pid;
7516   return 1;
7517 }
7518
7519 /* Implement the "print_it" breakpoint_ops method for fork
7520    catchpoints.  */
7521
7522 static enum print_stop_action
7523 print_it_catch_fork (bpstat bs)
7524 {
7525   struct ui_out *uiout = current_uiout;
7526   struct breakpoint *b = bs->breakpoint_at;
7527   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7528
7529   annotate_catchpoint (b->number);
7530   if (b->disposition == disp_del)
7531     ui_out_text (uiout, "\nTemporary catchpoint ");
7532   else
7533     ui_out_text (uiout, "\nCatchpoint ");
7534   if (ui_out_is_mi_like_p (uiout))
7535     {
7536       ui_out_field_string (uiout, "reason",
7537                            async_reason_lookup (EXEC_ASYNC_FORK));
7538       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7539     }
7540   ui_out_field_int (uiout, "bkptno", b->number);
7541   ui_out_text (uiout, " (forked process ");
7542   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7543   ui_out_text (uiout, "), ");
7544   return PRINT_SRC_AND_LOC;
7545 }
7546
7547 /* Implement the "print_one" breakpoint_ops method for fork
7548    catchpoints.  */
7549
7550 static void
7551 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7552 {
7553   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7554   struct value_print_options opts;
7555   struct ui_out *uiout = current_uiout;
7556
7557   get_user_print_options (&opts);
7558
7559   /* Field 4, the address, is omitted (which makes the columns not
7560      line up too nicely with the headers, but the effect is relatively
7561      readable).  */
7562   if (opts.addressprint)
7563     ui_out_field_skip (uiout, "addr");
7564   annotate_field (5);
7565   ui_out_text (uiout, "fork");
7566   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7567     {
7568       ui_out_text (uiout, ", process ");
7569       ui_out_field_int (uiout, "what",
7570                         ptid_get_pid (c->forked_inferior_pid));
7571       ui_out_spaces (uiout, 1);
7572     }
7573
7574   if (ui_out_is_mi_like_p (uiout))
7575     ui_out_field_string (uiout, "catch-type", "fork");
7576 }
7577
7578 /* Implement the "print_mention" breakpoint_ops method for fork
7579    catchpoints.  */
7580
7581 static void
7582 print_mention_catch_fork (struct breakpoint *b)
7583 {
7584   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7585 }
7586
7587 /* Implement the "print_recreate" breakpoint_ops method for fork
7588    catchpoints.  */
7589
7590 static void
7591 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7592 {
7593   fprintf_unfiltered (fp, "catch fork");
7594   print_recreate_thread (b, fp);
7595 }
7596
7597 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7598
7599 static struct breakpoint_ops catch_fork_breakpoint_ops;
7600
7601 /* Implement the "insert" breakpoint_ops method for vfork
7602    catchpoints.  */
7603
7604 static int
7605 insert_catch_vfork (struct bp_location *bl)
7606 {
7607   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7608 }
7609
7610 /* Implement the "remove" breakpoint_ops method for vfork
7611    catchpoints.  */
7612
7613 static int
7614 remove_catch_vfork (struct bp_location *bl)
7615 {
7616   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7617 }
7618
7619 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7620    catchpoints.  */
7621
7622 static int
7623 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7624                             struct address_space *aspace, CORE_ADDR bp_addr,
7625                             const struct target_waitstatus *ws)
7626 {
7627   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7628
7629   if (ws->kind != TARGET_WAITKIND_VFORKED)
7630     return 0;
7631
7632   c->forked_inferior_pid = ws->value.related_pid;
7633   return 1;
7634 }
7635
7636 /* Implement the "print_it" breakpoint_ops method for vfork
7637    catchpoints.  */
7638
7639 static enum print_stop_action
7640 print_it_catch_vfork (bpstat bs)
7641 {
7642   struct ui_out *uiout = current_uiout;
7643   struct breakpoint *b = bs->breakpoint_at;
7644   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7645
7646   annotate_catchpoint (b->number);
7647   if (b->disposition == disp_del)
7648     ui_out_text (uiout, "\nTemporary catchpoint ");
7649   else
7650     ui_out_text (uiout, "\nCatchpoint ");
7651   if (ui_out_is_mi_like_p (uiout))
7652     {
7653       ui_out_field_string (uiout, "reason",
7654                            async_reason_lookup (EXEC_ASYNC_VFORK));
7655       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7656     }
7657   ui_out_field_int (uiout, "bkptno", b->number);
7658   ui_out_text (uiout, " (vforked process ");
7659   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7660   ui_out_text (uiout, "), ");
7661   return PRINT_SRC_AND_LOC;
7662 }
7663
7664 /* Implement the "print_one" breakpoint_ops method for vfork
7665    catchpoints.  */
7666
7667 static void
7668 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7669 {
7670   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7671   struct value_print_options opts;
7672   struct ui_out *uiout = current_uiout;
7673
7674   get_user_print_options (&opts);
7675   /* Field 4, the address, is omitted (which makes the columns not
7676      line up too nicely with the headers, but the effect is relatively
7677      readable).  */
7678   if (opts.addressprint)
7679     ui_out_field_skip (uiout, "addr");
7680   annotate_field (5);
7681   ui_out_text (uiout, "vfork");
7682   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7683     {
7684       ui_out_text (uiout, ", process ");
7685       ui_out_field_int (uiout, "what",
7686                         ptid_get_pid (c->forked_inferior_pid));
7687       ui_out_spaces (uiout, 1);
7688     }
7689
7690   if (ui_out_is_mi_like_p (uiout))
7691     ui_out_field_string (uiout, "catch-type", "vfork");
7692 }
7693
7694 /* Implement the "print_mention" breakpoint_ops method for vfork
7695    catchpoints.  */
7696
7697 static void
7698 print_mention_catch_vfork (struct breakpoint *b)
7699 {
7700   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7701 }
7702
7703 /* Implement the "print_recreate" breakpoint_ops method for vfork
7704    catchpoints.  */
7705
7706 static void
7707 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7708 {
7709   fprintf_unfiltered (fp, "catch vfork");
7710   print_recreate_thread (b, fp);
7711 }
7712
7713 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7714
7715 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7716
7717 /* An instance of this type is used to represent an solib catchpoint.
7718    It includes a "struct breakpoint" as a kind of base class; users
7719    downcast to "struct breakpoint *" when needed.  A breakpoint is
7720    really of this type iff its ops pointer points to
7721    CATCH_SOLIB_BREAKPOINT_OPS.  */
7722
7723 struct solib_catchpoint
7724 {
7725   /* The base class.  */
7726   struct breakpoint base;
7727
7728   /* True for "catch load", false for "catch unload".  */
7729   unsigned char is_load;
7730
7731   /* Regular expression to match, if any.  COMPILED is only valid when
7732      REGEX is non-NULL.  */
7733   char *regex;
7734   regex_t compiled;
7735 };
7736
7737 static void
7738 dtor_catch_solib (struct breakpoint *b)
7739 {
7740   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7741
7742   if (self->regex)
7743     regfree (&self->compiled);
7744   xfree (self->regex);
7745
7746   base_breakpoint_ops.dtor (b);
7747 }
7748
7749 static int
7750 insert_catch_solib (struct bp_location *ignore)
7751 {
7752   return 0;
7753 }
7754
7755 static int
7756 remove_catch_solib (struct bp_location *ignore)
7757 {
7758   return 0;
7759 }
7760
7761 static int
7762 breakpoint_hit_catch_solib (const struct bp_location *bl,
7763                             struct address_space *aspace,
7764                             CORE_ADDR bp_addr,
7765                             const struct target_waitstatus *ws)
7766 {
7767   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7768   struct breakpoint *other;
7769
7770   if (ws->kind == TARGET_WAITKIND_LOADED)
7771     return 1;
7772
7773   ALL_BREAKPOINTS (other)
7774   {
7775     struct bp_location *other_bl;
7776
7777     if (other == bl->owner)
7778       continue;
7779
7780     if (other->type != bp_shlib_event)
7781       continue;
7782
7783     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7784       continue;
7785
7786     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7787       {
7788         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7789           return 1;
7790       }
7791   }
7792
7793   return 0;
7794 }
7795
7796 static void
7797 check_status_catch_solib (struct bpstats *bs)
7798 {
7799   struct solib_catchpoint *self
7800     = (struct solib_catchpoint *) bs->breakpoint_at;
7801   int ix;
7802
7803   if (self->is_load)
7804     {
7805       struct so_list *iter;
7806
7807       for (ix = 0;
7808            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7809                         ix, iter);
7810            ++ix)
7811         {
7812           if (!self->regex
7813               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7814             return;
7815         }
7816     }
7817   else
7818     {
7819       char *iter;
7820
7821       for (ix = 0;
7822            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7823                         ix, iter);
7824            ++ix)
7825         {
7826           if (!self->regex
7827               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7828             return;
7829         }
7830     }
7831
7832   bs->stop = 0;
7833   bs->print_it = print_it_noop;
7834 }
7835
7836 static enum print_stop_action
7837 print_it_catch_solib (bpstat bs)
7838 {
7839   struct breakpoint *b = bs->breakpoint_at;
7840   struct ui_out *uiout = current_uiout;
7841
7842   annotate_catchpoint (b->number);
7843   if (b->disposition == disp_del)
7844     ui_out_text (uiout, "\nTemporary catchpoint ");
7845   else
7846     ui_out_text (uiout, "\nCatchpoint ");
7847   ui_out_field_int (uiout, "bkptno", b->number);
7848   ui_out_text (uiout, "\n");
7849   if (ui_out_is_mi_like_p (uiout))
7850     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7851   print_solib_event (1);
7852   return PRINT_SRC_AND_LOC;
7853 }
7854
7855 static void
7856 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7857 {
7858   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7859   struct value_print_options opts;
7860   struct ui_out *uiout = current_uiout;
7861   char *msg;
7862
7863   get_user_print_options (&opts);
7864   /* Field 4, the address, is omitted (which makes the columns not
7865      line up too nicely with the headers, but the effect is relatively
7866      readable).  */
7867   if (opts.addressprint)
7868     {
7869       annotate_field (4);
7870       ui_out_field_skip (uiout, "addr");
7871     }
7872
7873   annotate_field (5);
7874   if (self->is_load)
7875     {
7876       if (self->regex)
7877         msg = xstrprintf (_("load of library matching %s"), self->regex);
7878       else
7879         msg = xstrdup (_("load of library"));
7880     }
7881   else
7882     {
7883       if (self->regex)
7884         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7885       else
7886         msg = xstrdup (_("unload of library"));
7887     }
7888   ui_out_field_string (uiout, "what", msg);
7889   xfree (msg);
7890
7891   if (ui_out_is_mi_like_p (uiout))
7892     ui_out_field_string (uiout, "catch-type",
7893                          self->is_load ? "load" : "unload");
7894 }
7895
7896 static void
7897 print_mention_catch_solib (struct breakpoint *b)
7898 {
7899   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7900
7901   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7902                    self->is_load ? "load" : "unload");
7903 }
7904
7905 static void
7906 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7907 {
7908   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7909
7910   fprintf_unfiltered (fp, "%s %s",
7911                       b->disposition == disp_del ? "tcatch" : "catch",
7912                       self->is_load ? "load" : "unload");
7913   if (self->regex)
7914     fprintf_unfiltered (fp, " %s", self->regex);
7915   fprintf_unfiltered (fp, "\n");
7916 }
7917
7918 static struct breakpoint_ops catch_solib_breakpoint_ops;
7919
7920 /* Shared helper function (MI and CLI) for creating and installing
7921    a shared object event catchpoint.  If IS_LOAD is non-zero then
7922    the events to be caught are load events, otherwise they are
7923    unload events.  If IS_TEMP is non-zero the catchpoint is a
7924    temporary one.  If ENABLED is non-zero the catchpoint is
7925    created in an enabled state.  */
7926
7927 void
7928 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7929 {
7930   struct solib_catchpoint *c;
7931   struct gdbarch *gdbarch = get_current_arch ();
7932   struct cleanup *cleanup;
7933
7934   if (!arg)
7935     arg = "";
7936   arg = skip_spaces (arg);
7937
7938   c = XCNEW (struct solib_catchpoint);
7939   cleanup = make_cleanup (xfree, c);
7940
7941   if (*arg != '\0')
7942     {
7943       int errcode;
7944
7945       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7946       if (errcode != 0)
7947         {
7948           char *err = get_regcomp_error (errcode, &c->compiled);
7949
7950           make_cleanup (xfree, err);
7951           error (_("Invalid regexp (%s): %s"), err, arg);
7952         }
7953       c->regex = xstrdup (arg);
7954     }
7955
7956   c->is_load = is_load;
7957   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7958                    &catch_solib_breakpoint_ops);
7959
7960   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7961
7962   discard_cleanups (cleanup);
7963   install_breakpoint (0, &c->base, 1);
7964 }
7965
7966 /* A helper function that does all the work for "catch load" and
7967    "catch unload".  */
7968
7969 static void
7970 catch_load_or_unload (char *arg, int from_tty, int is_load,
7971                       struct cmd_list_element *command)
7972 {
7973   int tempflag;
7974   const int enabled = 1;
7975
7976   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7977
7978   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7979 }
7980
7981 static void
7982 catch_load_command_1 (char *arg, int from_tty,
7983                       struct cmd_list_element *command)
7984 {
7985   catch_load_or_unload (arg, from_tty, 1, command);
7986 }
7987
7988 static void
7989 catch_unload_command_1 (char *arg, int from_tty,
7990                         struct cmd_list_element *command)
7991 {
7992   catch_load_or_unload (arg, from_tty, 0, command);
7993 }
7994
7995 /* An instance of this type is used to represent a syscall catchpoint.
7996    It includes a "struct breakpoint" as a kind of base class; users
7997    downcast to "struct breakpoint *" when needed.  A breakpoint is
7998    really of this type iff its ops pointer points to
7999    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8000
8001 struct syscall_catchpoint
8002 {
8003   /* The base class.  */
8004   struct breakpoint base;
8005
8006   /* Syscall numbers used for the 'catch syscall' feature.  If no
8007      syscall has been specified for filtering, its value is NULL.
8008      Otherwise, it holds a list of all syscalls to be caught.  The
8009      list elements are allocated with xmalloc.  */
8010   VEC(int) *syscalls_to_be_caught;
8011 };
8012
8013 /* Implement the "dtor" breakpoint_ops method for syscall
8014    catchpoints.  */
8015
8016 static void
8017 dtor_catch_syscall (struct breakpoint *b)
8018 {
8019   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8020
8021   VEC_free (int, c->syscalls_to_be_caught);
8022
8023   base_breakpoint_ops.dtor (b);
8024 }
8025
8026 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8027
8028 struct catch_syscall_inferior_data
8029 {
8030   /* We keep a count of the number of times the user has requested a
8031      particular syscall to be tracked, and pass this information to the
8032      target.  This lets capable targets implement filtering directly.  */
8033
8034   /* Number of times that "any" syscall is requested.  */
8035   int any_syscall_count;
8036
8037   /* Count of each system call.  */
8038   VEC(int) *syscalls_counts;
8039
8040   /* This counts all syscall catch requests, so we can readily determine
8041      if any catching is necessary.  */
8042   int total_syscalls_count;
8043 };
8044
8045 static struct catch_syscall_inferior_data*
8046 get_catch_syscall_inferior_data (struct inferior *inf)
8047 {
8048   struct catch_syscall_inferior_data *inf_data;
8049
8050   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8051   if (inf_data == NULL)
8052     {
8053       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8054       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8055     }
8056
8057   return inf_data;
8058 }
8059
8060 static void
8061 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8062 {
8063   xfree (arg);
8064 }
8065
8066
8067 /* Implement the "insert" breakpoint_ops method for syscall
8068    catchpoints.  */
8069
8070 static int
8071 insert_catch_syscall (struct bp_location *bl)
8072 {
8073   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8074   struct inferior *inf = current_inferior ();
8075   struct catch_syscall_inferior_data *inf_data
8076     = get_catch_syscall_inferior_data (inf);
8077
8078   ++inf_data->total_syscalls_count;
8079   if (!c->syscalls_to_be_caught)
8080     ++inf_data->any_syscall_count;
8081   else
8082     {
8083       int i, iter;
8084
8085       for (i = 0;
8086            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8087            i++)
8088         {
8089           int elem;
8090
8091           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8092             {
8093               int old_size = VEC_length (int, inf_data->syscalls_counts);
8094               uintptr_t vec_addr_offset
8095                 = old_size * ((uintptr_t) sizeof (int));
8096               uintptr_t vec_addr;
8097               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8098               vec_addr = ((uintptr_t) VEC_address (int,
8099                                                   inf_data->syscalls_counts)
8100                           + vec_addr_offset);
8101               memset ((void *) vec_addr, 0,
8102                       (iter + 1 - old_size) * sizeof (int));
8103             }
8104           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8105           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8106         }
8107     }
8108
8109   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8110                                         inf_data->total_syscalls_count != 0,
8111                                         inf_data->any_syscall_count,
8112                                         VEC_length (int,
8113                                                     inf_data->syscalls_counts),
8114                                         VEC_address (int,
8115                                                      inf_data->syscalls_counts));
8116 }
8117
8118 /* Implement the "remove" breakpoint_ops method for syscall
8119    catchpoints.  */
8120
8121 static int
8122 remove_catch_syscall (struct bp_location *bl)
8123 {
8124   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8125   struct inferior *inf = current_inferior ();
8126   struct catch_syscall_inferior_data *inf_data
8127     = get_catch_syscall_inferior_data (inf);
8128
8129   --inf_data->total_syscalls_count;
8130   if (!c->syscalls_to_be_caught)
8131     --inf_data->any_syscall_count;
8132   else
8133     {
8134       int i, iter;
8135
8136       for (i = 0;
8137            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8138            i++)
8139         {
8140           int elem;
8141           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8142             /* Shouldn't happen.  */
8143             continue;
8144           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8145           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8146         }
8147     }
8148
8149   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8150                                         inf_data->total_syscalls_count != 0,
8151                                         inf_data->any_syscall_count,
8152                                         VEC_length (int,
8153                                                     inf_data->syscalls_counts),
8154                                         VEC_address (int,
8155                                                      inf_data->syscalls_counts));
8156 }
8157
8158 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8159    catchpoints.  */
8160
8161 static int
8162 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8163                               struct address_space *aspace, CORE_ADDR bp_addr,
8164                               const struct target_waitstatus *ws)
8165 {
8166   /* We must check if we are catching specific syscalls in this
8167      breakpoint.  If we are, then we must guarantee that the called
8168      syscall is the same syscall we are catching.  */
8169   int syscall_number = 0;
8170   const struct syscall_catchpoint *c
8171     = (const struct syscall_catchpoint *) bl->owner;
8172
8173   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8174       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8175     return 0;
8176
8177   syscall_number = ws->value.syscall_number;
8178
8179   /* Now, checking if the syscall is the same.  */
8180   if (c->syscalls_to_be_caught)
8181     {
8182       int i, iter;
8183
8184       for (i = 0;
8185            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8186            i++)
8187         if (syscall_number == iter)
8188           break;
8189       /* Not the same.  */
8190       if (!iter)
8191         return 0;
8192     }
8193
8194   return 1;
8195 }
8196
8197 /* Implement the "print_it" breakpoint_ops method for syscall
8198    catchpoints.  */
8199
8200 static enum print_stop_action
8201 print_it_catch_syscall (bpstat bs)
8202 {
8203   struct ui_out *uiout = current_uiout;
8204   struct breakpoint *b = bs->breakpoint_at;
8205   /* These are needed because we want to know in which state a
8206      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8207      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8208      must print "called syscall" or "returned from syscall".  */
8209   ptid_t ptid;
8210   struct target_waitstatus last;
8211   struct syscall s;
8212
8213   get_last_target_status (&ptid, &last);
8214
8215   get_syscall_by_number (last.value.syscall_number, &s);
8216
8217   annotate_catchpoint (b->number);
8218
8219   if (b->disposition == disp_del)
8220     ui_out_text (uiout, "\nTemporary catchpoint ");
8221   else
8222     ui_out_text (uiout, "\nCatchpoint ");
8223   if (ui_out_is_mi_like_p (uiout))
8224     {
8225       ui_out_field_string (uiout, "reason",
8226                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8227                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8228                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8229       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8230     }
8231   ui_out_field_int (uiout, "bkptno", b->number);
8232
8233   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8234     ui_out_text (uiout, " (call to syscall ");
8235   else
8236     ui_out_text (uiout, " (returned from syscall ");
8237
8238   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8239     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8240   if (s.name != NULL)
8241     ui_out_field_string (uiout, "syscall-name", s.name);
8242
8243   ui_out_text (uiout, "), ");
8244
8245   return PRINT_SRC_AND_LOC;
8246 }
8247
8248 /* Implement the "print_one" breakpoint_ops method for syscall
8249    catchpoints.  */
8250
8251 static void
8252 print_one_catch_syscall (struct breakpoint *b,
8253                          struct bp_location **last_loc)
8254 {
8255   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8256   struct value_print_options opts;
8257   struct ui_out *uiout = current_uiout;
8258
8259   get_user_print_options (&opts);
8260   /* Field 4, the address, is omitted (which makes the columns not
8261      line up too nicely with the headers, but the effect is relatively
8262      readable).  */
8263   if (opts.addressprint)
8264     ui_out_field_skip (uiout, "addr");
8265   annotate_field (5);
8266
8267   if (c->syscalls_to_be_caught
8268       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8269     ui_out_text (uiout, "syscalls \"");
8270   else
8271     ui_out_text (uiout, "syscall \"");
8272
8273   if (c->syscalls_to_be_caught)
8274     {
8275       int i, iter;
8276       char *text = xstrprintf ("%s", "");
8277
8278       for (i = 0;
8279            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8280            i++)
8281         {
8282           char *x = text;
8283           struct syscall s;
8284           get_syscall_by_number (iter, &s);
8285
8286           if (s.name != NULL)
8287             text = xstrprintf ("%s%s, ", text, s.name);
8288           else
8289             text = xstrprintf ("%s%d, ", text, iter);
8290
8291           /* We have to xfree the last 'text' (now stored at 'x')
8292              because xstrprintf dynamically allocates new space for it
8293              on every call.  */
8294           xfree (x);
8295         }
8296       /* Remove the last comma.  */
8297       text[strlen (text) - 2] = '\0';
8298       ui_out_field_string (uiout, "what", text);
8299     }
8300   else
8301     ui_out_field_string (uiout, "what", "<any syscall>");
8302   ui_out_text (uiout, "\" ");
8303
8304   if (ui_out_is_mi_like_p (uiout))
8305     ui_out_field_string (uiout, "catch-type", "syscall");
8306 }
8307
8308 /* Implement the "print_mention" breakpoint_ops method for syscall
8309    catchpoints.  */
8310
8311 static void
8312 print_mention_catch_syscall (struct breakpoint *b)
8313 {
8314   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8315
8316   if (c->syscalls_to_be_caught)
8317     {
8318       int i, iter;
8319
8320       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8321         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8322       else
8323         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8324
8325       for (i = 0;
8326            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8327            i++)
8328         {
8329           struct syscall s;
8330           get_syscall_by_number (iter, &s);
8331
8332           if (s.name)
8333             printf_filtered (" '%s' [%d]", s.name, s.number);
8334           else
8335             printf_filtered (" %d", s.number);
8336         }
8337       printf_filtered (")");
8338     }
8339   else
8340     printf_filtered (_("Catchpoint %d (any syscall)"),
8341                      b->number);
8342 }
8343
8344 /* Implement the "print_recreate" breakpoint_ops method for syscall
8345    catchpoints.  */
8346
8347 static void
8348 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8349 {
8350   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8351
8352   fprintf_unfiltered (fp, "catch syscall");
8353
8354   if (c->syscalls_to_be_caught)
8355     {
8356       int i, iter;
8357
8358       for (i = 0;
8359            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8360            i++)
8361         {
8362           struct syscall s;
8363
8364           get_syscall_by_number (iter, &s);
8365           if (s.name)
8366             fprintf_unfiltered (fp, " %s", s.name);
8367           else
8368             fprintf_unfiltered (fp, " %d", s.number);
8369         }
8370     }
8371   print_recreate_thread (b, fp);
8372 }
8373
8374 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8375
8376 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8377
8378 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8379
8380 static int
8381 syscall_catchpoint_p (struct breakpoint *b)
8382 {
8383   return (b->ops == &catch_syscall_breakpoint_ops);
8384 }
8385
8386 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8387    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8388    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8389    the breakpoint_ops structure associated to the catchpoint.  */
8390
8391 void
8392 init_catchpoint (struct breakpoint *b,
8393                  struct gdbarch *gdbarch, int tempflag,
8394                  char *cond_string,
8395                  const struct breakpoint_ops *ops)
8396 {
8397   struct symtab_and_line sal;
8398
8399   init_sal (&sal);
8400   sal.pspace = current_program_space;
8401
8402   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8403
8404   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8405   b->disposition = tempflag ? disp_del : disp_donttouch;
8406 }
8407
8408 void
8409 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8410 {
8411   add_to_breakpoint_chain (b);
8412   set_breakpoint_number (internal, b);
8413   if (is_tracepoint (b))
8414     set_tracepoint_count (breakpoint_count);
8415   if (!internal)
8416     mention (b);
8417   observer_notify_breakpoint_created (b);
8418
8419   if (update_gll)
8420     update_global_location_list (1);
8421 }
8422
8423 static void
8424 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8425                                     int tempflag, char *cond_string,
8426                                     const struct breakpoint_ops *ops)
8427 {
8428   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8429
8430   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8431
8432   c->forked_inferior_pid = null_ptid;
8433
8434   install_breakpoint (0, &c->base, 1);
8435 }
8436
8437 /* Exec catchpoints.  */
8438
8439 /* An instance of this type is used to represent an exec catchpoint.
8440    It includes a "struct breakpoint" as a kind of base class; users
8441    downcast to "struct breakpoint *" when needed.  A breakpoint is
8442    really of this type iff its ops pointer points to
8443    CATCH_EXEC_BREAKPOINT_OPS.  */
8444
8445 struct exec_catchpoint
8446 {
8447   /* The base class.  */
8448   struct breakpoint base;
8449
8450   /* Filename of a program whose exec triggered this catchpoint.
8451      This field is only valid immediately after this catchpoint has
8452      triggered.  */
8453   char *exec_pathname;
8454 };
8455
8456 /* Implement the "dtor" breakpoint_ops method for exec
8457    catchpoints.  */
8458
8459 static void
8460 dtor_catch_exec (struct breakpoint *b)
8461 {
8462   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8463
8464   xfree (c->exec_pathname);
8465
8466   base_breakpoint_ops.dtor (b);
8467 }
8468
8469 static int
8470 insert_catch_exec (struct bp_location *bl)
8471 {
8472   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8473 }
8474
8475 static int
8476 remove_catch_exec (struct bp_location *bl)
8477 {
8478   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8479 }
8480
8481 static int
8482 breakpoint_hit_catch_exec (const struct bp_location *bl,
8483                            struct address_space *aspace, CORE_ADDR bp_addr,
8484                            const struct target_waitstatus *ws)
8485 {
8486   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8487
8488   if (ws->kind != TARGET_WAITKIND_EXECD)
8489     return 0;
8490
8491   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8492   return 1;
8493 }
8494
8495 static enum print_stop_action
8496 print_it_catch_exec (bpstat bs)
8497 {
8498   struct ui_out *uiout = current_uiout;
8499   struct breakpoint *b = bs->breakpoint_at;
8500   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8501
8502   annotate_catchpoint (b->number);
8503   if (b->disposition == disp_del)
8504     ui_out_text (uiout, "\nTemporary catchpoint ");
8505   else
8506     ui_out_text (uiout, "\nCatchpoint ");
8507   if (ui_out_is_mi_like_p (uiout))
8508     {
8509       ui_out_field_string (uiout, "reason",
8510                            async_reason_lookup (EXEC_ASYNC_EXEC));
8511       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8512     }
8513   ui_out_field_int (uiout, "bkptno", b->number);
8514   ui_out_text (uiout, " (exec'd ");
8515   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8516   ui_out_text (uiout, "), ");
8517
8518   return PRINT_SRC_AND_LOC;
8519 }
8520
8521 static void
8522 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8523 {
8524   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8525   struct value_print_options opts;
8526   struct ui_out *uiout = current_uiout;
8527
8528   get_user_print_options (&opts);
8529
8530   /* Field 4, the address, is omitted (which makes the columns
8531      not line up too nicely with the headers, but the effect
8532      is relatively readable).  */
8533   if (opts.addressprint)
8534     ui_out_field_skip (uiout, "addr");
8535   annotate_field (5);
8536   ui_out_text (uiout, "exec");
8537   if (c->exec_pathname != NULL)
8538     {
8539       ui_out_text (uiout, ", program \"");
8540       ui_out_field_string (uiout, "what", c->exec_pathname);
8541       ui_out_text (uiout, "\" ");
8542     }
8543
8544   if (ui_out_is_mi_like_p (uiout))
8545     ui_out_field_string (uiout, "catch-type", "exec");
8546 }
8547
8548 static void
8549 print_mention_catch_exec (struct breakpoint *b)
8550 {
8551   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8552 }
8553
8554 /* Implement the "print_recreate" breakpoint_ops method for exec
8555    catchpoints.  */
8556
8557 static void
8558 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8559 {
8560   fprintf_unfiltered (fp, "catch exec");
8561   print_recreate_thread (b, fp);
8562 }
8563
8564 static struct breakpoint_ops catch_exec_breakpoint_ops;
8565
8566 static void
8567 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8568                                  const struct breakpoint_ops *ops)
8569 {
8570   struct syscall_catchpoint *c;
8571   struct gdbarch *gdbarch = get_current_arch ();
8572
8573   c = XNEW (struct syscall_catchpoint);
8574   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8575   c->syscalls_to_be_caught = filter;
8576
8577   install_breakpoint (0, &c->base, 1);
8578 }
8579
8580 static int
8581 hw_breakpoint_used_count (void)
8582 {
8583   int i = 0;
8584   struct breakpoint *b;
8585   struct bp_location *bl;
8586
8587   ALL_BREAKPOINTS (b)
8588   {
8589     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8590       for (bl = b->loc; bl; bl = bl->next)
8591         {
8592           /* Special types of hardware breakpoints may use more than
8593              one register.  */
8594           i += b->ops->resources_needed (bl);
8595         }
8596   }
8597
8598   return i;
8599 }
8600
8601 /* Returns the resources B would use if it were a hardware
8602    watchpoint.  */
8603
8604 static int
8605 hw_watchpoint_use_count (struct breakpoint *b)
8606 {
8607   int i = 0;
8608   struct bp_location *bl;
8609
8610   if (!breakpoint_enabled (b))
8611     return 0;
8612
8613   for (bl = b->loc; bl; bl = bl->next)
8614     {
8615       /* Special types of hardware watchpoints may use more than
8616          one register.  */
8617       i += b->ops->resources_needed (bl);
8618     }
8619
8620   return i;
8621 }
8622
8623 /* Returns the sum the used resources of all hardware watchpoints of
8624    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8625    the sum of the used resources of all hardware watchpoints of other
8626    types _not_ TYPE.  */
8627
8628 static int
8629 hw_watchpoint_used_count_others (struct breakpoint *except,
8630                                  enum bptype type, int *other_type_used)
8631 {
8632   int i = 0;
8633   struct breakpoint *b;
8634
8635   *other_type_used = 0;
8636   ALL_BREAKPOINTS (b)
8637     {
8638       if (b == except)
8639         continue;
8640       if (!breakpoint_enabled (b))
8641         continue;
8642
8643       if (b->type == type)
8644         i += hw_watchpoint_use_count (b);
8645       else if (is_hardware_watchpoint (b))
8646         *other_type_used = 1;
8647     }
8648
8649   return i;
8650 }
8651
8652 void
8653 disable_watchpoints_before_interactive_call_start (void)
8654 {
8655   struct breakpoint *b;
8656
8657   ALL_BREAKPOINTS (b)
8658   {
8659     if (is_watchpoint (b) && breakpoint_enabled (b))
8660       {
8661         b->enable_state = bp_call_disabled;
8662         update_global_location_list (0);
8663       }
8664   }
8665 }
8666
8667 void
8668 enable_watchpoints_after_interactive_call_stop (void)
8669 {
8670   struct breakpoint *b;
8671
8672   ALL_BREAKPOINTS (b)
8673   {
8674     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8675       {
8676         b->enable_state = bp_enabled;
8677         update_global_location_list (1);
8678       }
8679   }
8680 }
8681
8682 void
8683 disable_breakpoints_before_startup (void)
8684 {
8685   current_program_space->executing_startup = 1;
8686   update_global_location_list (0);
8687 }
8688
8689 void
8690 enable_breakpoints_after_startup (void)
8691 {
8692   current_program_space->executing_startup = 0;
8693   breakpoint_re_set ();
8694 }
8695
8696
8697 /* Set a breakpoint that will evaporate an end of command
8698    at address specified by SAL.
8699    Restrict it to frame FRAME if FRAME is nonzero.  */
8700
8701 struct breakpoint *
8702 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8703                           struct frame_id frame_id, enum bptype type)
8704 {
8705   struct breakpoint *b;
8706
8707   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8708      tail-called one.  */
8709   gdb_assert (!frame_id_artificial_p (frame_id));
8710
8711   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8712   b->enable_state = bp_enabled;
8713   b->disposition = disp_donttouch;
8714   b->frame_id = frame_id;
8715
8716   /* If we're debugging a multi-threaded program, then we want
8717      momentary breakpoints to be active in only a single thread of
8718      control.  */
8719   if (in_thread_list (inferior_ptid))
8720     b->thread = pid_to_thread_id (inferior_ptid);
8721
8722   update_global_location_list_nothrow (1);
8723
8724   return b;
8725 }
8726
8727 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8728    The new breakpoint will have type TYPE, and use OPS as it
8729    breakpoint_ops.  */
8730
8731 static struct breakpoint *
8732 momentary_breakpoint_from_master (struct breakpoint *orig,
8733                                   enum bptype type,
8734                                   const struct breakpoint_ops *ops)
8735 {
8736   struct breakpoint *copy;
8737
8738   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8739   copy->loc = allocate_bp_location (copy);
8740   set_breakpoint_location_function (copy->loc, 1);
8741
8742   copy->loc->gdbarch = orig->loc->gdbarch;
8743   copy->loc->requested_address = orig->loc->requested_address;
8744   copy->loc->address = orig->loc->address;
8745   copy->loc->section = orig->loc->section;
8746   copy->loc->pspace = orig->loc->pspace;
8747   copy->loc->probe = orig->loc->probe;
8748   copy->loc->line_number = orig->loc->line_number;
8749   copy->loc->symtab = orig->loc->symtab;
8750   copy->frame_id = orig->frame_id;
8751   copy->thread = orig->thread;
8752   copy->pspace = orig->pspace;
8753
8754   copy->enable_state = bp_enabled;
8755   copy->disposition = disp_donttouch;
8756   copy->number = internal_breakpoint_number--;
8757
8758   update_global_location_list_nothrow (0);
8759   return copy;
8760 }
8761
8762 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8763    ORIG is NULL.  */
8764
8765 struct breakpoint *
8766 clone_momentary_breakpoint (struct breakpoint *orig)
8767 {
8768   /* If there's nothing to clone, then return nothing.  */
8769   if (orig == NULL)
8770     return NULL;
8771
8772   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8773 }
8774
8775 struct breakpoint *
8776 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8777                                 enum bptype type)
8778 {
8779   struct symtab_and_line sal;
8780
8781   sal = find_pc_line (pc, 0);
8782   sal.pc = pc;
8783   sal.section = find_pc_overlay (pc);
8784   sal.explicit_pc = 1;
8785
8786   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8787 }
8788 \f
8789
8790 /* Tell the user we have just set a breakpoint B.  */
8791
8792 static void
8793 mention (struct breakpoint *b)
8794 {
8795   b->ops->print_mention (b);
8796   if (ui_out_is_mi_like_p (current_uiout))
8797     return;
8798   printf_filtered ("\n");
8799 }
8800 \f
8801
8802 static struct bp_location *
8803 add_location_to_breakpoint (struct breakpoint *b,
8804                             const struct symtab_and_line *sal)
8805 {
8806   struct bp_location *loc, **tmp;
8807   CORE_ADDR adjusted_address;
8808   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8809
8810   if (loc_gdbarch == NULL)
8811     loc_gdbarch = b->gdbarch;
8812
8813   /* Adjust the breakpoint's address prior to allocating a location.
8814      Once we call allocate_bp_location(), that mostly uninitialized
8815      location will be placed on the location chain.  Adjustment of the
8816      breakpoint may cause target_read_memory() to be called and we do
8817      not want its scan of the location chain to find a breakpoint and
8818      location that's only been partially initialized.  */
8819   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8820                                                 sal->pc, b->type);
8821
8822   /* Sort the locations by their ADDRESS.  */
8823   loc = allocate_bp_location (b);
8824   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8825        tmp = &((*tmp)->next))
8826     ;
8827   loc->next = *tmp;
8828   *tmp = loc;
8829
8830   loc->requested_address = sal->pc;
8831   loc->address = adjusted_address;
8832   loc->pspace = sal->pspace;
8833   loc->probe = sal->probe;
8834   gdb_assert (loc->pspace != NULL);
8835   loc->section = sal->section;
8836   loc->gdbarch = loc_gdbarch;
8837   loc->line_number = sal->line;
8838   loc->symtab = sal->symtab;
8839
8840   set_breakpoint_location_function (loc,
8841                                     sal->explicit_pc || sal->explicit_line);
8842   return loc;
8843 }
8844 \f
8845
8846 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8847    return 0 otherwise.  */
8848
8849 static int
8850 bp_loc_is_permanent (struct bp_location *loc)
8851 {
8852   int len;
8853   CORE_ADDR addr;
8854   const gdb_byte *bpoint;
8855   gdb_byte *target_mem;
8856   struct cleanup *cleanup;
8857   int retval = 0;
8858
8859   gdb_assert (loc != NULL);
8860
8861   addr = loc->address;
8862   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8863
8864   /* Software breakpoints unsupported?  */
8865   if (bpoint == NULL)
8866     return 0;
8867
8868   target_mem = alloca (len);
8869
8870   /* Enable the automatic memory restoration from breakpoints while
8871      we read the memory.  Otherwise we could say about our temporary
8872      breakpoints they are permanent.  */
8873   cleanup = save_current_space_and_thread ();
8874
8875   switch_to_program_space_and_thread (loc->pspace);
8876   make_show_memory_breakpoints_cleanup (0);
8877
8878   if (target_read_memory (loc->address, target_mem, len) == 0
8879       && memcmp (target_mem, bpoint, len) == 0)
8880     retval = 1;
8881
8882   do_cleanups (cleanup);
8883
8884   return retval;
8885 }
8886
8887 /* Build a command list for the dprintf corresponding to the current
8888    settings of the dprintf style options.  */
8889
8890 static void
8891 update_dprintf_command_list (struct breakpoint *b)
8892 {
8893   char *dprintf_args = b->extra_string;
8894   char *printf_line = NULL;
8895
8896   if (!dprintf_args)
8897     return;
8898
8899   dprintf_args = skip_spaces (dprintf_args);
8900
8901   /* Allow a comma, as it may have terminated a location, but don't
8902      insist on it.  */
8903   if (*dprintf_args == ',')
8904     ++dprintf_args;
8905   dprintf_args = skip_spaces (dprintf_args);
8906
8907   if (*dprintf_args != '"')
8908     error (_("Bad format string, missing '\"'."));
8909
8910   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8911     printf_line = xstrprintf ("printf %s", dprintf_args);
8912   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8913     {
8914       if (!dprintf_function)
8915         error (_("No function supplied for dprintf call"));
8916
8917       if (dprintf_channel && strlen (dprintf_channel) > 0)
8918         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8919                                   dprintf_function,
8920                                   dprintf_channel,
8921                                   dprintf_args);
8922       else
8923         printf_line = xstrprintf ("call (void) %s (%s)",
8924                                   dprintf_function,
8925                                   dprintf_args);
8926     }
8927   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8928     {
8929       if (target_can_run_breakpoint_commands ())
8930         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8931       else
8932         {
8933           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8934           printf_line = xstrprintf ("printf %s", dprintf_args);
8935         }
8936     }
8937   else
8938     internal_error (__FILE__, __LINE__,
8939                     _("Invalid dprintf style."));
8940
8941   gdb_assert (printf_line != NULL);
8942   /* Manufacture a printf/continue sequence.  */
8943   {
8944     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8945
8946     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8947       {
8948         cont_cmd_line = xmalloc (sizeof (struct command_line));
8949         cont_cmd_line->control_type = simple_control;
8950         cont_cmd_line->body_count = 0;
8951         cont_cmd_line->body_list = NULL;
8952         cont_cmd_line->next = NULL;
8953         cont_cmd_line->line = xstrdup ("continue");
8954       }
8955
8956     printf_cmd_line = xmalloc (sizeof (struct command_line));
8957     printf_cmd_line->control_type = simple_control;
8958     printf_cmd_line->body_count = 0;
8959     printf_cmd_line->body_list = NULL;
8960     printf_cmd_line->next = cont_cmd_line;
8961     printf_cmd_line->line = printf_line;
8962
8963     breakpoint_set_commands (b, printf_cmd_line);
8964   }
8965 }
8966
8967 /* Update all dprintf commands, making their command lists reflect
8968    current style settings.  */
8969
8970 static void
8971 update_dprintf_commands (char *args, int from_tty,
8972                          struct cmd_list_element *c)
8973 {
8974   struct breakpoint *b;
8975
8976   ALL_BREAKPOINTS (b)
8977     {
8978       if (b->type == bp_dprintf)
8979         update_dprintf_command_list (b);
8980     }
8981 }
8982
8983 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8984    as textual description of the location, and COND_STRING
8985    as condition expression.  */
8986
8987 static void
8988 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8989                      struct symtabs_and_lines sals, char *addr_string,
8990                      char *filter, char *cond_string,
8991                      char *extra_string,
8992                      enum bptype type, enum bpdisp disposition,
8993                      int thread, int task, int ignore_count,
8994                      const struct breakpoint_ops *ops, int from_tty,
8995                      int enabled, int internal, unsigned flags,
8996                      int display_canonical)
8997 {
8998   int i;
8999
9000   if (type == bp_hardware_breakpoint)
9001     {
9002       int target_resources_ok;
9003
9004       i = hw_breakpoint_used_count ();
9005       target_resources_ok =
9006         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9007                                             i + 1, 0);
9008       if (target_resources_ok == 0)
9009         error (_("No hardware breakpoint support in the target."));
9010       else if (target_resources_ok < 0)
9011         error (_("Hardware breakpoints used exceeds limit."));
9012     }
9013
9014   gdb_assert (sals.nelts > 0);
9015
9016   for (i = 0; i < sals.nelts; ++i)
9017     {
9018       struct symtab_and_line sal = sals.sals[i];
9019       struct bp_location *loc;
9020
9021       if (from_tty)
9022         {
9023           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9024           if (!loc_gdbarch)
9025             loc_gdbarch = gdbarch;
9026
9027           describe_other_breakpoints (loc_gdbarch,
9028                                       sal.pspace, sal.pc, sal.section, thread);
9029         }
9030
9031       if (i == 0)
9032         {
9033           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9034           b->thread = thread;
9035           b->task = task;
9036
9037           b->cond_string = cond_string;
9038           b->extra_string = extra_string;
9039           b->ignore_count = ignore_count;
9040           b->enable_state = enabled ? bp_enabled : bp_disabled;
9041           b->disposition = disposition;
9042
9043           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9044             b->loc->inserted = 1;
9045
9046           if (type == bp_static_tracepoint)
9047             {
9048               struct tracepoint *t = (struct tracepoint *) b;
9049               struct static_tracepoint_marker marker;
9050
9051               if (strace_marker_p (b))
9052                 {
9053                   /* We already know the marker exists, otherwise, we
9054                      wouldn't see a sal for it.  */
9055                   char *p = &addr_string[3];
9056                   char *endp;
9057                   char *marker_str;
9058
9059                   p = skip_spaces (p);
9060
9061                   endp = skip_to_space (p);
9062
9063                   marker_str = savestring (p, endp - p);
9064                   t->static_trace_marker_id = marker_str;
9065
9066                   printf_filtered (_("Probed static tracepoint "
9067                                      "marker \"%s\"\n"),
9068                                    t->static_trace_marker_id);
9069                 }
9070               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9071                 {
9072                   t->static_trace_marker_id = xstrdup (marker.str_id);
9073                   release_static_tracepoint_marker (&marker);
9074
9075                   printf_filtered (_("Probed static tracepoint "
9076                                      "marker \"%s\"\n"),
9077                                    t->static_trace_marker_id);
9078                 }
9079               else
9080                 warning (_("Couldn't determine the static "
9081                            "tracepoint marker to probe"));
9082             }
9083
9084           loc = b->loc;
9085         }
9086       else
9087         {
9088           loc = add_location_to_breakpoint (b, &sal);
9089           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9090             loc->inserted = 1;
9091         }
9092
9093       if (bp_loc_is_permanent (loc))
9094         make_breakpoint_permanent (b);
9095
9096       if (b->cond_string)
9097         {
9098           const char *arg = b->cond_string;
9099
9100           loc->cond = parse_exp_1 (&arg, loc->address,
9101                                    block_for_pc (loc->address), 0);
9102           if (*arg)
9103               error (_("Garbage '%s' follows condition"), arg);
9104         }
9105
9106       /* Dynamic printf requires and uses additional arguments on the
9107          command line, otherwise it's an error.  */
9108       if (type == bp_dprintf)
9109         {
9110           if (b->extra_string)
9111             update_dprintf_command_list (b);
9112           else
9113             error (_("Format string required"));
9114         }
9115       else if (b->extra_string)
9116         error (_("Garbage '%s' at end of command"), b->extra_string);
9117     }
9118
9119   b->display_canonical = display_canonical;
9120   if (addr_string)
9121     b->addr_string = addr_string;
9122   else
9123     /* addr_string has to be used or breakpoint_re_set will delete
9124        me.  */
9125     b->addr_string
9126       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9127   b->filter = filter;
9128 }
9129
9130 static void
9131 create_breakpoint_sal (struct gdbarch *gdbarch,
9132                        struct symtabs_and_lines sals, char *addr_string,
9133                        char *filter, char *cond_string,
9134                        char *extra_string,
9135                        enum bptype type, enum bpdisp disposition,
9136                        int thread, int task, int ignore_count,
9137                        const struct breakpoint_ops *ops, int from_tty,
9138                        int enabled, int internal, unsigned flags,
9139                        int display_canonical)
9140 {
9141   struct breakpoint *b;
9142   struct cleanup *old_chain;
9143
9144   if (is_tracepoint_type (type))
9145     {
9146       struct tracepoint *t;
9147
9148       t = XCNEW (struct tracepoint);
9149       b = &t->base;
9150     }
9151   else
9152     b = XNEW (struct breakpoint);
9153
9154   old_chain = make_cleanup (xfree, b);
9155
9156   init_breakpoint_sal (b, gdbarch,
9157                        sals, addr_string,
9158                        filter, cond_string, extra_string,
9159                        type, disposition,
9160                        thread, task, ignore_count,
9161                        ops, from_tty,
9162                        enabled, internal, flags,
9163                        display_canonical);
9164   discard_cleanups (old_chain);
9165
9166   install_breakpoint (internal, b, 0);
9167 }
9168
9169 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9170    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9171    value.  COND_STRING, if not NULL, specified the condition to be
9172    used for all breakpoints.  Essentially the only case where
9173    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9174    function.  In that case, it's still not possible to specify
9175    separate conditions for different overloaded functions, so
9176    we take just a single condition string.
9177    
9178    NOTE: If the function succeeds, the caller is expected to cleanup
9179    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9180    array contents).  If the function fails (error() is called), the
9181    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9182    COND and SALS arrays and each of those arrays contents.  */
9183
9184 static void
9185 create_breakpoints_sal (struct gdbarch *gdbarch,
9186                         struct linespec_result *canonical,
9187                         char *cond_string, char *extra_string,
9188                         enum bptype type, enum bpdisp disposition,
9189                         int thread, int task, int ignore_count,
9190                         const struct breakpoint_ops *ops, int from_tty,
9191                         int enabled, int internal, unsigned flags)
9192 {
9193   int i;
9194   struct linespec_sals *lsal;
9195
9196   if (canonical->pre_expanded)
9197     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9198
9199   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9200     {
9201       /* Note that 'addr_string' can be NULL in the case of a plain
9202          'break', without arguments.  */
9203       char *addr_string = (canonical->addr_string
9204                            ? xstrdup (canonical->addr_string)
9205                            : NULL);
9206       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9207       struct cleanup *inner = make_cleanup (xfree, addr_string);
9208
9209       make_cleanup (xfree, filter_string);
9210       create_breakpoint_sal (gdbarch, lsal->sals,
9211                              addr_string,
9212                              filter_string,
9213                              cond_string, extra_string,
9214                              type, disposition,
9215                              thread, task, ignore_count, ops,
9216                              from_tty, enabled, internal, flags,
9217                              canonical->special_display);
9218       discard_cleanups (inner);
9219     }
9220 }
9221
9222 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9223    followed by conditionals.  On return, SALS contains an array of SAL
9224    addresses found.  ADDR_STRING contains a vector of (canonical)
9225    address strings.  ADDRESS points to the end of the SAL.
9226
9227    The array and the line spec strings are allocated on the heap, it is
9228    the caller's responsibility to free them.  */
9229
9230 static void
9231 parse_breakpoint_sals (char **address,
9232                        struct linespec_result *canonical)
9233 {
9234   /* If no arg given, or if first arg is 'if ', use the default
9235      breakpoint.  */
9236   if ((*address) == NULL
9237       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9238     {
9239       /* The last displayed codepoint, if it's valid, is our default breakpoint
9240          address.  */
9241       if (last_displayed_sal_is_valid ())
9242         {
9243           struct linespec_sals lsal;
9244           struct symtab_and_line sal;
9245           CORE_ADDR pc;
9246
9247           init_sal (&sal);              /* Initialize to zeroes.  */
9248           lsal.sals.sals = (struct symtab_and_line *)
9249             xmalloc (sizeof (struct symtab_and_line));
9250
9251           /* Set sal's pspace, pc, symtab, and line to the values
9252              corresponding to the last call to print_frame_info.
9253              Be sure to reinitialize LINE with NOTCURRENT == 0
9254              as the breakpoint line number is inappropriate otherwise.
9255              find_pc_line would adjust PC, re-set it back.  */
9256           get_last_displayed_sal (&sal);
9257           pc = sal.pc;
9258           sal = find_pc_line (pc, 0);
9259
9260           /* "break" without arguments is equivalent to "break *PC"
9261              where PC is the last displayed codepoint's address.  So
9262              make sure to set sal.explicit_pc to prevent GDB from
9263              trying to expand the list of sals to include all other
9264              instances with the same symtab and line.  */
9265           sal.pc = pc;
9266           sal.explicit_pc = 1;
9267
9268           lsal.sals.sals[0] = sal;
9269           lsal.sals.nelts = 1;
9270           lsal.canonical = NULL;
9271
9272           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9273         }
9274       else
9275         error (_("No default breakpoint address now."));
9276     }
9277   else
9278     {
9279       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9280
9281       /* Force almost all breakpoints to be in terms of the
9282          current_source_symtab (which is decode_line_1's default).
9283          This should produce the results we want almost all of the
9284          time while leaving default_breakpoint_* alone.
9285
9286          ObjC: However, don't match an Objective-C method name which
9287          may have a '+' or '-' succeeded by a '['.  */
9288       if (last_displayed_sal_is_valid ()
9289           && (!cursal.symtab
9290               || ((strchr ("+-", (*address)[0]) != NULL)
9291                   && ((*address)[1] != '['))))
9292         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9293                           get_last_displayed_symtab (),
9294                           get_last_displayed_line (),
9295                           canonical, NULL, NULL);
9296       else
9297         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9298                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9299     }
9300 }
9301
9302
9303 /* Convert each SAL into a real PC.  Verify that the PC can be
9304    inserted as a breakpoint.  If it can't throw an error.  */
9305
9306 static void
9307 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9308 {    
9309   int i;
9310
9311   for (i = 0; i < sals->nelts; i++)
9312     resolve_sal_pc (&sals->sals[i]);
9313 }
9314
9315 /* Fast tracepoints may have restrictions on valid locations.  For
9316    instance, a fast tracepoint using a jump instead of a trap will
9317    likely have to overwrite more bytes than a trap would, and so can
9318    only be placed where the instruction is longer than the jump, or a
9319    multi-instruction sequence does not have a jump into the middle of
9320    it, etc.  */
9321
9322 static void
9323 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9324                             struct symtabs_and_lines *sals)
9325 {
9326   int i, rslt;
9327   struct symtab_and_line *sal;
9328   char *msg;
9329   struct cleanup *old_chain;
9330
9331   for (i = 0; i < sals->nelts; i++)
9332     {
9333       struct gdbarch *sarch;
9334
9335       sal = &sals->sals[i];
9336
9337       sarch = get_sal_arch (*sal);
9338       /* We fall back to GDBARCH if there is no architecture
9339          associated with SAL.  */
9340       if (sarch == NULL)
9341         sarch = gdbarch;
9342       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9343                                                NULL, &msg);
9344       old_chain = make_cleanup (xfree, msg);
9345
9346       if (!rslt)
9347         error (_("May not have a fast tracepoint at 0x%s%s"),
9348                paddress (sarch, sal->pc), (msg ? msg : ""));
9349
9350       do_cleanups (old_chain);
9351     }
9352 }
9353
9354 /* Issue an invalid thread ID error.  */
9355
9356 static void ATTRIBUTE_NORETURN
9357 invalid_thread_id_error (int id)
9358 {
9359   error (_("Unknown thread %d."), id);
9360 }
9361
9362 /* Given TOK, a string specification of condition and thread, as
9363    accepted by the 'break' command, extract the condition
9364    string and thread number and set *COND_STRING and *THREAD.
9365    PC identifies the context at which the condition should be parsed.
9366    If no condition is found, *COND_STRING is set to NULL.
9367    If no thread is found, *THREAD is set to -1.  */
9368
9369 static void
9370 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9371                            char **cond_string, int *thread, int *task,
9372                            char **rest)
9373 {
9374   *cond_string = NULL;
9375   *thread = -1;
9376   *task = 0;
9377   *rest = NULL;
9378
9379   while (tok && *tok)
9380     {
9381       const char *end_tok;
9382       int toklen;
9383       const char *cond_start = NULL;
9384       const char *cond_end = NULL;
9385
9386       tok = skip_spaces_const (tok);
9387
9388       if ((*tok == '"' || *tok == ',') && rest)
9389         {
9390           *rest = savestring (tok, strlen (tok));
9391           return;
9392         }
9393
9394       end_tok = skip_to_space_const (tok);
9395
9396       toklen = end_tok - tok;
9397
9398       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9399         {
9400           struct expression *expr;
9401
9402           tok = cond_start = end_tok + 1;
9403           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9404           xfree (expr);
9405           cond_end = tok;
9406           *cond_string = savestring (cond_start, cond_end - cond_start);
9407         }
9408       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9409         {
9410           char *tmptok;
9411
9412           tok = end_tok + 1;
9413           *thread = strtol (tok, &tmptok, 0);
9414           if (tok == tmptok)
9415             error (_("Junk after thread keyword."));
9416           if (!valid_thread_id (*thread))
9417             invalid_thread_id_error (*thread);
9418           tok = tmptok;
9419         }
9420       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9421         {
9422           char *tmptok;
9423
9424           tok = end_tok + 1;
9425           *task = strtol (tok, &tmptok, 0);
9426           if (tok == tmptok)
9427             error (_("Junk after task keyword."));
9428           if (!valid_task_id (*task))
9429             error (_("Unknown task %d."), *task);
9430           tok = tmptok;
9431         }
9432       else if (rest)
9433         {
9434           *rest = savestring (tok, strlen (tok));
9435           return;
9436         }
9437       else
9438         error (_("Junk at end of arguments."));
9439     }
9440 }
9441
9442 /* Decode a static tracepoint marker spec.  */
9443
9444 static struct symtabs_and_lines
9445 decode_static_tracepoint_spec (char **arg_p)
9446 {
9447   VEC(static_tracepoint_marker_p) *markers = NULL;
9448   struct symtabs_and_lines sals;
9449   struct cleanup *old_chain;
9450   char *p = &(*arg_p)[3];
9451   char *endp;
9452   char *marker_str;
9453   int i;
9454
9455   p = skip_spaces (p);
9456
9457   endp = skip_to_space (p);
9458
9459   marker_str = savestring (p, endp - p);
9460   old_chain = make_cleanup (xfree, marker_str);
9461
9462   markers = target_static_tracepoint_markers_by_strid (marker_str);
9463   if (VEC_empty(static_tracepoint_marker_p, markers))
9464     error (_("No known static tracepoint marker named %s"), marker_str);
9465
9466   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9467   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9468
9469   for (i = 0; i < sals.nelts; i++)
9470     {
9471       struct static_tracepoint_marker *marker;
9472
9473       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9474
9475       init_sal (&sals.sals[i]);
9476
9477       sals.sals[i] = find_pc_line (marker->address, 0);
9478       sals.sals[i].pc = marker->address;
9479
9480       release_static_tracepoint_marker (marker);
9481     }
9482
9483   do_cleanups (old_chain);
9484
9485   *arg_p = endp;
9486   return sals;
9487 }
9488
9489 /* Set a breakpoint.  This function is shared between CLI and MI
9490    functions for setting a breakpoint.  This function has two major
9491    modes of operations, selected by the PARSE_ARG parameter.  If
9492    non-zero, the function will parse ARG, extracting location,
9493    condition, thread and extra string.  Otherwise, ARG is just the
9494    breakpoint's location, with condition, thread, and extra string
9495    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9496    If INTERNAL is non-zero, the breakpoint number will be allocated
9497    from the internal breakpoint count.  Returns true if any breakpoint
9498    was created; false otherwise.  */
9499
9500 int
9501 create_breakpoint (struct gdbarch *gdbarch,
9502                    char *arg, char *cond_string,
9503                    int thread, char *extra_string,
9504                    int parse_arg,
9505                    int tempflag, enum bptype type_wanted,
9506                    int ignore_count,
9507                    enum auto_boolean pending_break_support,
9508                    const struct breakpoint_ops *ops,
9509                    int from_tty, int enabled, int internal,
9510                    unsigned flags)
9511 {
9512   volatile struct gdb_exception e;
9513   char *copy_arg = NULL;
9514   char *addr_start = arg;
9515   struct linespec_result canonical;
9516   struct cleanup *old_chain;
9517   struct cleanup *bkpt_chain = NULL;
9518   int pending = 0;
9519   int task = 0;
9520   int prev_bkpt_count = breakpoint_count;
9521
9522   gdb_assert (ops != NULL);
9523
9524   init_linespec_result (&canonical);
9525
9526   TRY_CATCH (e, RETURN_MASK_ALL)
9527     {
9528       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9529                                      addr_start, &copy_arg);
9530     }
9531
9532   /* If caller is interested in rc value from parse, set value.  */
9533   switch (e.reason)
9534     {
9535     case GDB_NO_ERROR:
9536       if (VEC_empty (linespec_sals, canonical.sals))
9537         return 0;
9538       break;
9539     case RETURN_ERROR:
9540       switch (e.error)
9541         {
9542         case NOT_FOUND_ERROR:
9543
9544           /* If pending breakpoint support is turned off, throw
9545              error.  */
9546
9547           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9548             throw_exception (e);
9549
9550           exception_print (gdb_stderr, e);
9551
9552           /* If pending breakpoint support is auto query and the user
9553              selects no, then simply return the error code.  */
9554           if (pending_break_support == AUTO_BOOLEAN_AUTO
9555               && !nquery (_("Make %s pending on future shared library load? "),
9556                           bptype_string (type_wanted)))
9557             return 0;
9558
9559           /* At this point, either the user was queried about setting
9560              a pending breakpoint and selected yes, or pending
9561              breakpoint behavior is on and thus a pending breakpoint
9562              is defaulted on behalf of the user.  */
9563           {
9564             struct linespec_sals lsal;
9565
9566             copy_arg = xstrdup (addr_start);
9567             lsal.canonical = xstrdup (copy_arg);
9568             lsal.sals.nelts = 1;
9569             lsal.sals.sals = XNEW (struct symtab_and_line);
9570             init_sal (&lsal.sals.sals[0]);
9571             pending = 1;
9572             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9573           }
9574           break;
9575         default:
9576           throw_exception (e);
9577         }
9578       break;
9579     default:
9580       throw_exception (e);
9581     }
9582
9583   /* Create a chain of things that always need to be cleaned up.  */
9584   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9585
9586   /* ----------------------------- SNIP -----------------------------
9587      Anything added to the cleanup chain beyond this point is assumed
9588      to be part of a breakpoint.  If the breakpoint create succeeds
9589      then the memory is not reclaimed.  */
9590   bkpt_chain = make_cleanup (null_cleanup, 0);
9591
9592   /* Resolve all line numbers to PC's and verify that the addresses
9593      are ok for the target.  */
9594   if (!pending)
9595     {
9596       int ix;
9597       struct linespec_sals *iter;
9598
9599       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9600         breakpoint_sals_to_pc (&iter->sals);
9601     }
9602
9603   /* Fast tracepoints may have additional restrictions on location.  */
9604   if (!pending && type_wanted == bp_fast_tracepoint)
9605     {
9606       int ix;
9607       struct linespec_sals *iter;
9608
9609       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9610         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9611     }
9612
9613   /* Verify that condition can be parsed, before setting any
9614      breakpoints.  Allocate a separate condition expression for each
9615      breakpoint.  */
9616   if (!pending)
9617     {
9618       struct linespec_sals *lsal;
9619
9620       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9621
9622       if (parse_arg)
9623         {
9624             char *rest;
9625             /* Here we only parse 'arg' to separate condition
9626                from thread number, so parsing in context of first
9627                sal is OK.  When setting the breakpoint we'll 
9628                re-parse it in context of each sal.  */
9629
9630             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9631                                        &thread, &task, &rest);
9632             if (cond_string)
9633                 make_cleanup (xfree, cond_string);
9634             if (rest)
9635               make_cleanup (xfree, rest);
9636             if (rest)
9637               extra_string = rest;
9638         }
9639       else
9640         {
9641             if (*arg != '\0')
9642               error (_("Garbage '%s' at end of location"), arg);
9643
9644             /* Create a private copy of condition string.  */
9645             if (cond_string)
9646             {
9647                 cond_string = xstrdup (cond_string);
9648                 make_cleanup (xfree, cond_string);
9649             }
9650             /* Create a private copy of any extra string.  */
9651             if (extra_string)
9652               {
9653                 extra_string = xstrdup (extra_string);
9654                 make_cleanup (xfree, extra_string);
9655               }
9656         }
9657
9658       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9659                                    cond_string, extra_string, type_wanted,
9660                                    tempflag ? disp_del : disp_donttouch,
9661                                    thread, task, ignore_count, ops,
9662                                    from_tty, enabled, internal, flags);
9663     }
9664   else
9665     {
9666       struct breakpoint *b;
9667
9668       make_cleanup (xfree, copy_arg);
9669
9670       if (is_tracepoint_type (type_wanted))
9671         {
9672           struct tracepoint *t;
9673
9674           t = XCNEW (struct tracepoint);
9675           b = &t->base;
9676         }
9677       else
9678         b = XNEW (struct breakpoint);
9679
9680       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9681
9682       b->addr_string = copy_arg;
9683       if (parse_arg)
9684         b->cond_string = NULL;
9685       else
9686         {
9687           /* Create a private copy of condition string.  */
9688           if (cond_string)
9689             {
9690               cond_string = xstrdup (cond_string);
9691               make_cleanup (xfree, cond_string);
9692             }
9693           b->cond_string = cond_string;
9694         }
9695       b->extra_string = NULL;
9696       b->ignore_count = ignore_count;
9697       b->disposition = tempflag ? disp_del : disp_donttouch;
9698       b->condition_not_parsed = 1;
9699       b->enable_state = enabled ? bp_enabled : bp_disabled;
9700       if ((type_wanted != bp_breakpoint
9701            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9702         b->pspace = current_program_space;
9703
9704       install_breakpoint (internal, b, 0);
9705     }
9706   
9707   if (VEC_length (linespec_sals, canonical.sals) > 1)
9708     {
9709       warning (_("Multiple breakpoints were set.\nUse the "
9710                  "\"delete\" command to delete unwanted breakpoints."));
9711       prev_breakpoint_count = prev_bkpt_count;
9712     }
9713
9714   /* That's it.  Discard the cleanups for data inserted into the
9715      breakpoint.  */
9716   discard_cleanups (bkpt_chain);
9717   /* But cleanup everything else.  */
9718   do_cleanups (old_chain);
9719
9720   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9721   update_global_location_list (1);
9722
9723   return 1;
9724 }
9725
9726 /* Set a breakpoint.
9727    ARG is a string describing breakpoint address,
9728    condition, and thread.
9729    FLAG specifies if a breakpoint is hardware on,
9730    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9731    and BP_TEMPFLAG.  */
9732
9733 static void
9734 break_command_1 (char *arg, int flag, int from_tty)
9735 {
9736   int tempflag = flag & BP_TEMPFLAG;
9737   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9738                              ? bp_hardware_breakpoint
9739                              : bp_breakpoint);
9740   struct breakpoint_ops *ops;
9741   const char *arg_cp = arg;
9742
9743   /* Matching breakpoints on probes.  */
9744   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9745     ops = &bkpt_probe_breakpoint_ops;
9746   else
9747     ops = &bkpt_breakpoint_ops;
9748
9749   create_breakpoint (get_current_arch (),
9750                      arg,
9751                      NULL, 0, NULL, 1 /* parse arg */,
9752                      tempflag, type_wanted,
9753                      0 /* Ignore count */,
9754                      pending_break_support,
9755                      ops,
9756                      from_tty,
9757                      1 /* enabled */,
9758                      0 /* internal */,
9759                      0);
9760 }
9761
9762 /* Helper function for break_command_1 and disassemble_command.  */
9763
9764 void
9765 resolve_sal_pc (struct symtab_and_line *sal)
9766 {
9767   CORE_ADDR pc;
9768
9769   if (sal->pc == 0 && sal->symtab != NULL)
9770     {
9771       if (!find_line_pc (sal->symtab, sal->line, &pc))
9772         error (_("No line %d in file \"%s\"."),
9773                sal->line, symtab_to_filename_for_display (sal->symtab));
9774       sal->pc = pc;
9775
9776       /* If this SAL corresponds to a breakpoint inserted using a line
9777          number, then skip the function prologue if necessary.  */
9778       if (sal->explicit_line)
9779         skip_prologue_sal (sal);
9780     }
9781
9782   if (sal->section == 0 && sal->symtab != NULL)
9783     {
9784       struct blockvector *bv;
9785       struct block *b;
9786       struct symbol *sym;
9787
9788       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9789       if (bv != NULL)
9790         {
9791           sym = block_linkage_function (b);
9792           if (sym != NULL)
9793             {
9794               fixup_symbol_section (sym, sal->symtab->objfile);
9795               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
9796             }
9797           else
9798             {
9799               /* It really is worthwhile to have the section, so we'll
9800                  just have to look harder. This case can be executed
9801                  if we have line numbers but no functions (as can
9802                  happen in assembly source).  */
9803
9804               struct bound_minimal_symbol msym;
9805               struct cleanup *old_chain = save_current_space_and_thread ();
9806
9807               switch_to_program_space_and_thread (sal->pspace);
9808
9809               msym = lookup_minimal_symbol_by_pc (sal->pc);
9810               if (msym.minsym)
9811                 sal->section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9812
9813               do_cleanups (old_chain);
9814             }
9815         }
9816     }
9817 }
9818
9819 void
9820 break_command (char *arg, int from_tty)
9821 {
9822   break_command_1 (arg, 0, from_tty);
9823 }
9824
9825 void
9826 tbreak_command (char *arg, int from_tty)
9827 {
9828   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9829 }
9830
9831 static void
9832 hbreak_command (char *arg, int from_tty)
9833 {
9834   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9835 }
9836
9837 static void
9838 thbreak_command (char *arg, int from_tty)
9839 {
9840   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9841 }
9842
9843 static void
9844 stop_command (char *arg, int from_tty)
9845 {
9846   printf_filtered (_("Specify the type of breakpoint to set.\n\
9847 Usage: stop in <function | address>\n\
9848        stop at <line>\n"));
9849 }
9850
9851 static void
9852 stopin_command (char *arg, int from_tty)
9853 {
9854   int badInput = 0;
9855
9856   if (arg == (char *) NULL)
9857     badInput = 1;
9858   else if (*arg != '*')
9859     {
9860       char *argptr = arg;
9861       int hasColon = 0;
9862
9863       /* Look for a ':'.  If this is a line number specification, then
9864          say it is bad, otherwise, it should be an address or
9865          function/method name.  */
9866       while (*argptr && !hasColon)
9867         {
9868           hasColon = (*argptr == ':');
9869           argptr++;
9870         }
9871
9872       if (hasColon)
9873         badInput = (*argptr != ':');    /* Not a class::method */
9874       else
9875         badInput = isdigit (*arg);      /* a simple line number */
9876     }
9877
9878   if (badInput)
9879     printf_filtered (_("Usage: stop in <function | address>\n"));
9880   else
9881     break_command_1 (arg, 0, from_tty);
9882 }
9883
9884 static void
9885 stopat_command (char *arg, int from_tty)
9886 {
9887   int badInput = 0;
9888
9889   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9890     badInput = 1;
9891   else
9892     {
9893       char *argptr = arg;
9894       int hasColon = 0;
9895
9896       /* Look for a ':'.  If there is a '::' then get out, otherwise
9897          it is probably a line number.  */
9898       while (*argptr && !hasColon)
9899         {
9900           hasColon = (*argptr == ':');
9901           argptr++;
9902         }
9903
9904       if (hasColon)
9905         badInput = (*argptr == ':');    /* we have class::method */
9906       else
9907         badInput = !isdigit (*arg);     /* not a line number */
9908     }
9909
9910   if (badInput)
9911     printf_filtered (_("Usage: stop at <line>\n"));
9912   else
9913     break_command_1 (arg, 0, from_tty);
9914 }
9915
9916 /* The dynamic printf command is mostly like a regular breakpoint, but
9917    with a prewired command list consisting of a single output command,
9918    built from extra arguments supplied on the dprintf command
9919    line.  */
9920
9921 static void
9922 dprintf_command (char *arg, int from_tty)
9923 {
9924   create_breakpoint (get_current_arch (),
9925                      arg,
9926                      NULL, 0, NULL, 1 /* parse arg */,
9927                      0, bp_dprintf,
9928                      0 /* Ignore count */,
9929                      pending_break_support,
9930                      &dprintf_breakpoint_ops,
9931                      from_tty,
9932                      1 /* enabled */,
9933                      0 /* internal */,
9934                      0);
9935 }
9936
9937 static void
9938 agent_printf_command (char *arg, int from_tty)
9939 {
9940   error (_("May only run agent-printf on the target"));
9941 }
9942
9943 /* Implement the "breakpoint_hit" breakpoint_ops method for
9944    ranged breakpoints.  */
9945
9946 static int
9947 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9948                                   struct address_space *aspace,
9949                                   CORE_ADDR bp_addr,
9950                                   const struct target_waitstatus *ws)
9951 {
9952   if (ws->kind != TARGET_WAITKIND_STOPPED
9953       || ws->value.sig != GDB_SIGNAL_TRAP)
9954     return 0;
9955
9956   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9957                                          bl->length, aspace, bp_addr);
9958 }
9959
9960 /* Implement the "resources_needed" breakpoint_ops method for
9961    ranged breakpoints.  */
9962
9963 static int
9964 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9965 {
9966   return target_ranged_break_num_registers ();
9967 }
9968
9969 /* Implement the "print_it" breakpoint_ops method for
9970    ranged breakpoints.  */
9971
9972 static enum print_stop_action
9973 print_it_ranged_breakpoint (bpstat bs)
9974 {
9975   struct breakpoint *b = bs->breakpoint_at;
9976   struct bp_location *bl = b->loc;
9977   struct ui_out *uiout = current_uiout;
9978
9979   gdb_assert (b->type == bp_hardware_breakpoint);
9980
9981   /* Ranged breakpoints have only one location.  */
9982   gdb_assert (bl && bl->next == NULL);
9983
9984   annotate_breakpoint (b->number);
9985   if (b->disposition == disp_del)
9986     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9987   else
9988     ui_out_text (uiout, "\nRanged breakpoint ");
9989   if (ui_out_is_mi_like_p (uiout))
9990     {
9991       ui_out_field_string (uiout, "reason",
9992                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9993       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9994     }
9995   ui_out_field_int (uiout, "bkptno", b->number);
9996   ui_out_text (uiout, ", ");
9997
9998   return PRINT_SRC_AND_LOC;
9999 }
10000
10001 /* Implement the "print_one" breakpoint_ops method for
10002    ranged breakpoints.  */
10003
10004 static void
10005 print_one_ranged_breakpoint (struct breakpoint *b,
10006                              struct bp_location **last_loc)
10007 {
10008   struct bp_location *bl = b->loc;
10009   struct value_print_options opts;
10010   struct ui_out *uiout = current_uiout;
10011
10012   /* Ranged breakpoints have only one location.  */
10013   gdb_assert (bl && bl->next == NULL);
10014
10015   get_user_print_options (&opts);
10016
10017   if (opts.addressprint)
10018     /* We don't print the address range here, it will be printed later
10019        by print_one_detail_ranged_breakpoint.  */
10020     ui_out_field_skip (uiout, "addr");
10021   annotate_field (5);
10022   print_breakpoint_location (b, bl);
10023   *last_loc = bl;
10024 }
10025
10026 /* Implement the "print_one_detail" breakpoint_ops method for
10027    ranged breakpoints.  */
10028
10029 static void
10030 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10031                                     struct ui_out *uiout)
10032 {
10033   CORE_ADDR address_start, address_end;
10034   struct bp_location *bl = b->loc;
10035   struct ui_file *stb = mem_fileopen ();
10036   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10037
10038   gdb_assert (bl);
10039
10040   address_start = bl->address;
10041   address_end = address_start + bl->length - 1;
10042
10043   ui_out_text (uiout, "\taddress range: ");
10044   fprintf_unfiltered (stb, "[%s, %s]",
10045                       print_core_address (bl->gdbarch, address_start),
10046                       print_core_address (bl->gdbarch, address_end));
10047   ui_out_field_stream (uiout, "addr", stb);
10048   ui_out_text (uiout, "\n");
10049
10050   do_cleanups (cleanup);
10051 }
10052
10053 /* Implement the "print_mention" breakpoint_ops method for
10054    ranged breakpoints.  */
10055
10056 static void
10057 print_mention_ranged_breakpoint (struct breakpoint *b)
10058 {
10059   struct bp_location *bl = b->loc;
10060   struct ui_out *uiout = current_uiout;
10061
10062   gdb_assert (bl);
10063   gdb_assert (b->type == bp_hardware_breakpoint);
10064
10065   if (ui_out_is_mi_like_p (uiout))
10066     return;
10067
10068   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10069                    b->number, paddress (bl->gdbarch, bl->address),
10070                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10071 }
10072
10073 /* Implement the "print_recreate" breakpoint_ops method for
10074    ranged breakpoints.  */
10075
10076 static void
10077 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10078 {
10079   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10080                       b->addr_string_range_end);
10081   print_recreate_thread (b, fp);
10082 }
10083
10084 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10085
10086 static struct breakpoint_ops ranged_breakpoint_ops;
10087
10088 /* Find the address where the end of the breakpoint range should be
10089    placed, given the SAL of the end of the range.  This is so that if
10090    the user provides a line number, the end of the range is set to the
10091    last instruction of the given line.  */
10092
10093 static CORE_ADDR
10094 find_breakpoint_range_end (struct symtab_and_line sal)
10095 {
10096   CORE_ADDR end;
10097
10098   /* If the user provided a PC value, use it.  Otherwise,
10099      find the address of the end of the given location.  */
10100   if (sal.explicit_pc)
10101     end = sal.pc;
10102   else
10103     {
10104       int ret;
10105       CORE_ADDR start;
10106
10107       ret = find_line_pc_range (sal, &start, &end);
10108       if (!ret)
10109         error (_("Could not find location of the end of the range."));
10110
10111       /* find_line_pc_range returns the start of the next line.  */
10112       end--;
10113     }
10114
10115   return end;
10116 }
10117
10118 /* Implement the "break-range" CLI command.  */
10119
10120 static void
10121 break_range_command (char *arg, int from_tty)
10122 {
10123   char *arg_start, *addr_string_start, *addr_string_end;
10124   struct linespec_result canonical_start, canonical_end;
10125   int bp_count, can_use_bp, length;
10126   CORE_ADDR end;
10127   struct breakpoint *b;
10128   struct symtab_and_line sal_start, sal_end;
10129   struct cleanup *cleanup_bkpt;
10130   struct linespec_sals *lsal_start, *lsal_end;
10131
10132   /* We don't support software ranged breakpoints.  */
10133   if (target_ranged_break_num_registers () < 0)
10134     error (_("This target does not support hardware ranged breakpoints."));
10135
10136   bp_count = hw_breakpoint_used_count ();
10137   bp_count += target_ranged_break_num_registers ();
10138   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10139                                                    bp_count, 0);
10140   if (can_use_bp < 0)
10141     error (_("Hardware breakpoints used exceeds limit."));
10142
10143   arg = skip_spaces (arg);
10144   if (arg == NULL || arg[0] == '\0')
10145     error(_("No address range specified."));
10146
10147   init_linespec_result (&canonical_start);
10148
10149   arg_start = arg;
10150   parse_breakpoint_sals (&arg, &canonical_start);
10151
10152   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10153
10154   if (arg[0] != ',')
10155     error (_("Too few arguments."));
10156   else if (VEC_empty (linespec_sals, canonical_start.sals))
10157     error (_("Could not find location of the beginning of the range."));
10158
10159   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10160
10161   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10162       || lsal_start->sals.nelts != 1)
10163     error (_("Cannot create a ranged breakpoint with multiple locations."));
10164
10165   sal_start = lsal_start->sals.sals[0];
10166   addr_string_start = savestring (arg_start, arg - arg_start);
10167   make_cleanup (xfree, addr_string_start);
10168
10169   arg++;        /* Skip the comma.  */
10170   arg = skip_spaces (arg);
10171
10172   /* Parse the end location.  */
10173
10174   init_linespec_result (&canonical_end);
10175   arg_start = arg;
10176
10177   /* We call decode_line_full directly here instead of using
10178      parse_breakpoint_sals because we need to specify the start location's
10179      symtab and line as the default symtab and line for the end of the
10180      range.  This makes it possible to have ranges like "foo.c:27, +14",
10181      where +14 means 14 lines from the start location.  */
10182   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10183                     sal_start.symtab, sal_start.line,
10184                     &canonical_end, NULL, NULL);
10185
10186   make_cleanup_destroy_linespec_result (&canonical_end);
10187
10188   if (VEC_empty (linespec_sals, canonical_end.sals))
10189     error (_("Could not find location of the end of the range."));
10190
10191   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10192   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10193       || lsal_end->sals.nelts != 1)
10194     error (_("Cannot create a ranged breakpoint with multiple locations."));
10195
10196   sal_end = lsal_end->sals.sals[0];
10197   addr_string_end = savestring (arg_start, arg - arg_start);
10198   make_cleanup (xfree, addr_string_end);
10199
10200   end = find_breakpoint_range_end (sal_end);
10201   if (sal_start.pc > end)
10202     error (_("Invalid address range, end precedes start."));
10203
10204   length = end - sal_start.pc + 1;
10205   if (length < 0)
10206     /* Length overflowed.  */
10207     error (_("Address range too large."));
10208   else if (length == 1)
10209     {
10210       /* This range is simple enough to be handled by
10211          the `hbreak' command.  */
10212       hbreak_command (addr_string_start, 1);
10213
10214       do_cleanups (cleanup_bkpt);
10215
10216       return;
10217     }
10218
10219   /* Now set up the breakpoint.  */
10220   b = set_raw_breakpoint (get_current_arch (), sal_start,
10221                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10222   set_breakpoint_count (breakpoint_count + 1);
10223   b->number = breakpoint_count;
10224   b->disposition = disp_donttouch;
10225   b->addr_string = xstrdup (addr_string_start);
10226   b->addr_string_range_end = xstrdup (addr_string_end);
10227   b->loc->length = length;
10228
10229   do_cleanups (cleanup_bkpt);
10230
10231   mention (b);
10232   observer_notify_breakpoint_created (b);
10233   update_global_location_list (1);
10234 }
10235
10236 /*  Return non-zero if EXP is verified as constant.  Returned zero
10237     means EXP is variable.  Also the constant detection may fail for
10238     some constant expressions and in such case still falsely return
10239     zero.  */
10240
10241 static int
10242 watchpoint_exp_is_const (const struct expression *exp)
10243 {
10244   int i = exp->nelts;
10245
10246   while (i > 0)
10247     {
10248       int oplenp, argsp;
10249
10250       /* We are only interested in the descriptor of each element.  */
10251       operator_length (exp, i, &oplenp, &argsp);
10252       i -= oplenp;
10253
10254       switch (exp->elts[i].opcode)
10255         {
10256         case BINOP_ADD:
10257         case BINOP_SUB:
10258         case BINOP_MUL:
10259         case BINOP_DIV:
10260         case BINOP_REM:
10261         case BINOP_MOD:
10262         case BINOP_LSH:
10263         case BINOP_RSH:
10264         case BINOP_LOGICAL_AND:
10265         case BINOP_LOGICAL_OR:
10266         case BINOP_BITWISE_AND:
10267         case BINOP_BITWISE_IOR:
10268         case BINOP_BITWISE_XOR:
10269         case BINOP_EQUAL:
10270         case BINOP_NOTEQUAL:
10271         case BINOP_LESS:
10272         case BINOP_GTR:
10273         case BINOP_LEQ:
10274         case BINOP_GEQ:
10275         case BINOP_REPEAT:
10276         case BINOP_COMMA:
10277         case BINOP_EXP:
10278         case BINOP_MIN:
10279         case BINOP_MAX:
10280         case BINOP_INTDIV:
10281         case BINOP_CONCAT:
10282         case BINOP_IN:
10283         case BINOP_RANGE:
10284         case TERNOP_COND:
10285         case TERNOP_SLICE:
10286
10287         case OP_LONG:
10288         case OP_DOUBLE:
10289         case OP_DECFLOAT:
10290         case OP_LAST:
10291         case OP_COMPLEX:
10292         case OP_STRING:
10293         case OP_ARRAY:
10294         case OP_TYPE:
10295         case OP_TYPEOF:
10296         case OP_DECLTYPE:
10297         case OP_TYPEID:
10298         case OP_NAME:
10299         case OP_OBJC_NSSTRING:
10300
10301         case UNOP_NEG:
10302         case UNOP_LOGICAL_NOT:
10303         case UNOP_COMPLEMENT:
10304         case UNOP_ADDR:
10305         case UNOP_HIGH:
10306         case UNOP_CAST:
10307
10308         case UNOP_CAST_TYPE:
10309         case UNOP_REINTERPRET_CAST:
10310         case UNOP_DYNAMIC_CAST:
10311           /* Unary, binary and ternary operators: We have to check
10312              their operands.  If they are constant, then so is the
10313              result of that operation.  For instance, if A and B are
10314              determined to be constants, then so is "A + B".
10315
10316              UNOP_IND is one exception to the rule above, because the
10317              value of *ADDR is not necessarily a constant, even when
10318              ADDR is.  */
10319           break;
10320
10321         case OP_VAR_VALUE:
10322           /* Check whether the associated symbol is a constant.
10323
10324              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10325              possible that a buggy compiler could mark a variable as
10326              constant even when it is not, and TYPE_CONST would return
10327              true in this case, while SYMBOL_CLASS wouldn't.
10328
10329              We also have to check for function symbols because they
10330              are always constant.  */
10331           {
10332             struct symbol *s = exp->elts[i + 2].symbol;
10333
10334             if (SYMBOL_CLASS (s) != LOC_BLOCK
10335                 && SYMBOL_CLASS (s) != LOC_CONST
10336                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10337               return 0;
10338             break;
10339           }
10340
10341         /* The default action is to return 0 because we are using
10342            the optimistic approach here: If we don't know something,
10343            then it is not a constant.  */
10344         default:
10345           return 0;
10346         }
10347     }
10348
10349   return 1;
10350 }
10351
10352 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10353
10354 static void
10355 dtor_watchpoint (struct breakpoint *self)
10356 {
10357   struct watchpoint *w = (struct watchpoint *) self;
10358
10359   xfree (w->cond_exp);
10360   xfree (w->exp);
10361   xfree (w->exp_string);
10362   xfree (w->exp_string_reparse);
10363   value_free (w->val);
10364
10365   base_breakpoint_ops.dtor (self);
10366 }
10367
10368 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10369
10370 static void
10371 re_set_watchpoint (struct breakpoint *b)
10372 {
10373   struct watchpoint *w = (struct watchpoint *) b;
10374
10375   /* Watchpoint can be either on expression using entirely global
10376      variables, or it can be on local variables.
10377
10378      Watchpoints of the first kind are never auto-deleted, and even
10379      persist across program restarts.  Since they can use variables
10380      from shared libraries, we need to reparse expression as libraries
10381      are loaded and unloaded.
10382
10383      Watchpoints on local variables can also change meaning as result
10384      of solib event.  For example, if a watchpoint uses both a local
10385      and a global variables in expression, it's a local watchpoint,
10386      but unloading of a shared library will make the expression
10387      invalid.  This is not a very common use case, but we still
10388      re-evaluate expression, to avoid surprises to the user.
10389
10390      Note that for local watchpoints, we re-evaluate it only if
10391      watchpoints frame id is still valid.  If it's not, it means the
10392      watchpoint is out of scope and will be deleted soon.  In fact,
10393      I'm not sure we'll ever be called in this case.
10394
10395      If a local watchpoint's frame id is still valid, then
10396      w->exp_valid_block is likewise valid, and we can safely use it.
10397
10398      Don't do anything about disabled watchpoints, since they will be
10399      reevaluated again when enabled.  */
10400   update_watchpoint (w, 1 /* reparse */);
10401 }
10402
10403 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10404
10405 static int
10406 insert_watchpoint (struct bp_location *bl)
10407 {
10408   struct watchpoint *w = (struct watchpoint *) bl->owner;
10409   int length = w->exact ? 1 : bl->length;
10410
10411   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10412                                    w->cond_exp);
10413 }
10414
10415 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10416
10417 static int
10418 remove_watchpoint (struct bp_location *bl)
10419 {
10420   struct watchpoint *w = (struct watchpoint *) bl->owner;
10421   int length = w->exact ? 1 : bl->length;
10422
10423   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10424                                    w->cond_exp);
10425 }
10426
10427 static int
10428 breakpoint_hit_watchpoint (const struct bp_location *bl,
10429                            struct address_space *aspace, CORE_ADDR bp_addr,
10430                            const struct target_waitstatus *ws)
10431 {
10432   struct breakpoint *b = bl->owner;
10433   struct watchpoint *w = (struct watchpoint *) b;
10434
10435   /* Continuable hardware watchpoints are treated as non-existent if the
10436      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10437      some data address).  Otherwise gdb won't stop on a break instruction
10438      in the code (not from a breakpoint) when a hardware watchpoint has
10439      been defined.  Also skip watchpoints which we know did not trigger
10440      (did not match the data address).  */
10441   if (is_hardware_watchpoint (b)
10442       && w->watchpoint_triggered == watch_triggered_no)
10443     return 0;
10444
10445   return 1;
10446 }
10447
10448 static void
10449 check_status_watchpoint (bpstat bs)
10450 {
10451   gdb_assert (is_watchpoint (bs->breakpoint_at));
10452
10453   bpstat_check_watchpoint (bs);
10454 }
10455
10456 /* Implement the "resources_needed" breakpoint_ops method for
10457    hardware watchpoints.  */
10458
10459 static int
10460 resources_needed_watchpoint (const struct bp_location *bl)
10461 {
10462   struct watchpoint *w = (struct watchpoint *) bl->owner;
10463   int length = w->exact? 1 : bl->length;
10464
10465   return target_region_ok_for_hw_watchpoint (bl->address, length);
10466 }
10467
10468 /* Implement the "works_in_software_mode" breakpoint_ops method for
10469    hardware watchpoints.  */
10470
10471 static int
10472 works_in_software_mode_watchpoint (const struct breakpoint *b)
10473 {
10474   /* Read and access watchpoints only work with hardware support.  */
10475   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10476 }
10477
10478 static enum print_stop_action
10479 print_it_watchpoint (bpstat bs)
10480 {
10481   struct cleanup *old_chain;
10482   struct breakpoint *b;
10483   struct ui_file *stb;
10484   enum print_stop_action result;
10485   struct watchpoint *w;
10486   struct ui_out *uiout = current_uiout;
10487
10488   gdb_assert (bs->bp_location_at != NULL);
10489
10490   b = bs->breakpoint_at;
10491   w = (struct watchpoint *) b;
10492
10493   stb = mem_fileopen ();
10494   old_chain = make_cleanup_ui_file_delete (stb);
10495
10496   switch (b->type)
10497     {
10498     case bp_watchpoint:
10499     case bp_hardware_watchpoint:
10500       annotate_watchpoint (b->number);
10501       if (ui_out_is_mi_like_p (uiout))
10502         ui_out_field_string
10503           (uiout, "reason",
10504            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10505       mention (b);
10506       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10507       ui_out_text (uiout, "\nOld value = ");
10508       watchpoint_value_print (bs->old_val, stb);
10509       ui_out_field_stream (uiout, "old", stb);
10510       ui_out_text (uiout, "\nNew value = ");
10511       watchpoint_value_print (w->val, stb);
10512       ui_out_field_stream (uiout, "new", stb);
10513       ui_out_text (uiout, "\n");
10514       /* More than one watchpoint may have been triggered.  */
10515       result = PRINT_UNKNOWN;
10516       break;
10517
10518     case bp_read_watchpoint:
10519       if (ui_out_is_mi_like_p (uiout))
10520         ui_out_field_string
10521           (uiout, "reason",
10522            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10523       mention (b);
10524       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10525       ui_out_text (uiout, "\nValue = ");
10526       watchpoint_value_print (w->val, stb);
10527       ui_out_field_stream (uiout, "value", stb);
10528       ui_out_text (uiout, "\n");
10529       result = PRINT_UNKNOWN;
10530       break;
10531
10532     case bp_access_watchpoint:
10533       if (bs->old_val != NULL)
10534         {
10535           annotate_watchpoint (b->number);
10536           if (ui_out_is_mi_like_p (uiout))
10537             ui_out_field_string
10538               (uiout, "reason",
10539                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10540           mention (b);
10541           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10542           ui_out_text (uiout, "\nOld value = ");
10543           watchpoint_value_print (bs->old_val, stb);
10544           ui_out_field_stream (uiout, "old", stb);
10545           ui_out_text (uiout, "\nNew value = ");
10546         }
10547       else
10548         {
10549           mention (b);
10550           if (ui_out_is_mi_like_p (uiout))
10551             ui_out_field_string
10552               (uiout, "reason",
10553                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10554           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10555           ui_out_text (uiout, "\nValue = ");
10556         }
10557       watchpoint_value_print (w->val, stb);
10558       ui_out_field_stream (uiout, "new", stb);
10559       ui_out_text (uiout, "\n");
10560       result = PRINT_UNKNOWN;
10561       break;
10562     default:
10563       result = PRINT_UNKNOWN;
10564     }
10565
10566   do_cleanups (old_chain);
10567   return result;
10568 }
10569
10570 /* Implement the "print_mention" breakpoint_ops method for hardware
10571    watchpoints.  */
10572
10573 static void
10574 print_mention_watchpoint (struct breakpoint *b)
10575 {
10576   struct cleanup *ui_out_chain;
10577   struct watchpoint *w = (struct watchpoint *) b;
10578   struct ui_out *uiout = current_uiout;
10579
10580   switch (b->type)
10581     {
10582     case bp_watchpoint:
10583       ui_out_text (uiout, "Watchpoint ");
10584       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10585       break;
10586     case bp_hardware_watchpoint:
10587       ui_out_text (uiout, "Hardware watchpoint ");
10588       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10589       break;
10590     case bp_read_watchpoint:
10591       ui_out_text (uiout, "Hardware read watchpoint ");
10592       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10593       break;
10594     case bp_access_watchpoint:
10595       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10596       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10597       break;
10598     default:
10599       internal_error (__FILE__, __LINE__,
10600                       _("Invalid hardware watchpoint type."));
10601     }
10602
10603   ui_out_field_int (uiout, "number", b->number);
10604   ui_out_text (uiout, ": ");
10605   ui_out_field_string (uiout, "exp", w->exp_string);
10606   do_cleanups (ui_out_chain);
10607 }
10608
10609 /* Implement the "print_recreate" breakpoint_ops method for
10610    watchpoints.  */
10611
10612 static void
10613 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10614 {
10615   struct watchpoint *w = (struct watchpoint *) b;
10616
10617   switch (b->type)
10618     {
10619     case bp_watchpoint:
10620     case bp_hardware_watchpoint:
10621       fprintf_unfiltered (fp, "watch");
10622       break;
10623     case bp_read_watchpoint:
10624       fprintf_unfiltered (fp, "rwatch");
10625       break;
10626     case bp_access_watchpoint:
10627       fprintf_unfiltered (fp, "awatch");
10628       break;
10629     default:
10630       internal_error (__FILE__, __LINE__,
10631                       _("Invalid watchpoint type."));
10632     }
10633
10634   fprintf_unfiltered (fp, " %s", w->exp_string);
10635   print_recreate_thread (b, fp);
10636 }
10637
10638 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10639
10640 static struct breakpoint_ops watchpoint_breakpoint_ops;
10641
10642 /* Implement the "insert" breakpoint_ops method for
10643    masked hardware watchpoints.  */
10644
10645 static int
10646 insert_masked_watchpoint (struct bp_location *bl)
10647 {
10648   struct watchpoint *w = (struct watchpoint *) bl->owner;
10649
10650   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10651                                         bl->watchpoint_type);
10652 }
10653
10654 /* Implement the "remove" breakpoint_ops method for
10655    masked hardware watchpoints.  */
10656
10657 static int
10658 remove_masked_watchpoint (struct bp_location *bl)
10659 {
10660   struct watchpoint *w = (struct watchpoint *) bl->owner;
10661
10662   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10663                                         bl->watchpoint_type);
10664 }
10665
10666 /* Implement the "resources_needed" breakpoint_ops method for
10667    masked hardware watchpoints.  */
10668
10669 static int
10670 resources_needed_masked_watchpoint (const struct bp_location *bl)
10671 {
10672   struct watchpoint *w = (struct watchpoint *) bl->owner;
10673
10674   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10675 }
10676
10677 /* Implement the "works_in_software_mode" breakpoint_ops method for
10678    masked hardware watchpoints.  */
10679
10680 static int
10681 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10682 {
10683   return 0;
10684 }
10685
10686 /* Implement the "print_it" breakpoint_ops method for
10687    masked hardware watchpoints.  */
10688
10689 static enum print_stop_action
10690 print_it_masked_watchpoint (bpstat bs)
10691 {
10692   struct breakpoint *b = bs->breakpoint_at;
10693   struct ui_out *uiout = current_uiout;
10694
10695   /* Masked watchpoints have only one location.  */
10696   gdb_assert (b->loc && b->loc->next == NULL);
10697
10698   switch (b->type)
10699     {
10700     case bp_hardware_watchpoint:
10701       annotate_watchpoint (b->number);
10702       if (ui_out_is_mi_like_p (uiout))
10703         ui_out_field_string
10704           (uiout, "reason",
10705            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10706       break;
10707
10708     case bp_read_watchpoint:
10709       if (ui_out_is_mi_like_p (uiout))
10710         ui_out_field_string
10711           (uiout, "reason",
10712            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10713       break;
10714
10715     case bp_access_watchpoint:
10716       if (ui_out_is_mi_like_p (uiout))
10717         ui_out_field_string
10718           (uiout, "reason",
10719            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10720       break;
10721     default:
10722       internal_error (__FILE__, __LINE__,
10723                       _("Invalid hardware watchpoint type."));
10724     }
10725
10726   mention (b);
10727   ui_out_text (uiout, _("\n\
10728 Check the underlying instruction at PC for the memory\n\
10729 address and value which triggered this watchpoint.\n"));
10730   ui_out_text (uiout, "\n");
10731
10732   /* More than one watchpoint may have been triggered.  */
10733   return PRINT_UNKNOWN;
10734 }
10735
10736 /* Implement the "print_one_detail" breakpoint_ops method for
10737    masked hardware watchpoints.  */
10738
10739 static void
10740 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10741                                     struct ui_out *uiout)
10742 {
10743   struct watchpoint *w = (struct watchpoint *) b;
10744
10745   /* Masked watchpoints have only one location.  */
10746   gdb_assert (b->loc && b->loc->next == NULL);
10747
10748   ui_out_text (uiout, "\tmask ");
10749   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10750   ui_out_text (uiout, "\n");
10751 }
10752
10753 /* Implement the "print_mention" breakpoint_ops method for
10754    masked hardware watchpoints.  */
10755
10756 static void
10757 print_mention_masked_watchpoint (struct breakpoint *b)
10758 {
10759   struct watchpoint *w = (struct watchpoint *) b;
10760   struct ui_out *uiout = current_uiout;
10761   struct cleanup *ui_out_chain;
10762
10763   switch (b->type)
10764     {
10765     case bp_hardware_watchpoint:
10766       ui_out_text (uiout, "Masked hardware watchpoint ");
10767       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10768       break;
10769     case bp_read_watchpoint:
10770       ui_out_text (uiout, "Masked hardware read watchpoint ");
10771       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10772       break;
10773     case bp_access_watchpoint:
10774       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10775       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10776       break;
10777     default:
10778       internal_error (__FILE__, __LINE__,
10779                       _("Invalid hardware watchpoint type."));
10780     }
10781
10782   ui_out_field_int (uiout, "number", b->number);
10783   ui_out_text (uiout, ": ");
10784   ui_out_field_string (uiout, "exp", w->exp_string);
10785   do_cleanups (ui_out_chain);
10786 }
10787
10788 /* Implement the "print_recreate" breakpoint_ops method for
10789    masked hardware watchpoints.  */
10790
10791 static void
10792 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10793 {
10794   struct watchpoint *w = (struct watchpoint *) b;
10795   char tmp[40];
10796
10797   switch (b->type)
10798     {
10799     case bp_hardware_watchpoint:
10800       fprintf_unfiltered (fp, "watch");
10801       break;
10802     case bp_read_watchpoint:
10803       fprintf_unfiltered (fp, "rwatch");
10804       break;
10805     case bp_access_watchpoint:
10806       fprintf_unfiltered (fp, "awatch");
10807       break;
10808     default:
10809       internal_error (__FILE__, __LINE__,
10810                       _("Invalid hardware watchpoint type."));
10811     }
10812
10813   sprintf_vma (tmp, w->hw_wp_mask);
10814   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10815   print_recreate_thread (b, fp);
10816 }
10817
10818 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10819
10820 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10821
10822 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10823
10824 static int
10825 is_masked_watchpoint (const struct breakpoint *b)
10826 {
10827   return b->ops == &masked_watchpoint_breakpoint_ops;
10828 }
10829
10830 /* accessflag:  hw_write:  watch write, 
10831                 hw_read:   watch read, 
10832                 hw_access: watch access (read or write) */
10833 static void
10834 watch_command_1 (const char *arg, int accessflag, int from_tty,
10835                  int just_location, int internal)
10836 {
10837   volatile struct gdb_exception e;
10838   struct breakpoint *b, *scope_breakpoint = NULL;
10839   struct expression *exp;
10840   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10841   struct value *val, *mark, *result;
10842   struct frame_info *frame;
10843   const char *exp_start = NULL;
10844   const char *exp_end = NULL;
10845   const char *tok, *end_tok;
10846   int toklen = -1;
10847   const char *cond_start = NULL;
10848   const char *cond_end = NULL;
10849   enum bptype bp_type;
10850   int thread = -1;
10851   int pc = 0;
10852   /* Flag to indicate whether we are going to use masks for
10853      the hardware watchpoint.  */
10854   int use_mask = 0;
10855   CORE_ADDR mask = 0;
10856   struct watchpoint *w;
10857   char *expression;
10858   struct cleanup *back_to;
10859
10860   /* Make sure that we actually have parameters to parse.  */
10861   if (arg != NULL && arg[0] != '\0')
10862     {
10863       const char *value_start;
10864
10865       exp_end = arg + strlen (arg);
10866
10867       /* Look for "parameter value" pairs at the end
10868          of the arguments string.  */
10869       for (tok = exp_end - 1; tok > arg; tok--)
10870         {
10871           /* Skip whitespace at the end of the argument list.  */
10872           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10873             tok--;
10874
10875           /* Find the beginning of the last token.
10876              This is the value of the parameter.  */
10877           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10878             tok--;
10879           value_start = tok + 1;
10880
10881           /* Skip whitespace.  */
10882           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10883             tok--;
10884
10885           end_tok = tok;
10886
10887           /* Find the beginning of the second to last token.
10888              This is the parameter itself.  */
10889           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10890             tok--;
10891           tok++;
10892           toklen = end_tok - tok + 1;
10893
10894           if (toklen == 6 && !strncmp (tok, "thread", 6))
10895             {
10896               /* At this point we've found a "thread" token, which means
10897                  the user is trying to set a watchpoint that triggers
10898                  only in a specific thread.  */
10899               char *endp;
10900
10901               if (thread != -1)
10902                 error(_("You can specify only one thread."));
10903
10904               /* Extract the thread ID from the next token.  */
10905               thread = strtol (value_start, &endp, 0);
10906
10907               /* Check if the user provided a valid numeric value for the
10908                  thread ID.  */
10909               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10910                 error (_("Invalid thread ID specification %s."), value_start);
10911
10912               /* Check if the thread actually exists.  */
10913               if (!valid_thread_id (thread))
10914                 invalid_thread_id_error (thread);
10915             }
10916           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10917             {
10918               /* We've found a "mask" token, which means the user wants to
10919                  create a hardware watchpoint that is going to have the mask
10920                  facility.  */
10921               struct value *mask_value, *mark;
10922
10923               if (use_mask)
10924                 error(_("You can specify only one mask."));
10925
10926               use_mask = just_location = 1;
10927
10928               mark = value_mark ();
10929               mask_value = parse_to_comma_and_eval (&value_start);
10930               mask = value_as_address (mask_value);
10931               value_free_to_mark (mark);
10932             }
10933           else
10934             /* We didn't recognize what we found.  We should stop here.  */
10935             break;
10936
10937           /* Truncate the string and get rid of the "parameter value" pair before
10938              the arguments string is parsed by the parse_exp_1 function.  */
10939           exp_end = tok;
10940         }
10941     }
10942   else
10943     exp_end = arg;
10944
10945   /* Parse the rest of the arguments.  From here on out, everything
10946      is in terms of a newly allocated string instead of the original
10947      ARG.  */
10948   innermost_block = NULL;
10949   expression = savestring (arg, exp_end - arg);
10950   back_to = make_cleanup (xfree, expression);
10951   exp_start = arg = expression;
10952   exp = parse_exp_1 (&arg, 0, 0, 0);
10953   exp_end = arg;
10954   /* Remove trailing whitespace from the expression before saving it.
10955      This makes the eventual display of the expression string a bit
10956      prettier.  */
10957   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10958     --exp_end;
10959
10960   /* Checking if the expression is not constant.  */
10961   if (watchpoint_exp_is_const (exp))
10962     {
10963       int len;
10964
10965       len = exp_end - exp_start;
10966       while (len > 0 && isspace (exp_start[len - 1]))
10967         len--;
10968       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10969     }
10970
10971   exp_valid_block = innermost_block;
10972   mark = value_mark ();
10973   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10974
10975   if (just_location)
10976     {
10977       int ret;
10978
10979       exp_valid_block = NULL;
10980       val = value_addr (result);
10981       release_value (val);
10982       value_free_to_mark (mark);
10983
10984       if (use_mask)
10985         {
10986           ret = target_masked_watch_num_registers (value_as_address (val),
10987                                                    mask);
10988           if (ret == -1)
10989             error (_("This target does not support masked watchpoints."));
10990           else if (ret == -2)
10991             error (_("Invalid mask or memory region."));
10992         }
10993     }
10994   else if (val != NULL)
10995     release_value (val);
10996
10997   tok = skip_spaces_const (arg);
10998   end_tok = skip_to_space_const (tok);
10999
11000   toklen = end_tok - tok;
11001   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11002     {
11003       struct expression *cond;
11004
11005       innermost_block = NULL;
11006       tok = cond_start = end_tok + 1;
11007       cond = parse_exp_1 (&tok, 0, 0, 0);
11008
11009       /* The watchpoint expression may not be local, but the condition
11010          may still be.  E.g.: `watch global if local > 0'.  */
11011       cond_exp_valid_block = innermost_block;
11012
11013       xfree (cond);
11014       cond_end = tok;
11015     }
11016   if (*tok)
11017     error (_("Junk at end of command."));
11018
11019   if (accessflag == hw_read)
11020     bp_type = bp_read_watchpoint;
11021   else if (accessflag == hw_access)
11022     bp_type = bp_access_watchpoint;
11023   else
11024     bp_type = bp_hardware_watchpoint;
11025
11026   frame = block_innermost_frame (exp_valid_block);
11027
11028   /* If the expression is "local", then set up a "watchpoint scope"
11029      breakpoint at the point where we've left the scope of the watchpoint
11030      expression.  Create the scope breakpoint before the watchpoint, so
11031      that we will encounter it first in bpstat_stop_status.  */
11032   if (exp_valid_block && frame)
11033     {
11034       if (frame_id_p (frame_unwind_caller_id (frame)))
11035         {
11036           scope_breakpoint
11037             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11038                                           frame_unwind_caller_pc (frame),
11039                                           bp_watchpoint_scope,
11040                                           &momentary_breakpoint_ops);
11041
11042           scope_breakpoint->enable_state = bp_enabled;
11043
11044           /* Automatically delete the breakpoint when it hits.  */
11045           scope_breakpoint->disposition = disp_del;
11046
11047           /* Only break in the proper frame (help with recursion).  */
11048           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11049
11050           /* Set the address at which we will stop.  */
11051           scope_breakpoint->loc->gdbarch
11052             = frame_unwind_caller_arch (frame);
11053           scope_breakpoint->loc->requested_address
11054             = frame_unwind_caller_pc (frame);
11055           scope_breakpoint->loc->address
11056             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11057                                          scope_breakpoint->loc->requested_address,
11058                                          scope_breakpoint->type);
11059         }
11060     }
11061
11062   /* Now set up the breakpoint.  */
11063
11064   w = XCNEW (struct watchpoint);
11065   b = &w->base;
11066   if (use_mask)
11067     init_raw_breakpoint_without_location (b, NULL, bp_type,
11068                                           &masked_watchpoint_breakpoint_ops);
11069   else
11070     init_raw_breakpoint_without_location (b, NULL, bp_type,
11071                                           &watchpoint_breakpoint_ops);
11072   b->thread = thread;
11073   b->disposition = disp_donttouch;
11074   b->pspace = current_program_space;
11075   w->exp = exp;
11076   w->exp_valid_block = exp_valid_block;
11077   w->cond_exp_valid_block = cond_exp_valid_block;
11078   if (just_location)
11079     {
11080       struct type *t = value_type (val);
11081       CORE_ADDR addr = value_as_address (val);
11082       char *name;
11083
11084       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11085       name = type_to_string (t);
11086
11087       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11088                                           core_addr_to_string (addr));
11089       xfree (name);
11090
11091       w->exp_string = xstrprintf ("-location %.*s",
11092                                   (int) (exp_end - exp_start), exp_start);
11093
11094       /* The above expression is in C.  */
11095       b->language = language_c;
11096     }
11097   else
11098     w->exp_string = savestring (exp_start, exp_end - exp_start);
11099
11100   if (use_mask)
11101     {
11102       w->hw_wp_mask = mask;
11103     }
11104   else
11105     {
11106       w->val = val;
11107       w->val_valid = 1;
11108     }
11109
11110   if (cond_start)
11111     b->cond_string = savestring (cond_start, cond_end - cond_start);
11112   else
11113     b->cond_string = 0;
11114
11115   if (frame)
11116     {
11117       w->watchpoint_frame = get_frame_id (frame);
11118       w->watchpoint_thread = inferior_ptid;
11119     }
11120   else
11121     {
11122       w->watchpoint_frame = null_frame_id;
11123       w->watchpoint_thread = null_ptid;
11124     }
11125
11126   if (scope_breakpoint != NULL)
11127     {
11128       /* The scope breakpoint is related to the watchpoint.  We will
11129          need to act on them together.  */
11130       b->related_breakpoint = scope_breakpoint;
11131       scope_breakpoint->related_breakpoint = b;
11132     }
11133
11134   if (!just_location)
11135     value_free_to_mark (mark);
11136
11137   TRY_CATCH (e, RETURN_MASK_ALL)
11138     {
11139       /* Finally update the new watchpoint.  This creates the locations
11140          that should be inserted.  */
11141       update_watchpoint (w, 1);
11142     }
11143   if (e.reason < 0)
11144     {
11145       delete_breakpoint (b);
11146       throw_exception (e);
11147     }
11148
11149   install_breakpoint (internal, b, 1);
11150   do_cleanups (back_to);
11151 }
11152
11153 /* Return count of debug registers needed to watch the given expression.
11154    If the watchpoint cannot be handled in hardware return zero.  */
11155
11156 static int
11157 can_use_hardware_watchpoint (struct value *v)
11158 {
11159   int found_memory_cnt = 0;
11160   struct value *head = v;
11161
11162   /* Did the user specifically forbid us to use hardware watchpoints? */
11163   if (!can_use_hw_watchpoints)
11164     return 0;
11165
11166   /* Make sure that the value of the expression depends only upon
11167      memory contents, and values computed from them within GDB.  If we
11168      find any register references or function calls, we can't use a
11169      hardware watchpoint.
11170
11171      The idea here is that evaluating an expression generates a series
11172      of values, one holding the value of every subexpression.  (The
11173      expression a*b+c has five subexpressions: a, b, a*b, c, and
11174      a*b+c.)  GDB's values hold almost enough information to establish
11175      the criteria given above --- they identify memory lvalues,
11176      register lvalues, computed values, etcetera.  So we can evaluate
11177      the expression, and then scan the chain of values that leaves
11178      behind to decide whether we can detect any possible change to the
11179      expression's final value using only hardware watchpoints.
11180
11181      However, I don't think that the values returned by inferior
11182      function calls are special in any way.  So this function may not
11183      notice that an expression involving an inferior function call
11184      can't be watched with hardware watchpoints.  FIXME.  */
11185   for (; v; v = value_next (v))
11186     {
11187       if (VALUE_LVAL (v) == lval_memory)
11188         {
11189           if (v != head && value_lazy (v))
11190             /* A lazy memory lvalue in the chain is one that GDB never
11191                needed to fetch; we either just used its address (e.g.,
11192                `a' in `a.b') or we never needed it at all (e.g., `a'
11193                in `a,b').  This doesn't apply to HEAD; if that is
11194                lazy then it was not readable, but watch it anyway.  */
11195             ;
11196           else
11197             {
11198               /* Ahh, memory we actually used!  Check if we can cover
11199                  it with hardware watchpoints.  */
11200               struct type *vtype = check_typedef (value_type (v));
11201
11202               /* We only watch structs and arrays if user asked for it
11203                  explicitly, never if they just happen to appear in a
11204                  middle of some value chain.  */
11205               if (v == head
11206                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11207                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11208                 {
11209                   CORE_ADDR vaddr = value_address (v);
11210                   int len;
11211                   int num_regs;
11212
11213                   len = (target_exact_watchpoints
11214                          && is_scalar_type_recursive (vtype))?
11215                     1 : TYPE_LENGTH (value_type (v));
11216
11217                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11218                   if (!num_regs)
11219                     return 0;
11220                   else
11221                     found_memory_cnt += num_regs;
11222                 }
11223             }
11224         }
11225       else if (VALUE_LVAL (v) != not_lval
11226                && deprecated_value_modifiable (v) == 0)
11227         return 0;       /* These are values from the history (e.g., $1).  */
11228       else if (VALUE_LVAL (v) == lval_register)
11229         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11230     }
11231
11232   /* The expression itself looks suitable for using a hardware
11233      watchpoint, but give the target machine a chance to reject it.  */
11234   return found_memory_cnt;
11235 }
11236
11237 void
11238 watch_command_wrapper (char *arg, int from_tty, int internal)
11239 {
11240   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11241 }
11242
11243 /* A helper function that looks for the "-location" argument and then
11244    calls watch_command_1.  */
11245
11246 static void
11247 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11248 {
11249   int just_location = 0;
11250
11251   if (arg
11252       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11253           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11254     {
11255       arg = skip_spaces (arg);
11256       just_location = 1;
11257     }
11258
11259   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11260 }
11261
11262 static void
11263 watch_command (char *arg, int from_tty)
11264 {
11265   watch_maybe_just_location (arg, hw_write, from_tty);
11266 }
11267
11268 void
11269 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11270 {
11271   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11272 }
11273
11274 static void
11275 rwatch_command (char *arg, int from_tty)
11276 {
11277   watch_maybe_just_location (arg, hw_read, from_tty);
11278 }
11279
11280 void
11281 awatch_command_wrapper (char *arg, int from_tty, int internal)
11282 {
11283   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11284 }
11285
11286 static void
11287 awatch_command (char *arg, int from_tty)
11288 {
11289   watch_maybe_just_location (arg, hw_access, from_tty);
11290 }
11291 \f
11292
11293 /* Helper routines for the until_command routine in infcmd.c.  Here
11294    because it uses the mechanisms of breakpoints.  */
11295
11296 struct until_break_command_continuation_args
11297 {
11298   struct breakpoint *breakpoint;
11299   struct breakpoint *breakpoint2;
11300   int thread_num;
11301 };
11302
11303 /* This function is called by fetch_inferior_event via the
11304    cmd_continuation pointer, to complete the until command.  It takes
11305    care of cleaning up the temporary breakpoints set up by the until
11306    command.  */
11307 static void
11308 until_break_command_continuation (void *arg, int err)
11309 {
11310   struct until_break_command_continuation_args *a = arg;
11311
11312   delete_breakpoint (a->breakpoint);
11313   if (a->breakpoint2)
11314     delete_breakpoint (a->breakpoint2);
11315   delete_longjmp_breakpoint (a->thread_num);
11316 }
11317
11318 void
11319 until_break_command (char *arg, int from_tty, int anywhere)
11320 {
11321   struct symtabs_and_lines sals;
11322   struct symtab_and_line sal;
11323   struct frame_info *frame;
11324   struct gdbarch *frame_gdbarch;
11325   struct frame_id stack_frame_id;
11326   struct frame_id caller_frame_id;
11327   struct breakpoint *breakpoint;
11328   struct breakpoint *breakpoint2 = NULL;
11329   struct cleanup *old_chain;
11330   int thread;
11331   struct thread_info *tp;
11332
11333   clear_proceed_status ();
11334
11335   /* Set a breakpoint where the user wants it and at return from
11336      this function.  */
11337
11338   if (last_displayed_sal_is_valid ())
11339     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11340                           get_last_displayed_symtab (),
11341                           get_last_displayed_line ());
11342   else
11343     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11344                           (struct symtab *) NULL, 0);
11345
11346   if (sals.nelts != 1)
11347     error (_("Couldn't get information on specified line."));
11348
11349   sal = sals.sals[0];
11350   xfree (sals.sals);    /* malloc'd, so freed.  */
11351
11352   if (*arg)
11353     error (_("Junk at end of arguments."));
11354
11355   resolve_sal_pc (&sal);
11356
11357   tp = inferior_thread ();
11358   thread = tp->num;
11359
11360   old_chain = make_cleanup (null_cleanup, NULL);
11361
11362   /* Note linespec handling above invalidates the frame chain.
11363      Installing a breakpoint also invalidates the frame chain (as it
11364      may need to switch threads), so do any frame handling before
11365      that.  */
11366
11367   frame = get_selected_frame (NULL);
11368   frame_gdbarch = get_frame_arch (frame);
11369   stack_frame_id = get_stack_frame_id (frame);
11370   caller_frame_id = frame_unwind_caller_id (frame);
11371
11372   /* Keep within the current frame, or in frames called by the current
11373      one.  */
11374
11375   if (frame_id_p (caller_frame_id))
11376     {
11377       struct symtab_and_line sal2;
11378
11379       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11380       sal2.pc = frame_unwind_caller_pc (frame);
11381       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11382                                               sal2,
11383                                               caller_frame_id,
11384                                               bp_until);
11385       make_cleanup_delete_breakpoint (breakpoint2);
11386
11387       set_longjmp_breakpoint (tp, caller_frame_id);
11388       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11389     }
11390
11391   /* set_momentary_breakpoint could invalidate FRAME.  */
11392   frame = NULL;
11393
11394   if (anywhere)
11395     /* If the user told us to continue until a specified location,
11396        we don't specify a frame at which we need to stop.  */
11397     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11398                                            null_frame_id, bp_until);
11399   else
11400     /* Otherwise, specify the selected frame, because we want to stop
11401        only at the very same frame.  */
11402     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11403                                            stack_frame_id, bp_until);
11404   make_cleanup_delete_breakpoint (breakpoint);
11405
11406   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11407
11408   /* If we are running asynchronously, and proceed call above has
11409      actually managed to start the target, arrange for breakpoints to
11410      be deleted when the target stops.  Otherwise, we're already
11411      stopped and delete breakpoints via cleanup chain.  */
11412
11413   if (target_can_async_p () && is_running (inferior_ptid))
11414     {
11415       struct until_break_command_continuation_args *args;
11416       args = xmalloc (sizeof (*args));
11417
11418       args->breakpoint = breakpoint;
11419       args->breakpoint2 = breakpoint2;
11420       args->thread_num = thread;
11421
11422       discard_cleanups (old_chain);
11423       add_continuation (inferior_thread (),
11424                         until_break_command_continuation, args,
11425                         xfree);
11426     }
11427   else
11428     do_cleanups (old_chain);
11429 }
11430
11431 /* This function attempts to parse an optional "if <cond>" clause
11432    from the arg string.  If one is not found, it returns NULL.
11433
11434    Else, it returns a pointer to the condition string.  (It does not
11435    attempt to evaluate the string against a particular block.)  And,
11436    it updates arg to point to the first character following the parsed
11437    if clause in the arg string.  */
11438
11439 char *
11440 ep_parse_optional_if_clause (char **arg)
11441 {
11442   char *cond_string;
11443
11444   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11445     return NULL;
11446
11447   /* Skip the "if" keyword.  */
11448   (*arg) += 2;
11449
11450   /* Skip any extra leading whitespace, and record the start of the
11451      condition string.  */
11452   *arg = skip_spaces (*arg);
11453   cond_string = *arg;
11454
11455   /* Assume that the condition occupies the remainder of the arg
11456      string.  */
11457   (*arg) += strlen (cond_string);
11458
11459   return cond_string;
11460 }
11461
11462 /* Commands to deal with catching events, such as signals, exceptions,
11463    process start/exit, etc.  */
11464
11465 typedef enum
11466 {
11467   catch_fork_temporary, catch_vfork_temporary,
11468   catch_fork_permanent, catch_vfork_permanent
11469 }
11470 catch_fork_kind;
11471
11472 static void
11473 catch_fork_command_1 (char *arg, int from_tty, 
11474                       struct cmd_list_element *command)
11475 {
11476   struct gdbarch *gdbarch = get_current_arch ();
11477   char *cond_string = NULL;
11478   catch_fork_kind fork_kind;
11479   int tempflag;
11480
11481   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11482   tempflag = (fork_kind == catch_fork_temporary
11483               || fork_kind == catch_vfork_temporary);
11484
11485   if (!arg)
11486     arg = "";
11487   arg = skip_spaces (arg);
11488
11489   /* The allowed syntax is:
11490      catch [v]fork
11491      catch [v]fork if <cond>
11492
11493      First, check if there's an if clause.  */
11494   cond_string = ep_parse_optional_if_clause (&arg);
11495
11496   if ((*arg != '\0') && !isspace (*arg))
11497     error (_("Junk at end of arguments."));
11498
11499   /* If this target supports it, create a fork or vfork catchpoint
11500      and enable reporting of such events.  */
11501   switch (fork_kind)
11502     {
11503     case catch_fork_temporary:
11504     case catch_fork_permanent:
11505       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11506                                           &catch_fork_breakpoint_ops);
11507       break;
11508     case catch_vfork_temporary:
11509     case catch_vfork_permanent:
11510       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11511                                           &catch_vfork_breakpoint_ops);
11512       break;
11513     default:
11514       error (_("unsupported or unknown fork kind; cannot catch it"));
11515       break;
11516     }
11517 }
11518
11519 static void
11520 catch_exec_command_1 (char *arg, int from_tty, 
11521                       struct cmd_list_element *command)
11522 {
11523   struct exec_catchpoint *c;
11524   struct gdbarch *gdbarch = get_current_arch ();
11525   int tempflag;
11526   char *cond_string = NULL;
11527
11528   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11529
11530   if (!arg)
11531     arg = "";
11532   arg = skip_spaces (arg);
11533
11534   /* The allowed syntax is:
11535      catch exec
11536      catch exec if <cond>
11537
11538      First, check if there's an if clause.  */
11539   cond_string = ep_parse_optional_if_clause (&arg);
11540
11541   if ((*arg != '\0') && !isspace (*arg))
11542     error (_("Junk at end of arguments."));
11543
11544   c = XNEW (struct exec_catchpoint);
11545   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11546                    &catch_exec_breakpoint_ops);
11547   c->exec_pathname = NULL;
11548
11549   install_breakpoint (0, &c->base, 1);
11550 }
11551
11552 void
11553 init_ada_exception_breakpoint (struct breakpoint *b,
11554                                struct gdbarch *gdbarch,
11555                                struct symtab_and_line sal,
11556                                char *addr_string,
11557                                const struct breakpoint_ops *ops,
11558                                int tempflag,
11559                                int from_tty)
11560 {
11561   if (from_tty)
11562     {
11563       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11564       if (!loc_gdbarch)
11565         loc_gdbarch = gdbarch;
11566
11567       describe_other_breakpoints (loc_gdbarch,
11568                                   sal.pspace, sal.pc, sal.section, -1);
11569       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11570          version for exception catchpoints, because two catchpoints
11571          used for different exception names will use the same address.
11572          In this case, a "breakpoint ... also set at..." warning is
11573          unproductive.  Besides, the warning phrasing is also a bit
11574          inappropriate, we should use the word catchpoint, and tell
11575          the user what type of catchpoint it is.  The above is good
11576          enough for now, though.  */
11577     }
11578
11579   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11580
11581   b->enable_state = bp_enabled;
11582   b->disposition = tempflag ? disp_del : disp_donttouch;
11583   b->addr_string = addr_string;
11584   b->language = language_ada;
11585 }
11586
11587 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11588    filter list, or NULL if no filtering is required.  */
11589 static VEC(int) *
11590 catch_syscall_split_args (char *arg)
11591 {
11592   VEC(int) *result = NULL;
11593   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11594
11595   while (*arg != '\0')
11596     {
11597       int i, syscall_number;
11598       char *endptr;
11599       char cur_name[128];
11600       struct syscall s;
11601
11602       /* Skip whitespace.  */
11603       arg = skip_spaces (arg);
11604
11605       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11606         cur_name[i] = arg[i];
11607       cur_name[i] = '\0';
11608       arg += i;
11609
11610       /* Check if the user provided a syscall name or a number.  */
11611       syscall_number = (int) strtol (cur_name, &endptr, 0);
11612       if (*endptr == '\0')
11613         get_syscall_by_number (syscall_number, &s);
11614       else
11615         {
11616           /* We have a name.  Let's check if it's valid and convert it
11617              to a number.  */
11618           get_syscall_by_name (cur_name, &s);
11619
11620           if (s.number == UNKNOWN_SYSCALL)
11621             /* Here we have to issue an error instead of a warning,
11622                because GDB cannot do anything useful if there's no
11623                syscall number to be caught.  */
11624             error (_("Unknown syscall name '%s'."), cur_name);
11625         }
11626
11627       /* Ok, it's valid.  */
11628       VEC_safe_push (int, result, s.number);
11629     }
11630
11631   discard_cleanups (cleanup);
11632   return result;
11633 }
11634
11635 /* Implement the "catch syscall" command.  */
11636
11637 static void
11638 catch_syscall_command_1 (char *arg, int from_tty, 
11639                          struct cmd_list_element *command)
11640 {
11641   int tempflag;
11642   VEC(int) *filter;
11643   struct syscall s;
11644   struct gdbarch *gdbarch = get_current_arch ();
11645
11646   /* Checking if the feature if supported.  */
11647   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11648     error (_("The feature 'catch syscall' is not supported on \
11649 this architecture yet."));
11650
11651   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11652
11653   arg = skip_spaces (arg);
11654
11655   /* We need to do this first "dummy" translation in order
11656      to get the syscall XML file loaded or, most important,
11657      to display a warning to the user if there's no XML file
11658      for his/her architecture.  */
11659   get_syscall_by_number (0, &s);
11660
11661   /* The allowed syntax is:
11662      catch syscall
11663      catch syscall <name | number> [<name | number> ... <name | number>]
11664
11665      Let's check if there's a syscall name.  */
11666
11667   if (arg != NULL)
11668     filter = catch_syscall_split_args (arg);
11669   else
11670     filter = NULL;
11671
11672   create_syscall_event_catchpoint (tempflag, filter,
11673                                    &catch_syscall_breakpoint_ops);
11674 }
11675
11676 static void
11677 catch_command (char *arg, int from_tty)
11678 {
11679   error (_("Catch requires an event name."));
11680 }
11681 \f
11682
11683 static void
11684 tcatch_command (char *arg, int from_tty)
11685 {
11686   error (_("Catch requires an event name."));
11687 }
11688
11689 /* A qsort comparison function that sorts breakpoints in order.  */
11690
11691 static int
11692 compare_breakpoints (const void *a, const void *b)
11693 {
11694   const breakpoint_p *ba = a;
11695   uintptr_t ua = (uintptr_t) *ba;
11696   const breakpoint_p *bb = b;
11697   uintptr_t ub = (uintptr_t) *bb;
11698
11699   if ((*ba)->number < (*bb)->number)
11700     return -1;
11701   else if ((*ba)->number > (*bb)->number)
11702     return 1;
11703
11704   /* Now sort by address, in case we see, e..g, two breakpoints with
11705      the number 0.  */
11706   if (ua < ub)
11707     return -1;
11708   return ua > ub ? 1 : 0;
11709 }
11710
11711 /* Delete breakpoints by address or line.  */
11712
11713 static void
11714 clear_command (char *arg, int from_tty)
11715 {
11716   struct breakpoint *b, *prev;
11717   VEC(breakpoint_p) *found = 0;
11718   int ix;
11719   int default_match;
11720   struct symtabs_and_lines sals;
11721   struct symtab_and_line sal;
11722   int i;
11723   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11724
11725   if (arg)
11726     {
11727       sals = decode_line_with_current_source (arg,
11728                                               (DECODE_LINE_FUNFIRSTLINE
11729                                                | DECODE_LINE_LIST_MODE));
11730       make_cleanup (xfree, sals.sals);
11731       default_match = 0;
11732     }
11733   else
11734     {
11735       sals.sals = (struct symtab_and_line *)
11736         xmalloc (sizeof (struct symtab_and_line));
11737       make_cleanup (xfree, sals.sals);
11738       init_sal (&sal);          /* Initialize to zeroes.  */
11739
11740       /* Set sal's line, symtab, pc, and pspace to the values
11741          corresponding to the last call to print_frame_info.  If the
11742          codepoint is not valid, this will set all the fields to 0.  */
11743       get_last_displayed_sal (&sal);
11744       if (sal.symtab == 0)
11745         error (_("No source file specified."));
11746
11747       sals.sals[0] = sal;
11748       sals.nelts = 1;
11749
11750       default_match = 1;
11751     }
11752
11753   /* We don't call resolve_sal_pc here.  That's not as bad as it
11754      seems, because all existing breakpoints typically have both
11755      file/line and pc set.  So, if clear is given file/line, we can
11756      match this to existing breakpoint without obtaining pc at all.
11757
11758      We only support clearing given the address explicitly 
11759      present in breakpoint table.  Say, we've set breakpoint 
11760      at file:line.  There were several PC values for that file:line,
11761      due to optimization, all in one block.
11762
11763      We've picked one PC value.  If "clear" is issued with another
11764      PC corresponding to the same file:line, the breakpoint won't
11765      be cleared.  We probably can still clear the breakpoint, but 
11766      since the other PC value is never presented to user, user
11767      can only find it by guessing, and it does not seem important
11768      to support that.  */
11769
11770   /* For each line spec given, delete bps which correspond to it.  Do
11771      it in two passes, solely to preserve the current behavior that
11772      from_tty is forced true if we delete more than one
11773      breakpoint.  */
11774
11775   found = NULL;
11776   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11777   for (i = 0; i < sals.nelts; i++)
11778     {
11779       const char *sal_fullname;
11780
11781       /* If exact pc given, clear bpts at that pc.
11782          If line given (pc == 0), clear all bpts on specified line.
11783          If defaulting, clear all bpts on default line
11784          or at default pc.
11785
11786          defaulting    sal.pc != 0    tests to do
11787
11788          0              1             pc
11789          1              1             pc _and_ line
11790          0              0             line
11791          1              0             <can't happen> */
11792
11793       sal = sals.sals[i];
11794       sal_fullname = (sal.symtab == NULL
11795                       ? NULL : symtab_to_fullname (sal.symtab));
11796
11797       /* Find all matching breakpoints and add them to 'found'.  */
11798       ALL_BREAKPOINTS (b)
11799         {
11800           int match = 0;
11801           /* Are we going to delete b?  */
11802           if (b->type != bp_none && !is_watchpoint (b))
11803             {
11804               struct bp_location *loc = b->loc;
11805               for (; loc; loc = loc->next)
11806                 {
11807                   /* If the user specified file:line, don't allow a PC
11808                      match.  This matches historical gdb behavior.  */
11809                   int pc_match = (!sal.explicit_line
11810                                   && sal.pc
11811                                   && (loc->pspace == sal.pspace)
11812                                   && (loc->address == sal.pc)
11813                                   && (!section_is_overlay (loc->section)
11814                                       || loc->section == sal.section));
11815                   int line_match = 0;
11816
11817                   if ((default_match || sal.explicit_line)
11818                       && loc->symtab != NULL
11819                       && sal_fullname != NULL
11820                       && sal.pspace == loc->pspace
11821                       && loc->line_number == sal.line
11822                       && filename_cmp (symtab_to_fullname (loc->symtab),
11823                                        sal_fullname) == 0)
11824                     line_match = 1;
11825
11826                   if (pc_match || line_match)
11827                     {
11828                       match = 1;
11829                       break;
11830                     }
11831                 }
11832             }
11833
11834           if (match)
11835             VEC_safe_push(breakpoint_p, found, b);
11836         }
11837     }
11838
11839   /* Now go thru the 'found' chain and delete them.  */
11840   if (VEC_empty(breakpoint_p, found))
11841     {
11842       if (arg)
11843         error (_("No breakpoint at %s."), arg);
11844       else
11845         error (_("No breakpoint at this line."));
11846     }
11847
11848   /* Remove duplicates from the vec.  */
11849   qsort (VEC_address (breakpoint_p, found),
11850          VEC_length (breakpoint_p, found),
11851          sizeof (breakpoint_p),
11852          compare_breakpoints);
11853   prev = VEC_index (breakpoint_p, found, 0);
11854   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11855     {
11856       if (b == prev)
11857         {
11858           VEC_ordered_remove (breakpoint_p, found, ix);
11859           --ix;
11860         }
11861     }
11862
11863   if (VEC_length(breakpoint_p, found) > 1)
11864     from_tty = 1;       /* Always report if deleted more than one.  */
11865   if (from_tty)
11866     {
11867       if (VEC_length(breakpoint_p, found) == 1)
11868         printf_unfiltered (_("Deleted breakpoint "));
11869       else
11870         printf_unfiltered (_("Deleted breakpoints "));
11871     }
11872
11873   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11874     {
11875       if (from_tty)
11876         printf_unfiltered ("%d ", b->number);
11877       delete_breakpoint (b);
11878     }
11879   if (from_tty)
11880     putchar_unfiltered ('\n');
11881
11882   do_cleanups (cleanups);
11883 }
11884 \f
11885 /* Delete breakpoint in BS if they are `delete' breakpoints and
11886    all breakpoints that are marked for deletion, whether hit or not.
11887    This is called after any breakpoint is hit, or after errors.  */
11888
11889 void
11890 breakpoint_auto_delete (bpstat bs)
11891 {
11892   struct breakpoint *b, *b_tmp;
11893
11894   for (; bs; bs = bs->next)
11895     if (bs->breakpoint_at
11896         && bs->breakpoint_at->disposition == disp_del
11897         && bs->stop)
11898       delete_breakpoint (bs->breakpoint_at);
11899
11900   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11901   {
11902     if (b->disposition == disp_del_at_next_stop)
11903       delete_breakpoint (b);
11904   }
11905 }
11906
11907 /* A comparison function for bp_location AP and BP being interfaced to
11908    qsort.  Sort elements primarily by their ADDRESS (no matter what
11909    does breakpoint_address_is_meaningful say for its OWNER),
11910    secondarily by ordering first bp_permanent OWNERed elements and
11911    terciarily just ensuring the array is sorted stable way despite
11912    qsort being an unstable algorithm.  */
11913
11914 static int
11915 bp_location_compare (const void *ap, const void *bp)
11916 {
11917   struct bp_location *a = *(void **) ap;
11918   struct bp_location *b = *(void **) bp;
11919   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11920   int a_perm = a->owner->enable_state == bp_permanent;
11921   int b_perm = b->owner->enable_state == bp_permanent;
11922
11923   if (a->address != b->address)
11924     return (a->address > b->address) - (a->address < b->address);
11925
11926   /* Sort locations at the same address by their pspace number, keeping
11927      locations of the same inferior (in a multi-inferior environment)
11928      grouped.  */
11929
11930   if (a->pspace->num != b->pspace->num)
11931     return ((a->pspace->num > b->pspace->num)
11932             - (a->pspace->num < b->pspace->num));
11933
11934   /* Sort permanent breakpoints first.  */
11935   if (a_perm != b_perm)
11936     return (a_perm < b_perm) - (a_perm > b_perm);
11937
11938   /* Make the internal GDB representation stable across GDB runs
11939      where A and B memory inside GDB can differ.  Breakpoint locations of
11940      the same type at the same address can be sorted in arbitrary order.  */
11941
11942   if (a->owner->number != b->owner->number)
11943     return ((a->owner->number > b->owner->number)
11944             - (a->owner->number < b->owner->number));
11945
11946   return (a > b) - (a < b);
11947 }
11948
11949 /* Set bp_location_placed_address_before_address_max and
11950    bp_location_shadow_len_after_address_max according to the current
11951    content of the bp_location array.  */
11952
11953 static void
11954 bp_location_target_extensions_update (void)
11955 {
11956   struct bp_location *bl, **blp_tmp;
11957
11958   bp_location_placed_address_before_address_max = 0;
11959   bp_location_shadow_len_after_address_max = 0;
11960
11961   ALL_BP_LOCATIONS (bl, blp_tmp)
11962     {
11963       CORE_ADDR start, end, addr;
11964
11965       if (!bp_location_has_shadow (bl))
11966         continue;
11967
11968       start = bl->target_info.placed_address;
11969       end = start + bl->target_info.shadow_len;
11970
11971       gdb_assert (bl->address >= start);
11972       addr = bl->address - start;
11973       if (addr > bp_location_placed_address_before_address_max)
11974         bp_location_placed_address_before_address_max = addr;
11975
11976       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11977
11978       gdb_assert (bl->address < end);
11979       addr = end - bl->address;
11980       if (addr > bp_location_shadow_len_after_address_max)
11981         bp_location_shadow_len_after_address_max = addr;
11982     }
11983 }
11984
11985 /* Download tracepoint locations if they haven't been.  */
11986
11987 static void
11988 download_tracepoint_locations (void)
11989 {
11990   struct breakpoint *b;
11991   struct cleanup *old_chain;
11992
11993   if (!target_can_download_tracepoint ())
11994     return;
11995
11996   old_chain = save_current_space_and_thread ();
11997
11998   ALL_TRACEPOINTS (b)
11999     {
12000       struct bp_location *bl;
12001       struct tracepoint *t;
12002       int bp_location_downloaded = 0;
12003
12004       if ((b->type == bp_fast_tracepoint
12005            ? !may_insert_fast_tracepoints
12006            : !may_insert_tracepoints))
12007         continue;
12008
12009       for (bl = b->loc; bl; bl = bl->next)
12010         {
12011           /* In tracepoint, locations are _never_ duplicated, so
12012              should_be_inserted is equivalent to
12013              unduplicated_should_be_inserted.  */
12014           if (!should_be_inserted (bl) || bl->inserted)
12015             continue;
12016
12017           switch_to_program_space_and_thread (bl->pspace);
12018
12019           target_download_tracepoint (bl);
12020
12021           bl->inserted = 1;
12022           bp_location_downloaded = 1;
12023         }
12024       t = (struct tracepoint *) b;
12025       t->number_on_target = b->number;
12026       if (bp_location_downloaded)
12027         observer_notify_breakpoint_modified (b);
12028     }
12029
12030   do_cleanups (old_chain);
12031 }
12032
12033 /* Swap the insertion/duplication state between two locations.  */
12034
12035 static void
12036 swap_insertion (struct bp_location *left, struct bp_location *right)
12037 {
12038   const int left_inserted = left->inserted;
12039   const int left_duplicate = left->duplicate;
12040   const int left_needs_update = left->needs_update;
12041   const struct bp_target_info left_target_info = left->target_info;
12042
12043   /* Locations of tracepoints can never be duplicated.  */
12044   if (is_tracepoint (left->owner))
12045     gdb_assert (!left->duplicate);
12046   if (is_tracepoint (right->owner))
12047     gdb_assert (!right->duplicate);
12048
12049   left->inserted = right->inserted;
12050   left->duplicate = right->duplicate;
12051   left->needs_update = right->needs_update;
12052   left->target_info = right->target_info;
12053   right->inserted = left_inserted;
12054   right->duplicate = left_duplicate;
12055   right->needs_update = left_needs_update;
12056   right->target_info = left_target_info;
12057 }
12058
12059 /* Force the re-insertion of the locations at ADDRESS.  This is called
12060    once a new/deleted/modified duplicate location is found and we are evaluating
12061    conditions on the target's side.  Such conditions need to be updated on
12062    the target.  */
12063
12064 static void
12065 force_breakpoint_reinsertion (struct bp_location *bl)
12066 {
12067   struct bp_location **locp = NULL, **loc2p;
12068   struct bp_location *loc;
12069   CORE_ADDR address = 0;
12070   int pspace_num;
12071
12072   address = bl->address;
12073   pspace_num = bl->pspace->num;
12074
12075   /* This is only meaningful if the target is
12076      evaluating conditions and if the user has
12077      opted for condition evaluation on the target's
12078      side.  */
12079   if (gdb_evaluates_breakpoint_condition_p ()
12080       || !target_supports_evaluation_of_breakpoint_conditions ())
12081     return;
12082
12083   /* Flag all breakpoint locations with this address and
12084      the same program space as the location
12085      as "its condition has changed".  We need to
12086      update the conditions on the target's side.  */
12087   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12088     {
12089       loc = *loc2p;
12090
12091       if (!is_breakpoint (loc->owner)
12092           || pspace_num != loc->pspace->num)
12093         continue;
12094
12095       /* Flag the location appropriately.  We use a different state to
12096          let everyone know that we already updated the set of locations
12097          with addr bl->address and program space bl->pspace.  This is so
12098          we don't have to keep calling these functions just to mark locations
12099          that have already been marked.  */
12100       loc->condition_changed = condition_updated;
12101
12102       /* Free the agent expression bytecode as well.  We will compute
12103          it later on.  */
12104       if (loc->cond_bytecode)
12105         {
12106           free_agent_expr (loc->cond_bytecode);
12107           loc->cond_bytecode = NULL;
12108         }
12109     }
12110 }
12111
12112 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12113    into the inferior, only remove already-inserted locations that no
12114    longer should be inserted.  Functions that delete a breakpoint or
12115    breakpoints should pass false, so that deleting a breakpoint
12116    doesn't have the side effect of inserting the locations of other
12117    breakpoints that are marked not-inserted, but should_be_inserted
12118    returns true on them.
12119
12120    This behaviour is useful is situations close to tear-down -- e.g.,
12121    after an exec, while the target still has execution, but breakpoint
12122    shadows of the previous executable image should *NOT* be restored
12123    to the new image; or before detaching, where the target still has
12124    execution and wants to delete breakpoints from GDB's lists, and all
12125    breakpoints had already been removed from the inferior.  */
12126
12127 static void
12128 update_global_location_list (int should_insert)
12129 {
12130   struct breakpoint *b;
12131   struct bp_location **locp, *loc;
12132   struct cleanup *cleanups;
12133   /* Last breakpoint location address that was marked for update.  */
12134   CORE_ADDR last_addr = 0;
12135   /* Last breakpoint location program space that was marked for update.  */
12136   int last_pspace_num = -1;
12137
12138   /* Used in the duplicates detection below.  When iterating over all
12139      bp_locations, points to the first bp_location of a given address.
12140      Breakpoints and watchpoints of different types are never
12141      duplicates of each other.  Keep one pointer for each type of
12142      breakpoint/watchpoint, so we only need to loop over all locations
12143      once.  */
12144   struct bp_location *bp_loc_first;  /* breakpoint */
12145   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12146   struct bp_location *awp_loc_first; /* access watchpoint */
12147   struct bp_location *rwp_loc_first; /* read watchpoint */
12148
12149   /* Saved former bp_location array which we compare against the newly
12150      built bp_location from the current state of ALL_BREAKPOINTS.  */
12151   struct bp_location **old_location, **old_locp;
12152   unsigned old_location_count;
12153
12154   old_location = bp_location;
12155   old_location_count = bp_location_count;
12156   bp_location = NULL;
12157   bp_location_count = 0;
12158   cleanups = make_cleanup (xfree, old_location);
12159
12160   ALL_BREAKPOINTS (b)
12161     for (loc = b->loc; loc; loc = loc->next)
12162       bp_location_count++;
12163
12164   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12165   locp = bp_location;
12166   ALL_BREAKPOINTS (b)
12167     for (loc = b->loc; loc; loc = loc->next)
12168       *locp++ = loc;
12169   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12170          bp_location_compare);
12171
12172   bp_location_target_extensions_update ();
12173
12174   /* Identify bp_location instances that are no longer present in the
12175      new list, and therefore should be freed.  Note that it's not
12176      necessary that those locations should be removed from inferior --
12177      if there's another location at the same address (previously
12178      marked as duplicate), we don't need to remove/insert the
12179      location.
12180      
12181      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12182      and former bp_location array state respectively.  */
12183
12184   locp = bp_location;
12185   for (old_locp = old_location; old_locp < old_location + old_location_count;
12186        old_locp++)
12187     {
12188       struct bp_location *old_loc = *old_locp;
12189       struct bp_location **loc2p;
12190
12191       /* Tells if 'old_loc' is found among the new locations.  If
12192          not, we have to free it.  */
12193       int found_object = 0;
12194       /* Tells if the location should remain inserted in the target.  */
12195       int keep_in_target = 0;
12196       int removed = 0;
12197
12198       /* Skip LOCP entries which will definitely never be needed.
12199          Stop either at or being the one matching OLD_LOC.  */
12200       while (locp < bp_location + bp_location_count
12201              && (*locp)->address < old_loc->address)
12202         locp++;
12203
12204       for (loc2p = locp;
12205            (loc2p < bp_location + bp_location_count
12206             && (*loc2p)->address == old_loc->address);
12207            loc2p++)
12208         {
12209           /* Check if this is a new/duplicated location or a duplicated
12210              location that had its condition modified.  If so, we want to send
12211              its condition to the target if evaluation of conditions is taking
12212              place there.  */
12213           if ((*loc2p)->condition_changed == condition_modified
12214               && (last_addr != old_loc->address
12215                   || last_pspace_num != old_loc->pspace->num))
12216             {
12217               force_breakpoint_reinsertion (*loc2p);
12218               last_pspace_num = old_loc->pspace->num;
12219             }
12220
12221           if (*loc2p == old_loc)
12222             found_object = 1;
12223         }
12224
12225       /* We have already handled this address, update it so that we don't
12226          have to go through updates again.  */
12227       last_addr = old_loc->address;
12228
12229       /* Target-side condition evaluation: Handle deleted locations.  */
12230       if (!found_object)
12231         force_breakpoint_reinsertion (old_loc);
12232
12233       /* If this location is no longer present, and inserted, look if
12234          there's maybe a new location at the same address.  If so,
12235          mark that one inserted, and don't remove this one.  This is
12236          needed so that we don't have a time window where a breakpoint
12237          at certain location is not inserted.  */
12238
12239       if (old_loc->inserted)
12240         {
12241           /* If the location is inserted now, we might have to remove
12242              it.  */
12243
12244           if (found_object && should_be_inserted (old_loc))
12245             {
12246               /* The location is still present in the location list,
12247                  and still should be inserted.  Don't do anything.  */
12248               keep_in_target = 1;
12249             }
12250           else
12251             {
12252               /* This location still exists, but it won't be kept in the
12253                  target since it may have been disabled.  We proceed to
12254                  remove its target-side condition.  */
12255
12256               /* The location is either no longer present, or got
12257                  disabled.  See if there's another location at the
12258                  same address, in which case we don't need to remove
12259                  this one from the target.  */
12260
12261               /* OLD_LOC comes from existing struct breakpoint.  */
12262               if (breakpoint_address_is_meaningful (old_loc->owner))
12263                 {
12264                   for (loc2p = locp;
12265                        (loc2p < bp_location + bp_location_count
12266                         && (*loc2p)->address == old_loc->address);
12267                        loc2p++)
12268                     {
12269                       struct bp_location *loc2 = *loc2p;
12270
12271                       if (breakpoint_locations_match (loc2, old_loc))
12272                         {
12273                           /* Read watchpoint locations are switched to
12274                              access watchpoints, if the former are not
12275                              supported, but the latter are.  */
12276                           if (is_hardware_watchpoint (old_loc->owner))
12277                             {
12278                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12279                               loc2->watchpoint_type = old_loc->watchpoint_type;
12280                             }
12281
12282                           /* loc2 is a duplicated location. We need to check
12283                              if it should be inserted in case it will be
12284                              unduplicated.  */
12285                           if (loc2 != old_loc
12286                               && unduplicated_should_be_inserted (loc2))
12287                             {
12288                               swap_insertion (old_loc, loc2);
12289                               keep_in_target = 1;
12290                               break;
12291                             }
12292                         }
12293                     }
12294                 }
12295             }
12296
12297           if (!keep_in_target)
12298             {
12299               if (remove_breakpoint (old_loc, mark_uninserted))
12300                 {
12301                   /* This is just about all we can do.  We could keep
12302                      this location on the global list, and try to
12303                      remove it next time, but there's no particular
12304                      reason why we will succeed next time.
12305                      
12306                      Note that at this point, old_loc->owner is still
12307                      valid, as delete_breakpoint frees the breakpoint
12308                      only after calling us.  */
12309                   printf_filtered (_("warning: Error removing "
12310                                      "breakpoint %d\n"), 
12311                                    old_loc->owner->number);
12312                 }
12313               removed = 1;
12314             }
12315         }
12316
12317       if (!found_object)
12318         {
12319           if (removed && non_stop
12320               && breakpoint_address_is_meaningful (old_loc->owner)
12321               && !is_hardware_watchpoint (old_loc->owner))
12322             {
12323               /* This location was removed from the target.  In
12324                  non-stop mode, a race condition is possible where
12325                  we've removed a breakpoint, but stop events for that
12326                  breakpoint are already queued and will arrive later.
12327                  We apply an heuristic to be able to distinguish such
12328                  SIGTRAPs from other random SIGTRAPs: we keep this
12329                  breakpoint location for a bit, and will retire it
12330                  after we see some number of events.  The theory here
12331                  is that reporting of events should, "on the average",
12332                  be fair, so after a while we'll see events from all
12333                  threads that have anything of interest, and no longer
12334                  need to keep this breakpoint location around.  We
12335                  don't hold locations forever so to reduce chances of
12336                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12337                  SIGTRAP.
12338
12339                  The heuristic failing can be disastrous on
12340                  decr_pc_after_break targets.
12341
12342                  On decr_pc_after_break targets, like e.g., x86-linux,
12343                  if we fail to recognize a late breakpoint SIGTRAP,
12344                  because events_till_retirement has reached 0 too
12345                  soon, we'll fail to do the PC adjustment, and report
12346                  a random SIGTRAP to the user.  When the user resumes
12347                  the inferior, it will most likely immediately crash
12348                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12349                  corrupted, because of being resumed e.g., in the
12350                  middle of a multi-byte instruction, or skipped a
12351                  one-byte instruction.  This was actually seen happen
12352                  on native x86-linux, and should be less rare on
12353                  targets that do not support new thread events, like
12354                  remote, due to the heuristic depending on
12355                  thread_count.
12356
12357                  Mistaking a random SIGTRAP for a breakpoint trap
12358                  causes similar symptoms (PC adjustment applied when
12359                  it shouldn't), but then again, playing with SIGTRAPs
12360                  behind the debugger's back is asking for trouble.
12361
12362                  Since hardware watchpoint traps are always
12363                  distinguishable from other traps, so we don't need to
12364                  apply keep hardware watchpoint moribund locations
12365                  around.  We simply always ignore hardware watchpoint
12366                  traps we can no longer explain.  */
12367
12368               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12369               old_loc->owner = NULL;
12370
12371               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12372             }
12373           else
12374             {
12375               old_loc->owner = NULL;
12376               decref_bp_location (&old_loc);
12377             }
12378         }
12379     }
12380
12381   /* Rescan breakpoints at the same address and section, marking the
12382      first one as "first" and any others as "duplicates".  This is so
12383      that the bpt instruction is only inserted once.  If we have a
12384      permanent breakpoint at the same place as BPT, make that one the
12385      official one, and the rest as duplicates.  Permanent breakpoints
12386      are sorted first for the same address.
12387
12388      Do the same for hardware watchpoints, but also considering the
12389      watchpoint's type (regular/access/read) and length.  */
12390
12391   bp_loc_first = NULL;
12392   wp_loc_first = NULL;
12393   awp_loc_first = NULL;
12394   rwp_loc_first = NULL;
12395   ALL_BP_LOCATIONS (loc, locp)
12396     {
12397       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12398          non-NULL.  */
12399       struct bp_location **loc_first_p;
12400       b = loc->owner;
12401
12402       if (!unduplicated_should_be_inserted (loc)
12403           || !breakpoint_address_is_meaningful (b)
12404           /* Don't detect duplicate for tracepoint locations because they are
12405            never duplicated.  See the comments in field `duplicate' of
12406            `struct bp_location'.  */
12407           || is_tracepoint (b))
12408         {
12409           /* Clear the condition modification flag.  */
12410           loc->condition_changed = condition_unchanged;
12411           continue;
12412         }
12413
12414       /* Permanent breakpoint should always be inserted.  */
12415       if (b->enable_state == bp_permanent && ! loc->inserted)
12416         internal_error (__FILE__, __LINE__,
12417                         _("allegedly permanent breakpoint is not "
12418                         "actually inserted"));
12419
12420       if (b->type == bp_hardware_watchpoint)
12421         loc_first_p = &wp_loc_first;
12422       else if (b->type == bp_read_watchpoint)
12423         loc_first_p = &rwp_loc_first;
12424       else if (b->type == bp_access_watchpoint)
12425         loc_first_p = &awp_loc_first;
12426       else
12427         loc_first_p = &bp_loc_first;
12428
12429       if (*loc_first_p == NULL
12430           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12431           || !breakpoint_locations_match (loc, *loc_first_p))
12432         {
12433           *loc_first_p = loc;
12434           loc->duplicate = 0;
12435
12436           if (is_breakpoint (loc->owner) && loc->condition_changed)
12437             {
12438               loc->needs_update = 1;
12439               /* Clear the condition modification flag.  */
12440               loc->condition_changed = condition_unchanged;
12441             }
12442           continue;
12443         }
12444
12445
12446       /* This and the above ensure the invariant that the first location
12447          is not duplicated, and is the inserted one.
12448          All following are marked as duplicated, and are not inserted.  */
12449       if (loc->inserted)
12450         swap_insertion (loc, *loc_first_p);
12451       loc->duplicate = 1;
12452
12453       /* Clear the condition modification flag.  */
12454       loc->condition_changed = condition_unchanged;
12455
12456       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12457           && b->enable_state != bp_permanent)
12458         internal_error (__FILE__, __LINE__,
12459                         _("another breakpoint was inserted on top of "
12460                         "a permanent breakpoint"));
12461     }
12462
12463   if (breakpoints_always_inserted_mode ()
12464       && (have_live_inferiors ()
12465           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12466     {
12467       if (should_insert)
12468         insert_breakpoint_locations ();
12469       else
12470         {
12471           /* Though should_insert is false, we may need to update conditions
12472              on the target's side if it is evaluating such conditions.  We
12473              only update conditions for locations that are marked
12474              "needs_update".  */
12475           update_inserted_breakpoint_locations ();
12476         }
12477     }
12478
12479   if (should_insert)
12480     download_tracepoint_locations ();
12481
12482   do_cleanups (cleanups);
12483 }
12484
12485 void
12486 breakpoint_retire_moribund (void)
12487 {
12488   struct bp_location *loc;
12489   int ix;
12490
12491   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12492     if (--(loc->events_till_retirement) == 0)
12493       {
12494         decref_bp_location (&loc);
12495         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12496         --ix;
12497       }
12498 }
12499
12500 static void
12501 update_global_location_list_nothrow (int inserting)
12502 {
12503   volatile struct gdb_exception e;
12504
12505   TRY_CATCH (e, RETURN_MASK_ERROR)
12506     update_global_location_list (inserting);
12507 }
12508
12509 /* Clear BKP from a BPS.  */
12510
12511 static void
12512 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12513 {
12514   bpstat bs;
12515
12516   for (bs = bps; bs; bs = bs->next)
12517     if (bs->breakpoint_at == bpt)
12518       {
12519         bs->breakpoint_at = NULL;
12520         bs->old_val = NULL;
12521         /* bs->commands will be freed later.  */
12522       }
12523 }
12524
12525 /* Callback for iterate_over_threads.  */
12526 static int
12527 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12528 {
12529   struct breakpoint *bpt = data;
12530
12531   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12532   return 0;
12533 }
12534
12535 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12536    callbacks.  */
12537
12538 static void
12539 say_where (struct breakpoint *b)
12540 {
12541   struct value_print_options opts;
12542
12543   get_user_print_options (&opts);
12544
12545   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12546      single string.  */
12547   if (b->loc == NULL)
12548     {
12549       printf_filtered (_(" (%s) pending."), b->addr_string);
12550     }
12551   else
12552     {
12553       if (opts.addressprint || b->loc->symtab == NULL)
12554         {
12555           printf_filtered (" at ");
12556           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12557                           gdb_stdout);
12558         }
12559       if (b->loc->symtab != NULL)
12560         {
12561           /* If there is a single location, we can print the location
12562              more nicely.  */
12563           if (b->loc->next == NULL)
12564             printf_filtered (": file %s, line %d.",
12565                              symtab_to_filename_for_display (b->loc->symtab),
12566                              b->loc->line_number);
12567           else
12568             /* This is not ideal, but each location may have a
12569                different file name, and this at least reflects the
12570                real situation somewhat.  */
12571             printf_filtered (": %s.", b->addr_string);
12572         }
12573
12574       if (b->loc->next)
12575         {
12576           struct bp_location *loc = b->loc;
12577           int n = 0;
12578           for (; loc; loc = loc->next)
12579             ++n;
12580           printf_filtered (" (%d locations)", n);
12581         }
12582     }
12583 }
12584
12585 /* Default bp_location_ops methods.  */
12586
12587 static void
12588 bp_location_dtor (struct bp_location *self)
12589 {
12590   xfree (self->cond);
12591   if (self->cond_bytecode)
12592     free_agent_expr (self->cond_bytecode);
12593   xfree (self->function_name);
12594 }
12595
12596 static const struct bp_location_ops bp_location_ops =
12597 {
12598   bp_location_dtor
12599 };
12600
12601 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12602    inherit from.  */
12603
12604 static void
12605 base_breakpoint_dtor (struct breakpoint *self)
12606 {
12607   decref_counted_command_line (&self->commands);
12608   xfree (self->cond_string);
12609   xfree (self->extra_string);
12610   xfree (self->addr_string);
12611   xfree (self->filter);
12612   xfree (self->addr_string_range_end);
12613 }
12614
12615 static struct bp_location *
12616 base_breakpoint_allocate_location (struct breakpoint *self)
12617 {
12618   struct bp_location *loc;
12619
12620   loc = XNEW (struct bp_location);
12621   init_bp_location (loc, &bp_location_ops, self);
12622   return loc;
12623 }
12624
12625 static void
12626 base_breakpoint_re_set (struct breakpoint *b)
12627 {
12628   /* Nothing to re-set. */
12629 }
12630
12631 #define internal_error_pure_virtual_called() \
12632   gdb_assert_not_reached ("pure virtual function called")
12633
12634 static int
12635 base_breakpoint_insert_location (struct bp_location *bl)
12636 {
12637   internal_error_pure_virtual_called ();
12638 }
12639
12640 static int
12641 base_breakpoint_remove_location (struct bp_location *bl)
12642 {
12643   internal_error_pure_virtual_called ();
12644 }
12645
12646 static int
12647 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12648                                 struct address_space *aspace,
12649                                 CORE_ADDR bp_addr,
12650                                 const struct target_waitstatus *ws)
12651 {
12652   internal_error_pure_virtual_called ();
12653 }
12654
12655 static void
12656 base_breakpoint_check_status (bpstat bs)
12657 {
12658   /* Always stop.   */
12659 }
12660
12661 /* A "works_in_software_mode" breakpoint_ops method that just internal
12662    errors.  */
12663
12664 static int
12665 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12666 {
12667   internal_error_pure_virtual_called ();
12668 }
12669
12670 /* A "resources_needed" breakpoint_ops method that just internal
12671    errors.  */
12672
12673 static int
12674 base_breakpoint_resources_needed (const struct bp_location *bl)
12675 {
12676   internal_error_pure_virtual_called ();
12677 }
12678
12679 static enum print_stop_action
12680 base_breakpoint_print_it (bpstat bs)
12681 {
12682   internal_error_pure_virtual_called ();
12683 }
12684
12685 static void
12686 base_breakpoint_print_one_detail (const struct breakpoint *self,
12687                                   struct ui_out *uiout)
12688 {
12689   /* nothing */
12690 }
12691
12692 static void
12693 base_breakpoint_print_mention (struct breakpoint *b)
12694 {
12695   internal_error_pure_virtual_called ();
12696 }
12697
12698 static void
12699 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12700 {
12701   internal_error_pure_virtual_called ();
12702 }
12703
12704 static void
12705 base_breakpoint_create_sals_from_address (char **arg,
12706                                           struct linespec_result *canonical,
12707                                           enum bptype type_wanted,
12708                                           char *addr_start,
12709                                           char **copy_arg)
12710 {
12711   internal_error_pure_virtual_called ();
12712 }
12713
12714 static void
12715 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12716                                         struct linespec_result *c,
12717                                         struct linespec_sals *lsal,
12718                                         char *cond_string,
12719                                         char *extra_string,
12720                                         enum bptype type_wanted,
12721                                         enum bpdisp disposition,
12722                                         int thread,
12723                                         int task, int ignore_count,
12724                                         const struct breakpoint_ops *o,
12725                                         int from_tty, int enabled,
12726                                         int internal, unsigned flags)
12727 {
12728   internal_error_pure_virtual_called ();
12729 }
12730
12731 static void
12732 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12733                                  struct symtabs_and_lines *sals)
12734 {
12735   internal_error_pure_virtual_called ();
12736 }
12737
12738 /* The default 'explains_signal' method.  */
12739
12740 static enum bpstat_signal_value
12741 base_breakpoint_explains_signal (struct breakpoint *b)
12742 {
12743   return BPSTAT_SIGNAL_HIDE;
12744 }
12745
12746 struct breakpoint_ops base_breakpoint_ops =
12747 {
12748   base_breakpoint_dtor,
12749   base_breakpoint_allocate_location,
12750   base_breakpoint_re_set,
12751   base_breakpoint_insert_location,
12752   base_breakpoint_remove_location,
12753   base_breakpoint_breakpoint_hit,
12754   base_breakpoint_check_status,
12755   base_breakpoint_resources_needed,
12756   base_breakpoint_works_in_software_mode,
12757   base_breakpoint_print_it,
12758   NULL,
12759   base_breakpoint_print_one_detail,
12760   base_breakpoint_print_mention,
12761   base_breakpoint_print_recreate,
12762   base_breakpoint_create_sals_from_address,
12763   base_breakpoint_create_breakpoints_sal,
12764   base_breakpoint_decode_linespec,
12765   base_breakpoint_explains_signal
12766 };
12767
12768 /* Default breakpoint_ops methods.  */
12769
12770 static void
12771 bkpt_re_set (struct breakpoint *b)
12772 {
12773   /* FIXME: is this still reachable?  */
12774   if (b->addr_string == NULL)
12775     {
12776       /* Anything without a string can't be re-set.  */
12777       delete_breakpoint (b);
12778       return;
12779     }
12780
12781   breakpoint_re_set_default (b);
12782 }
12783
12784 static int
12785 bkpt_insert_location (struct bp_location *bl)
12786 {
12787   if (bl->loc_type == bp_loc_hardware_breakpoint)
12788     return target_insert_hw_breakpoint (bl->gdbarch,
12789                                         &bl->target_info);
12790   else
12791     return target_insert_breakpoint (bl->gdbarch,
12792                                      &bl->target_info);
12793 }
12794
12795 static int
12796 bkpt_remove_location (struct bp_location *bl)
12797 {
12798   if (bl->loc_type == bp_loc_hardware_breakpoint)
12799     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12800   else
12801     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12802 }
12803
12804 static int
12805 bkpt_breakpoint_hit (const struct bp_location *bl,
12806                      struct address_space *aspace, CORE_ADDR bp_addr,
12807                      const struct target_waitstatus *ws)
12808 {
12809   if (ws->kind != TARGET_WAITKIND_STOPPED
12810       || ws->value.sig != GDB_SIGNAL_TRAP)
12811     return 0;
12812
12813   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12814                                  aspace, bp_addr))
12815     return 0;
12816
12817   if (overlay_debugging         /* unmapped overlay section */
12818       && section_is_overlay (bl->section)
12819       && !section_is_mapped (bl->section))
12820     return 0;
12821
12822   return 1;
12823 }
12824
12825 static int
12826 bkpt_resources_needed (const struct bp_location *bl)
12827 {
12828   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12829
12830   return 1;
12831 }
12832
12833 static enum print_stop_action
12834 bkpt_print_it (bpstat bs)
12835 {
12836   struct breakpoint *b;
12837   const struct bp_location *bl;
12838   int bp_temp;
12839   struct ui_out *uiout = current_uiout;
12840
12841   gdb_assert (bs->bp_location_at != NULL);
12842
12843   bl = bs->bp_location_at;
12844   b = bs->breakpoint_at;
12845
12846   bp_temp = b->disposition == disp_del;
12847   if (bl->address != bl->requested_address)
12848     breakpoint_adjustment_warning (bl->requested_address,
12849                                    bl->address,
12850                                    b->number, 1);
12851   annotate_breakpoint (b->number);
12852   if (bp_temp)
12853     ui_out_text (uiout, "\nTemporary breakpoint ");
12854   else
12855     ui_out_text (uiout, "\nBreakpoint ");
12856   if (ui_out_is_mi_like_p (uiout))
12857     {
12858       ui_out_field_string (uiout, "reason",
12859                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12860       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12861     }
12862   ui_out_field_int (uiout, "bkptno", b->number);
12863   ui_out_text (uiout, ", ");
12864
12865   return PRINT_SRC_AND_LOC;
12866 }
12867
12868 static void
12869 bkpt_print_mention (struct breakpoint *b)
12870 {
12871   if (ui_out_is_mi_like_p (current_uiout))
12872     return;
12873
12874   switch (b->type)
12875     {
12876     case bp_breakpoint:
12877     case bp_gnu_ifunc_resolver:
12878       if (b->disposition == disp_del)
12879         printf_filtered (_("Temporary breakpoint"));
12880       else
12881         printf_filtered (_("Breakpoint"));
12882       printf_filtered (_(" %d"), b->number);
12883       if (b->type == bp_gnu_ifunc_resolver)
12884         printf_filtered (_(" at gnu-indirect-function resolver"));
12885       break;
12886     case bp_hardware_breakpoint:
12887       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12888       break;
12889     case bp_dprintf:
12890       printf_filtered (_("Dprintf %d"), b->number);
12891       break;
12892     }
12893
12894   say_where (b);
12895 }
12896
12897 static void
12898 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12899 {
12900   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12901     fprintf_unfiltered (fp, "tbreak");
12902   else if (tp->type == bp_breakpoint)
12903     fprintf_unfiltered (fp, "break");
12904   else if (tp->type == bp_hardware_breakpoint
12905            && tp->disposition == disp_del)
12906     fprintf_unfiltered (fp, "thbreak");
12907   else if (tp->type == bp_hardware_breakpoint)
12908     fprintf_unfiltered (fp, "hbreak");
12909   else
12910     internal_error (__FILE__, __LINE__,
12911                     _("unhandled breakpoint type %d"), (int) tp->type);
12912
12913   fprintf_unfiltered (fp, " %s", tp->addr_string);
12914   print_recreate_thread (tp, fp);
12915 }
12916
12917 static void
12918 bkpt_create_sals_from_address (char **arg,
12919                                struct linespec_result *canonical,
12920                                enum bptype type_wanted,
12921                                char *addr_start, char **copy_arg)
12922 {
12923   create_sals_from_address_default (arg, canonical, type_wanted,
12924                                     addr_start, copy_arg);
12925 }
12926
12927 static void
12928 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12929                              struct linespec_result *canonical,
12930                              struct linespec_sals *lsal,
12931                              char *cond_string,
12932                              char *extra_string,
12933                              enum bptype type_wanted,
12934                              enum bpdisp disposition,
12935                              int thread,
12936                              int task, int ignore_count,
12937                              const struct breakpoint_ops *ops,
12938                              int from_tty, int enabled,
12939                              int internal, unsigned flags)
12940 {
12941   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12942                                   cond_string, extra_string,
12943                                   type_wanted,
12944                                   disposition, thread, task,
12945                                   ignore_count, ops, from_tty,
12946                                   enabled, internal, flags);
12947 }
12948
12949 static void
12950 bkpt_decode_linespec (struct breakpoint *b, char **s,
12951                       struct symtabs_and_lines *sals)
12952 {
12953   decode_linespec_default (b, s, sals);
12954 }
12955
12956 /* Virtual table for internal breakpoints.  */
12957
12958 static void
12959 internal_bkpt_re_set (struct breakpoint *b)
12960 {
12961   switch (b->type)
12962     {
12963       /* Delete overlay event and longjmp master breakpoints; they
12964          will be reset later by breakpoint_re_set.  */
12965     case bp_overlay_event:
12966     case bp_longjmp_master:
12967     case bp_std_terminate_master:
12968     case bp_exception_master:
12969       delete_breakpoint (b);
12970       break;
12971
12972       /* This breakpoint is special, it's set up when the inferior
12973          starts and we really don't want to touch it.  */
12974     case bp_shlib_event:
12975
12976       /* Like bp_shlib_event, this breakpoint type is special.  Once
12977          it is set up, we do not want to touch it.  */
12978     case bp_thread_event:
12979       break;
12980     }
12981 }
12982
12983 static void
12984 internal_bkpt_check_status (bpstat bs)
12985 {
12986   if (bs->breakpoint_at->type == bp_shlib_event)
12987     {
12988       /* If requested, stop when the dynamic linker notifies GDB of
12989          events.  This allows the user to get control and place
12990          breakpoints in initializer routines for dynamically loaded
12991          objects (among other things).  */
12992       bs->stop = stop_on_solib_events;
12993       bs->print = stop_on_solib_events;
12994     }
12995   else
12996     bs->stop = 0;
12997 }
12998
12999 static enum print_stop_action
13000 internal_bkpt_print_it (bpstat bs)
13001 {
13002   struct breakpoint *b;
13003
13004   b = bs->breakpoint_at;
13005
13006   switch (b->type)
13007     {
13008     case bp_shlib_event:
13009       /* Did we stop because the user set the stop_on_solib_events
13010          variable?  (If so, we report this as a generic, "Stopped due
13011          to shlib event" message.) */
13012       print_solib_event (0);
13013       break;
13014
13015     case bp_thread_event:
13016       /* Not sure how we will get here.
13017          GDB should not stop for these breakpoints.  */
13018       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13019       break;
13020
13021     case bp_overlay_event:
13022       /* By analogy with the thread event, GDB should not stop for these.  */
13023       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13024       break;
13025
13026     case bp_longjmp_master:
13027       /* These should never be enabled.  */
13028       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13029       break;
13030
13031     case bp_std_terminate_master:
13032       /* These should never be enabled.  */
13033       printf_filtered (_("std::terminate Master Breakpoint: "
13034                          "gdb should not stop!\n"));
13035       break;
13036
13037     case bp_exception_master:
13038       /* These should never be enabled.  */
13039       printf_filtered (_("Exception Master Breakpoint: "
13040                          "gdb should not stop!\n"));
13041       break;
13042     }
13043
13044   return PRINT_NOTHING;
13045 }
13046
13047 static void
13048 internal_bkpt_print_mention (struct breakpoint *b)
13049 {
13050   /* Nothing to mention.  These breakpoints are internal.  */
13051 }
13052
13053 /* Virtual table for momentary breakpoints  */
13054
13055 static void
13056 momentary_bkpt_re_set (struct breakpoint *b)
13057 {
13058   /* Keep temporary breakpoints, which can be encountered when we step
13059      over a dlopen call and solib_add is resetting the breakpoints.
13060      Otherwise these should have been blown away via the cleanup chain
13061      or by breakpoint_init_inferior when we rerun the executable.  */
13062 }
13063
13064 static void
13065 momentary_bkpt_check_status (bpstat bs)
13066 {
13067   /* Nothing.  The point of these breakpoints is causing a stop.  */
13068 }
13069
13070 static enum print_stop_action
13071 momentary_bkpt_print_it (bpstat bs)
13072 {
13073   struct ui_out *uiout = current_uiout;
13074
13075   if (ui_out_is_mi_like_p (uiout))
13076     {
13077       struct breakpoint *b = bs->breakpoint_at;
13078
13079       switch (b->type)
13080         {
13081         case bp_finish:
13082           ui_out_field_string
13083             (uiout, "reason",
13084              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13085           break;
13086
13087         case bp_until:
13088           ui_out_field_string
13089             (uiout, "reason",
13090              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13091           break;
13092         }
13093     }
13094
13095   return PRINT_UNKNOWN;
13096 }
13097
13098 static void
13099 momentary_bkpt_print_mention (struct breakpoint *b)
13100 {
13101   /* Nothing to mention.  These breakpoints are internal.  */
13102 }
13103
13104 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13105
13106    It gets cleared already on the removal of the first one of such placed
13107    breakpoints.  This is OK as they get all removed altogether.  */
13108
13109 static void
13110 longjmp_bkpt_dtor (struct breakpoint *self)
13111 {
13112   struct thread_info *tp = find_thread_id (self->thread);
13113
13114   if (tp)
13115     tp->initiating_frame = null_frame_id;
13116
13117   momentary_breakpoint_ops.dtor (self);
13118 }
13119
13120 /* Specific methods for probe breakpoints.  */
13121
13122 static int
13123 bkpt_probe_insert_location (struct bp_location *bl)
13124 {
13125   int v = bkpt_insert_location (bl);
13126
13127   if (v == 0)
13128     {
13129       /* The insertion was successful, now let's set the probe's semaphore
13130          if needed.  */
13131       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13132     }
13133
13134   return v;
13135 }
13136
13137 static int
13138 bkpt_probe_remove_location (struct bp_location *bl)
13139 {
13140   /* Let's clear the semaphore before removing the location.  */
13141   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13142
13143   return bkpt_remove_location (bl);
13144 }
13145
13146 static void
13147 bkpt_probe_create_sals_from_address (char **arg,
13148                                      struct linespec_result *canonical,
13149                                      enum bptype type_wanted,
13150                                      char *addr_start, char **copy_arg)
13151 {
13152   struct linespec_sals lsal;
13153
13154   lsal.sals = parse_probes (arg, canonical);
13155
13156   *copy_arg = xstrdup (canonical->addr_string);
13157   lsal.canonical = xstrdup (*copy_arg);
13158
13159   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13160 }
13161
13162 static void
13163 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13164                             struct symtabs_and_lines *sals)
13165 {
13166   *sals = parse_probes (s, NULL);
13167   if (!sals->sals)
13168     error (_("probe not found"));
13169 }
13170
13171 /* The breakpoint_ops structure to be used in tracepoints.  */
13172
13173 static void
13174 tracepoint_re_set (struct breakpoint *b)
13175 {
13176   breakpoint_re_set_default (b);
13177 }
13178
13179 static int
13180 tracepoint_breakpoint_hit (const struct bp_location *bl,
13181                            struct address_space *aspace, CORE_ADDR bp_addr,
13182                            const struct target_waitstatus *ws)
13183 {
13184   /* By definition, the inferior does not report stops at
13185      tracepoints.  */
13186   return 0;
13187 }
13188
13189 static void
13190 tracepoint_print_one_detail (const struct breakpoint *self,
13191                              struct ui_out *uiout)
13192 {
13193   struct tracepoint *tp = (struct tracepoint *) self;
13194   if (tp->static_trace_marker_id)
13195     {
13196       gdb_assert (self->type == bp_static_tracepoint);
13197
13198       ui_out_text (uiout, "\tmarker id is ");
13199       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13200                            tp->static_trace_marker_id);
13201       ui_out_text (uiout, "\n");
13202     }
13203 }
13204
13205 static void
13206 tracepoint_print_mention (struct breakpoint *b)
13207 {
13208   if (ui_out_is_mi_like_p (current_uiout))
13209     return;
13210
13211   switch (b->type)
13212     {
13213     case bp_tracepoint:
13214       printf_filtered (_("Tracepoint"));
13215       printf_filtered (_(" %d"), b->number);
13216       break;
13217     case bp_fast_tracepoint:
13218       printf_filtered (_("Fast tracepoint"));
13219       printf_filtered (_(" %d"), b->number);
13220       break;
13221     case bp_static_tracepoint:
13222       printf_filtered (_("Static tracepoint"));
13223       printf_filtered (_(" %d"), b->number);
13224       break;
13225     default:
13226       internal_error (__FILE__, __LINE__,
13227                       _("unhandled tracepoint type %d"), (int) b->type);
13228     }
13229
13230   say_where (b);
13231 }
13232
13233 static void
13234 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13235 {
13236   struct tracepoint *tp = (struct tracepoint *) self;
13237
13238   if (self->type == bp_fast_tracepoint)
13239     fprintf_unfiltered (fp, "ftrace");
13240   if (self->type == bp_static_tracepoint)
13241     fprintf_unfiltered (fp, "strace");
13242   else if (self->type == bp_tracepoint)
13243     fprintf_unfiltered (fp, "trace");
13244   else
13245     internal_error (__FILE__, __LINE__,
13246                     _("unhandled tracepoint type %d"), (int) self->type);
13247
13248   fprintf_unfiltered (fp, " %s", self->addr_string);
13249   print_recreate_thread (self, fp);
13250
13251   if (tp->pass_count)
13252     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13253 }
13254
13255 static void
13256 tracepoint_create_sals_from_address (char **arg,
13257                                      struct linespec_result *canonical,
13258                                      enum bptype type_wanted,
13259                                      char *addr_start, char **copy_arg)
13260 {
13261   create_sals_from_address_default (arg, canonical, type_wanted,
13262                                     addr_start, copy_arg);
13263 }
13264
13265 static void
13266 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13267                                    struct linespec_result *canonical,
13268                                    struct linespec_sals *lsal,
13269                                    char *cond_string,
13270                                    char *extra_string,
13271                                    enum bptype type_wanted,
13272                                    enum bpdisp disposition,
13273                                    int thread,
13274                                    int task, int ignore_count,
13275                                    const struct breakpoint_ops *ops,
13276                                    int from_tty, int enabled,
13277                                    int internal, unsigned flags)
13278 {
13279   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13280                                   cond_string, extra_string,
13281                                   type_wanted,
13282                                   disposition, thread, task,
13283                                   ignore_count, ops, from_tty,
13284                                   enabled, internal, flags);
13285 }
13286
13287 static void
13288 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13289                             struct symtabs_and_lines *sals)
13290 {
13291   decode_linespec_default (b, s, sals);
13292 }
13293
13294 struct breakpoint_ops tracepoint_breakpoint_ops;
13295
13296 /* The breakpoint_ops structure to be use on tracepoints placed in a
13297    static probe.  */
13298
13299 static void
13300 tracepoint_probe_create_sals_from_address (char **arg,
13301                                            struct linespec_result *canonical,
13302                                            enum bptype type_wanted,
13303                                            char *addr_start, char **copy_arg)
13304 {
13305   /* We use the same method for breakpoint on probes.  */
13306   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13307                                        addr_start, copy_arg);
13308 }
13309
13310 static void
13311 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13312                                   struct symtabs_and_lines *sals)
13313 {
13314   /* We use the same method for breakpoint on probes.  */
13315   bkpt_probe_decode_linespec (b, s, sals);
13316 }
13317
13318 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13319
13320 /* Dprintf breakpoint_ops methods.  */
13321
13322 static void
13323 dprintf_re_set (struct breakpoint *b)
13324 {
13325   breakpoint_re_set_default (b);
13326
13327   /* This breakpoint could have been pending, and be resolved now, and
13328      if so, we should now have the extra string.  If we don't, the
13329      dprintf was malformed when created, but we couldn't tell because
13330      we can't extract the extra string until the location is
13331      resolved.  */
13332   if (b->loc != NULL && b->extra_string == NULL)
13333     error (_("Format string required"));
13334
13335   /* 1 - connect to target 1, that can run breakpoint commands.
13336      2 - create a dprintf, which resolves fine.
13337      3 - disconnect from target 1
13338      4 - connect to target 2, that can NOT run breakpoint commands.
13339
13340      After steps #3/#4, you'll want the dprintf command list to
13341      be updated, because target 1 and 2 may well return different
13342      answers for target_can_run_breakpoint_commands().
13343      Given absence of finer grained resetting, we get to do
13344      it all the time.  */
13345   if (b->extra_string != NULL)
13346     update_dprintf_command_list (b);
13347 }
13348
13349 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13350
13351 static void
13352 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13353 {
13354   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13355                       tp->extra_string);
13356   print_recreate_thread (tp, fp);
13357 }
13358
13359 /* The breakpoint_ops structure to be used on static tracepoints with
13360    markers (`-m').  */
13361
13362 static void
13363 strace_marker_create_sals_from_address (char **arg,
13364                                         struct linespec_result *canonical,
13365                                         enum bptype type_wanted,
13366                                         char *addr_start, char **copy_arg)
13367 {
13368   struct linespec_sals lsal;
13369
13370   lsal.sals = decode_static_tracepoint_spec (arg);
13371
13372   *copy_arg = savestring (addr_start, *arg - addr_start);
13373
13374   canonical->addr_string = xstrdup (*copy_arg);
13375   lsal.canonical = xstrdup (*copy_arg);
13376   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13377 }
13378
13379 static void
13380 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13381                                       struct linespec_result *canonical,
13382                                       struct linespec_sals *lsal,
13383                                       char *cond_string,
13384                                       char *extra_string,
13385                                       enum bptype type_wanted,
13386                                       enum bpdisp disposition,
13387                                       int thread,
13388                                       int task, int ignore_count,
13389                                       const struct breakpoint_ops *ops,
13390                                       int from_tty, int enabled,
13391                                       int internal, unsigned flags)
13392 {
13393   int i;
13394
13395   /* If the user is creating a static tracepoint by marker id
13396      (strace -m MARKER_ID), then store the sals index, so that
13397      breakpoint_re_set can try to match up which of the newly
13398      found markers corresponds to this one, and, don't try to
13399      expand multiple locations for each sal, given than SALS
13400      already should contain all sals for MARKER_ID.  */
13401
13402   for (i = 0; i < lsal->sals.nelts; ++i)
13403     {
13404       struct symtabs_and_lines expanded;
13405       struct tracepoint *tp;
13406       struct cleanup *old_chain;
13407       char *addr_string;
13408
13409       expanded.nelts = 1;
13410       expanded.sals = &lsal->sals.sals[i];
13411
13412       addr_string = xstrdup (canonical->addr_string);
13413       old_chain = make_cleanup (xfree, addr_string);
13414
13415       tp = XCNEW (struct tracepoint);
13416       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13417                            addr_string, NULL,
13418                            cond_string, extra_string,
13419                            type_wanted, disposition,
13420                            thread, task, ignore_count, ops,
13421                            from_tty, enabled, internal, flags,
13422                            canonical->special_display);
13423       /* Given that its possible to have multiple markers with
13424          the same string id, if the user is creating a static
13425          tracepoint by marker id ("strace -m MARKER_ID"), then
13426          store the sals index, so that breakpoint_re_set can
13427          try to match up which of the newly found markers
13428          corresponds to this one  */
13429       tp->static_trace_marker_id_idx = i;
13430
13431       install_breakpoint (internal, &tp->base, 0);
13432
13433       discard_cleanups (old_chain);
13434     }
13435 }
13436
13437 static void
13438 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13439                                struct symtabs_and_lines *sals)
13440 {
13441   struct tracepoint *tp = (struct tracepoint *) b;
13442
13443   *sals = decode_static_tracepoint_spec (s);
13444   if (sals->nelts > tp->static_trace_marker_id_idx)
13445     {
13446       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13447       sals->nelts = 1;
13448     }
13449   else
13450     error (_("marker %s not found"), tp->static_trace_marker_id);
13451 }
13452
13453 static struct breakpoint_ops strace_marker_breakpoint_ops;
13454
13455 static int
13456 strace_marker_p (struct breakpoint *b)
13457 {
13458   return b->ops == &strace_marker_breakpoint_ops;
13459 }
13460
13461 /* Delete a breakpoint and clean up all traces of it in the data
13462    structures.  */
13463
13464 void
13465 delete_breakpoint (struct breakpoint *bpt)
13466 {
13467   struct breakpoint *b;
13468
13469   gdb_assert (bpt != NULL);
13470
13471   /* Has this bp already been deleted?  This can happen because
13472      multiple lists can hold pointers to bp's.  bpstat lists are
13473      especial culprits.
13474
13475      One example of this happening is a watchpoint's scope bp.  When
13476      the scope bp triggers, we notice that the watchpoint is out of
13477      scope, and delete it.  We also delete its scope bp.  But the
13478      scope bp is marked "auto-deleting", and is already on a bpstat.
13479      That bpstat is then checked for auto-deleting bp's, which are
13480      deleted.
13481
13482      A real solution to this problem might involve reference counts in
13483      bp's, and/or giving them pointers back to their referencing
13484      bpstat's, and teaching delete_breakpoint to only free a bp's
13485      storage when no more references were extent.  A cheaper bandaid
13486      was chosen.  */
13487   if (bpt->type == bp_none)
13488     return;
13489
13490   /* At least avoid this stale reference until the reference counting
13491      of breakpoints gets resolved.  */
13492   if (bpt->related_breakpoint != bpt)
13493     {
13494       struct breakpoint *related;
13495       struct watchpoint *w;
13496
13497       if (bpt->type == bp_watchpoint_scope)
13498         w = (struct watchpoint *) bpt->related_breakpoint;
13499       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13500         w = (struct watchpoint *) bpt;
13501       else
13502         w = NULL;
13503       if (w != NULL)
13504         watchpoint_del_at_next_stop (w);
13505
13506       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13507       for (related = bpt; related->related_breakpoint != bpt;
13508            related = related->related_breakpoint);
13509       related->related_breakpoint = bpt->related_breakpoint;
13510       bpt->related_breakpoint = bpt;
13511     }
13512
13513   /* watch_command_1 creates a watchpoint but only sets its number if
13514      update_watchpoint succeeds in creating its bp_locations.  If there's
13515      a problem in that process, we'll be asked to delete the half-created
13516      watchpoint.  In that case, don't announce the deletion.  */
13517   if (bpt->number)
13518     observer_notify_breakpoint_deleted (bpt);
13519
13520   if (breakpoint_chain == bpt)
13521     breakpoint_chain = bpt->next;
13522
13523   ALL_BREAKPOINTS (b)
13524     if (b->next == bpt)
13525     {
13526       b->next = bpt->next;
13527       break;
13528     }
13529
13530   /* Be sure no bpstat's are pointing at the breakpoint after it's
13531      been freed.  */
13532   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13533      in all threads for now.  Note that we cannot just remove bpstats
13534      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13535      commands are associated with the bpstat; if we remove it here,
13536      then the later call to bpstat_do_actions (&stop_bpstat); in
13537      event-top.c won't do anything, and temporary breakpoints with
13538      commands won't work.  */
13539
13540   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13541
13542   /* Now that breakpoint is removed from breakpoint list, update the
13543      global location list.  This will remove locations that used to
13544      belong to this breakpoint.  Do this before freeing the breakpoint
13545      itself, since remove_breakpoint looks at location's owner.  It
13546      might be better design to have location completely
13547      self-contained, but it's not the case now.  */
13548   update_global_location_list (0);
13549
13550   bpt->ops->dtor (bpt);
13551   /* On the chance that someone will soon try again to delete this
13552      same bp, we mark it as deleted before freeing its storage.  */
13553   bpt->type = bp_none;
13554   xfree (bpt);
13555 }
13556
13557 static void
13558 do_delete_breakpoint_cleanup (void *b)
13559 {
13560   delete_breakpoint (b);
13561 }
13562
13563 struct cleanup *
13564 make_cleanup_delete_breakpoint (struct breakpoint *b)
13565 {
13566   return make_cleanup (do_delete_breakpoint_cleanup, b);
13567 }
13568
13569 /* Iterator function to call a user-provided callback function once
13570    for each of B and its related breakpoints.  */
13571
13572 static void
13573 iterate_over_related_breakpoints (struct breakpoint *b,
13574                                   void (*function) (struct breakpoint *,
13575                                                     void *),
13576                                   void *data)
13577 {
13578   struct breakpoint *related;
13579
13580   related = b;
13581   do
13582     {
13583       struct breakpoint *next;
13584
13585       /* FUNCTION may delete RELATED.  */
13586       next = related->related_breakpoint;
13587
13588       if (next == related)
13589         {
13590           /* RELATED is the last ring entry.  */
13591           function (related, data);
13592
13593           /* FUNCTION may have deleted it, so we'd never reach back to
13594              B.  There's nothing left to do anyway, so just break
13595              out.  */
13596           break;
13597         }
13598       else
13599         function (related, data);
13600
13601       related = next;
13602     }
13603   while (related != b);
13604 }
13605
13606 static void
13607 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13608 {
13609   delete_breakpoint (b);
13610 }
13611
13612 /* A callback for map_breakpoint_numbers that calls
13613    delete_breakpoint.  */
13614
13615 static void
13616 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13617 {
13618   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13619 }
13620
13621 void
13622 delete_command (char *arg, int from_tty)
13623 {
13624   struct breakpoint *b, *b_tmp;
13625
13626   dont_repeat ();
13627
13628   if (arg == 0)
13629     {
13630       int breaks_to_delete = 0;
13631
13632       /* Delete all breakpoints if no argument.  Do not delete
13633          internal breakpoints, these have to be deleted with an
13634          explicit breakpoint number argument.  */
13635       ALL_BREAKPOINTS (b)
13636         if (user_breakpoint_p (b))
13637           {
13638             breaks_to_delete = 1;
13639             break;
13640           }
13641
13642       /* Ask user only if there are some breakpoints to delete.  */
13643       if (!from_tty
13644           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13645         {
13646           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13647             if (user_breakpoint_p (b))
13648               delete_breakpoint (b);
13649         }
13650     }
13651   else
13652     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13653 }
13654
13655 static int
13656 all_locations_are_pending (struct bp_location *loc)
13657 {
13658   for (; loc; loc = loc->next)
13659     if (!loc->shlib_disabled
13660         && !loc->pspace->executing_startup)
13661       return 0;
13662   return 1;
13663 }
13664
13665 /* Subroutine of update_breakpoint_locations to simplify it.
13666    Return non-zero if multiple fns in list LOC have the same name.
13667    Null names are ignored.  */
13668
13669 static int
13670 ambiguous_names_p (struct bp_location *loc)
13671 {
13672   struct bp_location *l;
13673   htab_t htab = htab_create_alloc (13, htab_hash_string,
13674                                    (int (*) (const void *, 
13675                                              const void *)) streq,
13676                                    NULL, xcalloc, xfree);
13677
13678   for (l = loc; l != NULL; l = l->next)
13679     {
13680       const char **slot;
13681       const char *name = l->function_name;
13682
13683       /* Allow for some names to be NULL, ignore them.  */
13684       if (name == NULL)
13685         continue;
13686
13687       slot = (const char **) htab_find_slot (htab, (const void *) name,
13688                                              INSERT);
13689       /* NOTE: We can assume slot != NULL here because xcalloc never
13690          returns NULL.  */
13691       if (*slot != NULL)
13692         {
13693           htab_delete (htab);
13694           return 1;
13695         }
13696       *slot = name;
13697     }
13698
13699   htab_delete (htab);
13700   return 0;
13701 }
13702
13703 /* When symbols change, it probably means the sources changed as well,
13704    and it might mean the static tracepoint markers are no longer at
13705    the same address or line numbers they used to be at last we
13706    checked.  Losing your static tracepoints whenever you rebuild is
13707    undesirable.  This function tries to resync/rematch gdb static
13708    tracepoints with the markers on the target, for static tracepoints
13709    that have not been set by marker id.  Static tracepoint that have
13710    been set by marker id are reset by marker id in breakpoint_re_set.
13711    The heuristic is:
13712
13713    1) For a tracepoint set at a specific address, look for a marker at
13714    the old PC.  If one is found there, assume to be the same marker.
13715    If the name / string id of the marker found is different from the
13716    previous known name, assume that means the user renamed the marker
13717    in the sources, and output a warning.
13718
13719    2) For a tracepoint set at a given line number, look for a marker
13720    at the new address of the old line number.  If one is found there,
13721    assume to be the same marker.  If the name / string id of the
13722    marker found is different from the previous known name, assume that
13723    means the user renamed the marker in the sources, and output a
13724    warning.
13725
13726    3) If a marker is no longer found at the same address or line, it
13727    may mean the marker no longer exists.  But it may also just mean
13728    the code changed a bit.  Maybe the user added a few lines of code
13729    that made the marker move up or down (in line number terms).  Ask
13730    the target for info about the marker with the string id as we knew
13731    it.  If found, update line number and address in the matching
13732    static tracepoint.  This will get confused if there's more than one
13733    marker with the same ID (possible in UST, although unadvised
13734    precisely because it confuses tools).  */
13735
13736 static struct symtab_and_line
13737 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13738 {
13739   struct tracepoint *tp = (struct tracepoint *) b;
13740   struct static_tracepoint_marker marker;
13741   CORE_ADDR pc;
13742
13743   pc = sal.pc;
13744   if (sal.line)
13745     find_line_pc (sal.symtab, sal.line, &pc);
13746
13747   if (target_static_tracepoint_marker_at (pc, &marker))
13748     {
13749       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13750         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13751                  b->number,
13752                  tp->static_trace_marker_id, marker.str_id);
13753
13754       xfree (tp->static_trace_marker_id);
13755       tp->static_trace_marker_id = xstrdup (marker.str_id);
13756       release_static_tracepoint_marker (&marker);
13757
13758       return sal;
13759     }
13760
13761   /* Old marker wasn't found on target at lineno.  Try looking it up
13762      by string ID.  */
13763   if (!sal.explicit_pc
13764       && sal.line != 0
13765       && sal.symtab != NULL
13766       && tp->static_trace_marker_id != NULL)
13767     {
13768       VEC(static_tracepoint_marker_p) *markers;
13769
13770       markers
13771         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13772
13773       if (!VEC_empty(static_tracepoint_marker_p, markers))
13774         {
13775           struct symtab_and_line sal2;
13776           struct symbol *sym;
13777           struct static_tracepoint_marker *tpmarker;
13778           struct ui_out *uiout = current_uiout;
13779
13780           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13781
13782           xfree (tp->static_trace_marker_id);
13783           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13784
13785           warning (_("marker for static tracepoint %d (%s) not "
13786                      "found at previous line number"),
13787                    b->number, tp->static_trace_marker_id);
13788
13789           init_sal (&sal2);
13790
13791           sal2.pc = tpmarker->address;
13792
13793           sal2 = find_pc_line (tpmarker->address, 0);
13794           sym = find_pc_sect_function (tpmarker->address, NULL);
13795           ui_out_text (uiout, "Now in ");
13796           if (sym)
13797             {
13798               ui_out_field_string (uiout, "func",
13799                                    SYMBOL_PRINT_NAME (sym));
13800               ui_out_text (uiout, " at ");
13801             }
13802           ui_out_field_string (uiout, "file",
13803                                symtab_to_filename_for_display (sal2.symtab));
13804           ui_out_text (uiout, ":");
13805
13806           if (ui_out_is_mi_like_p (uiout))
13807             {
13808               const char *fullname = symtab_to_fullname (sal2.symtab);
13809
13810               ui_out_field_string (uiout, "fullname", fullname);
13811             }
13812
13813           ui_out_field_int (uiout, "line", sal2.line);
13814           ui_out_text (uiout, "\n");
13815
13816           b->loc->line_number = sal2.line;
13817           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13818
13819           xfree (b->addr_string);
13820           b->addr_string = xstrprintf ("%s:%d",
13821                                    symtab_to_filename_for_display (sal2.symtab),
13822                                        b->loc->line_number);
13823
13824           /* Might be nice to check if function changed, and warn if
13825              so.  */
13826
13827           release_static_tracepoint_marker (tpmarker);
13828         }
13829     }
13830   return sal;
13831 }
13832
13833 /* Returns 1 iff locations A and B are sufficiently same that
13834    we don't need to report breakpoint as changed.  */
13835
13836 static int
13837 locations_are_equal (struct bp_location *a, struct bp_location *b)
13838 {
13839   while (a && b)
13840     {
13841       if (a->address != b->address)
13842         return 0;
13843
13844       if (a->shlib_disabled != b->shlib_disabled)
13845         return 0;
13846
13847       if (a->enabled != b->enabled)
13848         return 0;
13849
13850       a = a->next;
13851       b = b->next;
13852     }
13853
13854   if ((a == NULL) != (b == NULL))
13855     return 0;
13856
13857   return 1;
13858 }
13859
13860 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13861    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13862    a ranged breakpoint.  */
13863
13864 void
13865 update_breakpoint_locations (struct breakpoint *b,
13866                              struct symtabs_and_lines sals,
13867                              struct symtabs_and_lines sals_end)
13868 {
13869   int i;
13870   struct bp_location *existing_locations = b->loc;
13871
13872   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13873     {
13874       /* Ranged breakpoints have only one start location and one end
13875          location.  */
13876       b->enable_state = bp_disabled;
13877       update_global_location_list (1);
13878       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13879                            "multiple locations found\n"),
13880                          b->number);
13881       return;
13882     }
13883
13884   /* If there's no new locations, and all existing locations are
13885      pending, don't do anything.  This optimizes the common case where
13886      all locations are in the same shared library, that was unloaded.
13887      We'd like to retain the location, so that when the library is
13888      loaded again, we don't loose the enabled/disabled status of the
13889      individual locations.  */
13890   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13891     return;
13892
13893   b->loc = NULL;
13894
13895   for (i = 0; i < sals.nelts; ++i)
13896     {
13897       struct bp_location *new_loc;
13898
13899       switch_to_program_space_and_thread (sals.sals[i].pspace);
13900
13901       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13902
13903       /* Reparse conditions, they might contain references to the
13904          old symtab.  */
13905       if (b->cond_string != NULL)
13906         {
13907           const char *s;
13908           volatile struct gdb_exception e;
13909
13910           s = b->cond_string;
13911           TRY_CATCH (e, RETURN_MASK_ERROR)
13912             {
13913               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13914                                            block_for_pc (sals.sals[i].pc), 
13915                                            0);
13916             }
13917           if (e.reason < 0)
13918             {
13919               warning (_("failed to reevaluate condition "
13920                          "for breakpoint %d: %s"), 
13921                        b->number, e.message);
13922               new_loc->enabled = 0;
13923             }
13924         }
13925
13926       if (sals_end.nelts)
13927         {
13928           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13929
13930           new_loc->length = end - sals.sals[0].pc + 1;
13931         }
13932     }
13933
13934   /* Update locations of permanent breakpoints.  */
13935   if (b->enable_state == bp_permanent)
13936     make_breakpoint_permanent (b);
13937
13938   /* If possible, carry over 'disable' status from existing
13939      breakpoints.  */
13940   {
13941     struct bp_location *e = existing_locations;
13942     /* If there are multiple breakpoints with the same function name,
13943        e.g. for inline functions, comparing function names won't work.
13944        Instead compare pc addresses; this is just a heuristic as things
13945        may have moved, but in practice it gives the correct answer
13946        often enough until a better solution is found.  */
13947     int have_ambiguous_names = ambiguous_names_p (b->loc);
13948
13949     for (; e; e = e->next)
13950       {
13951         if (!e->enabled && e->function_name)
13952           {
13953             struct bp_location *l = b->loc;
13954             if (have_ambiguous_names)
13955               {
13956                 for (; l; l = l->next)
13957                   if (breakpoint_locations_match (e, l))
13958                     {
13959                       l->enabled = 0;
13960                       break;
13961                     }
13962               }
13963             else
13964               {
13965                 for (; l; l = l->next)
13966                   if (l->function_name
13967                       && strcmp (e->function_name, l->function_name) == 0)
13968                     {
13969                       l->enabled = 0;
13970                       break;
13971                     }
13972               }
13973           }
13974       }
13975   }
13976
13977   if (!locations_are_equal (existing_locations, b->loc))
13978     observer_notify_breakpoint_modified (b);
13979
13980   update_global_location_list (1);
13981 }
13982
13983 /* Find the SaL locations corresponding to the given ADDR_STRING.
13984    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13985
13986 static struct symtabs_and_lines
13987 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13988 {
13989   char *s;
13990   struct symtabs_and_lines sals = {0};
13991   volatile struct gdb_exception e;
13992
13993   gdb_assert (b->ops != NULL);
13994   s = addr_string;
13995
13996   TRY_CATCH (e, RETURN_MASK_ERROR)
13997     {
13998       b->ops->decode_linespec (b, &s, &sals);
13999     }
14000   if (e.reason < 0)
14001     {
14002       int not_found_and_ok = 0;
14003       /* For pending breakpoints, it's expected that parsing will
14004          fail until the right shared library is loaded.  User has
14005          already told to create pending breakpoints and don't need
14006          extra messages.  If breakpoint is in bp_shlib_disabled
14007          state, then user already saw the message about that
14008          breakpoint being disabled, and don't want to see more
14009          errors.  */
14010       if (e.error == NOT_FOUND_ERROR
14011           && (b->condition_not_parsed 
14012               || (b->loc && b->loc->shlib_disabled)
14013               || (b->loc && b->loc->pspace->executing_startup)
14014               || b->enable_state == bp_disabled))
14015         not_found_and_ok = 1;
14016
14017       if (!not_found_and_ok)
14018         {
14019           /* We surely don't want to warn about the same breakpoint
14020              10 times.  One solution, implemented here, is disable
14021              the breakpoint on error.  Another solution would be to
14022              have separate 'warning emitted' flag.  Since this
14023              happens only when a binary has changed, I don't know
14024              which approach is better.  */
14025           b->enable_state = bp_disabled;
14026           throw_exception (e);
14027         }
14028     }
14029
14030   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14031     {
14032       int i;
14033
14034       for (i = 0; i < sals.nelts; ++i)
14035         resolve_sal_pc (&sals.sals[i]);
14036       if (b->condition_not_parsed && s && s[0])
14037         {
14038           char *cond_string, *extra_string;
14039           int thread, task;
14040
14041           find_condition_and_thread (s, sals.sals[0].pc,
14042                                      &cond_string, &thread, &task,
14043                                      &extra_string);
14044           if (cond_string)
14045             b->cond_string = cond_string;
14046           b->thread = thread;
14047           b->task = task;
14048           if (extra_string)
14049             b->extra_string = extra_string;
14050           b->condition_not_parsed = 0;
14051         }
14052
14053       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14054         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14055
14056       *found = 1;
14057     }
14058   else
14059     *found = 0;
14060
14061   return sals;
14062 }
14063
14064 /* The default re_set method, for typical hardware or software
14065    breakpoints.  Reevaluate the breakpoint and recreate its
14066    locations.  */
14067
14068 static void
14069 breakpoint_re_set_default (struct breakpoint *b)
14070 {
14071   int found;
14072   struct symtabs_and_lines sals, sals_end;
14073   struct symtabs_and_lines expanded = {0};
14074   struct symtabs_and_lines expanded_end = {0};
14075
14076   sals = addr_string_to_sals (b, b->addr_string, &found);
14077   if (found)
14078     {
14079       make_cleanup (xfree, sals.sals);
14080       expanded = sals;
14081     }
14082
14083   if (b->addr_string_range_end)
14084     {
14085       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14086       if (found)
14087         {
14088           make_cleanup (xfree, sals_end.sals);
14089           expanded_end = sals_end;
14090         }
14091     }
14092
14093   update_breakpoint_locations (b, expanded, expanded_end);
14094 }
14095
14096 /* Default method for creating SALs from an address string.  It basically
14097    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14098
14099 static void
14100 create_sals_from_address_default (char **arg,
14101                                   struct linespec_result *canonical,
14102                                   enum bptype type_wanted,
14103                                   char *addr_start, char **copy_arg)
14104 {
14105   parse_breakpoint_sals (arg, canonical);
14106 }
14107
14108 /* Call create_breakpoints_sal for the given arguments.  This is the default
14109    function for the `create_breakpoints_sal' method of
14110    breakpoint_ops.  */
14111
14112 static void
14113 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14114                                 struct linespec_result *canonical,
14115                                 struct linespec_sals *lsal,
14116                                 char *cond_string,
14117                                 char *extra_string,
14118                                 enum bptype type_wanted,
14119                                 enum bpdisp disposition,
14120                                 int thread,
14121                                 int task, int ignore_count,
14122                                 const struct breakpoint_ops *ops,
14123                                 int from_tty, int enabled,
14124                                 int internal, unsigned flags)
14125 {
14126   create_breakpoints_sal (gdbarch, canonical, cond_string,
14127                           extra_string,
14128                           type_wanted, disposition,
14129                           thread, task, ignore_count, ops, from_tty,
14130                           enabled, internal, flags);
14131 }
14132
14133 /* Decode the line represented by S by calling decode_line_full.  This is the
14134    default function for the `decode_linespec' method of breakpoint_ops.  */
14135
14136 static void
14137 decode_linespec_default (struct breakpoint *b, char **s,
14138                          struct symtabs_and_lines *sals)
14139 {
14140   struct linespec_result canonical;
14141
14142   init_linespec_result (&canonical);
14143   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14144                     (struct symtab *) NULL, 0,
14145                     &canonical, multiple_symbols_all,
14146                     b->filter);
14147
14148   /* We should get 0 or 1 resulting SALs.  */
14149   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14150
14151   if (VEC_length (linespec_sals, canonical.sals) > 0)
14152     {
14153       struct linespec_sals *lsal;
14154
14155       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14156       *sals = lsal->sals;
14157       /* Arrange it so the destructor does not free the
14158          contents.  */
14159       lsal->sals.sals = NULL;
14160     }
14161
14162   destroy_linespec_result (&canonical);
14163 }
14164
14165 /* Prepare the global context for a re-set of breakpoint B.  */
14166
14167 static struct cleanup *
14168 prepare_re_set_context (struct breakpoint *b)
14169 {
14170   struct cleanup *cleanups;
14171
14172   input_radix = b->input_radix;
14173   cleanups = save_current_space_and_thread ();
14174   if (b->pspace != NULL)
14175     switch_to_program_space_and_thread (b->pspace);
14176   set_language (b->language);
14177
14178   return cleanups;
14179 }
14180
14181 /* Reset a breakpoint given it's struct breakpoint * BINT.
14182    The value we return ends up being the return value from catch_errors.
14183    Unused in this case.  */
14184
14185 static int
14186 breakpoint_re_set_one (void *bint)
14187 {
14188   /* Get past catch_errs.  */
14189   struct breakpoint *b = (struct breakpoint *) bint;
14190   struct cleanup *cleanups;
14191
14192   cleanups = prepare_re_set_context (b);
14193   b->ops->re_set (b);
14194   do_cleanups (cleanups);
14195   return 0;
14196 }
14197
14198 /* Re-set all breakpoints after symbols have been re-loaded.  */
14199 void
14200 breakpoint_re_set (void)
14201 {
14202   struct breakpoint *b, *b_tmp;
14203   enum language save_language;
14204   int save_input_radix;
14205   struct cleanup *old_chain;
14206
14207   save_language = current_language->la_language;
14208   save_input_radix = input_radix;
14209   old_chain = save_current_program_space ();
14210
14211   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14212   {
14213     /* Format possible error msg.  */
14214     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14215                                 b->number);
14216     struct cleanup *cleanups = make_cleanup (xfree, message);
14217     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14218     do_cleanups (cleanups);
14219   }
14220   set_language (save_language);
14221   input_radix = save_input_radix;
14222
14223   jit_breakpoint_re_set ();
14224
14225   do_cleanups (old_chain);
14226
14227   create_overlay_event_breakpoint ();
14228   create_longjmp_master_breakpoint ();
14229   create_std_terminate_master_breakpoint ();
14230   create_exception_master_breakpoint ();
14231 }
14232 \f
14233 /* Reset the thread number of this breakpoint:
14234
14235    - If the breakpoint is for all threads, leave it as-is.
14236    - Else, reset it to the current thread for inferior_ptid.  */
14237 void
14238 breakpoint_re_set_thread (struct breakpoint *b)
14239 {
14240   if (b->thread != -1)
14241     {
14242       if (in_thread_list (inferior_ptid))
14243         b->thread = pid_to_thread_id (inferior_ptid);
14244
14245       /* We're being called after following a fork.  The new fork is
14246          selected as current, and unless this was a vfork will have a
14247          different program space from the original thread.  Reset that
14248          as well.  */
14249       b->loc->pspace = current_program_space;
14250     }
14251 }
14252
14253 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14254    If from_tty is nonzero, it prints a message to that effect,
14255    which ends with a period (no newline).  */
14256
14257 void
14258 set_ignore_count (int bptnum, int count, int from_tty)
14259 {
14260   struct breakpoint *b;
14261
14262   if (count < 0)
14263     count = 0;
14264
14265   ALL_BREAKPOINTS (b)
14266     if (b->number == bptnum)
14267     {
14268       if (is_tracepoint (b))
14269         {
14270           if (from_tty && count != 0)
14271             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14272                              bptnum);
14273           return;
14274         }
14275       
14276       b->ignore_count = count;
14277       if (from_tty)
14278         {
14279           if (count == 0)
14280             printf_filtered (_("Will stop next time "
14281                                "breakpoint %d is reached."),
14282                              bptnum);
14283           else if (count == 1)
14284             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14285                              bptnum);
14286           else
14287             printf_filtered (_("Will ignore next %d "
14288                                "crossings of breakpoint %d."),
14289                              count, bptnum);
14290         }
14291       observer_notify_breakpoint_modified (b);
14292       return;
14293     }
14294
14295   error (_("No breakpoint number %d."), bptnum);
14296 }
14297
14298 /* Command to set ignore-count of breakpoint N to COUNT.  */
14299
14300 static void
14301 ignore_command (char *args, int from_tty)
14302 {
14303   char *p = args;
14304   int num;
14305
14306   if (p == 0)
14307     error_no_arg (_("a breakpoint number"));
14308
14309   num = get_number (&p);
14310   if (num == 0)
14311     error (_("bad breakpoint number: '%s'"), args);
14312   if (*p == 0)
14313     error (_("Second argument (specified ignore-count) is missing."));
14314
14315   set_ignore_count (num,
14316                     longest_to_int (value_as_long (parse_and_eval (p))),
14317                     from_tty);
14318   if (from_tty)
14319     printf_filtered ("\n");
14320 }
14321 \f
14322 /* Call FUNCTION on each of the breakpoints
14323    whose numbers are given in ARGS.  */
14324
14325 static void
14326 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14327                                                       void *),
14328                         void *data)
14329 {
14330   int num;
14331   struct breakpoint *b, *tmp;
14332   int match;
14333   struct get_number_or_range_state state;
14334
14335   if (args == 0)
14336     error_no_arg (_("one or more breakpoint numbers"));
14337
14338   init_number_or_range (&state, args);
14339
14340   while (!state.finished)
14341     {
14342       char *p = state.string;
14343
14344       match = 0;
14345
14346       num = get_number_or_range (&state);
14347       if (num == 0)
14348         {
14349           warning (_("bad breakpoint number at or near '%s'"), p);
14350         }
14351       else
14352         {
14353           ALL_BREAKPOINTS_SAFE (b, tmp)
14354             if (b->number == num)
14355               {
14356                 match = 1;
14357                 function (b, data);
14358                 break;
14359               }
14360           if (match == 0)
14361             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14362         }
14363     }
14364 }
14365
14366 static struct bp_location *
14367 find_location_by_number (char *number)
14368 {
14369   char *dot = strchr (number, '.');
14370   char *p1;
14371   int bp_num;
14372   int loc_num;
14373   struct breakpoint *b;
14374   struct bp_location *loc;  
14375
14376   *dot = '\0';
14377
14378   p1 = number;
14379   bp_num = get_number (&p1);
14380   if (bp_num == 0)
14381     error (_("Bad breakpoint number '%s'"), number);
14382
14383   ALL_BREAKPOINTS (b)
14384     if (b->number == bp_num)
14385       {
14386         break;
14387       }
14388
14389   if (!b || b->number != bp_num)
14390     error (_("Bad breakpoint number '%s'"), number);
14391   
14392   p1 = dot+1;
14393   loc_num = get_number (&p1);
14394   if (loc_num == 0)
14395     error (_("Bad breakpoint location number '%s'"), number);
14396
14397   --loc_num;
14398   loc = b->loc;
14399   for (;loc_num && loc; --loc_num, loc = loc->next)
14400     ;
14401   if (!loc)
14402     error (_("Bad breakpoint location number '%s'"), dot+1);
14403     
14404   return loc;  
14405 }
14406
14407
14408 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14409    If from_tty is nonzero, it prints a message to that effect,
14410    which ends with a period (no newline).  */
14411
14412 void
14413 disable_breakpoint (struct breakpoint *bpt)
14414 {
14415   /* Never disable a watchpoint scope breakpoint; we want to
14416      hit them when we leave scope so we can delete both the
14417      watchpoint and its scope breakpoint at that time.  */
14418   if (bpt->type == bp_watchpoint_scope)
14419     return;
14420
14421   /* You can't disable permanent breakpoints.  */
14422   if (bpt->enable_state == bp_permanent)
14423     return;
14424
14425   bpt->enable_state = bp_disabled;
14426
14427   /* Mark breakpoint locations modified.  */
14428   mark_breakpoint_modified (bpt);
14429
14430   if (target_supports_enable_disable_tracepoint ()
14431       && current_trace_status ()->running && is_tracepoint (bpt))
14432     {
14433       struct bp_location *location;
14434      
14435       for (location = bpt->loc; location; location = location->next)
14436         target_disable_tracepoint (location);
14437     }
14438
14439   update_global_location_list (0);
14440
14441   observer_notify_breakpoint_modified (bpt);
14442 }
14443
14444 /* A callback for iterate_over_related_breakpoints.  */
14445
14446 static void
14447 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14448 {
14449   disable_breakpoint (b);
14450 }
14451
14452 /* A callback for map_breakpoint_numbers that calls
14453    disable_breakpoint.  */
14454
14455 static void
14456 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14457 {
14458   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14459 }
14460
14461 static void
14462 disable_command (char *args, int from_tty)
14463 {
14464   if (args == 0)
14465     {
14466       struct breakpoint *bpt;
14467
14468       ALL_BREAKPOINTS (bpt)
14469         if (user_breakpoint_p (bpt))
14470           disable_breakpoint (bpt);
14471     }
14472   else if (strchr (args, '.'))
14473     {
14474       struct bp_location *loc = find_location_by_number (args);
14475       if (loc)
14476         {
14477           if (loc->enabled)
14478             {
14479               loc->enabled = 0;
14480               mark_breakpoint_location_modified (loc);
14481             }
14482           if (target_supports_enable_disable_tracepoint ()
14483               && current_trace_status ()->running && loc->owner
14484               && is_tracepoint (loc->owner))
14485             target_disable_tracepoint (loc);
14486         }
14487       update_global_location_list (0);
14488     }
14489   else
14490     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14491 }
14492
14493 static void
14494 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14495                         int count)
14496 {
14497   int target_resources_ok;
14498
14499   if (bpt->type == bp_hardware_breakpoint)
14500     {
14501       int i;
14502       i = hw_breakpoint_used_count ();
14503       target_resources_ok = 
14504         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14505                                             i + 1, 0);
14506       if (target_resources_ok == 0)
14507         error (_("No hardware breakpoint support in the target."));
14508       else if (target_resources_ok < 0)
14509         error (_("Hardware breakpoints used exceeds limit."));
14510     }
14511
14512   if (is_watchpoint (bpt))
14513     {
14514       /* Initialize it just to avoid a GCC false warning.  */
14515       enum enable_state orig_enable_state = 0;
14516       volatile struct gdb_exception e;
14517
14518       TRY_CATCH (e, RETURN_MASK_ALL)
14519         {
14520           struct watchpoint *w = (struct watchpoint *) bpt;
14521
14522           orig_enable_state = bpt->enable_state;
14523           bpt->enable_state = bp_enabled;
14524           update_watchpoint (w, 1 /* reparse */);
14525         }
14526       if (e.reason < 0)
14527         {
14528           bpt->enable_state = orig_enable_state;
14529           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14530                              bpt->number);
14531           return;
14532         }
14533     }
14534
14535   if (bpt->enable_state != bp_permanent)
14536     bpt->enable_state = bp_enabled;
14537
14538   bpt->enable_state = bp_enabled;
14539
14540   /* Mark breakpoint locations modified.  */
14541   mark_breakpoint_modified (bpt);
14542
14543   if (target_supports_enable_disable_tracepoint ()
14544       && current_trace_status ()->running && is_tracepoint (bpt))
14545     {
14546       struct bp_location *location;
14547
14548       for (location = bpt->loc; location; location = location->next)
14549         target_enable_tracepoint (location);
14550     }
14551
14552   bpt->disposition = disposition;
14553   bpt->enable_count = count;
14554   update_global_location_list (1);
14555
14556   observer_notify_breakpoint_modified (bpt);
14557 }
14558
14559
14560 void
14561 enable_breakpoint (struct breakpoint *bpt)
14562 {
14563   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14564 }
14565
14566 static void
14567 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14568 {
14569   enable_breakpoint (bpt);
14570 }
14571
14572 /* A callback for map_breakpoint_numbers that calls
14573    enable_breakpoint.  */
14574
14575 static void
14576 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14577 {
14578   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14579 }
14580
14581 /* The enable command enables the specified breakpoints (or all defined
14582    breakpoints) so they once again become (or continue to be) effective
14583    in stopping the inferior.  */
14584
14585 static void
14586 enable_command (char *args, int from_tty)
14587 {
14588   if (args == 0)
14589     {
14590       struct breakpoint *bpt;
14591
14592       ALL_BREAKPOINTS (bpt)
14593         if (user_breakpoint_p (bpt))
14594           enable_breakpoint (bpt);
14595     }
14596   else if (strchr (args, '.'))
14597     {
14598       struct bp_location *loc = find_location_by_number (args);
14599       if (loc)
14600         {
14601           if (!loc->enabled)
14602             {
14603               loc->enabled = 1;
14604               mark_breakpoint_location_modified (loc);
14605             }
14606           if (target_supports_enable_disable_tracepoint ()
14607               && current_trace_status ()->running && loc->owner
14608               && is_tracepoint (loc->owner))
14609             target_enable_tracepoint (loc);
14610         }
14611       update_global_location_list (1);
14612     }
14613   else
14614     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14615 }
14616
14617 /* This struct packages up disposition data for application to multiple
14618    breakpoints.  */
14619
14620 struct disp_data
14621 {
14622   enum bpdisp disp;
14623   int count;
14624 };
14625
14626 static void
14627 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14628 {
14629   struct disp_data disp_data = *(struct disp_data *) arg;
14630
14631   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14632 }
14633
14634 static void
14635 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14636 {
14637   struct disp_data disp = { disp_disable, 1 };
14638
14639   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14640 }
14641
14642 static void
14643 enable_once_command (char *args, int from_tty)
14644 {
14645   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14646 }
14647
14648 static void
14649 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14650 {
14651   struct disp_data disp = { disp_disable, *(int *) countptr };
14652
14653   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14654 }
14655
14656 static void
14657 enable_count_command (char *args, int from_tty)
14658 {
14659   int count = get_number (&args);
14660
14661   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14662 }
14663
14664 static void
14665 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14666 {
14667   struct disp_data disp = { disp_del, 1 };
14668
14669   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14670 }
14671
14672 static void
14673 enable_delete_command (char *args, int from_tty)
14674 {
14675   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14676 }
14677 \f
14678 static void
14679 set_breakpoint_cmd (char *args, int from_tty)
14680 {
14681 }
14682
14683 static void
14684 show_breakpoint_cmd (char *args, int from_tty)
14685 {
14686 }
14687
14688 /* Invalidate last known value of any hardware watchpoint if
14689    the memory which that value represents has been written to by
14690    GDB itself.  */
14691
14692 static void
14693 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14694                                       CORE_ADDR addr, ssize_t len,
14695                                       const bfd_byte *data)
14696 {
14697   struct breakpoint *bp;
14698
14699   ALL_BREAKPOINTS (bp)
14700     if (bp->enable_state == bp_enabled
14701         && bp->type == bp_hardware_watchpoint)
14702       {
14703         struct watchpoint *wp = (struct watchpoint *) bp;
14704
14705         if (wp->val_valid && wp->val)
14706           {
14707             struct bp_location *loc;
14708
14709             for (loc = bp->loc; loc != NULL; loc = loc->next)
14710               if (loc->loc_type == bp_loc_hardware_watchpoint
14711                   && loc->address + loc->length > addr
14712                   && addr + len > loc->address)
14713                 {
14714                   value_free (wp->val);
14715                   wp->val = NULL;
14716                   wp->val_valid = 0;
14717                 }
14718           }
14719       }
14720 }
14721
14722 /* Create and insert a raw software breakpoint at PC.  Return an
14723    identifier, which should be used to remove the breakpoint later.
14724    In general, places which call this should be using something on the
14725    breakpoint chain instead; this function should be eliminated
14726    someday.  */
14727
14728 void *
14729 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14730                                   struct address_space *aspace, CORE_ADDR pc)
14731 {
14732   struct bp_target_info *bp_tgt;
14733
14734   bp_tgt = XZALLOC (struct bp_target_info);
14735
14736   bp_tgt->placed_address_space = aspace;
14737   bp_tgt->placed_address = pc;
14738
14739   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14740     {
14741       /* Could not insert the breakpoint.  */
14742       xfree (bp_tgt);
14743       return NULL;
14744     }
14745
14746   return bp_tgt;
14747 }
14748
14749 /* Remove a breakpoint BP inserted by
14750    deprecated_insert_raw_breakpoint.  */
14751
14752 int
14753 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14754 {
14755   struct bp_target_info *bp_tgt = bp;
14756   int ret;
14757
14758   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14759   xfree (bp_tgt);
14760
14761   return ret;
14762 }
14763
14764 /* One (or perhaps two) breakpoints used for software single
14765    stepping.  */
14766
14767 static void *single_step_breakpoints[2];
14768 static struct gdbarch *single_step_gdbarch[2];
14769
14770 /* Create and insert a breakpoint for software single step.  */
14771
14772 void
14773 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14774                                struct address_space *aspace, 
14775                                CORE_ADDR next_pc)
14776 {
14777   void **bpt_p;
14778
14779   if (single_step_breakpoints[0] == NULL)
14780     {
14781       bpt_p = &single_step_breakpoints[0];
14782       single_step_gdbarch[0] = gdbarch;
14783     }
14784   else
14785     {
14786       gdb_assert (single_step_breakpoints[1] == NULL);
14787       bpt_p = &single_step_breakpoints[1];
14788       single_step_gdbarch[1] = gdbarch;
14789     }
14790
14791   /* NOTE drow/2006-04-11: A future improvement to this function would
14792      be to only create the breakpoints once, and actually put them on
14793      the breakpoint chain.  That would let us use set_raw_breakpoint.
14794      We could adjust the addresses each time they were needed.  Doing
14795      this requires corresponding changes elsewhere where single step
14796      breakpoints are handled, however.  So, for now, we use this.  */
14797
14798   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14799   if (*bpt_p == NULL)
14800     error (_("Could not insert single-step breakpoint at %s"),
14801              paddress (gdbarch, next_pc));
14802 }
14803
14804 /* Check if the breakpoints used for software single stepping
14805    were inserted or not.  */
14806
14807 int
14808 single_step_breakpoints_inserted (void)
14809 {
14810   return (single_step_breakpoints[0] != NULL
14811           || single_step_breakpoints[1] != NULL);
14812 }
14813
14814 /* Remove and delete any breakpoints used for software single step.  */
14815
14816 void
14817 remove_single_step_breakpoints (void)
14818 {
14819   gdb_assert (single_step_breakpoints[0] != NULL);
14820
14821   /* See insert_single_step_breakpoint for more about this deprecated
14822      call.  */
14823   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14824                                     single_step_breakpoints[0]);
14825   single_step_gdbarch[0] = NULL;
14826   single_step_breakpoints[0] = NULL;
14827
14828   if (single_step_breakpoints[1] != NULL)
14829     {
14830       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14831                                         single_step_breakpoints[1]);
14832       single_step_gdbarch[1] = NULL;
14833       single_step_breakpoints[1] = NULL;
14834     }
14835 }
14836
14837 /* Delete software single step breakpoints without removing them from
14838    the inferior.  This is intended to be used if the inferior's address
14839    space where they were inserted is already gone, e.g. after exit or
14840    exec.  */
14841
14842 void
14843 cancel_single_step_breakpoints (void)
14844 {
14845   int i;
14846
14847   for (i = 0; i < 2; i++)
14848     if (single_step_breakpoints[i])
14849       {
14850         xfree (single_step_breakpoints[i]);
14851         single_step_breakpoints[i] = NULL;
14852         single_step_gdbarch[i] = NULL;
14853       }
14854 }
14855
14856 /* Detach software single-step breakpoints from INFERIOR_PTID without
14857    removing them.  */
14858
14859 static void
14860 detach_single_step_breakpoints (void)
14861 {
14862   int i;
14863
14864   for (i = 0; i < 2; i++)
14865     if (single_step_breakpoints[i])
14866       target_remove_breakpoint (single_step_gdbarch[i],
14867                                 single_step_breakpoints[i]);
14868 }
14869
14870 /* Check whether a software single-step breakpoint is inserted at
14871    PC.  */
14872
14873 static int
14874 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14875                                         CORE_ADDR pc)
14876 {
14877   int i;
14878
14879   for (i = 0; i < 2; i++)
14880     {
14881       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14882       if (bp_tgt
14883           && breakpoint_address_match (bp_tgt->placed_address_space,
14884                                        bp_tgt->placed_address,
14885                                        aspace, pc))
14886         return 1;
14887     }
14888
14889   return 0;
14890 }
14891
14892 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14893    non-zero otherwise.  */
14894 static int
14895 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14896 {
14897   if (syscall_catchpoint_p (bp)
14898       && bp->enable_state != bp_disabled
14899       && bp->enable_state != bp_call_disabled)
14900     return 1;
14901   else
14902     return 0;
14903 }
14904
14905 int
14906 catch_syscall_enabled (void)
14907 {
14908   struct catch_syscall_inferior_data *inf_data
14909     = get_catch_syscall_inferior_data (current_inferior ());
14910
14911   return inf_data->total_syscalls_count != 0;
14912 }
14913
14914 int
14915 catching_syscall_number (int syscall_number)
14916 {
14917   struct breakpoint *bp;
14918
14919   ALL_BREAKPOINTS (bp)
14920     if (is_syscall_catchpoint_enabled (bp))
14921       {
14922         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14923
14924         if (c->syscalls_to_be_caught)
14925           {
14926             int i, iter;
14927             for (i = 0;
14928                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14929                  i++)
14930               if (syscall_number == iter)
14931                 return 1;
14932           }
14933         else
14934           return 1;
14935       }
14936
14937   return 0;
14938 }
14939
14940 /* Complete syscall names.  Used by "catch syscall".  */
14941 static VEC (char_ptr) *
14942 catch_syscall_completer (struct cmd_list_element *cmd,
14943                          const char *text, const char *word)
14944 {
14945   const char **list = get_syscall_names ();
14946   VEC (char_ptr) *retlist
14947     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
14948
14949   xfree (list);
14950   return retlist;
14951 }
14952
14953 /* Tracepoint-specific operations.  */
14954
14955 /* Set tracepoint count to NUM.  */
14956 static void
14957 set_tracepoint_count (int num)
14958 {
14959   tracepoint_count = num;
14960   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14961 }
14962
14963 static void
14964 trace_command (char *arg, int from_tty)
14965 {
14966   struct breakpoint_ops *ops;
14967   const char *arg_cp = arg;
14968
14969   if (arg && probe_linespec_to_ops (&arg_cp))
14970     ops = &tracepoint_probe_breakpoint_ops;
14971   else
14972     ops = &tracepoint_breakpoint_ops;
14973
14974   create_breakpoint (get_current_arch (),
14975                      arg,
14976                      NULL, 0, NULL, 1 /* parse arg */,
14977                      0 /* tempflag */,
14978                      bp_tracepoint /* type_wanted */,
14979                      0 /* Ignore count */,
14980                      pending_break_support,
14981                      ops,
14982                      from_tty,
14983                      1 /* enabled */,
14984                      0 /* internal */, 0);
14985 }
14986
14987 static void
14988 ftrace_command (char *arg, int from_tty)
14989 {
14990   create_breakpoint (get_current_arch (),
14991                      arg,
14992                      NULL, 0, NULL, 1 /* parse arg */,
14993                      0 /* tempflag */,
14994                      bp_fast_tracepoint /* type_wanted */,
14995                      0 /* Ignore count */,
14996                      pending_break_support,
14997                      &tracepoint_breakpoint_ops,
14998                      from_tty,
14999                      1 /* enabled */,
15000                      0 /* internal */, 0);
15001 }
15002
15003 /* strace command implementation.  Creates a static tracepoint.  */
15004
15005 static void
15006 strace_command (char *arg, int from_tty)
15007 {
15008   struct breakpoint_ops *ops;
15009
15010   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15011      or with a normal static tracepoint.  */
15012   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15013     ops = &strace_marker_breakpoint_ops;
15014   else
15015     ops = &tracepoint_breakpoint_ops;
15016
15017   create_breakpoint (get_current_arch (),
15018                      arg,
15019                      NULL, 0, NULL, 1 /* parse arg */,
15020                      0 /* tempflag */,
15021                      bp_static_tracepoint /* type_wanted */,
15022                      0 /* Ignore count */,
15023                      pending_break_support,
15024                      ops,
15025                      from_tty,
15026                      1 /* enabled */,
15027                      0 /* internal */, 0);
15028 }
15029
15030 /* Set up a fake reader function that gets command lines from a linked
15031    list that was acquired during tracepoint uploading.  */
15032
15033 static struct uploaded_tp *this_utp;
15034 static int next_cmd;
15035
15036 static char *
15037 read_uploaded_action (void)
15038 {
15039   char *rslt;
15040
15041   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15042
15043   next_cmd++;
15044
15045   return rslt;
15046 }
15047
15048 /* Given information about a tracepoint as recorded on a target (which
15049    can be either a live system or a trace file), attempt to create an
15050    equivalent GDB tracepoint.  This is not a reliable process, since
15051    the target does not necessarily have all the information used when
15052    the tracepoint was originally defined.  */
15053   
15054 struct tracepoint *
15055 create_tracepoint_from_upload (struct uploaded_tp *utp)
15056 {
15057   char *addr_str, small_buf[100];
15058   struct tracepoint *tp;
15059
15060   if (utp->at_string)
15061     addr_str = utp->at_string;
15062   else
15063     {
15064       /* In the absence of a source location, fall back to raw
15065          address.  Since there is no way to confirm that the address
15066          means the same thing as when the trace was started, warn the
15067          user.  */
15068       warning (_("Uploaded tracepoint %d has no "
15069                  "source location, using raw address"),
15070                utp->number);
15071       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15072       addr_str = small_buf;
15073     }
15074
15075   /* There's not much we can do with a sequence of bytecodes.  */
15076   if (utp->cond && !utp->cond_string)
15077     warning (_("Uploaded tracepoint %d condition "
15078                "has no source form, ignoring it"),
15079              utp->number);
15080
15081   if (!create_breakpoint (get_current_arch (),
15082                           addr_str,
15083                           utp->cond_string, -1, NULL,
15084                           0 /* parse cond/thread */,
15085                           0 /* tempflag */,
15086                           utp->type /* type_wanted */,
15087                           0 /* Ignore count */,
15088                           pending_break_support,
15089                           &tracepoint_breakpoint_ops,
15090                           0 /* from_tty */,
15091                           utp->enabled /* enabled */,
15092                           0 /* internal */,
15093                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15094     return NULL;
15095
15096   /* Get the tracepoint we just created.  */
15097   tp = get_tracepoint (tracepoint_count);
15098   gdb_assert (tp != NULL);
15099
15100   if (utp->pass > 0)
15101     {
15102       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15103                  tp->base.number);
15104
15105       trace_pass_command (small_buf, 0);
15106     }
15107
15108   /* If we have uploaded versions of the original commands, set up a
15109      special-purpose "reader" function and call the usual command line
15110      reader, then pass the result to the breakpoint command-setting
15111      function.  */
15112   if (!VEC_empty (char_ptr, utp->cmd_strings))
15113     {
15114       struct command_line *cmd_list;
15115
15116       this_utp = utp;
15117       next_cmd = 0;
15118
15119       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15120
15121       breakpoint_set_commands (&tp->base, cmd_list);
15122     }
15123   else if (!VEC_empty (char_ptr, utp->actions)
15124            || !VEC_empty (char_ptr, utp->step_actions))
15125     warning (_("Uploaded tracepoint %d actions "
15126                "have no source form, ignoring them"),
15127              utp->number);
15128
15129   /* Copy any status information that might be available.  */
15130   tp->base.hit_count = utp->hit_count;
15131   tp->traceframe_usage = utp->traceframe_usage;
15132
15133   return tp;
15134 }
15135   
15136 /* Print information on tracepoint number TPNUM_EXP, or all if
15137    omitted.  */
15138
15139 static void
15140 tracepoints_info (char *args, int from_tty)
15141 {
15142   struct ui_out *uiout = current_uiout;
15143   int num_printed;
15144
15145   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15146
15147   if (num_printed == 0)
15148     {
15149       if (args == NULL || *args == '\0')
15150         ui_out_message (uiout, 0, "No tracepoints.\n");
15151       else
15152         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15153     }
15154
15155   default_collect_info ();
15156 }
15157
15158 /* The 'enable trace' command enables tracepoints.
15159    Not supported by all targets.  */
15160 static void
15161 enable_trace_command (char *args, int from_tty)
15162 {
15163   enable_command (args, from_tty);
15164 }
15165
15166 /* The 'disable trace' command disables tracepoints.
15167    Not supported by all targets.  */
15168 static void
15169 disable_trace_command (char *args, int from_tty)
15170 {
15171   disable_command (args, from_tty);
15172 }
15173
15174 /* Remove a tracepoint (or all if no argument).  */
15175 static void
15176 delete_trace_command (char *arg, int from_tty)
15177 {
15178   struct breakpoint *b, *b_tmp;
15179
15180   dont_repeat ();
15181
15182   if (arg == 0)
15183     {
15184       int breaks_to_delete = 0;
15185
15186       /* Delete all breakpoints if no argument.
15187          Do not delete internal or call-dummy breakpoints, these
15188          have to be deleted with an explicit breakpoint number 
15189          argument.  */
15190       ALL_TRACEPOINTS (b)
15191         if (is_tracepoint (b) && user_breakpoint_p (b))
15192           {
15193             breaks_to_delete = 1;
15194             break;
15195           }
15196
15197       /* Ask user only if there are some breakpoints to delete.  */
15198       if (!from_tty
15199           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15200         {
15201           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15202             if (is_tracepoint (b) && user_breakpoint_p (b))
15203               delete_breakpoint (b);
15204         }
15205     }
15206   else
15207     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15208 }
15209
15210 /* Helper function for trace_pass_command.  */
15211
15212 static void
15213 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15214 {
15215   tp->pass_count = count;
15216   observer_notify_breakpoint_modified (&tp->base);
15217   if (from_tty)
15218     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15219                      tp->base.number, count);
15220 }
15221
15222 /* Set passcount for tracepoint.
15223
15224    First command argument is passcount, second is tracepoint number.
15225    If tracepoint number omitted, apply to most recently defined.
15226    Also accepts special argument "all".  */
15227
15228 static void
15229 trace_pass_command (char *args, int from_tty)
15230 {
15231   struct tracepoint *t1;
15232   unsigned int count;
15233
15234   if (args == 0 || *args == 0)
15235     error (_("passcount command requires an "
15236              "argument (count + optional TP num)"));
15237
15238   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15239
15240   args = skip_spaces (args);
15241   if (*args && strncasecmp (args, "all", 3) == 0)
15242     {
15243       struct breakpoint *b;
15244
15245       args += 3;                        /* Skip special argument "all".  */
15246       if (*args)
15247         error (_("Junk at end of arguments."));
15248
15249       ALL_TRACEPOINTS (b)
15250       {
15251         t1 = (struct tracepoint *) b;
15252         trace_pass_set_count (t1, count, from_tty);
15253       }
15254     }
15255   else if (*args == '\0')
15256     {
15257       t1 = get_tracepoint_by_number (&args, NULL, 1);
15258       if (t1)
15259         trace_pass_set_count (t1, count, from_tty);
15260     }
15261   else
15262     {
15263       struct get_number_or_range_state state;
15264
15265       init_number_or_range (&state, args);
15266       while (!state.finished)
15267         {
15268           t1 = get_tracepoint_by_number (&args, &state, 1);
15269           if (t1)
15270             trace_pass_set_count (t1, count, from_tty);
15271         }
15272     }
15273 }
15274
15275 struct tracepoint *
15276 get_tracepoint (int num)
15277 {
15278   struct breakpoint *t;
15279
15280   ALL_TRACEPOINTS (t)
15281     if (t->number == num)
15282       return (struct tracepoint *) t;
15283
15284   return NULL;
15285 }
15286
15287 /* Find the tracepoint with the given target-side number (which may be
15288    different from the tracepoint number after disconnecting and
15289    reconnecting).  */
15290
15291 struct tracepoint *
15292 get_tracepoint_by_number_on_target (int num)
15293 {
15294   struct breakpoint *b;
15295
15296   ALL_TRACEPOINTS (b)
15297     {
15298       struct tracepoint *t = (struct tracepoint *) b;
15299
15300       if (t->number_on_target == num)
15301         return t;
15302     }
15303
15304   return NULL;
15305 }
15306
15307 /* Utility: parse a tracepoint number and look it up in the list.
15308    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15309    If OPTIONAL_P is true, then if the argument is missing, the most
15310    recent tracepoint (tracepoint_count) is returned.  */
15311 struct tracepoint *
15312 get_tracepoint_by_number (char **arg,
15313                           struct get_number_or_range_state *state,
15314                           int optional_p)
15315 {
15316   struct breakpoint *t;
15317   int tpnum;
15318   char *instring = arg == NULL ? NULL : *arg;
15319
15320   if (state)
15321     {
15322       gdb_assert (!state->finished);
15323       tpnum = get_number_or_range (state);
15324     }
15325   else if (arg == NULL || *arg == NULL || ! **arg)
15326     {
15327       if (optional_p)
15328         tpnum = tracepoint_count;
15329       else
15330         error_no_arg (_("tracepoint number"));
15331     }
15332   else
15333     tpnum = get_number (arg);
15334
15335   if (tpnum <= 0)
15336     {
15337       if (instring && *instring)
15338         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15339                          instring);
15340       else
15341         printf_filtered (_("Tracepoint argument missing "
15342                            "and no previous tracepoint\n"));
15343       return NULL;
15344     }
15345
15346   ALL_TRACEPOINTS (t)
15347     if (t->number == tpnum)
15348     {
15349       return (struct tracepoint *) t;
15350     }
15351
15352   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15353   return NULL;
15354 }
15355
15356 void
15357 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15358 {
15359   if (b->thread != -1)
15360     fprintf_unfiltered (fp, " thread %d", b->thread);
15361
15362   if (b->task != 0)
15363     fprintf_unfiltered (fp, " task %d", b->task);
15364
15365   fprintf_unfiltered (fp, "\n");
15366 }
15367
15368 /* Save information on user settable breakpoints (watchpoints, etc) to
15369    a new script file named FILENAME.  If FILTER is non-NULL, call it
15370    on each breakpoint and only include the ones for which it returns
15371    non-zero.  */
15372
15373 static void
15374 save_breakpoints (char *filename, int from_tty,
15375                   int (*filter) (const struct breakpoint *))
15376 {
15377   struct breakpoint *tp;
15378   int any = 0;
15379   char *pathname;
15380   struct cleanup *cleanup;
15381   struct ui_file *fp;
15382   int extra_trace_bits = 0;
15383
15384   if (filename == 0 || *filename == 0)
15385     error (_("Argument required (file name in which to save)"));
15386
15387   /* See if we have anything to save.  */
15388   ALL_BREAKPOINTS (tp)
15389   {
15390     /* Skip internal and momentary breakpoints.  */
15391     if (!user_breakpoint_p (tp))
15392       continue;
15393
15394     /* If we have a filter, only save the breakpoints it accepts.  */
15395     if (filter && !filter (tp))
15396       continue;
15397
15398     any = 1;
15399
15400     if (is_tracepoint (tp))
15401       {
15402         extra_trace_bits = 1;
15403
15404         /* We can stop searching.  */
15405         break;
15406       }
15407   }
15408
15409   if (!any)
15410     {
15411       warning (_("Nothing to save."));
15412       return;
15413     }
15414
15415   pathname = tilde_expand (filename);
15416   cleanup = make_cleanup (xfree, pathname);
15417   fp = gdb_fopen (pathname, "w");
15418   if (!fp)
15419     error (_("Unable to open file '%s' for saving (%s)"),
15420            filename, safe_strerror (errno));
15421   make_cleanup_ui_file_delete (fp);
15422
15423   if (extra_trace_bits)
15424     save_trace_state_variables (fp);
15425
15426   ALL_BREAKPOINTS (tp)
15427   {
15428     /* Skip internal and momentary breakpoints.  */
15429     if (!user_breakpoint_p (tp))
15430       continue;
15431
15432     /* If we have a filter, only save the breakpoints it accepts.  */
15433     if (filter && !filter (tp))
15434       continue;
15435
15436     tp->ops->print_recreate (tp, fp);
15437
15438     /* Note, we can't rely on tp->number for anything, as we can't
15439        assume the recreated breakpoint numbers will match.  Use $bpnum
15440        instead.  */
15441
15442     if (tp->cond_string)
15443       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15444
15445     if (tp->ignore_count)
15446       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15447
15448     if (tp->type != bp_dprintf && tp->commands)
15449       {
15450         volatile struct gdb_exception ex;       
15451
15452         fprintf_unfiltered (fp, "  commands\n");
15453         
15454         ui_out_redirect (current_uiout, fp);
15455         TRY_CATCH (ex, RETURN_MASK_ALL)
15456           {
15457             print_command_lines (current_uiout, tp->commands->commands, 2);
15458           }
15459         ui_out_redirect (current_uiout, NULL);
15460
15461         if (ex.reason < 0)
15462           throw_exception (ex);
15463
15464         fprintf_unfiltered (fp, "  end\n");
15465       }
15466
15467     if (tp->enable_state == bp_disabled)
15468       fprintf_unfiltered (fp, "disable\n");
15469
15470     /* If this is a multi-location breakpoint, check if the locations
15471        should be individually disabled.  Watchpoint locations are
15472        special, and not user visible.  */
15473     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15474       {
15475         struct bp_location *loc;
15476         int n = 1;
15477
15478         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15479           if (!loc->enabled)
15480             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15481       }
15482   }
15483
15484   if (extra_trace_bits && *default_collect)
15485     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15486
15487   do_cleanups (cleanup);
15488   if (from_tty)
15489     printf_filtered (_("Saved to file '%s'.\n"), filename);
15490 }
15491
15492 /* The `save breakpoints' command.  */
15493
15494 static void
15495 save_breakpoints_command (char *args, int from_tty)
15496 {
15497   save_breakpoints (args, from_tty, NULL);
15498 }
15499
15500 /* The `save tracepoints' command.  */
15501
15502 static void
15503 save_tracepoints_command (char *args, int from_tty)
15504 {
15505   save_breakpoints (args, from_tty, is_tracepoint);
15506 }
15507
15508 /* Create a vector of all tracepoints.  */
15509
15510 VEC(breakpoint_p) *
15511 all_tracepoints (void)
15512 {
15513   VEC(breakpoint_p) *tp_vec = 0;
15514   struct breakpoint *tp;
15515
15516   ALL_TRACEPOINTS (tp)
15517   {
15518     VEC_safe_push (breakpoint_p, tp_vec, tp);
15519   }
15520
15521   return tp_vec;
15522 }
15523
15524 \f
15525 /* This help string is used for the break, hbreak, tbreak and thbreak
15526    commands.  It is defined as a macro to prevent duplication.
15527    COMMAND should be a string constant containing the name of the
15528    command.  */
15529 #define BREAK_ARGS_HELP(command) \
15530 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15531 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15532 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15533 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15534 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15535 If a line number is specified, break at start of code for that line.\n\
15536 If a function is specified, break at start of code for that function.\n\
15537 If an address is specified, break at that exact address.\n\
15538 With no LOCATION, uses current execution address of the selected\n\
15539 stack frame.  This is useful for breaking on return to a stack frame.\n\
15540 \n\
15541 THREADNUM is the number from \"info threads\".\n\
15542 CONDITION is a boolean expression.\n\
15543 \n\
15544 Multiple breakpoints at one place are permitted, and useful if their\n\
15545 conditions are different.\n\
15546 \n\
15547 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15548
15549 /* List of subcommands for "catch".  */
15550 static struct cmd_list_element *catch_cmdlist;
15551
15552 /* List of subcommands for "tcatch".  */
15553 static struct cmd_list_element *tcatch_cmdlist;
15554
15555 void
15556 add_catch_command (char *name, char *docstring,
15557                    void (*sfunc) (char *args, int from_tty,
15558                                   struct cmd_list_element *command),
15559                    completer_ftype *completer,
15560                    void *user_data_catch,
15561                    void *user_data_tcatch)
15562 {
15563   struct cmd_list_element *command;
15564
15565   command = add_cmd (name, class_breakpoint, NULL, docstring,
15566                      &catch_cmdlist);
15567   set_cmd_sfunc (command, sfunc);
15568   set_cmd_context (command, user_data_catch);
15569   set_cmd_completer (command, completer);
15570
15571   command = add_cmd (name, class_breakpoint, NULL, docstring,
15572                      &tcatch_cmdlist);
15573   set_cmd_sfunc (command, sfunc);
15574   set_cmd_context (command, user_data_tcatch);
15575   set_cmd_completer (command, completer);
15576 }
15577
15578 static void
15579 clear_syscall_counts (struct inferior *inf)
15580 {
15581   struct catch_syscall_inferior_data *inf_data
15582     = get_catch_syscall_inferior_data (inf);
15583
15584   inf_data->total_syscalls_count = 0;
15585   inf_data->any_syscall_count = 0;
15586   VEC_free (int, inf_data->syscalls_counts);
15587 }
15588
15589 static void
15590 save_command (char *arg, int from_tty)
15591 {
15592   printf_unfiltered (_("\"save\" must be followed by "
15593                        "the name of a save subcommand.\n"));
15594   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15595 }
15596
15597 struct breakpoint *
15598 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15599                           void *data)
15600 {
15601   struct breakpoint *b, *b_tmp;
15602
15603   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15604     {
15605       if ((*callback) (b, data))
15606         return b;
15607     }
15608
15609   return NULL;
15610 }
15611
15612 /* Zero if any of the breakpoint's locations could be a location where
15613    functions have been inlined, nonzero otherwise.  */
15614
15615 static int
15616 is_non_inline_function (struct breakpoint *b)
15617 {
15618   /* The shared library event breakpoint is set on the address of a
15619      non-inline function.  */
15620   if (b->type == bp_shlib_event)
15621     return 1;
15622
15623   return 0;
15624 }
15625
15626 /* Nonzero if the specified PC cannot be a location where functions
15627    have been inlined.  */
15628
15629 int
15630 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15631                            const struct target_waitstatus *ws)
15632 {
15633   struct breakpoint *b;
15634   struct bp_location *bl;
15635
15636   ALL_BREAKPOINTS (b)
15637     {
15638       if (!is_non_inline_function (b))
15639         continue;
15640
15641       for (bl = b->loc; bl != NULL; bl = bl->next)
15642         {
15643           if (!bl->shlib_disabled
15644               && bpstat_check_location (bl, aspace, pc, ws))
15645             return 1;
15646         }
15647     }
15648
15649   return 0;
15650 }
15651
15652 /* Remove any references to OBJFILE which is going to be freed.  */
15653
15654 void
15655 breakpoint_free_objfile (struct objfile *objfile)
15656 {
15657   struct bp_location **locp, *loc;
15658
15659   ALL_BP_LOCATIONS (loc, locp)
15660     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15661       loc->symtab = NULL;
15662 }
15663
15664 void
15665 initialize_breakpoint_ops (void)
15666 {
15667   static int initialized = 0;
15668
15669   struct breakpoint_ops *ops;
15670
15671   if (initialized)
15672     return;
15673   initialized = 1;
15674
15675   /* The breakpoint_ops structure to be inherit by all kinds of
15676      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15677      internal and momentary breakpoints, etc.).  */
15678   ops = &bkpt_base_breakpoint_ops;
15679   *ops = base_breakpoint_ops;
15680   ops->re_set = bkpt_re_set;
15681   ops->insert_location = bkpt_insert_location;
15682   ops->remove_location = bkpt_remove_location;
15683   ops->breakpoint_hit = bkpt_breakpoint_hit;
15684   ops->create_sals_from_address = bkpt_create_sals_from_address;
15685   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15686   ops->decode_linespec = bkpt_decode_linespec;
15687
15688   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15689   ops = &bkpt_breakpoint_ops;
15690   *ops = bkpt_base_breakpoint_ops;
15691   ops->re_set = bkpt_re_set;
15692   ops->resources_needed = bkpt_resources_needed;
15693   ops->print_it = bkpt_print_it;
15694   ops->print_mention = bkpt_print_mention;
15695   ops->print_recreate = bkpt_print_recreate;
15696
15697   /* Ranged breakpoints.  */
15698   ops = &ranged_breakpoint_ops;
15699   *ops = bkpt_breakpoint_ops;
15700   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15701   ops->resources_needed = resources_needed_ranged_breakpoint;
15702   ops->print_it = print_it_ranged_breakpoint;
15703   ops->print_one = print_one_ranged_breakpoint;
15704   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15705   ops->print_mention = print_mention_ranged_breakpoint;
15706   ops->print_recreate = print_recreate_ranged_breakpoint;
15707
15708   /* Internal breakpoints.  */
15709   ops = &internal_breakpoint_ops;
15710   *ops = bkpt_base_breakpoint_ops;
15711   ops->re_set = internal_bkpt_re_set;
15712   ops->check_status = internal_bkpt_check_status;
15713   ops->print_it = internal_bkpt_print_it;
15714   ops->print_mention = internal_bkpt_print_mention;
15715
15716   /* Momentary breakpoints.  */
15717   ops = &momentary_breakpoint_ops;
15718   *ops = bkpt_base_breakpoint_ops;
15719   ops->re_set = momentary_bkpt_re_set;
15720   ops->check_status = momentary_bkpt_check_status;
15721   ops->print_it = momentary_bkpt_print_it;
15722   ops->print_mention = momentary_bkpt_print_mention;
15723
15724   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15725   ops = &longjmp_breakpoint_ops;
15726   *ops = momentary_breakpoint_ops;
15727   ops->dtor = longjmp_bkpt_dtor;
15728
15729   /* Probe breakpoints.  */
15730   ops = &bkpt_probe_breakpoint_ops;
15731   *ops = bkpt_breakpoint_ops;
15732   ops->insert_location = bkpt_probe_insert_location;
15733   ops->remove_location = bkpt_probe_remove_location;
15734   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15735   ops->decode_linespec = bkpt_probe_decode_linespec;
15736
15737   /* Watchpoints.  */
15738   ops = &watchpoint_breakpoint_ops;
15739   *ops = base_breakpoint_ops;
15740   ops->dtor = dtor_watchpoint;
15741   ops->re_set = re_set_watchpoint;
15742   ops->insert_location = insert_watchpoint;
15743   ops->remove_location = remove_watchpoint;
15744   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15745   ops->check_status = check_status_watchpoint;
15746   ops->resources_needed = resources_needed_watchpoint;
15747   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15748   ops->print_it = print_it_watchpoint;
15749   ops->print_mention = print_mention_watchpoint;
15750   ops->print_recreate = print_recreate_watchpoint;
15751
15752   /* Masked watchpoints.  */
15753   ops = &masked_watchpoint_breakpoint_ops;
15754   *ops = watchpoint_breakpoint_ops;
15755   ops->insert_location = insert_masked_watchpoint;
15756   ops->remove_location = remove_masked_watchpoint;
15757   ops->resources_needed = resources_needed_masked_watchpoint;
15758   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15759   ops->print_it = print_it_masked_watchpoint;
15760   ops->print_one_detail = print_one_detail_masked_watchpoint;
15761   ops->print_mention = print_mention_masked_watchpoint;
15762   ops->print_recreate = print_recreate_masked_watchpoint;
15763
15764   /* Tracepoints.  */
15765   ops = &tracepoint_breakpoint_ops;
15766   *ops = base_breakpoint_ops;
15767   ops->re_set = tracepoint_re_set;
15768   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15769   ops->print_one_detail = tracepoint_print_one_detail;
15770   ops->print_mention = tracepoint_print_mention;
15771   ops->print_recreate = tracepoint_print_recreate;
15772   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15773   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15774   ops->decode_linespec = tracepoint_decode_linespec;
15775
15776   /* Probe tracepoints.  */
15777   ops = &tracepoint_probe_breakpoint_ops;
15778   *ops = tracepoint_breakpoint_ops;
15779   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15780   ops->decode_linespec = tracepoint_probe_decode_linespec;
15781
15782   /* Static tracepoints with marker (`-m').  */
15783   ops = &strace_marker_breakpoint_ops;
15784   *ops = tracepoint_breakpoint_ops;
15785   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15786   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15787   ops->decode_linespec = strace_marker_decode_linespec;
15788
15789   /* Fork catchpoints.  */
15790   ops = &catch_fork_breakpoint_ops;
15791   *ops = base_breakpoint_ops;
15792   ops->insert_location = insert_catch_fork;
15793   ops->remove_location = remove_catch_fork;
15794   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15795   ops->print_it = print_it_catch_fork;
15796   ops->print_one = print_one_catch_fork;
15797   ops->print_mention = print_mention_catch_fork;
15798   ops->print_recreate = print_recreate_catch_fork;
15799
15800   /* Vfork catchpoints.  */
15801   ops = &catch_vfork_breakpoint_ops;
15802   *ops = base_breakpoint_ops;
15803   ops->insert_location = insert_catch_vfork;
15804   ops->remove_location = remove_catch_vfork;
15805   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15806   ops->print_it = print_it_catch_vfork;
15807   ops->print_one = print_one_catch_vfork;
15808   ops->print_mention = print_mention_catch_vfork;
15809   ops->print_recreate = print_recreate_catch_vfork;
15810
15811   /* Exec catchpoints.  */
15812   ops = &catch_exec_breakpoint_ops;
15813   *ops = base_breakpoint_ops;
15814   ops->dtor = dtor_catch_exec;
15815   ops->insert_location = insert_catch_exec;
15816   ops->remove_location = remove_catch_exec;
15817   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15818   ops->print_it = print_it_catch_exec;
15819   ops->print_one = print_one_catch_exec;
15820   ops->print_mention = print_mention_catch_exec;
15821   ops->print_recreate = print_recreate_catch_exec;
15822
15823   /* Syscall catchpoints.  */
15824   ops = &catch_syscall_breakpoint_ops;
15825   *ops = base_breakpoint_ops;
15826   ops->dtor = dtor_catch_syscall;
15827   ops->insert_location = insert_catch_syscall;
15828   ops->remove_location = remove_catch_syscall;
15829   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15830   ops->print_it = print_it_catch_syscall;
15831   ops->print_one = print_one_catch_syscall;
15832   ops->print_mention = print_mention_catch_syscall;
15833   ops->print_recreate = print_recreate_catch_syscall;
15834
15835   /* Solib-related catchpoints.  */
15836   ops = &catch_solib_breakpoint_ops;
15837   *ops = base_breakpoint_ops;
15838   ops->dtor = dtor_catch_solib;
15839   ops->insert_location = insert_catch_solib;
15840   ops->remove_location = remove_catch_solib;
15841   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15842   ops->check_status = check_status_catch_solib;
15843   ops->print_it = print_it_catch_solib;
15844   ops->print_one = print_one_catch_solib;
15845   ops->print_mention = print_mention_catch_solib;
15846   ops->print_recreate = print_recreate_catch_solib;
15847
15848   ops = &dprintf_breakpoint_ops;
15849   *ops = bkpt_base_breakpoint_ops;
15850   ops->re_set = dprintf_re_set;
15851   ops->resources_needed = bkpt_resources_needed;
15852   ops->print_it = bkpt_print_it;
15853   ops->print_mention = bkpt_print_mention;
15854   ops->print_recreate = dprintf_print_recreate;
15855 }
15856
15857 /* Chain containing all defined "enable breakpoint" subcommands.  */
15858
15859 static struct cmd_list_element *enablebreaklist = NULL;
15860
15861 void
15862 _initialize_breakpoint (void)
15863 {
15864   struct cmd_list_element *c;
15865
15866   initialize_breakpoint_ops ();
15867
15868   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15869   observer_attach_inferior_exit (clear_syscall_counts);
15870   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15871
15872   breakpoint_objfile_key
15873     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15874
15875   catch_syscall_inferior_data
15876     = register_inferior_data_with_cleanup (NULL,
15877                                            catch_syscall_inferior_data_cleanup);
15878
15879   breakpoint_chain = 0;
15880   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15881      before a breakpoint is set.  */
15882   breakpoint_count = 0;
15883
15884   tracepoint_count = 0;
15885
15886   add_com ("ignore", class_breakpoint, ignore_command, _("\
15887 Set ignore-count of breakpoint number N to COUNT.\n\
15888 Usage is `ignore N COUNT'."));
15889   if (xdb_commands)
15890     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15891
15892   add_com ("commands", class_breakpoint, commands_command, _("\
15893 Set commands to be executed when a breakpoint is hit.\n\
15894 Give breakpoint number as argument after \"commands\".\n\
15895 With no argument, the targeted breakpoint is the last one set.\n\
15896 The commands themselves follow starting on the next line.\n\
15897 Type a line containing \"end\" to indicate the end of them.\n\
15898 Give \"silent\" as the first line to make the breakpoint silent;\n\
15899 then no output is printed when it is hit, except what the commands print."));
15900
15901   c = add_com ("condition", class_breakpoint, condition_command, _("\
15902 Specify breakpoint number N to break only if COND is true.\n\
15903 Usage is `condition N COND', where N is an integer and COND is an\n\
15904 expression to be evaluated whenever breakpoint N is reached."));
15905   set_cmd_completer (c, condition_completer);
15906
15907   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15908 Set a temporary breakpoint.\n\
15909 Like \"break\" except the breakpoint is only temporary,\n\
15910 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15911 by using \"enable delete\" on the breakpoint number.\n\
15912 \n"
15913 BREAK_ARGS_HELP ("tbreak")));
15914   set_cmd_completer (c, location_completer);
15915
15916   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15917 Set a hardware assisted breakpoint.\n\
15918 Like \"break\" except the breakpoint requires hardware support,\n\
15919 some target hardware may not have this support.\n\
15920 \n"
15921 BREAK_ARGS_HELP ("hbreak")));
15922   set_cmd_completer (c, location_completer);
15923
15924   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15925 Set a temporary hardware assisted breakpoint.\n\
15926 Like \"hbreak\" except the breakpoint is only temporary,\n\
15927 so it will be deleted when hit.\n\
15928 \n"
15929 BREAK_ARGS_HELP ("thbreak")));
15930   set_cmd_completer (c, location_completer);
15931
15932   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15933 Enable some breakpoints.\n\
15934 Give breakpoint numbers (separated by spaces) as arguments.\n\
15935 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15936 This is used to cancel the effect of the \"disable\" command.\n\
15937 With a subcommand you can enable temporarily."),
15938                   &enablelist, "enable ", 1, &cmdlist);
15939   if (xdb_commands)
15940     add_com ("ab", class_breakpoint, enable_command, _("\
15941 Enable some breakpoints.\n\
15942 Give breakpoint numbers (separated by spaces) as arguments.\n\
15943 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15944 This is used to cancel the effect of the \"disable\" command.\n\
15945 With a subcommand you can enable temporarily."));
15946
15947   add_com_alias ("en", "enable", class_breakpoint, 1);
15948
15949   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15950 Enable some breakpoints.\n\
15951 Give breakpoint numbers (separated by spaces) as arguments.\n\
15952 This is used to cancel the effect of the \"disable\" command.\n\
15953 May be abbreviated to simply \"enable\".\n"),
15954                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15955
15956   add_cmd ("once", no_class, enable_once_command, _("\
15957 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15958 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15959            &enablebreaklist);
15960
15961   add_cmd ("delete", no_class, enable_delete_command, _("\
15962 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15963 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15964            &enablebreaklist);
15965
15966   add_cmd ("count", no_class, enable_count_command, _("\
15967 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15968 If a breakpoint is hit while enabled in this fashion,\n\
15969 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15970            &enablebreaklist);
15971
15972   add_cmd ("delete", no_class, enable_delete_command, _("\
15973 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15974 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15975            &enablelist);
15976
15977   add_cmd ("once", no_class, enable_once_command, _("\
15978 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15979 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15980            &enablelist);
15981
15982   add_cmd ("count", no_class, enable_count_command, _("\
15983 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15984 If a breakpoint is hit while enabled in this fashion,\n\
15985 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15986            &enablelist);
15987
15988   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15989 Disable some breakpoints.\n\
15990 Arguments are breakpoint numbers with spaces in between.\n\
15991 To disable all breakpoints, give no argument.\n\
15992 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15993                   &disablelist, "disable ", 1, &cmdlist);
15994   add_com_alias ("dis", "disable", class_breakpoint, 1);
15995   add_com_alias ("disa", "disable", class_breakpoint, 1);
15996   if (xdb_commands)
15997     add_com ("sb", class_breakpoint, disable_command, _("\
15998 Disable some breakpoints.\n\
15999 Arguments are breakpoint numbers with spaces in between.\n\
16000 To disable all breakpoints, give no argument.\n\
16001 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16002
16003   add_cmd ("breakpoints", class_alias, disable_command, _("\
16004 Disable some breakpoints.\n\
16005 Arguments are breakpoint numbers with spaces in between.\n\
16006 To disable all breakpoints, give no argument.\n\
16007 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16008 This command may be abbreviated \"disable\"."),
16009            &disablelist);
16010
16011   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16012 Delete some breakpoints or auto-display expressions.\n\
16013 Arguments are breakpoint numbers with spaces in between.\n\
16014 To delete all breakpoints, give no argument.\n\
16015 \n\
16016 Also a prefix command for deletion of other GDB objects.\n\
16017 The \"unset\" command is also an alias for \"delete\"."),
16018                   &deletelist, "delete ", 1, &cmdlist);
16019   add_com_alias ("d", "delete", class_breakpoint, 1);
16020   add_com_alias ("del", "delete", class_breakpoint, 1);
16021   if (xdb_commands)
16022     add_com ("db", class_breakpoint, delete_command, _("\
16023 Delete some breakpoints.\n\
16024 Arguments are breakpoint numbers with spaces in between.\n\
16025 To delete all breakpoints, give no argument.\n"));
16026
16027   add_cmd ("breakpoints", class_alias, delete_command, _("\
16028 Delete some breakpoints or auto-display expressions.\n\
16029 Arguments are breakpoint numbers with spaces in between.\n\
16030 To delete all breakpoints, give no argument.\n\
16031 This command may be abbreviated \"delete\"."),
16032            &deletelist);
16033
16034   add_com ("clear", class_breakpoint, clear_command, _("\
16035 Clear breakpoint at specified line or function.\n\
16036 Argument may be line number, function name, or \"*\" and an address.\n\
16037 If line number is specified, all breakpoints in that line are cleared.\n\
16038 If function is specified, breakpoints at beginning of function are cleared.\n\
16039 If an address is specified, breakpoints at that address are cleared.\n\
16040 \n\
16041 With no argument, clears all breakpoints in the line that the selected frame\n\
16042 is executing in.\n\
16043 \n\
16044 See also the \"delete\" command which clears breakpoints by number."));
16045   add_com_alias ("cl", "clear", class_breakpoint, 1);
16046
16047   c = add_com ("break", class_breakpoint, break_command, _("\
16048 Set breakpoint at specified line or function.\n"
16049 BREAK_ARGS_HELP ("break")));
16050   set_cmd_completer (c, location_completer);
16051
16052   add_com_alias ("b", "break", class_run, 1);
16053   add_com_alias ("br", "break", class_run, 1);
16054   add_com_alias ("bre", "break", class_run, 1);
16055   add_com_alias ("brea", "break", class_run, 1);
16056
16057   if (xdb_commands)
16058    add_com_alias ("ba", "break", class_breakpoint, 1);
16059
16060   if (dbx_commands)
16061     {
16062       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16063 Break in function/address or break at a line in the current file."),
16064                              &stoplist, "stop ", 1, &cmdlist);
16065       add_cmd ("in", class_breakpoint, stopin_command,
16066                _("Break in function or address."), &stoplist);
16067       add_cmd ("at", class_breakpoint, stopat_command,
16068                _("Break at a line in the current file."), &stoplist);
16069       add_com ("status", class_info, breakpoints_info, _("\
16070 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16071 The \"Type\" column indicates one of:\n\
16072 \tbreakpoint     - normal breakpoint\n\
16073 \twatchpoint     - watchpoint\n\
16074 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16075 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16076 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16077 address and file/line number respectively.\n\
16078 \n\
16079 Convenience variable \"$_\" and default examine address for \"x\"\n\
16080 are set to the address of the last breakpoint listed unless the command\n\
16081 is prefixed with \"server \".\n\n\
16082 Convenience variable \"$bpnum\" contains the number of the last\n\
16083 breakpoint set."));
16084     }
16085
16086   add_info ("breakpoints", breakpoints_info, _("\
16087 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16088 The \"Type\" column indicates one of:\n\
16089 \tbreakpoint     - normal breakpoint\n\
16090 \twatchpoint     - watchpoint\n\
16091 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16092 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16093 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16094 address and file/line number respectively.\n\
16095 \n\
16096 Convenience variable \"$_\" and default examine address for \"x\"\n\
16097 are set to the address of the last breakpoint listed unless the command\n\
16098 is prefixed with \"server \".\n\n\
16099 Convenience variable \"$bpnum\" contains the number of the last\n\
16100 breakpoint set."));
16101
16102   add_info_alias ("b", "breakpoints", 1);
16103
16104   if (xdb_commands)
16105     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16106 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16107 The \"Type\" column indicates one of:\n\
16108 \tbreakpoint     - normal breakpoint\n\
16109 \twatchpoint     - watchpoint\n\
16110 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16111 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16112 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16113 address and file/line number respectively.\n\
16114 \n\
16115 Convenience variable \"$_\" and default examine address for \"x\"\n\
16116 are set to the address of the last breakpoint listed unless the command\n\
16117 is prefixed with \"server \".\n\n\
16118 Convenience variable \"$bpnum\" contains the number of the last\n\
16119 breakpoint set."));
16120
16121   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16122 Status of all breakpoints, or breakpoint number NUMBER.\n\
16123 The \"Type\" column indicates one of:\n\
16124 \tbreakpoint     - normal breakpoint\n\
16125 \twatchpoint     - watchpoint\n\
16126 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16127 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16128 \tuntil          - internal breakpoint used by the \"until\" command\n\
16129 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16130 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16131 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16132 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16133 address and file/line number respectively.\n\
16134 \n\
16135 Convenience variable \"$_\" and default examine address for \"x\"\n\
16136 are set to the address of the last breakpoint listed unless the command\n\
16137 is prefixed with \"server \".\n\n\
16138 Convenience variable \"$bpnum\" contains the number of the last\n\
16139 breakpoint set."),
16140            &maintenanceinfolist);
16141
16142   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16143 Set catchpoints to catch events."),
16144                   &catch_cmdlist, "catch ",
16145                   0/*allow-unknown*/, &cmdlist);
16146
16147   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16148 Set temporary catchpoints to catch events."),
16149                   &tcatch_cmdlist, "tcatch ",
16150                   0/*allow-unknown*/, &cmdlist);
16151
16152   add_catch_command ("fork", _("Catch calls to fork."),
16153                      catch_fork_command_1,
16154                      NULL,
16155                      (void *) (uintptr_t) catch_fork_permanent,
16156                      (void *) (uintptr_t) catch_fork_temporary);
16157   add_catch_command ("vfork", _("Catch calls to vfork."),
16158                      catch_fork_command_1,
16159                      NULL,
16160                      (void *) (uintptr_t) catch_vfork_permanent,
16161                      (void *) (uintptr_t) catch_vfork_temporary);
16162   add_catch_command ("exec", _("Catch calls to exec."),
16163                      catch_exec_command_1,
16164                      NULL,
16165                      CATCH_PERMANENT,
16166                      CATCH_TEMPORARY);
16167   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16168 Usage: catch load [REGEX]\n\
16169 If REGEX is given, only stop for libraries matching the regular expression."),
16170                      catch_load_command_1,
16171                      NULL,
16172                      CATCH_PERMANENT,
16173                      CATCH_TEMPORARY);
16174   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16175 Usage: catch unload [REGEX]\n\
16176 If REGEX is given, only stop for libraries matching the regular expression."),
16177                      catch_unload_command_1,
16178                      NULL,
16179                      CATCH_PERMANENT,
16180                      CATCH_TEMPORARY);
16181   add_catch_command ("syscall", _("\
16182 Catch system calls by their names and/or numbers.\n\
16183 Arguments say which system calls to catch.  If no arguments\n\
16184 are given, every system call will be caught.\n\
16185 Arguments, if given, should be one or more system call names\n\
16186 (if your system supports that), or system call numbers."),
16187                      catch_syscall_command_1,
16188                      catch_syscall_completer,
16189                      CATCH_PERMANENT,
16190                      CATCH_TEMPORARY);
16191
16192   c = add_com ("watch", class_breakpoint, watch_command, _("\
16193 Set a watchpoint for an expression.\n\
16194 Usage: watch [-l|-location] EXPRESSION\n\
16195 A watchpoint stops execution of your program whenever the value of\n\
16196 an expression changes.\n\
16197 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16198 the memory to which it refers."));
16199   set_cmd_completer (c, expression_completer);
16200
16201   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16202 Set a read watchpoint for an expression.\n\
16203 Usage: rwatch [-l|-location] EXPRESSION\n\
16204 A watchpoint stops execution of your program whenever the value of\n\
16205 an expression is read.\n\
16206 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16207 the memory to which it refers."));
16208   set_cmd_completer (c, expression_completer);
16209
16210   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16211 Set a watchpoint for an expression.\n\
16212 Usage: awatch [-l|-location] EXPRESSION\n\
16213 A watchpoint stops execution of your program whenever the value of\n\
16214 an expression is either read or written.\n\
16215 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16216 the memory to which it refers."));
16217   set_cmd_completer (c, expression_completer);
16218
16219   add_info ("watchpoints", watchpoints_info, _("\
16220 Status of specified watchpoints (all watchpoints if no argument)."));
16221
16222   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16223      respond to changes - contrary to the description.  */
16224   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16225                             &can_use_hw_watchpoints, _("\
16226 Set debugger's willingness to use watchpoint hardware."), _("\
16227 Show debugger's willingness to use watchpoint hardware."), _("\
16228 If zero, gdb will not use hardware for new watchpoints, even if\n\
16229 such is available.  (However, any hardware watchpoints that were\n\
16230 created before setting this to nonzero, will continue to use watchpoint\n\
16231 hardware.)"),
16232                             NULL,
16233                             show_can_use_hw_watchpoints,
16234                             &setlist, &showlist);
16235
16236   can_use_hw_watchpoints = 1;
16237
16238   /* Tracepoint manipulation commands.  */
16239
16240   c = add_com ("trace", class_breakpoint, trace_command, _("\
16241 Set a tracepoint at specified line or function.\n\
16242 \n"
16243 BREAK_ARGS_HELP ("trace") "\n\
16244 Do \"help tracepoints\" for info on other tracepoint commands."));
16245   set_cmd_completer (c, location_completer);
16246
16247   add_com_alias ("tp", "trace", class_alias, 0);
16248   add_com_alias ("tr", "trace", class_alias, 1);
16249   add_com_alias ("tra", "trace", class_alias, 1);
16250   add_com_alias ("trac", "trace", class_alias, 1);
16251
16252   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16253 Set a fast tracepoint at specified line or function.\n\
16254 \n"
16255 BREAK_ARGS_HELP ("ftrace") "\n\
16256 Do \"help tracepoints\" for info on other tracepoint commands."));
16257   set_cmd_completer (c, location_completer);
16258
16259   c = add_com ("strace", class_breakpoint, strace_command, _("\
16260 Set a static tracepoint at specified line, function or marker.\n\
16261 \n\
16262 strace [LOCATION] [if CONDITION]\n\
16263 LOCATION may be a line number, function name, \"*\" and an address,\n\
16264 or -m MARKER_ID.\n\
16265 If a line number is specified, probe the marker at start of code\n\
16266 for that line.  If a function is specified, probe the marker at start\n\
16267 of code for that function.  If an address is specified, probe the marker\n\
16268 at that exact address.  If a marker id is specified, probe the marker\n\
16269 with that name.  With no LOCATION, uses current execution address of\n\
16270 the selected stack frame.\n\
16271 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16272 This collects arbitrary user data passed in the probe point call to the\n\
16273 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16274 by printing the $_sdata variable like any other convenience variable.\n\
16275 \n\
16276 CONDITION is a boolean expression.\n\
16277 \n\
16278 Multiple tracepoints at one place are permitted, and useful if their\n\
16279 conditions are different.\n\
16280 \n\
16281 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16282 Do \"help tracepoints\" for info on other tracepoint commands."));
16283   set_cmd_completer (c, location_completer);
16284
16285   add_info ("tracepoints", tracepoints_info, _("\
16286 Status of specified tracepoints (all tracepoints if no argument).\n\
16287 Convenience variable \"$tpnum\" contains the number of the\n\
16288 last tracepoint set."));
16289
16290   add_info_alias ("tp", "tracepoints", 1);
16291
16292   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16293 Delete specified tracepoints.\n\
16294 Arguments are tracepoint numbers, separated by spaces.\n\
16295 No argument means delete all tracepoints."),
16296            &deletelist);
16297   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16298
16299   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16300 Disable specified tracepoints.\n\
16301 Arguments are tracepoint numbers, separated by spaces.\n\
16302 No argument means disable all tracepoints."),
16303            &disablelist);
16304   deprecate_cmd (c, "disable");
16305
16306   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16307 Enable specified tracepoints.\n\
16308 Arguments are tracepoint numbers, separated by spaces.\n\
16309 No argument means enable all tracepoints."),
16310            &enablelist);
16311   deprecate_cmd (c, "enable");
16312
16313   add_com ("passcount", class_trace, trace_pass_command, _("\
16314 Set the passcount for a tracepoint.\n\
16315 The trace will end when the tracepoint has been passed 'count' times.\n\
16316 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16317 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16318
16319   add_prefix_cmd ("save", class_breakpoint, save_command,
16320                   _("Save breakpoint definitions as a script."),
16321                   &save_cmdlist, "save ",
16322                   0/*allow-unknown*/, &cmdlist);
16323
16324   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16325 Save current breakpoint definitions as a script.\n\
16326 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16327 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16328 session to restore them."),
16329                &save_cmdlist);
16330   set_cmd_completer (c, filename_completer);
16331
16332   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16333 Save current tracepoint definitions as a script.\n\
16334 Use the 'source' command in another debug session to restore them."),
16335                &save_cmdlist);
16336   set_cmd_completer (c, filename_completer);
16337
16338   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16339   deprecate_cmd (c, "save tracepoints");
16340
16341   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16342 Breakpoint specific settings\n\
16343 Configure various breakpoint-specific variables such as\n\
16344 pending breakpoint behavior"),
16345                   &breakpoint_set_cmdlist, "set breakpoint ",
16346                   0/*allow-unknown*/, &setlist);
16347   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16348 Breakpoint specific settings\n\
16349 Configure various breakpoint-specific variables such as\n\
16350 pending breakpoint behavior"),
16351                   &breakpoint_show_cmdlist, "show breakpoint ",
16352                   0/*allow-unknown*/, &showlist);
16353
16354   add_setshow_auto_boolean_cmd ("pending", no_class,
16355                                 &pending_break_support, _("\
16356 Set debugger's behavior regarding pending breakpoints."), _("\
16357 Show debugger's behavior regarding pending breakpoints."), _("\
16358 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16359 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16360 an error.  If auto, an unrecognized breakpoint location results in a\n\
16361 user-query to see if a pending breakpoint should be created."),
16362                                 NULL,
16363                                 show_pending_break_support,
16364                                 &breakpoint_set_cmdlist,
16365                                 &breakpoint_show_cmdlist);
16366
16367   pending_break_support = AUTO_BOOLEAN_AUTO;
16368
16369   add_setshow_boolean_cmd ("auto-hw", no_class,
16370                            &automatic_hardware_breakpoints, _("\
16371 Set automatic usage of hardware breakpoints."), _("\
16372 Show automatic usage of hardware breakpoints."), _("\
16373 If set, the debugger will automatically use hardware breakpoints for\n\
16374 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16375 a warning will be emitted for such breakpoints."),
16376                            NULL,
16377                            show_automatic_hardware_breakpoints,
16378                            &breakpoint_set_cmdlist,
16379                            &breakpoint_show_cmdlist);
16380
16381   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16382                                 &always_inserted_mode, _("\
16383 Set mode for inserting breakpoints."), _("\
16384 Show mode for inserting breakpoints."), _("\
16385 When this mode is off, breakpoints are inserted in inferior when it is\n\
16386 resumed, and removed when execution stops.  When this mode is on,\n\
16387 breakpoints are inserted immediately and removed only when the user\n\
16388 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16389 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16390 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16391 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16392 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16393                                 NULL,
16394                                 &show_always_inserted_mode,
16395                                 &breakpoint_set_cmdlist,
16396                                 &breakpoint_show_cmdlist);
16397
16398   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16399                         condition_evaluation_enums,
16400                         &condition_evaluation_mode_1, _("\
16401 Set mode of breakpoint condition evaluation."), _("\
16402 Show mode of breakpoint condition evaluation."), _("\
16403 When this is set to \"host\", breakpoint conditions will be\n\
16404 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16405 breakpoint conditions will be downloaded to the target (if the target\n\
16406 supports such feature) and conditions will be evaluated on the target's side.\n\
16407 If this is set to \"auto\" (default), this will be automatically set to\n\
16408 \"target\" if it supports condition evaluation, otherwise it will\n\
16409 be set to \"gdb\""),
16410                            &set_condition_evaluation_mode,
16411                            &show_condition_evaluation_mode,
16412                            &breakpoint_set_cmdlist,
16413                            &breakpoint_show_cmdlist);
16414
16415   add_com ("break-range", class_breakpoint, break_range_command, _("\
16416 Set a breakpoint for an address range.\n\
16417 break-range START-LOCATION, END-LOCATION\n\
16418 where START-LOCATION and END-LOCATION can be one of the following:\n\
16419   LINENUM, for that line in the current file,\n\
16420   FILE:LINENUM, for that line in that file,\n\
16421   +OFFSET, for that number of lines after the current line\n\
16422            or the start of the range\n\
16423   FUNCTION, for the first line in that function,\n\
16424   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16425   *ADDRESS, for the instruction at that address.\n\
16426 \n\
16427 The breakpoint will stop execution of the inferior whenever it executes\n\
16428 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16429 range (including START-LOCATION and END-LOCATION)."));
16430
16431   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16432 Set a dynamic printf at specified line or function.\n\
16433 dprintf location,format string,arg1,arg2,...\n\
16434 location may be a line number, function name, or \"*\" and an address.\n\
16435 If a line number is specified, break at start of code for that line.\n\
16436 If a function is specified, break at start of code for that function.\n\
16437 "));
16438   set_cmd_completer (c, location_completer);
16439
16440   add_setshow_enum_cmd ("dprintf-style", class_support,
16441                         dprintf_style_enums, &dprintf_style, _("\
16442 Set the style of usage for dynamic printf."), _("\
16443 Show the style of usage for dynamic printf."), _("\
16444 This setting chooses how GDB will do a dynamic printf.\n\
16445 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16446 console, as with the \"printf\" command.\n\
16447 If the value is \"call\", the print is done by calling a function in your\n\
16448 program; by default printf(), but you can choose a different function or\n\
16449 output stream by setting dprintf-function and dprintf-channel."),
16450                         update_dprintf_commands, NULL,
16451                         &setlist, &showlist);
16452
16453   dprintf_function = xstrdup ("printf");
16454   add_setshow_string_cmd ("dprintf-function", class_support,
16455                           &dprintf_function, _("\
16456 Set the function to use for dynamic printf"), _("\
16457 Show the function to use for dynamic printf"), NULL,
16458                           update_dprintf_commands, NULL,
16459                           &setlist, &showlist);
16460
16461   dprintf_channel = xstrdup ("");
16462   add_setshow_string_cmd ("dprintf-channel", class_support,
16463                           &dprintf_channel, _("\
16464 Set the channel to use for dynamic printf"), _("\
16465 Show the channel to use for dynamic printf"), NULL,
16466                           update_dprintf_commands, NULL,
16467                           &setlist, &showlist);
16468
16469   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16470                            &disconnected_dprintf, _("\
16471 Set whether dprintf continues after GDB disconnects."), _("\
16472 Show whether dprintf continues after GDB disconnects."), _("\
16473 Use this to let dprintf commands continue to hit and produce output\n\
16474 even if GDB disconnects or detaches from the target."),
16475                            NULL,
16476                            NULL,
16477                            &setlist, &showlist);
16478
16479   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16480 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16481 (target agent only) This is useful for formatted output in user-defined commands."));
16482
16483   automatic_hardware_breakpoints = 1;
16484
16485   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16486 }