2013-06-04 Gary Benson <gbenson@redhat.com>
[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 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   do_cleanups (old_cleanups);
2252
2253   if (ex.reason < 0)
2254     {
2255       /* If we got here, it means the command could not be parsed to a valid
2256          bytecode expression and thus can't be evaluated on the target's side.
2257          It's no use iterating through the other commands.  */
2258       return NULL;
2259     }
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     /* This function must physically remove breakpoints locations
3541        from the specified ptid, without modifying the breakpoint
3542        package's state.  Locations of type bp_loc_other are only
3543        maintained at GDB side.  So, there is no need to remove
3544        these bp_loc_other locations.  Moreover, removing these
3545        would modify the breakpoint package's state.  */
3546     if (bl->loc_type == bp_loc_other)
3547       continue;
3548
3549     if (bl->inserted)
3550       val |= remove_breakpoint_1 (bl, mark_inserted);
3551   }
3552
3553   /* Detach single-step breakpoints as well.  */
3554   detach_single_step_breakpoints ();
3555
3556   do_cleanups (old_chain);
3557   return val;
3558 }
3559
3560 /* Remove the breakpoint location BL from the current address space.
3561    Note that this is used to detach breakpoints from a child fork.
3562    When we get here, the child isn't in the inferior list, and neither
3563    do we have objects to represent its address space --- we should
3564    *not* look at bl->pspace->aspace here.  */
3565
3566 static int
3567 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3568 {
3569   int val;
3570
3571   /* BL is never in moribund_locations by our callers.  */
3572   gdb_assert (bl->owner != NULL);
3573
3574   if (bl->owner->enable_state == bp_permanent)
3575     /* Permanent breakpoints cannot be inserted or removed.  */
3576     return 0;
3577
3578   /* The type of none suggests that owner is actually deleted.
3579      This should not ever happen.  */
3580   gdb_assert (bl->owner->type != bp_none);
3581
3582   if (bl->loc_type == bp_loc_software_breakpoint
3583       || bl->loc_type == bp_loc_hardware_breakpoint)
3584     {
3585       /* "Normal" instruction breakpoint: either the standard
3586          trap-instruction bp (bp_breakpoint), or a
3587          bp_hardware_breakpoint.  */
3588
3589       /* First check to see if we have to handle an overlay.  */
3590       if (overlay_debugging == ovly_off
3591           || bl->section == NULL
3592           || !(section_is_overlay (bl->section)))
3593         {
3594           /* No overlay handling: just remove the breakpoint.  */
3595           val = bl->owner->ops->remove_location (bl);
3596         }
3597       else
3598         {
3599           /* This breakpoint is in an overlay section.
3600              Did we set a breakpoint at the LMA?  */
3601           if (!overlay_events_enabled)
3602               {
3603                 /* Yes -- overlay event support is not active, so we
3604                    should have set a breakpoint at the LMA.  Remove it.  
3605                 */
3606                 /* Ignore any failures: if the LMA is in ROM, we will
3607                    have already warned when we failed to insert it.  */
3608                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3609                   target_remove_hw_breakpoint (bl->gdbarch,
3610                                                &bl->overlay_target_info);
3611                 else
3612                   target_remove_breakpoint (bl->gdbarch,
3613                                             &bl->overlay_target_info);
3614               }
3615           /* Did we set a breakpoint at the VMA? 
3616              If so, we will have marked the breakpoint 'inserted'.  */
3617           if (bl->inserted)
3618             {
3619               /* Yes -- remove it.  Previously we did not bother to
3620                  remove the breakpoint if the section had been
3621                  unmapped, but let's not rely on that being safe.  We
3622                  don't know what the overlay manager might do.  */
3623
3624               /* However, we should remove *software* breakpoints only
3625                  if the section is still mapped, or else we overwrite
3626                  wrong code with the saved shadow contents.  */
3627               if (bl->loc_type == bp_loc_hardware_breakpoint
3628                   || section_is_mapped (bl->section))
3629                 val = bl->owner->ops->remove_location (bl);
3630               else
3631                 val = 0;
3632             }
3633           else
3634             {
3635               /* No -- not inserted, so no need to remove.  No error.  */
3636               val = 0;
3637             }
3638         }
3639
3640       /* In some cases, we might not be able to remove a breakpoint
3641          in a shared library that has already been removed, but we
3642          have not yet processed the shlib unload event.  */
3643       if (val && solib_name_from_address (bl->pspace, bl->address))
3644         val = 0;
3645
3646       if (val)
3647         return val;
3648       bl->inserted = (is == mark_inserted);
3649     }
3650   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3651     {
3652       gdb_assert (bl->owner->ops != NULL
3653                   && bl->owner->ops->remove_location != NULL);
3654
3655       bl->inserted = (is == mark_inserted);
3656       bl->owner->ops->remove_location (bl);
3657
3658       /* Failure to remove any of the hardware watchpoints comes here.  */
3659       if ((is == mark_uninserted) && (bl->inserted))
3660         warning (_("Could not remove hardware watchpoint %d."),
3661                  bl->owner->number);
3662     }
3663   else if (bl->owner->type == bp_catchpoint
3664            && breakpoint_enabled (bl->owner)
3665            && !bl->duplicate)
3666     {
3667       gdb_assert (bl->owner->ops != NULL
3668                   && bl->owner->ops->remove_location != NULL);
3669
3670       val = bl->owner->ops->remove_location (bl);
3671       if (val)
3672         return val;
3673
3674       bl->inserted = (is == mark_inserted);
3675     }
3676
3677   return 0;
3678 }
3679
3680 static int
3681 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3682 {
3683   int ret;
3684   struct cleanup *old_chain;
3685
3686   /* BL is never in moribund_locations by our callers.  */
3687   gdb_assert (bl->owner != NULL);
3688
3689   if (bl->owner->enable_state == bp_permanent)
3690     /* Permanent breakpoints cannot be inserted or removed.  */
3691     return 0;
3692
3693   /* The type of none suggests that owner is actually deleted.
3694      This should not ever happen.  */
3695   gdb_assert (bl->owner->type != bp_none);
3696
3697   old_chain = save_current_space_and_thread ();
3698
3699   switch_to_program_space_and_thread (bl->pspace);
3700
3701   ret = remove_breakpoint_1 (bl, is);
3702
3703   do_cleanups (old_chain);
3704   return ret;
3705 }
3706
3707 /* Clear the "inserted" flag in all breakpoints.  */
3708
3709 void
3710 mark_breakpoints_out (void)
3711 {
3712   struct bp_location *bl, **blp_tmp;
3713
3714   ALL_BP_LOCATIONS (bl, blp_tmp)
3715     if (bl->pspace == current_program_space)
3716       bl->inserted = 0;
3717 }
3718
3719 /* Clear the "inserted" flag in all breakpoints and delete any
3720    breakpoints which should go away between runs of the program.
3721
3722    Plus other such housekeeping that has to be done for breakpoints
3723    between runs.
3724
3725    Note: this function gets called at the end of a run (by
3726    generic_mourn_inferior) and when a run begins (by
3727    init_wait_for_inferior).  */
3728
3729
3730
3731 void
3732 breakpoint_init_inferior (enum inf_context context)
3733 {
3734   struct breakpoint *b, *b_tmp;
3735   struct bp_location *bl, **blp_tmp;
3736   int ix;
3737   struct program_space *pspace = current_program_space;
3738
3739   /* If breakpoint locations are shared across processes, then there's
3740      nothing to do.  */
3741   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3742     return;
3743
3744   ALL_BP_LOCATIONS (bl, blp_tmp)
3745   {
3746     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3747     if (bl->pspace == pspace
3748         && bl->owner->enable_state != bp_permanent)
3749       bl->inserted = 0;
3750   }
3751
3752   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3753   {
3754     if (b->loc && b->loc->pspace != pspace)
3755       continue;
3756
3757     switch (b->type)
3758       {
3759       case bp_call_dummy:
3760       case bp_longjmp_call_dummy:
3761
3762         /* If the call dummy breakpoint is at the entry point it will
3763            cause problems when the inferior is rerun, so we better get
3764            rid of it.  */
3765
3766       case bp_watchpoint_scope:
3767
3768         /* Also get rid of scope breakpoints.  */
3769
3770       case bp_shlib_event:
3771
3772         /* Also remove solib event breakpoints.  Their addresses may
3773            have changed since the last time we ran the program.
3774            Actually we may now be debugging against different target;
3775            and so the solib backend that installed this breakpoint may
3776            not be used in by the target.  E.g.,
3777
3778            (gdb) file prog-linux
3779            (gdb) run               # native linux target
3780            ...
3781            (gdb) kill
3782            (gdb) file prog-win.exe
3783            (gdb) tar rem :9999     # remote Windows gdbserver.
3784         */
3785
3786       case bp_step_resume:
3787
3788         /* Also remove step-resume breakpoints.  */
3789
3790         delete_breakpoint (b);
3791         break;
3792
3793       case bp_watchpoint:
3794       case bp_hardware_watchpoint:
3795       case bp_read_watchpoint:
3796       case bp_access_watchpoint:
3797         {
3798           struct watchpoint *w = (struct watchpoint *) b;
3799
3800           /* Likewise for watchpoints on local expressions.  */
3801           if (w->exp_valid_block != NULL)
3802             delete_breakpoint (b);
3803           else if (context == inf_starting)
3804             {
3805               /* Reset val field to force reread of starting value in
3806                  insert_breakpoints.  */
3807               if (w->val)
3808                 value_free (w->val);
3809               w->val = NULL;
3810               w->val_valid = 0;
3811           }
3812         }
3813         break;
3814       default:
3815         break;
3816       }
3817   }
3818
3819   /* Get rid of the moribund locations.  */
3820   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3821     decref_bp_location (&bl);
3822   VEC_free (bp_location_p, moribund_locations);
3823 }
3824
3825 /* These functions concern about actual breakpoints inserted in the
3826    target --- to e.g. check if we need to do decr_pc adjustment or if
3827    we need to hop over the bkpt --- so we check for address space
3828    match, not program space.  */
3829
3830 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3831    exists at PC.  It returns ordinary_breakpoint_here if it's an
3832    ordinary breakpoint, or permanent_breakpoint_here if it's a
3833    permanent breakpoint.
3834    - When continuing from a location with an ordinary breakpoint, we
3835      actually single step once before calling insert_breakpoints.
3836    - When continuing from a location with a permanent breakpoint, we
3837      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3838      the target, to advance the PC past the breakpoint.  */
3839
3840 enum breakpoint_here
3841 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3842 {
3843   struct bp_location *bl, **blp_tmp;
3844   int any_breakpoint_here = 0;
3845
3846   ALL_BP_LOCATIONS (bl, blp_tmp)
3847     {
3848       if (bl->loc_type != bp_loc_software_breakpoint
3849           && bl->loc_type != bp_loc_hardware_breakpoint)
3850         continue;
3851
3852       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3853       if ((breakpoint_enabled (bl->owner)
3854            || bl->owner->enable_state == bp_permanent)
3855           && breakpoint_location_address_match (bl, aspace, pc))
3856         {
3857           if (overlay_debugging 
3858               && section_is_overlay (bl->section)
3859               && !section_is_mapped (bl->section))
3860             continue;           /* unmapped overlay -- can't be a match */
3861           else if (bl->owner->enable_state == bp_permanent)
3862             return permanent_breakpoint_here;
3863           else
3864             any_breakpoint_here = 1;
3865         }
3866     }
3867
3868   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3869 }
3870
3871 /* Return true if there's a moribund breakpoint at PC.  */
3872
3873 int
3874 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3875 {
3876   struct bp_location *loc;
3877   int ix;
3878
3879   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3880     if (breakpoint_location_address_match (loc, aspace, pc))
3881       return 1;
3882
3883   return 0;
3884 }
3885
3886 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3887    inserted using regular breakpoint_chain / bp_location array
3888    mechanism.  This does not check for single-step breakpoints, which
3889    are inserted and removed using direct target manipulation.  */
3890
3891 int
3892 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3893                                     CORE_ADDR pc)
3894 {
3895   struct bp_location *bl, **blp_tmp;
3896
3897   ALL_BP_LOCATIONS (bl, blp_tmp)
3898     {
3899       if (bl->loc_type != bp_loc_software_breakpoint
3900           && bl->loc_type != bp_loc_hardware_breakpoint)
3901         continue;
3902
3903       if (bl->inserted
3904           && breakpoint_location_address_match (bl, aspace, pc))
3905         {
3906           if (overlay_debugging 
3907               && section_is_overlay (bl->section)
3908               && !section_is_mapped (bl->section))
3909             continue;           /* unmapped overlay -- can't be a match */
3910           else
3911             return 1;
3912         }
3913     }
3914   return 0;
3915 }
3916
3917 /* Returns non-zero iff there's either regular breakpoint
3918    or a single step breakpoint inserted at PC.  */
3919
3920 int
3921 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3922 {
3923   if (regular_breakpoint_inserted_here_p (aspace, pc))
3924     return 1;
3925
3926   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3927     return 1;
3928
3929   return 0;
3930 }
3931
3932 /* This function returns non-zero iff there is a software breakpoint
3933    inserted at PC.  */
3934
3935 int
3936 software_breakpoint_inserted_here_p (struct address_space *aspace,
3937                                      CORE_ADDR pc)
3938 {
3939   struct bp_location *bl, **blp_tmp;
3940
3941   ALL_BP_LOCATIONS (bl, blp_tmp)
3942     {
3943       if (bl->loc_type != bp_loc_software_breakpoint)
3944         continue;
3945
3946       if (bl->inserted
3947           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3948                                        aspace, pc))
3949         {
3950           if (overlay_debugging 
3951               && section_is_overlay (bl->section)
3952               && !section_is_mapped (bl->section))
3953             continue;           /* unmapped overlay -- can't be a match */
3954           else
3955             return 1;
3956         }
3957     }
3958
3959   /* Also check for software single-step breakpoints.  */
3960   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3961     return 1;
3962
3963   return 0;
3964 }
3965
3966 int
3967 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3968                                        CORE_ADDR addr, ULONGEST len)
3969 {
3970   struct breakpoint *bpt;
3971
3972   ALL_BREAKPOINTS (bpt)
3973     {
3974       struct bp_location *loc;
3975
3976       if (bpt->type != bp_hardware_watchpoint
3977           && bpt->type != bp_access_watchpoint)
3978         continue;
3979
3980       if (!breakpoint_enabled (bpt))
3981         continue;
3982
3983       for (loc = bpt->loc; loc; loc = loc->next)
3984         if (loc->pspace->aspace == aspace && loc->inserted)
3985           {
3986             CORE_ADDR l, h;
3987
3988             /* Check for intersection.  */
3989             l = max (loc->address, addr);
3990             h = min (loc->address + loc->length, addr + len);
3991             if (l < h)
3992               return 1;
3993           }
3994     }
3995   return 0;
3996 }
3997
3998 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3999    PC is valid for process/thread PTID.  */
4000
4001 int
4002 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4003                          ptid_t ptid)
4004 {
4005   struct bp_location *bl, **blp_tmp;
4006   /* The thread and task IDs associated to PTID, computed lazily.  */
4007   int thread = -1;
4008   int task = 0;
4009   
4010   ALL_BP_LOCATIONS (bl, blp_tmp)
4011     {
4012       if (bl->loc_type != bp_loc_software_breakpoint
4013           && bl->loc_type != bp_loc_hardware_breakpoint)
4014         continue;
4015
4016       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4017       if (!breakpoint_enabled (bl->owner)
4018           && bl->owner->enable_state != bp_permanent)
4019         continue;
4020
4021       if (!breakpoint_location_address_match (bl, aspace, pc))
4022         continue;
4023
4024       if (bl->owner->thread != -1)
4025         {
4026           /* This is a thread-specific breakpoint.  Check that ptid
4027              matches that thread.  If thread hasn't been computed yet,
4028              it is now time to do so.  */
4029           if (thread == -1)
4030             thread = pid_to_thread_id (ptid);
4031           if (bl->owner->thread != thread)
4032             continue;
4033         }
4034
4035       if (bl->owner->task != 0)
4036         {
4037           /* This is a task-specific breakpoint.  Check that ptid
4038              matches that task.  If task hasn't been computed yet,
4039              it is now time to do so.  */
4040           if (task == 0)
4041             task = ada_get_task_number (ptid);
4042           if (bl->owner->task != task)
4043             continue;
4044         }
4045
4046       if (overlay_debugging 
4047           && section_is_overlay (bl->section)
4048           && !section_is_mapped (bl->section))
4049         continue;           /* unmapped overlay -- can't be a match */
4050
4051       return 1;
4052     }
4053
4054   return 0;
4055 }
4056 \f
4057
4058 /* bpstat stuff.  External routines' interfaces are documented
4059    in breakpoint.h.  */
4060
4061 int
4062 is_catchpoint (struct breakpoint *ep)
4063 {
4064   return (ep->type == bp_catchpoint);
4065 }
4066
4067 /* Frees any storage that is part of a bpstat.  Does not walk the
4068    'next' chain.  */
4069
4070 static void
4071 bpstat_free (bpstat bs)
4072 {
4073   if (bs->old_val != NULL)
4074     value_free (bs->old_val);
4075   decref_counted_command_line (&bs->commands);
4076   decref_bp_location (&bs->bp_location_at);
4077   xfree (bs);
4078 }
4079
4080 /* Clear a bpstat so that it says we are not at any breakpoint.
4081    Also free any storage that is part of a bpstat.  */
4082
4083 void
4084 bpstat_clear (bpstat *bsp)
4085 {
4086   bpstat p;
4087   bpstat q;
4088
4089   if (bsp == 0)
4090     return;
4091   p = *bsp;
4092   while (p != NULL)
4093     {
4094       q = p->next;
4095       bpstat_free (p);
4096       p = q;
4097     }
4098   *bsp = NULL;
4099 }
4100
4101 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4102    is part of the bpstat is copied as well.  */
4103
4104 bpstat
4105 bpstat_copy (bpstat bs)
4106 {
4107   bpstat p = NULL;
4108   bpstat tmp;
4109   bpstat retval = NULL;
4110
4111   if (bs == NULL)
4112     return bs;
4113
4114   for (; bs != NULL; bs = bs->next)
4115     {
4116       tmp = (bpstat) xmalloc (sizeof (*tmp));
4117       memcpy (tmp, bs, sizeof (*tmp));
4118       incref_counted_command_line (tmp->commands);
4119       incref_bp_location (tmp->bp_location_at);
4120       if (bs->old_val != NULL)
4121         {
4122           tmp->old_val = value_copy (bs->old_val);
4123           release_value (tmp->old_val);
4124         }
4125
4126       if (p == NULL)
4127         /* This is the first thing in the chain.  */
4128         retval = tmp;
4129       else
4130         p->next = tmp;
4131       p = tmp;
4132     }
4133   p->next = NULL;
4134   return retval;
4135 }
4136
4137 /* Find the bpstat associated with this breakpoint.  */
4138
4139 bpstat
4140 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4141 {
4142   if (bsp == NULL)
4143     return NULL;
4144
4145   for (; bsp != NULL; bsp = bsp->next)
4146     {
4147       if (bsp->breakpoint_at == breakpoint)
4148         return bsp;
4149     }
4150   return NULL;
4151 }
4152
4153 /* See breakpoint.h.  */
4154
4155 enum bpstat_signal_value
4156 bpstat_explains_signal (bpstat bsp)
4157 {
4158   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4159
4160   for (; bsp != NULL; bsp = bsp->next)
4161     {
4162       /* Ensure that, if we ever entered this loop, then we at least
4163          return BPSTAT_SIGNAL_HIDE.  */
4164       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4165
4166       if (bsp->breakpoint_at != NULL)
4167         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4168
4169       if (newval > result)
4170         result = newval;
4171     }
4172
4173   return result;
4174 }
4175
4176 /* Put in *NUM the breakpoint number of the first breakpoint we are
4177    stopped at.  *BSP upon return is a bpstat which points to the
4178    remaining breakpoints stopped at (but which is not guaranteed to be
4179    good for anything but further calls to bpstat_num).
4180
4181    Return 0 if passed a bpstat which does not indicate any breakpoints.
4182    Return -1 if stopped at a breakpoint that has been deleted since
4183    we set it.
4184    Return 1 otherwise.  */
4185
4186 int
4187 bpstat_num (bpstat *bsp, int *num)
4188 {
4189   struct breakpoint *b;
4190
4191   if ((*bsp) == NULL)
4192     return 0;                   /* No more breakpoint values */
4193
4194   /* We assume we'll never have several bpstats that correspond to a
4195      single breakpoint -- otherwise, this function might return the
4196      same number more than once and this will look ugly.  */
4197   b = (*bsp)->breakpoint_at;
4198   *bsp = (*bsp)->next;
4199   if (b == NULL)
4200     return -1;                  /* breakpoint that's been deleted since */
4201
4202   *num = b->number;             /* We have its number */
4203   return 1;
4204 }
4205
4206 /* See breakpoint.h.  */
4207
4208 void
4209 bpstat_clear_actions (void)
4210 {
4211   struct thread_info *tp;
4212   bpstat bs;
4213
4214   if (ptid_equal (inferior_ptid, null_ptid))
4215     return;
4216
4217   tp = find_thread_ptid (inferior_ptid);
4218   if (tp == NULL)
4219     return;
4220
4221   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4222     {
4223       decref_counted_command_line (&bs->commands);
4224
4225       if (bs->old_val != NULL)
4226         {
4227           value_free (bs->old_val);
4228           bs->old_val = NULL;
4229         }
4230     }
4231 }
4232
4233 /* Called when a command is about to proceed the inferior.  */
4234
4235 static void
4236 breakpoint_about_to_proceed (void)
4237 {
4238   if (!ptid_equal (inferior_ptid, null_ptid))
4239     {
4240       struct thread_info *tp = inferior_thread ();
4241
4242       /* Allow inferior function calls in breakpoint commands to not
4243          interrupt the command list.  When the call finishes
4244          successfully, the inferior will be standing at the same
4245          breakpoint as if nothing happened.  */
4246       if (tp->control.in_infcall)
4247         return;
4248     }
4249
4250   breakpoint_proceeded = 1;
4251 }
4252
4253 /* Stub for cleaning up our state if we error-out of a breakpoint
4254    command.  */
4255 static void
4256 cleanup_executing_breakpoints (void *ignore)
4257 {
4258   executing_breakpoint_commands = 0;
4259 }
4260
4261 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4262    or its equivalent.  */
4263
4264 static int
4265 command_line_is_silent (struct command_line *cmd)
4266 {
4267   return cmd && (strcmp ("silent", cmd->line) == 0
4268                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4269 }
4270
4271 /* Execute all the commands associated with all the breakpoints at
4272    this location.  Any of these commands could cause the process to
4273    proceed beyond this point, etc.  We look out for such changes by
4274    checking the global "breakpoint_proceeded" after each command.
4275
4276    Returns true if a breakpoint command resumed the inferior.  In that
4277    case, it is the caller's responsibility to recall it again with the
4278    bpstat of the current thread.  */
4279
4280 static int
4281 bpstat_do_actions_1 (bpstat *bsp)
4282 {
4283   bpstat bs;
4284   struct cleanup *old_chain;
4285   int again = 0;
4286
4287   /* Avoid endless recursion if a `source' command is contained
4288      in bs->commands.  */
4289   if (executing_breakpoint_commands)
4290     return 0;
4291
4292   executing_breakpoint_commands = 1;
4293   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4294
4295   prevent_dont_repeat ();
4296
4297   /* This pointer will iterate over the list of bpstat's.  */
4298   bs = *bsp;
4299
4300   breakpoint_proceeded = 0;
4301   for (; bs != NULL; bs = bs->next)
4302     {
4303       struct counted_command_line *ccmd;
4304       struct command_line *cmd;
4305       struct cleanup *this_cmd_tree_chain;
4306
4307       /* Take ownership of the BSP's command tree, if it has one.
4308
4309          The command tree could legitimately contain commands like
4310          'step' and 'next', which call clear_proceed_status, which
4311          frees stop_bpstat's command tree.  To make sure this doesn't
4312          free the tree we're executing out from under us, we need to
4313          take ownership of the tree ourselves.  Since a given bpstat's
4314          commands are only executed once, we don't need to copy it; we
4315          can clear the pointer in the bpstat, and make sure we free
4316          the tree when we're done.  */
4317       ccmd = bs->commands;
4318       bs->commands = NULL;
4319       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4320       cmd = ccmd ? ccmd->commands : NULL;
4321       if (command_line_is_silent (cmd))
4322         {
4323           /* The action has been already done by bpstat_stop_status.  */
4324           cmd = cmd->next;
4325         }
4326
4327       while (cmd != NULL)
4328         {
4329           execute_control_command (cmd);
4330
4331           if (breakpoint_proceeded)
4332             break;
4333           else
4334             cmd = cmd->next;
4335         }
4336
4337       /* We can free this command tree now.  */
4338       do_cleanups (this_cmd_tree_chain);
4339
4340       if (breakpoint_proceeded)
4341         {
4342           if (target_can_async_p ())
4343             /* If we are in async mode, then the target might be still
4344                running, not stopped at any breakpoint, so nothing for
4345                us to do here -- just return to the event loop.  */
4346             ;
4347           else
4348             /* In sync mode, when execute_control_command returns
4349                we're already standing on the next breakpoint.
4350                Breakpoint commands for that stop were not run, since
4351                execute_command does not run breakpoint commands --
4352                only command_line_handler does, but that one is not
4353                involved in execution of breakpoint commands.  So, we
4354                can now execute breakpoint commands.  It should be
4355                noted that making execute_command do bpstat actions is
4356                not an option -- in this case we'll have recursive
4357                invocation of bpstat for each breakpoint with a
4358                command, and can easily blow up GDB stack.  Instead, we
4359                return true, which will trigger the caller to recall us
4360                with the new stop_bpstat.  */
4361             again = 1;
4362           break;
4363         }
4364     }
4365   do_cleanups (old_chain);
4366   return again;
4367 }
4368
4369 void
4370 bpstat_do_actions (void)
4371 {
4372   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4373
4374   /* Do any commands attached to breakpoint we are stopped at.  */
4375   while (!ptid_equal (inferior_ptid, null_ptid)
4376          && target_has_execution
4377          && !is_exited (inferior_ptid)
4378          && !is_executing (inferior_ptid))
4379     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4380        and only return when it is stopped at the next breakpoint, we
4381        keep doing breakpoint actions until it returns false to
4382        indicate the inferior was not resumed.  */
4383     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4384       break;
4385
4386   discard_cleanups (cleanup_if_error);
4387 }
4388
4389 /* Print out the (old or new) value associated with a watchpoint.  */
4390
4391 static void
4392 watchpoint_value_print (struct value *val, struct ui_file *stream)
4393 {
4394   if (val == NULL)
4395     fprintf_unfiltered (stream, _("<unreadable>"));
4396   else
4397     {
4398       struct value_print_options opts;
4399       get_user_print_options (&opts);
4400       value_print (val, stream, &opts);
4401     }
4402 }
4403
4404 /* Generic routine for printing messages indicating why we
4405    stopped.  The behavior of this function depends on the value
4406    'print_it' in the bpstat structure.  Under some circumstances we
4407    may decide not to print anything here and delegate the task to
4408    normal_stop().  */
4409
4410 static enum print_stop_action
4411 print_bp_stop_message (bpstat bs)
4412 {
4413   switch (bs->print_it)
4414     {
4415     case print_it_noop:
4416       /* Nothing should be printed for this bpstat entry.  */
4417       return PRINT_UNKNOWN;
4418       break;
4419
4420     case print_it_done:
4421       /* We still want to print the frame, but we already printed the
4422          relevant messages.  */
4423       return PRINT_SRC_AND_LOC;
4424       break;
4425
4426     case print_it_normal:
4427       {
4428         struct breakpoint *b = bs->breakpoint_at;
4429
4430         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4431            which has since been deleted.  */
4432         if (b == NULL)
4433           return PRINT_UNKNOWN;
4434
4435         /* Normal case.  Call the breakpoint's print_it method.  */
4436         return b->ops->print_it (bs);
4437       }
4438       break;
4439
4440     default:
4441       internal_error (__FILE__, __LINE__,
4442                       _("print_bp_stop_message: unrecognized enum value"));
4443       break;
4444     }
4445 }
4446
4447 /* A helper function that prints a shared library stopped event.  */
4448
4449 static void
4450 print_solib_event (int is_catchpoint)
4451 {
4452   int any_deleted
4453     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4454   int any_added
4455     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4456
4457   if (!is_catchpoint)
4458     {
4459       if (any_added || any_deleted)
4460         ui_out_text (current_uiout,
4461                      _("Stopped due to shared library event:\n"));
4462       else
4463         ui_out_text (current_uiout,
4464                      _("Stopped due to shared library event (no "
4465                        "libraries added or removed)\n"));
4466     }
4467
4468   if (ui_out_is_mi_like_p (current_uiout))
4469     ui_out_field_string (current_uiout, "reason",
4470                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4471
4472   if (any_deleted)
4473     {
4474       struct cleanup *cleanup;
4475       char *name;
4476       int ix;
4477
4478       ui_out_text (current_uiout, _("  Inferior unloaded "));
4479       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4480                                                     "removed");
4481       for (ix = 0;
4482            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4483                         ix, name);
4484            ++ix)
4485         {
4486           if (ix > 0)
4487             ui_out_text (current_uiout, "    ");
4488           ui_out_field_string (current_uiout, "library", name);
4489           ui_out_text (current_uiout, "\n");
4490         }
4491
4492       do_cleanups (cleanup);
4493     }
4494
4495   if (any_added)
4496     {
4497       struct so_list *iter;
4498       int ix;
4499       struct cleanup *cleanup;
4500
4501       ui_out_text (current_uiout, _("  Inferior loaded "));
4502       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4503                                                     "added");
4504       for (ix = 0;
4505            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4506                         ix, iter);
4507            ++ix)
4508         {
4509           if (ix > 0)
4510             ui_out_text (current_uiout, "    ");
4511           ui_out_field_string (current_uiout, "library", iter->so_name);
4512           ui_out_text (current_uiout, "\n");
4513         }
4514
4515       do_cleanups (cleanup);
4516     }
4517 }
4518
4519 /* Print a message indicating what happened.  This is called from
4520    normal_stop().  The input to this routine is the head of the bpstat
4521    list - a list of the eventpoints that caused this stop.  KIND is
4522    the target_waitkind for the stopping event.  This
4523    routine calls the generic print routine for printing a message
4524    about reasons for stopping.  This will print (for example) the
4525    "Breakpoint n," part of the output.  The return value of this
4526    routine is one of:
4527
4528    PRINT_UNKNOWN: Means we printed nothing.
4529    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4530    code to print the location.  An example is 
4531    "Breakpoint 1, " which should be followed by
4532    the location.
4533    PRINT_SRC_ONLY: Means we printed something, but there is no need
4534    to also print the location part of the message.
4535    An example is the catch/throw messages, which
4536    don't require a location appended to the end.
4537    PRINT_NOTHING: We have done some printing and we don't need any 
4538    further info to be printed.  */
4539
4540 enum print_stop_action
4541 bpstat_print (bpstat bs, int kind)
4542 {
4543   int val;
4544
4545   /* Maybe another breakpoint in the chain caused us to stop.
4546      (Currently all watchpoints go on the bpstat whether hit or not.
4547      That probably could (should) be changed, provided care is taken
4548      with respect to bpstat_explains_signal).  */
4549   for (; bs; bs = bs->next)
4550     {
4551       val = print_bp_stop_message (bs);
4552       if (val == PRINT_SRC_ONLY 
4553           || val == PRINT_SRC_AND_LOC 
4554           || val == PRINT_NOTHING)
4555         return val;
4556     }
4557
4558   /* If we had hit a shared library event breakpoint,
4559      print_bp_stop_message would print out this message.  If we hit an
4560      OS-level shared library event, do the same thing.  */
4561   if (kind == TARGET_WAITKIND_LOADED)
4562     {
4563       print_solib_event (0);
4564       return PRINT_NOTHING;
4565     }
4566
4567   /* We reached the end of the chain, or we got a null BS to start
4568      with and nothing was printed.  */
4569   return PRINT_UNKNOWN;
4570 }
4571
4572 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4573    used inside a catch_errors to evaluate the breakpoint condition.
4574    The argument is a "struct expression *" that has been cast to a
4575    "char *" to make it pass through catch_errors.  */
4576
4577 static int
4578 breakpoint_cond_eval (void *exp)
4579 {
4580   struct value *mark = value_mark ();
4581   int i = !value_true (evaluate_expression ((struct expression *) exp));
4582
4583   value_free_to_mark (mark);
4584   return i;
4585 }
4586
4587 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4588
4589 static bpstat
4590 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4591 {
4592   bpstat bs;
4593
4594   bs = (bpstat) xmalloc (sizeof (*bs));
4595   bs->next = NULL;
4596   **bs_link_pointer = bs;
4597   *bs_link_pointer = &bs->next;
4598   bs->breakpoint_at = bl->owner;
4599   bs->bp_location_at = bl;
4600   incref_bp_location (bl);
4601   /* If the condition is false, etc., don't do the commands.  */
4602   bs->commands = NULL;
4603   bs->old_val = NULL;
4604   bs->print_it = print_it_normal;
4605   return bs;
4606 }
4607 \f
4608 /* The target has stopped with waitstatus WS.  Check if any hardware
4609    watchpoints have triggered, according to the target.  */
4610
4611 int
4612 watchpoints_triggered (struct target_waitstatus *ws)
4613 {
4614   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4615   CORE_ADDR addr;
4616   struct breakpoint *b;
4617
4618   if (!stopped_by_watchpoint)
4619     {
4620       /* We were not stopped by a watchpoint.  Mark all watchpoints
4621          as not triggered.  */
4622       ALL_BREAKPOINTS (b)
4623         if (is_hardware_watchpoint (b))
4624           {
4625             struct watchpoint *w = (struct watchpoint *) b;
4626
4627             w->watchpoint_triggered = watch_triggered_no;
4628           }
4629
4630       return 0;
4631     }
4632
4633   if (!target_stopped_data_address (&current_target, &addr))
4634     {
4635       /* We were stopped by a watchpoint, but we don't know where.
4636          Mark all watchpoints as unknown.  */
4637       ALL_BREAKPOINTS (b)
4638         if (is_hardware_watchpoint (b))
4639           {
4640             struct watchpoint *w = (struct watchpoint *) b;
4641
4642             w->watchpoint_triggered = watch_triggered_unknown;
4643           }
4644
4645       return stopped_by_watchpoint;
4646     }
4647
4648   /* The target could report the data address.  Mark watchpoints
4649      affected by this data address as triggered, and all others as not
4650      triggered.  */
4651
4652   ALL_BREAKPOINTS (b)
4653     if (is_hardware_watchpoint (b))
4654       {
4655         struct watchpoint *w = (struct watchpoint *) b;
4656         struct bp_location *loc;
4657
4658         w->watchpoint_triggered = watch_triggered_no;
4659         for (loc = b->loc; loc; loc = loc->next)
4660           {
4661             if (is_masked_watchpoint (b))
4662               {
4663                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4664                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4665
4666                 if (newaddr == start)
4667                   {
4668                     w->watchpoint_triggered = watch_triggered_yes;
4669                     break;
4670                   }
4671               }
4672             /* Exact match not required.  Within range is sufficient.  */
4673             else if (target_watchpoint_addr_within_range (&current_target,
4674                                                          addr, loc->address,
4675                                                          loc->length))
4676               {
4677                 w->watchpoint_triggered = watch_triggered_yes;
4678                 break;
4679               }
4680           }
4681       }
4682
4683   return 1;
4684 }
4685
4686 /* Possible return values for watchpoint_check (this can't be an enum
4687    because of check_errors).  */
4688 /* The watchpoint has been deleted.  */
4689 #define WP_DELETED 1
4690 /* The value has changed.  */
4691 #define WP_VALUE_CHANGED 2
4692 /* The value has not changed.  */
4693 #define WP_VALUE_NOT_CHANGED 3
4694 /* Ignore this watchpoint, no matter if the value changed or not.  */
4695 #define WP_IGNORE 4
4696
4697 #define BP_TEMPFLAG 1
4698 #define BP_HARDWAREFLAG 2
4699
4700 /* Evaluate watchpoint condition expression and check if its value
4701    changed.
4702
4703    P should be a pointer to struct bpstat, but is defined as a void *
4704    in order for this function to be usable with catch_errors.  */
4705
4706 static int
4707 watchpoint_check (void *p)
4708 {
4709   bpstat bs = (bpstat) p;
4710   struct watchpoint *b;
4711   struct frame_info *fr;
4712   int within_current_scope;
4713
4714   /* BS is built from an existing struct breakpoint.  */
4715   gdb_assert (bs->breakpoint_at != NULL);
4716   b = (struct watchpoint *) bs->breakpoint_at;
4717
4718   /* If this is a local watchpoint, we only want to check if the
4719      watchpoint frame is in scope if the current thread is the thread
4720      that was used to create the watchpoint.  */
4721   if (!watchpoint_in_thread_scope (b))
4722     return WP_IGNORE;
4723
4724   if (b->exp_valid_block == NULL)
4725     within_current_scope = 1;
4726   else
4727     {
4728       struct frame_info *frame = get_current_frame ();
4729       struct gdbarch *frame_arch = get_frame_arch (frame);
4730       CORE_ADDR frame_pc = get_frame_pc (frame);
4731
4732       /* in_function_epilogue_p() returns a non-zero value if we're
4733          still in the function but the stack frame has already been
4734          invalidated.  Since we can't rely on the values of local
4735          variables after the stack has been destroyed, we are treating
4736          the watchpoint in that state as `not changed' without further
4737          checking.  Don't mark watchpoints as changed if the current
4738          frame is in an epilogue - even if they are in some other
4739          frame, our view of the stack is likely to be wrong and
4740          frame_find_by_id could error out.  */
4741       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4742         return WP_IGNORE;
4743
4744       fr = frame_find_by_id (b->watchpoint_frame);
4745       within_current_scope = (fr != NULL);
4746
4747       /* If we've gotten confused in the unwinder, we might have
4748          returned a frame that can't describe this variable.  */
4749       if (within_current_scope)
4750         {
4751           struct symbol *function;
4752
4753           function = get_frame_function (fr);
4754           if (function == NULL
4755               || !contained_in (b->exp_valid_block,
4756                                 SYMBOL_BLOCK_VALUE (function)))
4757             within_current_scope = 0;
4758         }
4759
4760       if (within_current_scope)
4761         /* If we end up stopping, the current frame will get selected
4762            in normal_stop.  So this call to select_frame won't affect
4763            the user.  */
4764         select_frame (fr);
4765     }
4766
4767   if (within_current_scope)
4768     {
4769       /* We use value_{,free_to_}mark because it could be a *long*
4770          time before we return to the command level and call
4771          free_all_values.  We can't call free_all_values because we
4772          might be in the middle of evaluating a function call.  */
4773
4774       int pc = 0;
4775       struct value *mark;
4776       struct value *new_val;
4777
4778       if (is_masked_watchpoint (&b->base))
4779         /* Since we don't know the exact trigger address (from
4780            stopped_data_address), just tell the user we've triggered
4781            a mask watchpoint.  */
4782         return WP_VALUE_CHANGED;
4783
4784       mark = value_mark ();
4785       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4786
4787       /* We use value_equal_contents instead of value_equal because
4788          the latter coerces an array to a pointer, thus comparing just
4789          the address of the array instead of its contents.  This is
4790          not what we want.  */
4791       if ((b->val != NULL) != (new_val != NULL)
4792           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4793         {
4794           if (new_val != NULL)
4795             {
4796               release_value (new_val);
4797               value_free_to_mark (mark);
4798             }
4799           bs->old_val = b->val;
4800           b->val = new_val;
4801           b->val_valid = 1;
4802           return WP_VALUE_CHANGED;
4803         }
4804       else
4805         {
4806           /* Nothing changed.  */
4807           value_free_to_mark (mark);
4808           return WP_VALUE_NOT_CHANGED;
4809         }
4810     }
4811   else
4812     {
4813       struct ui_out *uiout = current_uiout;
4814
4815       /* This seems like the only logical thing to do because
4816          if we temporarily ignored the watchpoint, then when
4817          we reenter the block in which it is valid it contains
4818          garbage (in the case of a function, it may have two
4819          garbage values, one before and one after the prologue).
4820          So we can't even detect the first assignment to it and
4821          watch after that (since the garbage may or may not equal
4822          the first value assigned).  */
4823       /* We print all the stop information in
4824          breakpoint_ops->print_it, but in this case, by the time we
4825          call breakpoint_ops->print_it this bp will be deleted
4826          already.  So we have no choice but print the information
4827          here.  */
4828       if (ui_out_is_mi_like_p (uiout))
4829         ui_out_field_string
4830           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4831       ui_out_text (uiout, "\nWatchpoint ");
4832       ui_out_field_int (uiout, "wpnum", b->base.number);
4833       ui_out_text (uiout,
4834                    " deleted because the program has left the block in\n\
4835 which its expression is valid.\n");     
4836
4837       /* Make sure the watchpoint's commands aren't executed.  */
4838       decref_counted_command_line (&b->base.commands);
4839       watchpoint_del_at_next_stop (b);
4840
4841       return WP_DELETED;
4842     }
4843 }
4844
4845 /* Return true if it looks like target has stopped due to hitting
4846    breakpoint location BL.  This function does not check if we should
4847    stop, only if BL explains the stop.  */
4848
4849 static int
4850 bpstat_check_location (const struct bp_location *bl,
4851                        struct address_space *aspace, CORE_ADDR bp_addr,
4852                        const struct target_waitstatus *ws)
4853 {
4854   struct breakpoint *b = bl->owner;
4855
4856   /* BL is from an existing breakpoint.  */
4857   gdb_assert (b != NULL);
4858
4859   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4860 }
4861
4862 /* Determine if the watched values have actually changed, and we
4863    should stop.  If not, set BS->stop to 0.  */
4864
4865 static void
4866 bpstat_check_watchpoint (bpstat bs)
4867 {
4868   const struct bp_location *bl;
4869   struct watchpoint *b;
4870
4871   /* BS is built for existing struct breakpoint.  */
4872   bl = bs->bp_location_at;
4873   gdb_assert (bl != NULL);
4874   b = (struct watchpoint *) bs->breakpoint_at;
4875   gdb_assert (b != NULL);
4876
4877     {
4878       int must_check_value = 0;
4879       
4880       if (b->base.type == bp_watchpoint)
4881         /* For a software watchpoint, we must always check the
4882            watched value.  */
4883         must_check_value = 1;
4884       else if (b->watchpoint_triggered == watch_triggered_yes)
4885         /* We have a hardware watchpoint (read, write, or access)
4886            and the target earlier reported an address watched by
4887            this watchpoint.  */
4888         must_check_value = 1;
4889       else if (b->watchpoint_triggered == watch_triggered_unknown
4890                && b->base.type == bp_hardware_watchpoint)
4891         /* We were stopped by a hardware watchpoint, but the target could
4892            not report the data address.  We must check the watchpoint's
4893            value.  Access and read watchpoints are out of luck; without
4894            a data address, we can't figure it out.  */
4895         must_check_value = 1;
4896
4897       if (must_check_value)
4898         {
4899           char *message
4900             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4901                           b->base.number);
4902           struct cleanup *cleanups = make_cleanup (xfree, message);
4903           int e = catch_errors (watchpoint_check, bs, message,
4904                                 RETURN_MASK_ALL);
4905           do_cleanups (cleanups);
4906           switch (e)
4907             {
4908             case WP_DELETED:
4909               /* We've already printed what needs to be printed.  */
4910               bs->print_it = print_it_done;
4911               /* Stop.  */
4912               break;
4913             case WP_IGNORE:
4914               bs->print_it = print_it_noop;
4915               bs->stop = 0;
4916               break;
4917             case WP_VALUE_CHANGED:
4918               if (b->base.type == bp_read_watchpoint)
4919                 {
4920                   /* There are two cases to consider here:
4921
4922                      1. We're watching the triggered memory for reads.
4923                      In that case, trust the target, and always report
4924                      the watchpoint hit to the user.  Even though
4925                      reads don't cause value changes, the value may
4926                      have changed since the last time it was read, and
4927                      since we're not trapping writes, we will not see
4928                      those, and as such we should ignore our notion of
4929                      old value.
4930
4931                      2. We're watching the triggered memory for both
4932                      reads and writes.  There are two ways this may
4933                      happen:
4934
4935                      2.1. This is a target that can't break on data
4936                      reads only, but can break on accesses (reads or
4937                      writes), such as e.g., x86.  We detect this case
4938                      at the time we try to insert read watchpoints.
4939
4940                      2.2. Otherwise, the target supports read
4941                      watchpoints, but, the user set an access or write
4942                      watchpoint watching the same memory as this read
4943                      watchpoint.
4944
4945                      If we're watching memory writes as well as reads,
4946                      ignore watchpoint hits when we find that the
4947                      value hasn't changed, as reads don't cause
4948                      changes.  This still gives false positives when
4949                      the program writes the same value to memory as
4950                      what there was already in memory (we will confuse
4951                      it for a read), but it's much better than
4952                      nothing.  */
4953
4954                   int other_write_watchpoint = 0;
4955
4956                   if (bl->watchpoint_type == hw_read)
4957                     {
4958                       struct breakpoint *other_b;
4959
4960                       ALL_BREAKPOINTS (other_b)
4961                         if (other_b->type == bp_hardware_watchpoint
4962                             || other_b->type == bp_access_watchpoint)
4963                           {
4964                             struct watchpoint *other_w =
4965                               (struct watchpoint *) other_b;
4966
4967                             if (other_w->watchpoint_triggered
4968                                 == watch_triggered_yes)
4969                               {
4970                                 other_write_watchpoint = 1;
4971                                 break;
4972                               }
4973                           }
4974                     }
4975
4976                   if (other_write_watchpoint
4977                       || bl->watchpoint_type == hw_access)
4978                     {
4979                       /* We're watching the same memory for writes,
4980                          and the value changed since the last time we
4981                          updated it, so this trap must be for a write.
4982                          Ignore it.  */
4983                       bs->print_it = print_it_noop;
4984                       bs->stop = 0;
4985                     }
4986                 }
4987               break;
4988             case WP_VALUE_NOT_CHANGED:
4989               if (b->base.type == bp_hardware_watchpoint
4990                   || b->base.type == bp_watchpoint)
4991                 {
4992                   /* Don't stop: write watchpoints shouldn't fire if
4993                      the value hasn't changed.  */
4994                   bs->print_it = print_it_noop;
4995                   bs->stop = 0;
4996                 }
4997               /* Stop.  */
4998               break;
4999             default:
5000               /* Can't happen.  */
5001             case 0:
5002               /* Error from catch_errors.  */
5003               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5004               watchpoint_del_at_next_stop (b);
5005               /* We've already printed what needs to be printed.  */
5006               bs->print_it = print_it_done;
5007               break;
5008             }
5009         }
5010       else      /* must_check_value == 0 */
5011         {
5012           /* This is a case where some watchpoint(s) triggered, but
5013              not at the address of this watchpoint, or else no
5014              watchpoint triggered after all.  So don't print
5015              anything for this watchpoint.  */
5016           bs->print_it = print_it_noop;
5017           bs->stop = 0;
5018         }
5019     }
5020 }
5021
5022
5023 /* Check conditions (condition proper, frame, thread and ignore count)
5024    of breakpoint referred to by BS.  If we should not stop for this
5025    breakpoint, set BS->stop to 0.  */
5026
5027 static void
5028 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5029 {
5030   int thread_id = pid_to_thread_id (ptid);
5031   const struct bp_location *bl;
5032   struct breakpoint *b;
5033
5034   /* BS is built for existing struct breakpoint.  */
5035   bl = bs->bp_location_at;
5036   gdb_assert (bl != NULL);
5037   b = bs->breakpoint_at;
5038   gdb_assert (b != NULL);
5039
5040   /* Even if the target evaluated the condition on its end and notified GDB, we
5041      need to do so again since GDB does not know if we stopped due to a
5042      breakpoint or a single step breakpoint.  */
5043
5044   if (frame_id_p (b->frame_id)
5045       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5046     bs->stop = 0;
5047   else if (bs->stop)
5048     {
5049       int value_is_zero = 0;
5050       struct expression *cond;
5051
5052       /* Evaluate Python breakpoints that have a "stop"
5053          method implemented.  */
5054       if (b->py_bp_object)
5055         bs->stop = gdbpy_should_stop (b->py_bp_object);
5056
5057       if (is_watchpoint (b))
5058         {
5059           struct watchpoint *w = (struct watchpoint *) b;
5060
5061           cond = w->cond_exp;
5062         }
5063       else
5064         cond = bl->cond;
5065
5066       if (cond && b->disposition != disp_del_at_next_stop)
5067         {
5068           int within_current_scope = 1;
5069           struct watchpoint * w;
5070
5071           /* We use value_mark and value_free_to_mark because it could
5072              be a long time before we return to the command level and
5073              call free_all_values.  We can't call free_all_values
5074              because we might be in the middle of evaluating a
5075              function call.  */
5076           struct value *mark = value_mark ();
5077
5078           if (is_watchpoint (b))
5079             w = (struct watchpoint *) b;
5080           else
5081             w = NULL;
5082
5083           /* Need to select the frame, with all that implies so that
5084              the conditions will have the right context.  Because we
5085              use the frame, we will not see an inlined function's
5086              variables when we arrive at a breakpoint at the start
5087              of the inlined function; the current frame will be the
5088              call site.  */
5089           if (w == NULL || w->cond_exp_valid_block == NULL)
5090             select_frame (get_current_frame ());
5091           else
5092             {
5093               struct frame_info *frame;
5094
5095               /* For local watchpoint expressions, which particular
5096                  instance of a local is being watched matters, so we
5097                  keep track of the frame to evaluate the expression
5098                  in.  To evaluate the condition however, it doesn't
5099                  really matter which instantiation of the function
5100                  where the condition makes sense triggers the
5101                  watchpoint.  This allows an expression like "watch
5102                  global if q > 10" set in `func', catch writes to
5103                  global on all threads that call `func', or catch
5104                  writes on all recursive calls of `func' by a single
5105                  thread.  We simply always evaluate the condition in
5106                  the innermost frame that's executing where it makes
5107                  sense to evaluate the condition.  It seems
5108                  intuitive.  */
5109               frame = block_innermost_frame (w->cond_exp_valid_block);
5110               if (frame != NULL)
5111                 select_frame (frame);
5112               else
5113                 within_current_scope = 0;
5114             }
5115           if (within_current_scope)
5116             value_is_zero
5117               = catch_errors (breakpoint_cond_eval, cond,
5118                               "Error in testing breakpoint condition:\n",
5119                               RETURN_MASK_ALL);
5120           else
5121             {
5122               warning (_("Watchpoint condition cannot be tested "
5123                          "in the current scope"));
5124               /* If we failed to set the right context for this
5125                  watchpoint, unconditionally report it.  */
5126               value_is_zero = 0;
5127             }
5128           /* FIXME-someday, should give breakpoint #.  */
5129           value_free_to_mark (mark);
5130         }
5131
5132       if (cond && value_is_zero)
5133         {
5134           bs->stop = 0;
5135         }
5136       else if (b->thread != -1 && b->thread != thread_id)
5137         {
5138           bs->stop = 0;
5139         }
5140       else if (b->ignore_count > 0)
5141         {
5142           b->ignore_count--;
5143           bs->stop = 0;
5144           /* Increase the hit count even though we don't stop.  */
5145           ++(b->hit_count);
5146           observer_notify_breakpoint_modified (b);
5147         }       
5148     }
5149 }
5150
5151
5152 /* Get a bpstat associated with having just stopped at address
5153    BP_ADDR in thread PTID.
5154
5155    Determine whether we stopped at a breakpoint, etc, or whether we
5156    don't understand this stop.  Result is a chain of bpstat's such
5157    that:
5158
5159    if we don't understand the stop, the result is a null pointer.
5160
5161    if we understand why we stopped, the result is not null.
5162
5163    Each element of the chain refers to a particular breakpoint or
5164    watchpoint at which we have stopped.  (We may have stopped for
5165    several reasons concurrently.)
5166
5167    Each element of the chain has valid next, breakpoint_at,
5168    commands, FIXME??? fields.  */
5169
5170 bpstat
5171 bpstat_stop_status (struct address_space *aspace,
5172                     CORE_ADDR bp_addr, ptid_t ptid,
5173                     const struct target_waitstatus *ws)
5174 {
5175   struct breakpoint *b = NULL;
5176   struct bp_location *bl;
5177   struct bp_location *loc;
5178   /* First item of allocated bpstat's.  */
5179   bpstat bs_head = NULL, *bs_link = &bs_head;
5180   /* Pointer to the last thing in the chain currently.  */
5181   bpstat bs;
5182   int ix;
5183   int need_remove_insert;
5184   int removed_any;
5185
5186   /* First, build the bpstat chain with locations that explain a
5187      target stop, while being careful to not set the target running,
5188      as that may invalidate locations (in particular watchpoint
5189      locations are recreated).  Resuming will happen here with
5190      breakpoint conditions or watchpoint expressions that include
5191      inferior function calls.  */
5192
5193   ALL_BREAKPOINTS (b)
5194     {
5195       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5196         continue;
5197
5198       for (bl = b->loc; bl != NULL; bl = bl->next)
5199         {
5200           /* For hardware watchpoints, we look only at the first
5201              location.  The watchpoint_check function will work on the
5202              entire expression, not the individual locations.  For
5203              read watchpoints, the watchpoints_triggered function has
5204              checked all locations already.  */
5205           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5206             break;
5207
5208           if (!bl->enabled || bl->shlib_disabled)
5209             continue;
5210
5211           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5212             continue;
5213
5214           /* Come here if it's a watchpoint, or if the break address
5215              matches.  */
5216
5217           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5218                                                    explain stop.  */
5219
5220           /* Assume we stop.  Should we find a watchpoint that is not
5221              actually triggered, or if the condition of the breakpoint
5222              evaluates as false, we'll reset 'stop' to 0.  */
5223           bs->stop = 1;
5224           bs->print = 1;
5225
5226           /* If this is a scope breakpoint, mark the associated
5227              watchpoint as triggered so that we will handle the
5228              out-of-scope event.  We'll get to the watchpoint next
5229              iteration.  */
5230           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5231             {
5232               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5233
5234               w->watchpoint_triggered = watch_triggered_yes;
5235             }
5236         }
5237     }
5238
5239   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5240     {
5241       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5242         {
5243           bs = bpstat_alloc (loc, &bs_link);
5244           /* For hits of moribund locations, we should just proceed.  */
5245           bs->stop = 0;
5246           bs->print = 0;
5247           bs->print_it = print_it_noop;
5248         }
5249     }
5250
5251   /* A bit of special processing for shlib breakpoints.  We need to
5252      process solib loading here, so that the lists of loaded and
5253      unloaded libraries are correct before we handle "catch load" and
5254      "catch unload".  */
5255   for (bs = bs_head; bs != NULL; bs = bs->next)
5256     {
5257       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5258         {
5259           handle_solib_event ();
5260           break;
5261         }
5262     }
5263
5264   /* Now go through the locations that caused the target to stop, and
5265      check whether we're interested in reporting this stop to higher
5266      layers, or whether we should resume the target transparently.  */
5267
5268   removed_any = 0;
5269
5270   for (bs = bs_head; bs != NULL; bs = bs->next)
5271     {
5272       if (!bs->stop)
5273         continue;
5274
5275       b = bs->breakpoint_at;
5276       b->ops->check_status (bs);
5277       if (bs->stop)
5278         {
5279           bpstat_check_breakpoint_conditions (bs, ptid);
5280
5281           if (bs->stop)
5282             {
5283               ++(b->hit_count);
5284               observer_notify_breakpoint_modified (b);
5285
5286               /* We will stop here.  */
5287               if (b->disposition == disp_disable)
5288                 {
5289                   --(b->enable_count);
5290                   if (b->enable_count <= 0
5291                       && b->enable_state != bp_permanent)
5292                     b->enable_state = bp_disabled;
5293                   removed_any = 1;
5294                 }
5295               if (b->silent)
5296                 bs->print = 0;
5297               bs->commands = b->commands;
5298               incref_counted_command_line (bs->commands);
5299               if (command_line_is_silent (bs->commands
5300                                           ? bs->commands->commands : NULL))
5301                 bs->print = 0;
5302             }
5303
5304         }
5305
5306       /* Print nothing for this entry if we don't stop or don't
5307          print.  */
5308       if (!bs->stop || !bs->print)
5309         bs->print_it = print_it_noop;
5310     }
5311
5312   /* If we aren't stopping, the value of some hardware watchpoint may
5313      not have changed, but the intermediate memory locations we are
5314      watching may have.  Don't bother if we're stopping; this will get
5315      done later.  */
5316   need_remove_insert = 0;
5317   if (! bpstat_causes_stop (bs_head))
5318     for (bs = bs_head; bs != NULL; bs = bs->next)
5319       if (!bs->stop
5320           && bs->breakpoint_at
5321           && is_hardware_watchpoint (bs->breakpoint_at))
5322         {
5323           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5324
5325           update_watchpoint (w, 0 /* don't reparse.  */);
5326           need_remove_insert = 1;
5327         }
5328
5329   if (need_remove_insert)
5330     update_global_location_list (1);
5331   else if (removed_any)
5332     update_global_location_list (0);
5333
5334   return bs_head;
5335 }
5336
5337 static void
5338 handle_jit_event (void)
5339 {
5340   struct frame_info *frame;
5341   struct gdbarch *gdbarch;
5342
5343   /* Switch terminal for any messages produced by
5344      breakpoint_re_set.  */
5345   target_terminal_ours_for_output ();
5346
5347   frame = get_current_frame ();
5348   gdbarch = get_frame_arch (frame);
5349
5350   jit_event_handler (gdbarch);
5351
5352   target_terminal_inferior ();
5353 }
5354
5355 /* Prepare WHAT final decision for infrun.  */
5356
5357 /* Decide what infrun needs to do with this bpstat.  */
5358
5359 struct bpstat_what
5360 bpstat_what (bpstat bs_head)
5361 {
5362   struct bpstat_what retval;
5363   int jit_event = 0;
5364   bpstat bs;
5365
5366   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5367   retval.call_dummy = STOP_NONE;
5368   retval.is_longjmp = 0;
5369
5370   for (bs = bs_head; bs != NULL; bs = bs->next)
5371     {
5372       /* Extract this BS's action.  After processing each BS, we check
5373          if its action overrides all we've seem so far.  */
5374       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5375       enum bptype bptype;
5376
5377       if (bs->breakpoint_at == NULL)
5378         {
5379           /* I suspect this can happen if it was a momentary
5380              breakpoint which has since been deleted.  */
5381           bptype = bp_none;
5382         }
5383       else
5384         bptype = bs->breakpoint_at->type;
5385
5386       switch (bptype)
5387         {
5388         case bp_none:
5389           break;
5390         case bp_breakpoint:
5391         case bp_hardware_breakpoint:
5392         case bp_until:
5393         case bp_finish:
5394         case bp_shlib_event:
5395           if (bs->stop)
5396             {
5397               if (bs->print)
5398                 this_action = BPSTAT_WHAT_STOP_NOISY;
5399               else
5400                 this_action = BPSTAT_WHAT_STOP_SILENT;
5401             }
5402           else
5403             this_action = BPSTAT_WHAT_SINGLE;
5404           break;
5405         case bp_watchpoint:
5406         case bp_hardware_watchpoint:
5407         case bp_read_watchpoint:
5408         case bp_access_watchpoint:
5409           if (bs->stop)
5410             {
5411               if (bs->print)
5412                 this_action = BPSTAT_WHAT_STOP_NOISY;
5413               else
5414                 this_action = BPSTAT_WHAT_STOP_SILENT;
5415             }
5416           else
5417             {
5418               /* There was a watchpoint, but we're not stopping.
5419                  This requires no further action.  */
5420             }
5421           break;
5422         case bp_longjmp:
5423         case bp_longjmp_call_dummy:
5424         case bp_exception:
5425           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5426           retval.is_longjmp = bptype != bp_exception;
5427           break;
5428         case bp_longjmp_resume:
5429         case bp_exception_resume:
5430           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5431           retval.is_longjmp = bptype == bp_longjmp_resume;
5432           break;
5433         case bp_step_resume:
5434           if (bs->stop)
5435             this_action = BPSTAT_WHAT_STEP_RESUME;
5436           else
5437             {
5438               /* It is for the wrong frame.  */
5439               this_action = BPSTAT_WHAT_SINGLE;
5440             }
5441           break;
5442         case bp_hp_step_resume:
5443           if (bs->stop)
5444             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5445           else
5446             {
5447               /* It is for the wrong frame.  */
5448               this_action = BPSTAT_WHAT_SINGLE;
5449             }
5450           break;
5451         case bp_watchpoint_scope:
5452         case bp_thread_event:
5453         case bp_overlay_event:
5454         case bp_longjmp_master:
5455         case bp_std_terminate_master:
5456         case bp_exception_master:
5457           this_action = BPSTAT_WHAT_SINGLE;
5458           break;
5459         case bp_catchpoint:
5460           if (bs->stop)
5461             {
5462               if (bs->print)
5463                 this_action = BPSTAT_WHAT_STOP_NOISY;
5464               else
5465                 this_action = BPSTAT_WHAT_STOP_SILENT;
5466             }
5467           else
5468             {
5469               /* There was a catchpoint, but we're not stopping.
5470                  This requires no further action.  */
5471             }
5472           break;
5473         case bp_jit_event:
5474           jit_event = 1;
5475           this_action = BPSTAT_WHAT_SINGLE;
5476           break;
5477         case bp_call_dummy:
5478           /* Make sure the action is stop (silent or noisy),
5479              so infrun.c pops the dummy frame.  */
5480           retval.call_dummy = STOP_STACK_DUMMY;
5481           this_action = BPSTAT_WHAT_STOP_SILENT;
5482           break;
5483         case bp_std_terminate:
5484           /* Make sure the action is stop (silent or noisy),
5485              so infrun.c pops the dummy frame.  */
5486           retval.call_dummy = STOP_STD_TERMINATE;
5487           this_action = BPSTAT_WHAT_STOP_SILENT;
5488           break;
5489         case bp_tracepoint:
5490         case bp_fast_tracepoint:
5491         case bp_static_tracepoint:
5492           /* Tracepoint hits should not be reported back to GDB, and
5493              if one got through somehow, it should have been filtered
5494              out already.  */
5495           internal_error (__FILE__, __LINE__,
5496                           _("bpstat_what: tracepoint encountered"));
5497           break;
5498         case bp_gnu_ifunc_resolver:
5499           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5500           this_action = BPSTAT_WHAT_SINGLE;
5501           break;
5502         case bp_gnu_ifunc_resolver_return:
5503           /* The breakpoint will be removed, execution will restart from the
5504              PC of the former breakpoint.  */
5505           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5506           break;
5507
5508         case bp_dprintf:
5509           if (bs->stop)
5510             this_action = BPSTAT_WHAT_STOP_SILENT;
5511           else
5512             this_action = BPSTAT_WHAT_SINGLE;
5513           break;
5514
5515         default:
5516           internal_error (__FILE__, __LINE__,
5517                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5518         }
5519
5520       retval.main_action = max (retval.main_action, this_action);
5521     }
5522
5523   /* These operations may affect the bs->breakpoint_at state so they are
5524      delayed after MAIN_ACTION is decided above.  */
5525
5526   if (jit_event)
5527     {
5528       if (debug_infrun)
5529         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5530
5531       handle_jit_event ();
5532     }
5533
5534   for (bs = bs_head; bs != NULL; bs = bs->next)
5535     {
5536       struct breakpoint *b = bs->breakpoint_at;
5537
5538       if (b == NULL)
5539         continue;
5540       switch (b->type)
5541         {
5542         case bp_gnu_ifunc_resolver:
5543           gnu_ifunc_resolver_stop (b);
5544           break;
5545         case bp_gnu_ifunc_resolver_return:
5546           gnu_ifunc_resolver_return_stop (b);
5547           break;
5548         }
5549     }
5550
5551   return retval;
5552 }
5553
5554 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5555    without hardware support).  This isn't related to a specific bpstat,
5556    just to things like whether watchpoints are set.  */
5557
5558 int
5559 bpstat_should_step (void)
5560 {
5561   struct breakpoint *b;
5562
5563   ALL_BREAKPOINTS (b)
5564     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5565       return 1;
5566   return 0;
5567 }
5568
5569 int
5570 bpstat_causes_stop (bpstat bs)
5571 {
5572   for (; bs != NULL; bs = bs->next)
5573     if (bs->stop)
5574       return 1;
5575
5576   return 0;
5577 }
5578
5579 \f
5580
5581 /* Compute a string of spaces suitable to indent the next line
5582    so it starts at the position corresponding to the table column
5583    named COL_NAME in the currently active table of UIOUT.  */
5584
5585 static char *
5586 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5587 {
5588   static char wrap_indent[80];
5589   int i, total_width, width, align;
5590   char *text;
5591
5592   total_width = 0;
5593   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5594     {
5595       if (strcmp (text, col_name) == 0)
5596         {
5597           gdb_assert (total_width < sizeof wrap_indent);
5598           memset (wrap_indent, ' ', total_width);
5599           wrap_indent[total_width] = 0;
5600
5601           return wrap_indent;
5602         }
5603
5604       total_width += width + 1;
5605     }
5606
5607   return NULL;
5608 }
5609
5610 /* Determine if the locations of this breakpoint will have their conditions
5611    evaluated by the target, host or a mix of both.  Returns the following:
5612
5613     "host": Host evals condition.
5614     "host or target": Host or Target evals condition.
5615     "target": Target evals condition.
5616 */
5617
5618 static const char *
5619 bp_condition_evaluator (struct breakpoint *b)
5620 {
5621   struct bp_location *bl;
5622   char host_evals = 0;
5623   char target_evals = 0;
5624
5625   if (!b)
5626     return NULL;
5627
5628   if (!is_breakpoint (b))
5629     return NULL;
5630
5631   if (gdb_evaluates_breakpoint_condition_p ()
5632       || !target_supports_evaluation_of_breakpoint_conditions ())
5633     return condition_evaluation_host;
5634
5635   for (bl = b->loc; bl; bl = bl->next)
5636     {
5637       if (bl->cond_bytecode)
5638         target_evals++;
5639       else
5640         host_evals++;
5641     }
5642
5643   if (host_evals && target_evals)
5644     return condition_evaluation_both;
5645   else if (target_evals)
5646     return condition_evaluation_target;
5647   else
5648     return condition_evaluation_host;
5649 }
5650
5651 /* Determine the breakpoint location's condition evaluator.  This is
5652    similar to bp_condition_evaluator, but for locations.  */
5653
5654 static const char *
5655 bp_location_condition_evaluator (struct bp_location *bl)
5656 {
5657   if (bl && !is_breakpoint (bl->owner))
5658     return NULL;
5659
5660   if (gdb_evaluates_breakpoint_condition_p ()
5661       || !target_supports_evaluation_of_breakpoint_conditions ())
5662     return condition_evaluation_host;
5663
5664   if (bl && bl->cond_bytecode)
5665     return condition_evaluation_target;
5666   else
5667     return condition_evaluation_host;
5668 }
5669
5670 /* Print the LOC location out of the list of B->LOC locations.  */
5671
5672 static void
5673 print_breakpoint_location (struct breakpoint *b,
5674                            struct bp_location *loc)
5675 {
5676   struct ui_out *uiout = current_uiout;
5677   struct cleanup *old_chain = save_current_program_space ();
5678
5679   if (loc != NULL && loc->shlib_disabled)
5680     loc = NULL;
5681
5682   if (loc != NULL)
5683     set_current_program_space (loc->pspace);
5684
5685   if (b->display_canonical)
5686     ui_out_field_string (uiout, "what", b->addr_string);
5687   else if (loc && loc->symtab)
5688     {
5689       struct symbol *sym 
5690         = find_pc_sect_function (loc->address, loc->section);
5691       if (sym)
5692         {
5693           ui_out_text (uiout, "in ");
5694           ui_out_field_string (uiout, "func",
5695                                SYMBOL_PRINT_NAME (sym));
5696           ui_out_text (uiout, " ");
5697           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5698           ui_out_text (uiout, "at ");
5699         }
5700       ui_out_field_string (uiout, "file",
5701                            symtab_to_filename_for_display (loc->symtab));
5702       ui_out_text (uiout, ":");
5703
5704       if (ui_out_is_mi_like_p (uiout))
5705         ui_out_field_string (uiout, "fullname",
5706                              symtab_to_fullname (loc->symtab));
5707       
5708       ui_out_field_int (uiout, "line", loc->line_number);
5709     }
5710   else if (loc)
5711     {
5712       struct ui_file *stb = mem_fileopen ();
5713       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5714
5715       print_address_symbolic (loc->gdbarch, loc->address, stb,
5716                               demangle, "");
5717       ui_out_field_stream (uiout, "at", stb);
5718
5719       do_cleanups (stb_chain);
5720     }
5721   else
5722     ui_out_field_string (uiout, "pending", b->addr_string);
5723
5724   if (loc && is_breakpoint (b)
5725       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5726       && bp_condition_evaluator (b) == condition_evaluation_both)
5727     {
5728       ui_out_text (uiout, " (");
5729       ui_out_field_string (uiout, "evaluated-by",
5730                            bp_location_condition_evaluator (loc));
5731       ui_out_text (uiout, ")");
5732     }
5733
5734   do_cleanups (old_chain);
5735 }
5736
5737 static const char *
5738 bptype_string (enum bptype type)
5739 {
5740   struct ep_type_description
5741     {
5742       enum bptype type;
5743       char *description;
5744     };
5745   static struct ep_type_description bptypes[] =
5746   {
5747     {bp_none, "?deleted?"},
5748     {bp_breakpoint, "breakpoint"},
5749     {bp_hardware_breakpoint, "hw breakpoint"},
5750     {bp_until, "until"},
5751     {bp_finish, "finish"},
5752     {bp_watchpoint, "watchpoint"},
5753     {bp_hardware_watchpoint, "hw watchpoint"},
5754     {bp_read_watchpoint, "read watchpoint"},
5755     {bp_access_watchpoint, "acc watchpoint"},
5756     {bp_longjmp, "longjmp"},
5757     {bp_longjmp_resume, "longjmp resume"},
5758     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5759     {bp_exception, "exception"},
5760     {bp_exception_resume, "exception resume"},
5761     {bp_step_resume, "step resume"},
5762     {bp_hp_step_resume, "high-priority step resume"},
5763     {bp_watchpoint_scope, "watchpoint scope"},
5764     {bp_call_dummy, "call dummy"},
5765     {bp_std_terminate, "std::terminate"},
5766     {bp_shlib_event, "shlib events"},
5767     {bp_thread_event, "thread events"},
5768     {bp_overlay_event, "overlay events"},
5769     {bp_longjmp_master, "longjmp master"},
5770     {bp_std_terminate_master, "std::terminate master"},
5771     {bp_exception_master, "exception master"},
5772     {bp_catchpoint, "catchpoint"},
5773     {bp_tracepoint, "tracepoint"},
5774     {bp_fast_tracepoint, "fast tracepoint"},
5775     {bp_static_tracepoint, "static tracepoint"},
5776     {bp_dprintf, "dprintf"},
5777     {bp_jit_event, "jit events"},
5778     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5779     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5780   };
5781
5782   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5783       || ((int) type != bptypes[(int) type].type))
5784     internal_error (__FILE__, __LINE__,
5785                     _("bptypes table does not describe type #%d."),
5786                     (int) type);
5787
5788   return bptypes[(int) type].description;
5789 }
5790
5791 DEF_VEC_I(int);
5792
5793 /* For MI, output a field named 'thread-groups' with a list as the value.
5794    For CLI, prefix the list with the string 'inf'. */
5795
5796 static void
5797 output_thread_groups (struct ui_out *uiout,
5798                       const char *field_name,
5799                       VEC(int) *inf_num,
5800                       int mi_only)
5801 {
5802   struct cleanup *back_to;
5803   int is_mi = ui_out_is_mi_like_p (uiout);
5804   int inf;
5805   int i;
5806
5807   /* For backward compatibility, don't display inferiors in CLI unless
5808      there are several.  Always display them for MI. */
5809   if (!is_mi && mi_only)
5810     return;
5811
5812   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
5813
5814   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5815     {
5816       if (is_mi)
5817         {
5818           char mi_group[10];
5819
5820           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5821           ui_out_field_string (uiout, NULL, mi_group);
5822         }
5823       else
5824         {
5825           if (i == 0)
5826             ui_out_text (uiout, " inf ");
5827           else
5828             ui_out_text (uiout, ", ");
5829         
5830           ui_out_text (uiout, plongest (inf));
5831         }
5832     }
5833
5834   do_cleanups (back_to);
5835 }
5836
5837 /* Print B to gdb_stdout.  */
5838
5839 static void
5840 print_one_breakpoint_location (struct breakpoint *b,
5841                                struct bp_location *loc,
5842                                int loc_number,
5843                                struct bp_location **last_loc,
5844                                int allflag)
5845 {
5846   struct command_line *l;
5847   static char bpenables[] = "nynny";
5848
5849   struct ui_out *uiout = current_uiout;
5850   int header_of_multiple = 0;
5851   int part_of_multiple = (loc != NULL);
5852   struct value_print_options opts;
5853
5854   get_user_print_options (&opts);
5855
5856   gdb_assert (!loc || loc_number != 0);
5857   /* See comment in print_one_breakpoint concerning treatment of
5858      breakpoints with single disabled location.  */
5859   if (loc == NULL 
5860       && (b->loc != NULL 
5861           && (b->loc->next != NULL || !b->loc->enabled)))
5862     header_of_multiple = 1;
5863   if (loc == NULL)
5864     loc = b->loc;
5865
5866   annotate_record ();
5867
5868   /* 1 */
5869   annotate_field (0);
5870   if (part_of_multiple)
5871     {
5872       char *formatted;
5873       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5874       ui_out_field_string (uiout, "number", formatted);
5875       xfree (formatted);
5876     }
5877   else
5878     {
5879       ui_out_field_int (uiout, "number", b->number);
5880     }
5881
5882   /* 2 */
5883   annotate_field (1);
5884   if (part_of_multiple)
5885     ui_out_field_skip (uiout, "type");
5886   else
5887     ui_out_field_string (uiout, "type", bptype_string (b->type));
5888
5889   /* 3 */
5890   annotate_field (2);
5891   if (part_of_multiple)
5892     ui_out_field_skip (uiout, "disp");
5893   else
5894     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5895
5896
5897   /* 4 */
5898   annotate_field (3);
5899   if (part_of_multiple)
5900     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5901   else
5902     ui_out_field_fmt (uiout, "enabled", "%c", 
5903                       bpenables[(int) b->enable_state]);
5904   ui_out_spaces (uiout, 2);
5905
5906   
5907   /* 5 and 6 */
5908   if (b->ops != NULL && b->ops->print_one != NULL)
5909     {
5910       /* Although the print_one can possibly print all locations,
5911          calling it here is not likely to get any nice result.  So,
5912          make sure there's just one location.  */
5913       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5914       b->ops->print_one (b, last_loc);
5915     }
5916   else
5917     switch (b->type)
5918       {
5919       case bp_none:
5920         internal_error (__FILE__, __LINE__,
5921                         _("print_one_breakpoint: bp_none encountered\n"));
5922         break;
5923
5924       case bp_watchpoint:
5925       case bp_hardware_watchpoint:
5926       case bp_read_watchpoint:
5927       case bp_access_watchpoint:
5928         {
5929           struct watchpoint *w = (struct watchpoint *) b;
5930
5931           /* Field 4, the address, is omitted (which makes the columns
5932              not line up too nicely with the headers, but the effect
5933              is relatively readable).  */
5934           if (opts.addressprint)
5935             ui_out_field_skip (uiout, "addr");
5936           annotate_field (5);
5937           ui_out_field_string (uiout, "what", w->exp_string);
5938         }
5939         break;
5940
5941       case bp_breakpoint:
5942       case bp_hardware_breakpoint:
5943       case bp_until:
5944       case bp_finish:
5945       case bp_longjmp:
5946       case bp_longjmp_resume:
5947       case bp_longjmp_call_dummy:
5948       case bp_exception:
5949       case bp_exception_resume:
5950       case bp_step_resume:
5951       case bp_hp_step_resume:
5952       case bp_watchpoint_scope:
5953       case bp_call_dummy:
5954       case bp_std_terminate:
5955       case bp_shlib_event:
5956       case bp_thread_event:
5957       case bp_overlay_event:
5958       case bp_longjmp_master:
5959       case bp_std_terminate_master:
5960       case bp_exception_master:
5961       case bp_tracepoint:
5962       case bp_fast_tracepoint:
5963       case bp_static_tracepoint:
5964       case bp_dprintf:
5965       case bp_jit_event:
5966       case bp_gnu_ifunc_resolver:
5967       case bp_gnu_ifunc_resolver_return:
5968         if (opts.addressprint)
5969           {
5970             annotate_field (4);
5971             if (header_of_multiple)
5972               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5973             else if (b->loc == NULL || loc->shlib_disabled)
5974               ui_out_field_string (uiout, "addr", "<PENDING>");
5975             else
5976               ui_out_field_core_addr (uiout, "addr",
5977                                       loc->gdbarch, loc->address);
5978           }
5979         annotate_field (5);
5980         if (!header_of_multiple)
5981           print_breakpoint_location (b, loc);
5982         if (b->loc)
5983           *last_loc = b->loc;
5984         break;
5985       }
5986
5987
5988   if (loc != NULL && !header_of_multiple)
5989     {
5990       struct inferior *inf;
5991       VEC(int) *inf_num = NULL;
5992       int mi_only = 1;
5993
5994       ALL_INFERIORS (inf)
5995         {
5996           if (inf->pspace == loc->pspace)
5997             VEC_safe_push (int, inf_num, inf->num);
5998         }
5999
6000         /* For backward compatibility, don't display inferiors in CLI unless
6001            there are several.  Always display for MI. */
6002         if (allflag
6003             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6004                 && (number_of_program_spaces () > 1
6005                     || number_of_inferiors () > 1)
6006                 /* LOC is for existing B, it cannot be in
6007                    moribund_locations and thus having NULL OWNER.  */
6008                 && loc->owner->type != bp_catchpoint))
6009         mi_only = 0;
6010       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6011       VEC_free (int, inf_num);
6012     }
6013
6014   if (!part_of_multiple)
6015     {
6016       if (b->thread != -1)
6017         {
6018           /* FIXME: This seems to be redundant and lost here; see the
6019              "stop only in" line a little further down.  */
6020           ui_out_text (uiout, " thread ");
6021           ui_out_field_int (uiout, "thread", b->thread);
6022         }
6023       else if (b->task != 0)
6024         {
6025           ui_out_text (uiout, " task ");
6026           ui_out_field_int (uiout, "task", b->task);
6027         }
6028     }
6029
6030   ui_out_text (uiout, "\n");
6031
6032   if (!part_of_multiple)
6033     b->ops->print_one_detail (b, uiout);
6034
6035   if (part_of_multiple && frame_id_p (b->frame_id))
6036     {
6037       annotate_field (6);
6038       ui_out_text (uiout, "\tstop only in stack frame at ");
6039       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6040          the frame ID.  */
6041       ui_out_field_core_addr (uiout, "frame",
6042                               b->gdbarch, b->frame_id.stack_addr);
6043       ui_out_text (uiout, "\n");
6044     }
6045   
6046   if (!part_of_multiple && b->cond_string)
6047     {
6048       annotate_field (7);
6049       if (is_tracepoint (b))
6050         ui_out_text (uiout, "\ttrace only if ");
6051       else
6052         ui_out_text (uiout, "\tstop only if ");
6053       ui_out_field_string (uiout, "cond", b->cond_string);
6054
6055       /* Print whether the target is doing the breakpoint's condition
6056          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6057       if (is_breakpoint (b)
6058           && breakpoint_condition_evaluation_mode ()
6059           == condition_evaluation_target)
6060         {
6061           ui_out_text (uiout, " (");
6062           ui_out_field_string (uiout, "evaluated-by",
6063                                bp_condition_evaluator (b));
6064           ui_out_text (uiout, " evals)");
6065         }
6066       ui_out_text (uiout, "\n");
6067     }
6068
6069   if (!part_of_multiple && b->thread != -1)
6070     {
6071       /* FIXME should make an annotation for this.  */
6072       ui_out_text (uiout, "\tstop only in thread ");
6073       ui_out_field_int (uiout, "thread", b->thread);
6074       ui_out_text (uiout, "\n");
6075     }
6076   
6077   if (!part_of_multiple)
6078     {
6079       if (b->hit_count)
6080         {
6081           /* FIXME should make an annotation for this.  */
6082           if (is_catchpoint (b))
6083             ui_out_text (uiout, "\tcatchpoint");
6084           else if (is_tracepoint (b))
6085             ui_out_text (uiout, "\ttracepoint");
6086           else
6087             ui_out_text (uiout, "\tbreakpoint");
6088           ui_out_text (uiout, " already hit ");
6089           ui_out_field_int (uiout, "times", b->hit_count);
6090           if (b->hit_count == 1)
6091             ui_out_text (uiout, " time\n");
6092           else
6093             ui_out_text (uiout, " times\n");
6094         }
6095       else
6096         {
6097           /* Output the count also if it is zero, but only if this is mi.  */
6098           if (ui_out_is_mi_like_p (uiout))
6099             ui_out_field_int (uiout, "times", b->hit_count);
6100         }
6101     }
6102
6103   if (!part_of_multiple && b->ignore_count)
6104     {
6105       annotate_field (8);
6106       ui_out_text (uiout, "\tignore next ");
6107       ui_out_field_int (uiout, "ignore", b->ignore_count);
6108       ui_out_text (uiout, " hits\n");
6109     }
6110
6111   /* Note that an enable count of 1 corresponds to "enable once"
6112      behavior, which is reported by the combination of enablement and
6113      disposition, so we don't need to mention it here.  */
6114   if (!part_of_multiple && b->enable_count > 1)
6115     {
6116       annotate_field (8);
6117       ui_out_text (uiout, "\tdisable after ");
6118       /* Tweak the wording to clarify that ignore and enable counts
6119          are distinct, and have additive effect.  */
6120       if (b->ignore_count)
6121         ui_out_text (uiout, "additional ");
6122       else
6123         ui_out_text (uiout, "next ");
6124       ui_out_field_int (uiout, "enable", b->enable_count);
6125       ui_out_text (uiout, " hits\n");
6126     }
6127
6128   if (!part_of_multiple && is_tracepoint (b))
6129     {
6130       struct tracepoint *tp = (struct tracepoint *) b;
6131
6132       if (tp->traceframe_usage)
6133         {
6134           ui_out_text (uiout, "\ttrace buffer usage ");
6135           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6136           ui_out_text (uiout, " bytes\n");
6137         }
6138     }
6139
6140   l = b->commands ? b->commands->commands : NULL;
6141   if (!part_of_multiple && l)
6142     {
6143       struct cleanup *script_chain;
6144
6145       annotate_field (9);
6146       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6147       print_command_lines (uiout, l, 4);
6148       do_cleanups (script_chain);
6149     }
6150
6151   if (is_tracepoint (b))
6152     {
6153       struct tracepoint *t = (struct tracepoint *) b;
6154
6155       if (!part_of_multiple && t->pass_count)
6156         {
6157           annotate_field (10);
6158           ui_out_text (uiout, "\tpass count ");
6159           ui_out_field_int (uiout, "pass", t->pass_count);
6160           ui_out_text (uiout, " \n");
6161         }
6162
6163       /* Don't display it when tracepoint or tracepoint location is
6164          pending.   */
6165       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6166         {
6167           annotate_field (11);
6168
6169           if (ui_out_is_mi_like_p (uiout))
6170             ui_out_field_string (uiout, "installed",
6171                                  loc->inserted ? "y" : "n");
6172           else
6173             {
6174               if (loc->inserted)
6175                 ui_out_text (uiout, "\t");
6176               else
6177                 ui_out_text (uiout, "\tnot ");
6178               ui_out_text (uiout, "installed on target\n");
6179             }
6180         }
6181     }
6182
6183   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6184     {
6185       if (is_watchpoint (b))
6186         {
6187           struct watchpoint *w = (struct watchpoint *) b;
6188
6189           ui_out_field_string (uiout, "original-location", w->exp_string);
6190         }
6191       else if (b->addr_string)
6192         ui_out_field_string (uiout, "original-location", b->addr_string);
6193     }
6194 }
6195
6196 static void
6197 print_one_breakpoint (struct breakpoint *b,
6198                       struct bp_location **last_loc, 
6199                       int allflag)
6200 {
6201   struct cleanup *bkpt_chain;
6202   struct ui_out *uiout = current_uiout;
6203
6204   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6205
6206   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6207   do_cleanups (bkpt_chain);
6208
6209   /* If this breakpoint has custom print function,
6210      it's already printed.  Otherwise, print individual
6211      locations, if any.  */
6212   if (b->ops == NULL || b->ops->print_one == NULL)
6213     {
6214       /* If breakpoint has a single location that is disabled, we
6215          print it as if it had several locations, since otherwise it's
6216          hard to represent "breakpoint enabled, location disabled"
6217          situation.
6218
6219          Note that while hardware watchpoints have several locations
6220          internally, that's not a property exposed to user.  */
6221       if (b->loc 
6222           && !is_hardware_watchpoint (b)
6223           && (b->loc->next || !b->loc->enabled))
6224         {
6225           struct bp_location *loc;
6226           int n = 1;
6227
6228           for (loc = b->loc; loc; loc = loc->next, ++n)
6229             {
6230               struct cleanup *inner2 =
6231                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6232               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6233               do_cleanups (inner2);
6234             }
6235         }
6236     }
6237 }
6238
6239 static int
6240 breakpoint_address_bits (struct breakpoint *b)
6241 {
6242   int print_address_bits = 0;
6243   struct bp_location *loc;
6244
6245   for (loc = b->loc; loc; loc = loc->next)
6246     {
6247       int addr_bit;
6248
6249       /* Software watchpoints that aren't watching memory don't have
6250          an address to print.  */
6251       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6252         continue;
6253
6254       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6255       if (addr_bit > print_address_bits)
6256         print_address_bits = addr_bit;
6257     }
6258
6259   return print_address_bits;
6260 }
6261
6262 struct captured_breakpoint_query_args
6263   {
6264     int bnum;
6265   };
6266
6267 static int
6268 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6269 {
6270   struct captured_breakpoint_query_args *args = data;
6271   struct breakpoint *b;
6272   struct bp_location *dummy_loc = NULL;
6273
6274   ALL_BREAKPOINTS (b)
6275     {
6276       if (args->bnum == b->number)
6277         {
6278           print_one_breakpoint (b, &dummy_loc, 0);
6279           return GDB_RC_OK;
6280         }
6281     }
6282   return GDB_RC_NONE;
6283 }
6284
6285 enum gdb_rc
6286 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6287                       char **error_message)
6288 {
6289   struct captured_breakpoint_query_args args;
6290
6291   args.bnum = bnum;
6292   /* For the moment we don't trust print_one_breakpoint() to not throw
6293      an error.  */
6294   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6295                                  error_message, RETURN_MASK_ALL) < 0)
6296     return GDB_RC_FAIL;
6297   else
6298     return GDB_RC_OK;
6299 }
6300
6301 /* Return true if this breakpoint was set by the user, false if it is
6302    internal or momentary.  */
6303
6304 int
6305 user_breakpoint_p (struct breakpoint *b)
6306 {
6307   return b->number > 0;
6308 }
6309
6310 /* Print information on user settable breakpoint (watchpoint, etc)
6311    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6312    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6313    FILTER is non-NULL, call it on each breakpoint and only include the
6314    ones for which it returns non-zero.  Return the total number of
6315    breakpoints listed.  */
6316
6317 static int
6318 breakpoint_1 (char *args, int allflag, 
6319               int (*filter) (const struct breakpoint *))
6320 {
6321   struct breakpoint *b;
6322   struct bp_location *last_loc = NULL;
6323   int nr_printable_breakpoints;
6324   struct cleanup *bkpttbl_chain;
6325   struct value_print_options opts;
6326   int print_address_bits = 0;
6327   int print_type_col_width = 14;
6328   struct ui_out *uiout = current_uiout;
6329
6330   get_user_print_options (&opts);
6331
6332   /* Compute the number of rows in the table, as well as the size
6333      required for address fields.  */
6334   nr_printable_breakpoints = 0;
6335   ALL_BREAKPOINTS (b)
6336     {
6337       /* If we have a filter, only list the breakpoints it accepts.  */
6338       if (filter && !filter (b))
6339         continue;
6340
6341       /* If we have an "args" string, it is a list of breakpoints to 
6342          accept.  Skip the others.  */
6343       if (args != NULL && *args != '\0')
6344         {
6345           if (allflag && parse_and_eval_long (args) != b->number)
6346             continue;
6347           if (!allflag && !number_is_in_list (args, b->number))
6348             continue;
6349         }
6350
6351       if (allflag || user_breakpoint_p (b))
6352         {
6353           int addr_bit, type_len;
6354
6355           addr_bit = breakpoint_address_bits (b);
6356           if (addr_bit > print_address_bits)
6357             print_address_bits = addr_bit;
6358
6359           type_len = strlen (bptype_string (b->type));
6360           if (type_len > print_type_col_width)
6361             print_type_col_width = type_len;
6362
6363           nr_printable_breakpoints++;
6364         }
6365     }
6366
6367   if (opts.addressprint)
6368     bkpttbl_chain 
6369       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6370                                              nr_printable_breakpoints,
6371                                              "BreakpointTable");
6372   else
6373     bkpttbl_chain 
6374       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6375                                              nr_printable_breakpoints,
6376                                              "BreakpointTable");
6377
6378   if (nr_printable_breakpoints > 0)
6379     annotate_breakpoints_headers ();
6380   if (nr_printable_breakpoints > 0)
6381     annotate_field (0);
6382   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6383   if (nr_printable_breakpoints > 0)
6384     annotate_field (1);
6385   ui_out_table_header (uiout, print_type_col_width, ui_left,
6386                        "type", "Type");                         /* 2 */
6387   if (nr_printable_breakpoints > 0)
6388     annotate_field (2);
6389   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6390   if (nr_printable_breakpoints > 0)
6391     annotate_field (3);
6392   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6393   if (opts.addressprint)
6394     {
6395       if (nr_printable_breakpoints > 0)
6396         annotate_field (4);
6397       if (print_address_bits <= 32)
6398         ui_out_table_header (uiout, 10, ui_left, 
6399                              "addr", "Address");                /* 5 */
6400       else
6401         ui_out_table_header (uiout, 18, ui_left, 
6402                              "addr", "Address");                /* 5 */
6403     }
6404   if (nr_printable_breakpoints > 0)
6405     annotate_field (5);
6406   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6407   ui_out_table_body (uiout);
6408   if (nr_printable_breakpoints > 0)
6409     annotate_breakpoints_table ();
6410
6411   ALL_BREAKPOINTS (b)
6412     {
6413       QUIT;
6414       /* If we have a filter, only list the breakpoints it accepts.  */
6415       if (filter && !filter (b))
6416         continue;
6417
6418       /* If we have an "args" string, it is a list of breakpoints to 
6419          accept.  Skip the others.  */
6420
6421       if (args != NULL && *args != '\0')
6422         {
6423           if (allflag)  /* maintenance info breakpoint */
6424             {
6425               if (parse_and_eval_long (args) != b->number)
6426                 continue;
6427             }
6428           else          /* all others */
6429             {
6430               if (!number_is_in_list (args, b->number))
6431                 continue;
6432             }
6433         }
6434       /* We only print out user settable breakpoints unless the
6435          allflag is set.  */
6436       if (allflag || user_breakpoint_p (b))
6437         print_one_breakpoint (b, &last_loc, allflag);
6438     }
6439
6440   do_cleanups (bkpttbl_chain);
6441
6442   if (nr_printable_breakpoints == 0)
6443     {
6444       /* If there's a filter, let the caller decide how to report
6445          empty list.  */
6446       if (!filter)
6447         {
6448           if (args == NULL || *args == '\0')
6449             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6450           else
6451             ui_out_message (uiout, 0, 
6452                             "No breakpoint or watchpoint matching '%s'.\n",
6453                             args);
6454         }
6455     }
6456   else
6457     {
6458       if (last_loc && !server_command)
6459         set_next_address (last_loc->gdbarch, last_loc->address);
6460     }
6461
6462   /* FIXME?  Should this be moved up so that it is only called when
6463      there have been breakpoints? */
6464   annotate_breakpoints_table_end ();
6465
6466   return nr_printable_breakpoints;
6467 }
6468
6469 /* Display the value of default-collect in a way that is generally
6470    compatible with the breakpoint list.  */
6471
6472 static void
6473 default_collect_info (void)
6474 {
6475   struct ui_out *uiout = current_uiout;
6476
6477   /* If it has no value (which is frequently the case), say nothing; a
6478      message like "No default-collect." gets in user's face when it's
6479      not wanted.  */
6480   if (!*default_collect)
6481     return;
6482
6483   /* The following phrase lines up nicely with per-tracepoint collect
6484      actions.  */
6485   ui_out_text (uiout, "default collect ");
6486   ui_out_field_string (uiout, "default-collect", default_collect);
6487   ui_out_text (uiout, " \n");
6488 }
6489   
6490 static void
6491 breakpoints_info (char *args, int from_tty)
6492 {
6493   breakpoint_1 (args, 0, NULL);
6494
6495   default_collect_info ();
6496 }
6497
6498 static void
6499 watchpoints_info (char *args, int from_tty)
6500 {
6501   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6502   struct ui_out *uiout = current_uiout;
6503
6504   if (num_printed == 0)
6505     {
6506       if (args == NULL || *args == '\0')
6507         ui_out_message (uiout, 0, "No watchpoints.\n");
6508       else
6509         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6510     }
6511 }
6512
6513 static void
6514 maintenance_info_breakpoints (char *args, int from_tty)
6515 {
6516   breakpoint_1 (args, 1, NULL);
6517
6518   default_collect_info ();
6519 }
6520
6521 static int
6522 breakpoint_has_pc (struct breakpoint *b,
6523                    struct program_space *pspace,
6524                    CORE_ADDR pc, struct obj_section *section)
6525 {
6526   struct bp_location *bl = b->loc;
6527
6528   for (; bl; bl = bl->next)
6529     {
6530       if (bl->pspace == pspace
6531           && bl->address == pc
6532           && (!overlay_debugging || bl->section == section))
6533         return 1;         
6534     }
6535   return 0;
6536 }
6537
6538 /* Print a message describing any user-breakpoints set at PC.  This
6539    concerns with logical breakpoints, so we match program spaces, not
6540    address spaces.  */
6541
6542 static void
6543 describe_other_breakpoints (struct gdbarch *gdbarch,
6544                             struct program_space *pspace, CORE_ADDR pc,
6545                             struct obj_section *section, int thread)
6546 {
6547   int others = 0;
6548   struct breakpoint *b;
6549
6550   ALL_BREAKPOINTS (b)
6551     others += (user_breakpoint_p (b)
6552                && breakpoint_has_pc (b, pspace, pc, section));
6553   if (others > 0)
6554     {
6555       if (others == 1)
6556         printf_filtered (_("Note: breakpoint "));
6557       else /* if (others == ???) */
6558         printf_filtered (_("Note: breakpoints "));
6559       ALL_BREAKPOINTS (b)
6560         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6561           {
6562             others--;
6563             printf_filtered ("%d", b->number);
6564             if (b->thread == -1 && thread != -1)
6565               printf_filtered (" (all threads)");
6566             else if (b->thread != -1)
6567               printf_filtered (" (thread %d)", b->thread);
6568             printf_filtered ("%s%s ",
6569                              ((b->enable_state == bp_disabled
6570                                || b->enable_state == bp_call_disabled)
6571                               ? " (disabled)"
6572                               : b->enable_state == bp_permanent 
6573                               ? " (permanent)"
6574                               : ""),
6575                              (others > 1) ? "," 
6576                              : ((others == 1) ? " and" : ""));
6577           }
6578       printf_filtered (_("also set at pc "));
6579       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6580       printf_filtered (".\n");
6581     }
6582 }
6583 \f
6584
6585 /* Return true iff it is meaningful to use the address member of
6586    BPT.  For some breakpoint types, the address member is irrelevant
6587    and it makes no sense to attempt to compare it to other addresses
6588    (or use it for any other purpose either).
6589
6590    More specifically, each of the following breakpoint types will
6591    always have a zero valued address and we don't want to mark
6592    breakpoints of any of these types to be a duplicate of an actual
6593    breakpoint at address zero:
6594
6595       bp_watchpoint
6596       bp_catchpoint
6597
6598 */
6599
6600 static int
6601 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6602 {
6603   enum bptype type = bpt->type;
6604
6605   return (type != bp_watchpoint && type != bp_catchpoint);
6606 }
6607
6608 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6609    true if LOC1 and LOC2 represent the same watchpoint location.  */
6610
6611 static int
6612 watchpoint_locations_match (struct bp_location *loc1, 
6613                             struct bp_location *loc2)
6614 {
6615   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6616   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6617
6618   /* Both of them must exist.  */
6619   gdb_assert (w1 != NULL);
6620   gdb_assert (w2 != NULL);
6621
6622   /* If the target can evaluate the condition expression in hardware,
6623      then we we need to insert both watchpoints even if they are at
6624      the same place.  Otherwise the watchpoint will only trigger when
6625      the condition of whichever watchpoint was inserted evaluates to
6626      true, not giving a chance for GDB to check the condition of the
6627      other watchpoint.  */
6628   if ((w1->cond_exp
6629        && target_can_accel_watchpoint_condition (loc1->address, 
6630                                                  loc1->length,
6631                                                  loc1->watchpoint_type,
6632                                                  w1->cond_exp))
6633       || (w2->cond_exp
6634           && target_can_accel_watchpoint_condition (loc2->address, 
6635                                                     loc2->length,
6636                                                     loc2->watchpoint_type,
6637                                                     w2->cond_exp)))
6638     return 0;
6639
6640   /* Note that this checks the owner's type, not the location's.  In
6641      case the target does not support read watchpoints, but does
6642      support access watchpoints, we'll have bp_read_watchpoint
6643      watchpoints with hw_access locations.  Those should be considered
6644      duplicates of hw_read locations.  The hw_read locations will
6645      become hw_access locations later.  */
6646   return (loc1->owner->type == loc2->owner->type
6647           && loc1->pspace->aspace == loc2->pspace->aspace
6648           && loc1->address == loc2->address
6649           && loc1->length == loc2->length);
6650 }
6651
6652 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6653    same breakpoint location.  In most targets, this can only be true
6654    if ASPACE1 matches ASPACE2.  On targets that have global
6655    breakpoints, the address space doesn't really matter.  */
6656
6657 static int
6658 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6659                           struct address_space *aspace2, CORE_ADDR addr2)
6660 {
6661   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6662            || aspace1 == aspace2)
6663           && addr1 == addr2);
6664 }
6665
6666 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6667    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6668    matches ASPACE2.  On targets that have global breakpoints, the address
6669    space doesn't really matter.  */
6670
6671 static int
6672 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6673                                 int len1, struct address_space *aspace2,
6674                                 CORE_ADDR addr2)
6675 {
6676   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6677            || aspace1 == aspace2)
6678           && addr2 >= addr1 && addr2 < addr1 + len1);
6679 }
6680
6681 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6682    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6683    matches the breakpoint's address space.  On targets that have global
6684    breakpoints, the address space doesn't really matter.  */
6685
6686 static int
6687 breakpoint_location_address_match (struct bp_location *bl,
6688                                    struct address_space *aspace,
6689                                    CORE_ADDR addr)
6690 {
6691   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6692                                     aspace, addr)
6693           || (bl->length
6694               && breakpoint_address_match_range (bl->pspace->aspace,
6695                                                  bl->address, bl->length,
6696                                                  aspace, addr)));
6697 }
6698
6699 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6700    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6701    true, otherwise returns false.  */
6702
6703 static int
6704 tracepoint_locations_match (struct bp_location *loc1,
6705                             struct bp_location *loc2)
6706 {
6707   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6708     /* Since tracepoint locations are never duplicated with others', tracepoint
6709        locations at the same address of different tracepoints are regarded as
6710        different locations.  */
6711     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6712   else
6713     return 0;
6714 }
6715
6716 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6717    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6718    represent the same location.  */
6719
6720 static int
6721 breakpoint_locations_match (struct bp_location *loc1, 
6722                             struct bp_location *loc2)
6723 {
6724   int hw_point1, hw_point2;
6725
6726   /* Both of them must not be in moribund_locations.  */
6727   gdb_assert (loc1->owner != NULL);
6728   gdb_assert (loc2->owner != NULL);
6729
6730   hw_point1 = is_hardware_watchpoint (loc1->owner);
6731   hw_point2 = is_hardware_watchpoint (loc2->owner);
6732
6733   if (hw_point1 != hw_point2)
6734     return 0;
6735   else if (hw_point1)
6736     return watchpoint_locations_match (loc1, loc2);
6737   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6738     return tracepoint_locations_match (loc1, loc2);
6739   else
6740     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6741     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6742                                      loc2->pspace->aspace, loc2->address)
6743             && loc1->length == loc2->length);
6744 }
6745
6746 static void
6747 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6748                                int bnum, int have_bnum)
6749 {
6750   /* The longest string possibly returned by hex_string_custom
6751      is 50 chars.  These must be at least that big for safety.  */
6752   char astr1[64];
6753   char astr2[64];
6754
6755   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6756   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6757   if (have_bnum)
6758     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6759              bnum, astr1, astr2);
6760   else
6761     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6762 }
6763
6764 /* Adjust a breakpoint's address to account for architectural
6765    constraints on breakpoint placement.  Return the adjusted address.
6766    Note: Very few targets require this kind of adjustment.  For most
6767    targets, this function is simply the identity function.  */
6768
6769 static CORE_ADDR
6770 adjust_breakpoint_address (struct gdbarch *gdbarch,
6771                            CORE_ADDR bpaddr, enum bptype bptype)
6772 {
6773   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6774     {
6775       /* Very few targets need any kind of breakpoint adjustment.  */
6776       return bpaddr;
6777     }
6778   else if (bptype == bp_watchpoint
6779            || bptype == bp_hardware_watchpoint
6780            || bptype == bp_read_watchpoint
6781            || bptype == bp_access_watchpoint
6782            || bptype == bp_catchpoint)
6783     {
6784       /* Watchpoints and the various bp_catch_* eventpoints should not
6785          have their addresses modified.  */
6786       return bpaddr;
6787     }
6788   else
6789     {
6790       CORE_ADDR adjusted_bpaddr;
6791
6792       /* Some targets have architectural constraints on the placement
6793          of breakpoint instructions.  Obtain the adjusted address.  */
6794       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6795
6796       /* An adjusted breakpoint address can significantly alter
6797          a user's expectations.  Print a warning if an adjustment
6798          is required.  */
6799       if (adjusted_bpaddr != bpaddr)
6800         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6801
6802       return adjusted_bpaddr;
6803     }
6804 }
6805
6806 void
6807 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6808                   struct breakpoint *owner)
6809 {
6810   memset (loc, 0, sizeof (*loc));
6811
6812   gdb_assert (ops != NULL);
6813
6814   loc->ops = ops;
6815   loc->owner = owner;
6816   loc->cond = NULL;
6817   loc->cond_bytecode = NULL;
6818   loc->shlib_disabled = 0;
6819   loc->enabled = 1;
6820
6821   switch (owner->type)
6822     {
6823     case bp_breakpoint:
6824     case bp_until:
6825     case bp_finish:
6826     case bp_longjmp:
6827     case bp_longjmp_resume:
6828     case bp_longjmp_call_dummy:
6829     case bp_exception:
6830     case bp_exception_resume:
6831     case bp_step_resume:
6832     case bp_hp_step_resume:
6833     case bp_watchpoint_scope:
6834     case bp_call_dummy:
6835     case bp_std_terminate:
6836     case bp_shlib_event:
6837     case bp_thread_event:
6838     case bp_overlay_event:
6839     case bp_jit_event:
6840     case bp_longjmp_master:
6841     case bp_std_terminate_master:
6842     case bp_exception_master:
6843     case bp_gnu_ifunc_resolver:
6844     case bp_gnu_ifunc_resolver_return:
6845     case bp_dprintf:
6846       loc->loc_type = bp_loc_software_breakpoint;
6847       mark_breakpoint_location_modified (loc);
6848       break;
6849     case bp_hardware_breakpoint:
6850       loc->loc_type = bp_loc_hardware_breakpoint;
6851       mark_breakpoint_location_modified (loc);
6852       break;
6853     case bp_hardware_watchpoint:
6854     case bp_read_watchpoint:
6855     case bp_access_watchpoint:
6856       loc->loc_type = bp_loc_hardware_watchpoint;
6857       break;
6858     case bp_watchpoint:
6859     case bp_catchpoint:
6860     case bp_tracepoint:
6861     case bp_fast_tracepoint:
6862     case bp_static_tracepoint:
6863       loc->loc_type = bp_loc_other;
6864       break;
6865     default:
6866       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6867     }
6868
6869   loc->refc = 1;
6870 }
6871
6872 /* Allocate a struct bp_location.  */
6873
6874 static struct bp_location *
6875 allocate_bp_location (struct breakpoint *bpt)
6876 {
6877   return bpt->ops->allocate_location (bpt);
6878 }
6879
6880 static void
6881 free_bp_location (struct bp_location *loc)
6882 {
6883   loc->ops->dtor (loc);
6884   xfree (loc);
6885 }
6886
6887 /* Increment reference count.  */
6888
6889 static void
6890 incref_bp_location (struct bp_location *bl)
6891 {
6892   ++bl->refc;
6893 }
6894
6895 /* Decrement reference count.  If the reference count reaches 0,
6896    destroy the bp_location.  Sets *BLP to NULL.  */
6897
6898 static void
6899 decref_bp_location (struct bp_location **blp)
6900 {
6901   gdb_assert ((*blp)->refc > 0);
6902
6903   if (--(*blp)->refc == 0)
6904     free_bp_location (*blp);
6905   *blp = NULL;
6906 }
6907
6908 /* Add breakpoint B at the end of the global breakpoint chain.  */
6909
6910 static void
6911 add_to_breakpoint_chain (struct breakpoint *b)
6912 {
6913   struct breakpoint *b1;
6914
6915   /* Add this breakpoint to the end of the chain so that a list of
6916      breakpoints will come out in order of increasing numbers.  */
6917
6918   b1 = breakpoint_chain;
6919   if (b1 == 0)
6920     breakpoint_chain = b;
6921   else
6922     {
6923       while (b1->next)
6924         b1 = b1->next;
6925       b1->next = b;
6926     }
6927 }
6928
6929 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6930
6931 static void
6932 init_raw_breakpoint_without_location (struct breakpoint *b,
6933                                       struct gdbarch *gdbarch,
6934                                       enum bptype bptype,
6935                                       const struct breakpoint_ops *ops)
6936 {
6937   memset (b, 0, sizeof (*b));
6938
6939   gdb_assert (ops != NULL);
6940
6941   b->ops = ops;
6942   b->type = bptype;
6943   b->gdbarch = gdbarch;
6944   b->language = current_language->la_language;
6945   b->input_radix = input_radix;
6946   b->thread = -1;
6947   b->enable_state = bp_enabled;
6948   b->next = 0;
6949   b->silent = 0;
6950   b->ignore_count = 0;
6951   b->commands = NULL;
6952   b->frame_id = null_frame_id;
6953   b->condition_not_parsed = 0;
6954   b->py_bp_object = NULL;
6955   b->related_breakpoint = b;
6956 }
6957
6958 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6959    that has type BPTYPE and has no locations as yet.  */
6960
6961 static struct breakpoint *
6962 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6963                                      enum bptype bptype,
6964                                      const struct breakpoint_ops *ops)
6965 {
6966   struct breakpoint *b = XNEW (struct breakpoint);
6967
6968   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6969   add_to_breakpoint_chain (b);
6970   return b;
6971 }
6972
6973 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6974    resolutions should be made as the user specified the location explicitly
6975    enough.  */
6976
6977 static void
6978 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6979 {
6980   gdb_assert (loc->owner != NULL);
6981
6982   if (loc->owner->type == bp_breakpoint
6983       || loc->owner->type == bp_hardware_breakpoint
6984       || is_tracepoint (loc->owner))
6985     {
6986       int is_gnu_ifunc;
6987       const char *function_name;
6988       CORE_ADDR func_addr;
6989
6990       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6991                                           &func_addr, NULL, &is_gnu_ifunc);
6992
6993       if (is_gnu_ifunc && !explicit_loc)
6994         {
6995           struct breakpoint *b = loc->owner;
6996
6997           gdb_assert (loc->pspace == current_program_space);
6998           if (gnu_ifunc_resolve_name (function_name,
6999                                       &loc->requested_address))
7000             {
7001               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7002               loc->address = adjust_breakpoint_address (loc->gdbarch,
7003                                                         loc->requested_address,
7004                                                         b->type);
7005             }
7006           else if (b->type == bp_breakpoint && b->loc == loc
7007                    && loc->next == NULL && b->related_breakpoint == b)
7008             {
7009               /* Create only the whole new breakpoint of this type but do not
7010                  mess more complicated breakpoints with multiple locations.  */
7011               b->type = bp_gnu_ifunc_resolver;
7012               /* Remember the resolver's address for use by the return
7013                  breakpoint.  */
7014               loc->related_address = func_addr;
7015             }
7016         }
7017
7018       if (function_name)
7019         loc->function_name = xstrdup (function_name);
7020     }
7021 }
7022
7023 /* Attempt to determine architecture of location identified by SAL.  */
7024 struct gdbarch *
7025 get_sal_arch (struct symtab_and_line sal)
7026 {
7027   if (sal.section)
7028     return get_objfile_arch (sal.section->objfile);
7029   if (sal.symtab)
7030     return get_objfile_arch (sal.symtab->objfile);
7031
7032   return NULL;
7033 }
7034
7035 /* Low level routine for partially initializing a breakpoint of type
7036    BPTYPE.  The newly created breakpoint's address, section, source
7037    file name, and line number are provided by SAL.
7038
7039    It is expected that the caller will complete the initialization of
7040    the newly created breakpoint struct as well as output any status
7041    information regarding the creation of a new breakpoint.  */
7042
7043 static void
7044 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7045                      struct symtab_and_line sal, enum bptype bptype,
7046                      const struct breakpoint_ops *ops)
7047 {
7048   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7049
7050   add_location_to_breakpoint (b, &sal);
7051
7052   if (bptype != bp_catchpoint)
7053     gdb_assert (sal.pspace != NULL);
7054
7055   /* Store the program space that was used to set the breakpoint,
7056      except for ordinary breakpoints, which are independent of the
7057      program space.  */
7058   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7059     b->pspace = sal.pspace;
7060 }
7061
7062 /* set_raw_breakpoint is a low level routine for allocating and
7063    partially initializing a breakpoint of type BPTYPE.  The newly
7064    created breakpoint's address, section, source file name, and line
7065    number are provided by SAL.  The newly created and partially
7066    initialized breakpoint is added to the breakpoint chain and
7067    is also returned as the value of this function.
7068
7069    It is expected that the caller will complete the initialization of
7070    the newly created breakpoint struct as well as output any status
7071    information regarding the creation of a new breakpoint.  In
7072    particular, set_raw_breakpoint does NOT set the breakpoint
7073    number!  Care should be taken to not allow an error to occur
7074    prior to completing the initialization of the breakpoint.  If this
7075    should happen, a bogus breakpoint will be left on the chain.  */
7076
7077 struct breakpoint *
7078 set_raw_breakpoint (struct gdbarch *gdbarch,
7079                     struct symtab_and_line sal, enum bptype bptype,
7080                     const struct breakpoint_ops *ops)
7081 {
7082   struct breakpoint *b = XNEW (struct breakpoint);
7083
7084   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7085   add_to_breakpoint_chain (b);
7086   return b;
7087 }
7088
7089
7090 /* Note that the breakpoint object B describes a permanent breakpoint
7091    instruction, hard-wired into the inferior's code.  */
7092 void
7093 make_breakpoint_permanent (struct breakpoint *b)
7094 {
7095   struct bp_location *bl;
7096
7097   b->enable_state = bp_permanent;
7098
7099   /* By definition, permanent breakpoints are already present in the
7100      code.  Mark all locations as inserted.  For now,
7101      make_breakpoint_permanent is called in just one place, so it's
7102      hard to say if it's reasonable to have permanent breakpoint with
7103      multiple locations or not, but it's easy to implement.  */
7104   for (bl = b->loc; bl; bl = bl->next)
7105     bl->inserted = 1;
7106 }
7107
7108 /* Call this routine when stepping and nexting to enable a breakpoint
7109    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7110    initiated the operation.  */
7111
7112 void
7113 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7114 {
7115   struct breakpoint *b, *b_tmp;
7116   int thread = tp->num;
7117
7118   /* To avoid having to rescan all objfile symbols at every step,
7119      we maintain a list of continually-inserted but always disabled
7120      longjmp "master" breakpoints.  Here, we simply create momentary
7121      clones of those and enable them for the requested thread.  */
7122   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7123     if (b->pspace == current_program_space
7124         && (b->type == bp_longjmp_master
7125             || b->type == bp_exception_master))
7126       {
7127         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7128         struct breakpoint *clone;
7129
7130         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7131            after their removal.  */
7132         clone = momentary_breakpoint_from_master (b, type,
7133                                                   &longjmp_breakpoint_ops);
7134         clone->thread = thread;
7135       }
7136
7137   tp->initiating_frame = frame;
7138 }
7139
7140 /* Delete all longjmp breakpoints from THREAD.  */
7141 void
7142 delete_longjmp_breakpoint (int thread)
7143 {
7144   struct breakpoint *b, *b_tmp;
7145
7146   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7147     if (b->type == bp_longjmp || b->type == bp_exception)
7148       {
7149         if (b->thread == thread)
7150           delete_breakpoint (b);
7151       }
7152 }
7153
7154 void
7155 delete_longjmp_breakpoint_at_next_stop (int thread)
7156 {
7157   struct breakpoint *b, *b_tmp;
7158
7159   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7160     if (b->type == bp_longjmp || b->type == bp_exception)
7161       {
7162         if (b->thread == thread)
7163           b->disposition = disp_del_at_next_stop;
7164       }
7165 }
7166
7167 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7168    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7169    pointer to any of them.  Return NULL if this system cannot place longjmp
7170    breakpoints.  */
7171
7172 struct breakpoint *
7173 set_longjmp_breakpoint_for_call_dummy (void)
7174 {
7175   struct breakpoint *b, *retval = NULL;
7176
7177   ALL_BREAKPOINTS (b)
7178     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7179       {
7180         struct breakpoint *new_b;
7181
7182         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7183                                                   &momentary_breakpoint_ops);
7184         new_b->thread = pid_to_thread_id (inferior_ptid);
7185
7186         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7187
7188         gdb_assert (new_b->related_breakpoint == new_b);
7189         if (retval == NULL)
7190           retval = new_b;
7191         new_b->related_breakpoint = retval;
7192         while (retval->related_breakpoint != new_b->related_breakpoint)
7193           retval = retval->related_breakpoint;
7194         retval->related_breakpoint = new_b;
7195       }
7196
7197   return retval;
7198 }
7199
7200 /* Verify all existing dummy frames and their associated breakpoints for
7201    THREAD.  Remove those which can no longer be found in the current frame
7202    stack.
7203
7204    You should call this function only at places where it is safe to currently
7205    unwind the whole stack.  Failed stack unwind would discard live dummy
7206    frames.  */
7207
7208 void
7209 check_longjmp_breakpoint_for_call_dummy (int thread)
7210 {
7211   struct breakpoint *b, *b_tmp;
7212
7213   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7214     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7215       {
7216         struct breakpoint *dummy_b = b->related_breakpoint;
7217
7218         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7219           dummy_b = dummy_b->related_breakpoint;
7220         if (dummy_b->type != bp_call_dummy
7221             || frame_find_by_id (dummy_b->frame_id) != NULL)
7222           continue;
7223         
7224         dummy_frame_discard (dummy_b->frame_id);
7225
7226         while (b->related_breakpoint != b)
7227           {
7228             if (b_tmp == b->related_breakpoint)
7229               b_tmp = b->related_breakpoint->next;
7230             delete_breakpoint (b->related_breakpoint);
7231           }
7232         delete_breakpoint (b);
7233       }
7234 }
7235
7236 void
7237 enable_overlay_breakpoints (void)
7238 {
7239   struct breakpoint *b;
7240
7241   ALL_BREAKPOINTS (b)
7242     if (b->type == bp_overlay_event)
7243     {
7244       b->enable_state = bp_enabled;
7245       update_global_location_list (1);
7246       overlay_events_enabled = 1;
7247     }
7248 }
7249
7250 void
7251 disable_overlay_breakpoints (void)
7252 {
7253   struct breakpoint *b;
7254
7255   ALL_BREAKPOINTS (b)
7256     if (b->type == bp_overlay_event)
7257     {
7258       b->enable_state = bp_disabled;
7259       update_global_location_list (0);
7260       overlay_events_enabled = 0;
7261     }
7262 }
7263
7264 /* Set an active std::terminate breakpoint for each std::terminate
7265    master breakpoint.  */
7266 void
7267 set_std_terminate_breakpoint (void)
7268 {
7269   struct breakpoint *b, *b_tmp;
7270
7271   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7272     if (b->pspace == current_program_space
7273         && b->type == bp_std_terminate_master)
7274       {
7275         momentary_breakpoint_from_master (b, bp_std_terminate,
7276                                           &momentary_breakpoint_ops);
7277       }
7278 }
7279
7280 /* Delete all the std::terminate breakpoints.  */
7281 void
7282 delete_std_terminate_breakpoint (void)
7283 {
7284   struct breakpoint *b, *b_tmp;
7285
7286   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7287     if (b->type == bp_std_terminate)
7288       delete_breakpoint (b);
7289 }
7290
7291 struct breakpoint *
7292 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7293 {
7294   struct breakpoint *b;
7295
7296   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7297                                   &internal_breakpoint_ops);
7298
7299   b->enable_state = bp_enabled;
7300   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7301   b->addr_string
7302     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7303
7304   update_global_location_list_nothrow (1);
7305
7306   return b;
7307 }
7308
7309 void
7310 remove_thread_event_breakpoints (void)
7311 {
7312   struct breakpoint *b, *b_tmp;
7313
7314   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7315     if (b->type == bp_thread_event
7316         && b->loc->pspace == current_program_space)
7317       delete_breakpoint (b);
7318 }
7319
7320 struct lang_and_radix
7321   {
7322     enum language lang;
7323     int radix;
7324   };
7325
7326 /* Create a breakpoint for JIT code registration and unregistration.  */
7327
7328 struct breakpoint *
7329 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7330 {
7331   struct breakpoint *b;
7332
7333   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7334                                   &internal_breakpoint_ops);
7335   update_global_location_list_nothrow (1);
7336   return b;
7337 }
7338
7339 /* Remove JIT code registration and unregistration breakpoint(s).  */
7340
7341 void
7342 remove_jit_event_breakpoints (void)
7343 {
7344   struct breakpoint *b, *b_tmp;
7345
7346   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7347     if (b->type == bp_jit_event
7348         && b->loc->pspace == current_program_space)
7349       delete_breakpoint (b);
7350 }
7351
7352 void
7353 remove_solib_event_breakpoints (void)
7354 {
7355   struct breakpoint *b, *b_tmp;
7356
7357   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7358     if (b->type == bp_shlib_event
7359         && b->loc->pspace == current_program_space)
7360       delete_breakpoint (b);
7361 }
7362
7363 struct breakpoint *
7364 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7365 {
7366   struct breakpoint *b;
7367
7368   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7369                                   &internal_breakpoint_ops);
7370   update_global_location_list_nothrow (1);
7371   return b;
7372 }
7373
7374 /* Disable any breakpoints that are on code in shared libraries.  Only
7375    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7376
7377 void
7378 disable_breakpoints_in_shlibs (void)
7379 {
7380   struct bp_location *loc, **locp_tmp;
7381
7382   ALL_BP_LOCATIONS (loc, locp_tmp)
7383   {
7384     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7385     struct breakpoint *b = loc->owner;
7386
7387     /* We apply the check to all breakpoints, including disabled for
7388        those with loc->duplicate set.  This is so that when breakpoint
7389        becomes enabled, or the duplicate is removed, gdb will try to
7390        insert all breakpoints.  If we don't set shlib_disabled here,
7391        we'll try to insert those breakpoints and fail.  */
7392     if (((b->type == bp_breakpoint)
7393          || (b->type == bp_jit_event)
7394          || (b->type == bp_hardware_breakpoint)
7395          || (is_tracepoint (b)))
7396         && loc->pspace == current_program_space
7397         && !loc->shlib_disabled
7398         && solib_name_from_address (loc->pspace, loc->address)
7399         )
7400       {
7401         loc->shlib_disabled = 1;
7402       }
7403   }
7404 }
7405
7406 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7407    library.  Only apply to enabled breakpoints, disabled ones can just stay
7408    disabled.  */
7409
7410 static void
7411 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7412 {
7413   struct bp_location *loc, **locp_tmp;
7414   int disabled_shlib_breaks = 0;
7415
7416   /* SunOS a.out shared libraries are always mapped, so do not
7417      disable breakpoints; they will only be reported as unloaded
7418      through clear_solib when GDB discards its shared library
7419      list.  See clear_solib for more information.  */
7420   if (exec_bfd != NULL
7421       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7422     return;
7423
7424   ALL_BP_LOCATIONS (loc, locp_tmp)
7425   {
7426     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7427     struct breakpoint *b = loc->owner;
7428
7429     if (solib->pspace == loc->pspace
7430         && !loc->shlib_disabled
7431         && (((b->type == bp_breakpoint
7432               || b->type == bp_jit_event
7433               || b->type == bp_hardware_breakpoint)
7434              && (loc->loc_type == bp_loc_hardware_breakpoint
7435                  || loc->loc_type == bp_loc_software_breakpoint))
7436             || is_tracepoint (b))
7437         && solib_contains_address_p (solib, loc->address))
7438       {
7439         loc->shlib_disabled = 1;
7440         /* At this point, we cannot rely on remove_breakpoint
7441            succeeding so we must mark the breakpoint as not inserted
7442            to prevent future errors occurring in remove_breakpoints.  */
7443         loc->inserted = 0;
7444
7445         /* This may cause duplicate notifications for the same breakpoint.  */
7446         observer_notify_breakpoint_modified (b);
7447
7448         if (!disabled_shlib_breaks)
7449           {
7450             target_terminal_ours_for_output ();
7451             warning (_("Temporarily disabling breakpoints "
7452                        "for unloaded shared library \"%s\""),
7453                      solib->so_name);
7454           }
7455         disabled_shlib_breaks = 1;
7456       }
7457   }
7458 }
7459
7460 /* FORK & VFORK catchpoints.  */
7461
7462 /* An instance of this type is used to represent a fork or vfork
7463    catchpoint.  It includes a "struct breakpoint" as a kind of base
7464    class; users downcast to "struct breakpoint *" when needed.  A
7465    breakpoint is really of this type iff its ops pointer points to
7466    CATCH_FORK_BREAKPOINT_OPS.  */
7467
7468 struct fork_catchpoint
7469 {
7470   /* The base class.  */
7471   struct breakpoint base;
7472
7473   /* Process id of a child process whose forking triggered this
7474      catchpoint.  This field is only valid immediately after this
7475      catchpoint has triggered.  */
7476   ptid_t forked_inferior_pid;
7477 };
7478
7479 /* Implement the "insert" breakpoint_ops method for fork
7480    catchpoints.  */
7481
7482 static int
7483 insert_catch_fork (struct bp_location *bl)
7484 {
7485   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7486 }
7487
7488 /* Implement the "remove" breakpoint_ops method for fork
7489    catchpoints.  */
7490
7491 static int
7492 remove_catch_fork (struct bp_location *bl)
7493 {
7494   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7495 }
7496
7497 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7498    catchpoints.  */
7499
7500 static int
7501 breakpoint_hit_catch_fork (const struct bp_location *bl,
7502                            struct address_space *aspace, CORE_ADDR bp_addr,
7503                            const struct target_waitstatus *ws)
7504 {
7505   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7506
7507   if (ws->kind != TARGET_WAITKIND_FORKED)
7508     return 0;
7509
7510   c->forked_inferior_pid = ws->value.related_pid;
7511   return 1;
7512 }
7513
7514 /* Implement the "print_it" breakpoint_ops method for fork
7515    catchpoints.  */
7516
7517 static enum print_stop_action
7518 print_it_catch_fork (bpstat bs)
7519 {
7520   struct ui_out *uiout = current_uiout;
7521   struct breakpoint *b = bs->breakpoint_at;
7522   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7523
7524   annotate_catchpoint (b->number);
7525   if (b->disposition == disp_del)
7526     ui_out_text (uiout, "\nTemporary catchpoint ");
7527   else
7528     ui_out_text (uiout, "\nCatchpoint ");
7529   if (ui_out_is_mi_like_p (uiout))
7530     {
7531       ui_out_field_string (uiout, "reason",
7532                            async_reason_lookup (EXEC_ASYNC_FORK));
7533       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7534     }
7535   ui_out_field_int (uiout, "bkptno", b->number);
7536   ui_out_text (uiout, " (forked process ");
7537   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7538   ui_out_text (uiout, "), ");
7539   return PRINT_SRC_AND_LOC;
7540 }
7541
7542 /* Implement the "print_one" breakpoint_ops method for fork
7543    catchpoints.  */
7544
7545 static void
7546 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7547 {
7548   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7549   struct value_print_options opts;
7550   struct ui_out *uiout = current_uiout;
7551
7552   get_user_print_options (&opts);
7553
7554   /* Field 4, the address, is omitted (which makes the columns not
7555      line up too nicely with the headers, but the effect is relatively
7556      readable).  */
7557   if (opts.addressprint)
7558     ui_out_field_skip (uiout, "addr");
7559   annotate_field (5);
7560   ui_out_text (uiout, "fork");
7561   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7562     {
7563       ui_out_text (uiout, ", process ");
7564       ui_out_field_int (uiout, "what",
7565                         ptid_get_pid (c->forked_inferior_pid));
7566       ui_out_spaces (uiout, 1);
7567     }
7568
7569   if (ui_out_is_mi_like_p (uiout))
7570     ui_out_field_string (uiout, "catch-type", "fork");
7571 }
7572
7573 /* Implement the "print_mention" breakpoint_ops method for fork
7574    catchpoints.  */
7575
7576 static void
7577 print_mention_catch_fork (struct breakpoint *b)
7578 {
7579   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7580 }
7581
7582 /* Implement the "print_recreate" breakpoint_ops method for fork
7583    catchpoints.  */
7584
7585 static void
7586 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7587 {
7588   fprintf_unfiltered (fp, "catch fork");
7589   print_recreate_thread (b, fp);
7590 }
7591
7592 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7593
7594 static struct breakpoint_ops catch_fork_breakpoint_ops;
7595
7596 /* Implement the "insert" breakpoint_ops method for vfork
7597    catchpoints.  */
7598
7599 static int
7600 insert_catch_vfork (struct bp_location *bl)
7601 {
7602   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7603 }
7604
7605 /* Implement the "remove" breakpoint_ops method for vfork
7606    catchpoints.  */
7607
7608 static int
7609 remove_catch_vfork (struct bp_location *bl)
7610 {
7611   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7612 }
7613
7614 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7615    catchpoints.  */
7616
7617 static int
7618 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7619                             struct address_space *aspace, CORE_ADDR bp_addr,
7620                             const struct target_waitstatus *ws)
7621 {
7622   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7623
7624   if (ws->kind != TARGET_WAITKIND_VFORKED)
7625     return 0;
7626
7627   c->forked_inferior_pid = ws->value.related_pid;
7628   return 1;
7629 }
7630
7631 /* Implement the "print_it" breakpoint_ops method for vfork
7632    catchpoints.  */
7633
7634 static enum print_stop_action
7635 print_it_catch_vfork (bpstat bs)
7636 {
7637   struct ui_out *uiout = current_uiout;
7638   struct breakpoint *b = bs->breakpoint_at;
7639   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7640
7641   annotate_catchpoint (b->number);
7642   if (b->disposition == disp_del)
7643     ui_out_text (uiout, "\nTemporary catchpoint ");
7644   else
7645     ui_out_text (uiout, "\nCatchpoint ");
7646   if (ui_out_is_mi_like_p (uiout))
7647     {
7648       ui_out_field_string (uiout, "reason",
7649                            async_reason_lookup (EXEC_ASYNC_VFORK));
7650       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7651     }
7652   ui_out_field_int (uiout, "bkptno", b->number);
7653   ui_out_text (uiout, " (vforked process ");
7654   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7655   ui_out_text (uiout, "), ");
7656   return PRINT_SRC_AND_LOC;
7657 }
7658
7659 /* Implement the "print_one" breakpoint_ops method for vfork
7660    catchpoints.  */
7661
7662 static void
7663 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7664 {
7665   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7666   struct value_print_options opts;
7667   struct ui_out *uiout = current_uiout;
7668
7669   get_user_print_options (&opts);
7670   /* Field 4, the address, is omitted (which makes the columns not
7671      line up too nicely with the headers, but the effect is relatively
7672      readable).  */
7673   if (opts.addressprint)
7674     ui_out_field_skip (uiout, "addr");
7675   annotate_field (5);
7676   ui_out_text (uiout, "vfork");
7677   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7678     {
7679       ui_out_text (uiout, ", process ");
7680       ui_out_field_int (uiout, "what",
7681                         ptid_get_pid (c->forked_inferior_pid));
7682       ui_out_spaces (uiout, 1);
7683     }
7684
7685   if (ui_out_is_mi_like_p (uiout))
7686     ui_out_field_string (uiout, "catch-type", "vfork");
7687 }
7688
7689 /* Implement the "print_mention" breakpoint_ops method for vfork
7690    catchpoints.  */
7691
7692 static void
7693 print_mention_catch_vfork (struct breakpoint *b)
7694 {
7695   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7696 }
7697
7698 /* Implement the "print_recreate" breakpoint_ops method for vfork
7699    catchpoints.  */
7700
7701 static void
7702 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7703 {
7704   fprintf_unfiltered (fp, "catch vfork");
7705   print_recreate_thread (b, fp);
7706 }
7707
7708 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7709
7710 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7711
7712 /* An instance of this type is used to represent an solib catchpoint.
7713    It includes a "struct breakpoint" as a kind of base class; users
7714    downcast to "struct breakpoint *" when needed.  A breakpoint is
7715    really of this type iff its ops pointer points to
7716    CATCH_SOLIB_BREAKPOINT_OPS.  */
7717
7718 struct solib_catchpoint
7719 {
7720   /* The base class.  */
7721   struct breakpoint base;
7722
7723   /* True for "catch load", false for "catch unload".  */
7724   unsigned char is_load;
7725
7726   /* Regular expression to match, if any.  COMPILED is only valid when
7727      REGEX is non-NULL.  */
7728   char *regex;
7729   regex_t compiled;
7730 };
7731
7732 static void
7733 dtor_catch_solib (struct breakpoint *b)
7734 {
7735   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7736
7737   if (self->regex)
7738     regfree (&self->compiled);
7739   xfree (self->regex);
7740
7741   base_breakpoint_ops.dtor (b);
7742 }
7743
7744 static int
7745 insert_catch_solib (struct bp_location *ignore)
7746 {
7747   return 0;
7748 }
7749
7750 static int
7751 remove_catch_solib (struct bp_location *ignore)
7752 {
7753   return 0;
7754 }
7755
7756 static int
7757 breakpoint_hit_catch_solib (const struct bp_location *bl,
7758                             struct address_space *aspace,
7759                             CORE_ADDR bp_addr,
7760                             const struct target_waitstatus *ws)
7761 {
7762   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7763   struct breakpoint *other;
7764
7765   if (ws->kind == TARGET_WAITKIND_LOADED)
7766     return 1;
7767
7768   ALL_BREAKPOINTS (other)
7769   {
7770     struct bp_location *other_bl;
7771
7772     if (other == bl->owner)
7773       continue;
7774
7775     if (other->type != bp_shlib_event)
7776       continue;
7777
7778     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7779       continue;
7780
7781     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7782       {
7783         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7784           return 1;
7785       }
7786   }
7787
7788   return 0;
7789 }
7790
7791 static void
7792 check_status_catch_solib (struct bpstats *bs)
7793 {
7794   struct solib_catchpoint *self
7795     = (struct solib_catchpoint *) bs->breakpoint_at;
7796   int ix;
7797
7798   if (self->is_load)
7799     {
7800       struct so_list *iter;
7801
7802       for (ix = 0;
7803            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7804                         ix, iter);
7805            ++ix)
7806         {
7807           if (!self->regex
7808               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7809             return;
7810         }
7811     }
7812   else
7813     {
7814       char *iter;
7815
7816       for (ix = 0;
7817            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7818                         ix, iter);
7819            ++ix)
7820         {
7821           if (!self->regex
7822               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7823             return;
7824         }
7825     }
7826
7827   bs->stop = 0;
7828   bs->print_it = print_it_noop;
7829 }
7830
7831 static enum print_stop_action
7832 print_it_catch_solib (bpstat bs)
7833 {
7834   struct breakpoint *b = bs->breakpoint_at;
7835   struct ui_out *uiout = current_uiout;
7836
7837   annotate_catchpoint (b->number);
7838   if (b->disposition == disp_del)
7839     ui_out_text (uiout, "\nTemporary catchpoint ");
7840   else
7841     ui_out_text (uiout, "\nCatchpoint ");
7842   ui_out_field_int (uiout, "bkptno", b->number);
7843   ui_out_text (uiout, "\n");
7844   if (ui_out_is_mi_like_p (uiout))
7845     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7846   print_solib_event (1);
7847   return PRINT_SRC_AND_LOC;
7848 }
7849
7850 static void
7851 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7852 {
7853   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7854   struct value_print_options opts;
7855   struct ui_out *uiout = current_uiout;
7856   char *msg;
7857
7858   get_user_print_options (&opts);
7859   /* Field 4, the address, is omitted (which makes the columns not
7860      line up too nicely with the headers, but the effect is relatively
7861      readable).  */
7862   if (opts.addressprint)
7863     {
7864       annotate_field (4);
7865       ui_out_field_skip (uiout, "addr");
7866     }
7867
7868   annotate_field (5);
7869   if (self->is_load)
7870     {
7871       if (self->regex)
7872         msg = xstrprintf (_("load of library matching %s"), self->regex);
7873       else
7874         msg = xstrdup (_("load of library"));
7875     }
7876   else
7877     {
7878       if (self->regex)
7879         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7880       else
7881         msg = xstrdup (_("unload of library"));
7882     }
7883   ui_out_field_string (uiout, "what", msg);
7884   xfree (msg);
7885
7886   if (ui_out_is_mi_like_p (uiout))
7887     ui_out_field_string (uiout, "catch-type",
7888                          self->is_load ? "load" : "unload");
7889 }
7890
7891 static void
7892 print_mention_catch_solib (struct breakpoint *b)
7893 {
7894   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7895
7896   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7897                    self->is_load ? "load" : "unload");
7898 }
7899
7900 static void
7901 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7902 {
7903   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7904
7905   fprintf_unfiltered (fp, "%s %s",
7906                       b->disposition == disp_del ? "tcatch" : "catch",
7907                       self->is_load ? "load" : "unload");
7908   if (self->regex)
7909     fprintf_unfiltered (fp, " %s", self->regex);
7910   fprintf_unfiltered (fp, "\n");
7911 }
7912
7913 static struct breakpoint_ops catch_solib_breakpoint_ops;
7914
7915 /* Shared helper function (MI and CLI) for creating and installing
7916    a shared object event catchpoint.  If IS_LOAD is non-zero then
7917    the events to be caught are load events, otherwise they are
7918    unload events.  If IS_TEMP is non-zero the catchpoint is a
7919    temporary one.  If ENABLED is non-zero the catchpoint is
7920    created in an enabled state.  */
7921
7922 void
7923 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7924 {
7925   struct solib_catchpoint *c;
7926   struct gdbarch *gdbarch = get_current_arch ();
7927   struct cleanup *cleanup;
7928
7929   if (!arg)
7930     arg = "";
7931   arg = skip_spaces (arg);
7932
7933   c = XCNEW (struct solib_catchpoint);
7934   cleanup = make_cleanup (xfree, c);
7935
7936   if (*arg != '\0')
7937     {
7938       int errcode;
7939
7940       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7941       if (errcode != 0)
7942         {
7943           char *err = get_regcomp_error (errcode, &c->compiled);
7944
7945           make_cleanup (xfree, err);
7946           error (_("Invalid regexp (%s): %s"), err, arg);
7947         }
7948       c->regex = xstrdup (arg);
7949     }
7950
7951   c->is_load = is_load;
7952   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7953                    &catch_solib_breakpoint_ops);
7954
7955   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7956
7957   discard_cleanups (cleanup);
7958   install_breakpoint (0, &c->base, 1);
7959 }
7960
7961 /* A helper function that does all the work for "catch load" and
7962    "catch unload".  */
7963
7964 static void
7965 catch_load_or_unload (char *arg, int from_tty, int is_load,
7966                       struct cmd_list_element *command)
7967 {
7968   int tempflag;
7969   const int enabled = 1;
7970
7971   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7972
7973   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7974 }
7975
7976 static void
7977 catch_load_command_1 (char *arg, int from_tty,
7978                       struct cmd_list_element *command)
7979 {
7980   catch_load_or_unload (arg, from_tty, 1, command);
7981 }
7982
7983 static void
7984 catch_unload_command_1 (char *arg, int from_tty,
7985                         struct cmd_list_element *command)
7986 {
7987   catch_load_or_unload (arg, from_tty, 0, command);
7988 }
7989
7990 /* An instance of this type is used to represent a syscall catchpoint.
7991    It includes a "struct breakpoint" as a kind of base class; users
7992    downcast to "struct breakpoint *" when needed.  A breakpoint is
7993    really of this type iff its ops pointer points to
7994    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7995
7996 struct syscall_catchpoint
7997 {
7998   /* The base class.  */
7999   struct breakpoint base;
8000
8001   /* Syscall numbers used for the 'catch syscall' feature.  If no
8002      syscall has been specified for filtering, its value is NULL.
8003      Otherwise, it holds a list of all syscalls to be caught.  The
8004      list elements are allocated with xmalloc.  */
8005   VEC(int) *syscalls_to_be_caught;
8006 };
8007
8008 /* Implement the "dtor" breakpoint_ops method for syscall
8009    catchpoints.  */
8010
8011 static void
8012 dtor_catch_syscall (struct breakpoint *b)
8013 {
8014   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8015
8016   VEC_free (int, c->syscalls_to_be_caught);
8017
8018   base_breakpoint_ops.dtor (b);
8019 }
8020
8021 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8022
8023 struct catch_syscall_inferior_data
8024 {
8025   /* We keep a count of the number of times the user has requested a
8026      particular syscall to be tracked, and pass this information to the
8027      target.  This lets capable targets implement filtering directly.  */
8028
8029   /* Number of times that "any" syscall is requested.  */
8030   int any_syscall_count;
8031
8032   /* Count of each system call.  */
8033   VEC(int) *syscalls_counts;
8034
8035   /* This counts all syscall catch requests, so we can readily determine
8036      if any catching is necessary.  */
8037   int total_syscalls_count;
8038 };
8039
8040 static struct catch_syscall_inferior_data*
8041 get_catch_syscall_inferior_data (struct inferior *inf)
8042 {
8043   struct catch_syscall_inferior_data *inf_data;
8044
8045   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8046   if (inf_data == NULL)
8047     {
8048       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8049       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8050     }
8051
8052   return inf_data;
8053 }
8054
8055 static void
8056 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8057 {
8058   xfree (arg);
8059 }
8060
8061
8062 /* Implement the "insert" breakpoint_ops method for syscall
8063    catchpoints.  */
8064
8065 static int
8066 insert_catch_syscall (struct bp_location *bl)
8067 {
8068   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8069   struct inferior *inf = current_inferior ();
8070   struct catch_syscall_inferior_data *inf_data
8071     = get_catch_syscall_inferior_data (inf);
8072
8073   ++inf_data->total_syscalls_count;
8074   if (!c->syscalls_to_be_caught)
8075     ++inf_data->any_syscall_count;
8076   else
8077     {
8078       int i, iter;
8079
8080       for (i = 0;
8081            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8082            i++)
8083         {
8084           int elem;
8085
8086           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8087             {
8088               int old_size = VEC_length (int, inf_data->syscalls_counts);
8089               uintptr_t vec_addr_offset
8090                 = old_size * ((uintptr_t) sizeof (int));
8091               uintptr_t vec_addr;
8092               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8093               vec_addr = ((uintptr_t) VEC_address (int,
8094                                                   inf_data->syscalls_counts)
8095                           + vec_addr_offset);
8096               memset ((void *) vec_addr, 0,
8097                       (iter + 1 - old_size) * sizeof (int));
8098             }
8099           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8100           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8101         }
8102     }
8103
8104   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8105                                         inf_data->total_syscalls_count != 0,
8106                                         inf_data->any_syscall_count,
8107                                         VEC_length (int,
8108                                                     inf_data->syscalls_counts),
8109                                         VEC_address (int,
8110                                                      inf_data->syscalls_counts));
8111 }
8112
8113 /* Implement the "remove" breakpoint_ops method for syscall
8114    catchpoints.  */
8115
8116 static int
8117 remove_catch_syscall (struct bp_location *bl)
8118 {
8119   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8120   struct inferior *inf = current_inferior ();
8121   struct catch_syscall_inferior_data *inf_data
8122     = get_catch_syscall_inferior_data (inf);
8123
8124   --inf_data->total_syscalls_count;
8125   if (!c->syscalls_to_be_caught)
8126     --inf_data->any_syscall_count;
8127   else
8128     {
8129       int i, iter;
8130
8131       for (i = 0;
8132            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8133            i++)
8134         {
8135           int elem;
8136           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8137             /* Shouldn't happen.  */
8138             continue;
8139           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8140           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8141         }
8142     }
8143
8144   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8145                                         inf_data->total_syscalls_count != 0,
8146                                         inf_data->any_syscall_count,
8147                                         VEC_length (int,
8148                                                     inf_data->syscalls_counts),
8149                                         VEC_address (int,
8150                                                      inf_data->syscalls_counts));
8151 }
8152
8153 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8154    catchpoints.  */
8155
8156 static int
8157 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8158                               struct address_space *aspace, CORE_ADDR bp_addr,
8159                               const struct target_waitstatus *ws)
8160 {
8161   /* We must check if we are catching specific syscalls in this
8162      breakpoint.  If we are, then we must guarantee that the called
8163      syscall is the same syscall we are catching.  */
8164   int syscall_number = 0;
8165   const struct syscall_catchpoint *c
8166     = (const struct syscall_catchpoint *) bl->owner;
8167
8168   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8169       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8170     return 0;
8171
8172   syscall_number = ws->value.syscall_number;
8173
8174   /* Now, checking if the syscall is the same.  */
8175   if (c->syscalls_to_be_caught)
8176     {
8177       int i, iter;
8178
8179       for (i = 0;
8180            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8181            i++)
8182         if (syscall_number == iter)
8183           break;
8184       /* Not the same.  */
8185       if (!iter)
8186         return 0;
8187     }
8188
8189   return 1;
8190 }
8191
8192 /* Implement the "print_it" breakpoint_ops method for syscall
8193    catchpoints.  */
8194
8195 static enum print_stop_action
8196 print_it_catch_syscall (bpstat bs)
8197 {
8198   struct ui_out *uiout = current_uiout;
8199   struct breakpoint *b = bs->breakpoint_at;
8200   /* These are needed because we want to know in which state a
8201      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8202      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8203      must print "called syscall" or "returned from syscall".  */
8204   ptid_t ptid;
8205   struct target_waitstatus last;
8206   struct syscall s;
8207
8208   get_last_target_status (&ptid, &last);
8209
8210   get_syscall_by_number (last.value.syscall_number, &s);
8211
8212   annotate_catchpoint (b->number);
8213
8214   if (b->disposition == disp_del)
8215     ui_out_text (uiout, "\nTemporary catchpoint ");
8216   else
8217     ui_out_text (uiout, "\nCatchpoint ");
8218   if (ui_out_is_mi_like_p (uiout))
8219     {
8220       ui_out_field_string (uiout, "reason",
8221                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8222                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8223                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8224       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8225     }
8226   ui_out_field_int (uiout, "bkptno", b->number);
8227
8228   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8229     ui_out_text (uiout, " (call to syscall ");
8230   else
8231     ui_out_text (uiout, " (returned from syscall ");
8232
8233   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8234     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8235   if (s.name != NULL)
8236     ui_out_field_string (uiout, "syscall-name", s.name);
8237
8238   ui_out_text (uiout, "), ");
8239
8240   return PRINT_SRC_AND_LOC;
8241 }
8242
8243 /* Implement the "print_one" breakpoint_ops method for syscall
8244    catchpoints.  */
8245
8246 static void
8247 print_one_catch_syscall (struct breakpoint *b,
8248                          struct bp_location **last_loc)
8249 {
8250   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8251   struct value_print_options opts;
8252   struct ui_out *uiout = current_uiout;
8253
8254   get_user_print_options (&opts);
8255   /* Field 4, the address, is omitted (which makes the columns not
8256      line up too nicely with the headers, but the effect is relatively
8257      readable).  */
8258   if (opts.addressprint)
8259     ui_out_field_skip (uiout, "addr");
8260   annotate_field (5);
8261
8262   if (c->syscalls_to_be_caught
8263       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8264     ui_out_text (uiout, "syscalls \"");
8265   else
8266     ui_out_text (uiout, "syscall \"");
8267
8268   if (c->syscalls_to_be_caught)
8269     {
8270       int i, iter;
8271       char *text = xstrprintf ("%s", "");
8272
8273       for (i = 0;
8274            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8275            i++)
8276         {
8277           char *x = text;
8278           struct syscall s;
8279           get_syscall_by_number (iter, &s);
8280
8281           if (s.name != NULL)
8282             text = xstrprintf ("%s%s, ", text, s.name);
8283           else
8284             text = xstrprintf ("%s%d, ", text, iter);
8285
8286           /* We have to xfree the last 'text' (now stored at 'x')
8287              because xstrprintf dynamically allocates new space for it
8288              on every call.  */
8289           xfree (x);
8290         }
8291       /* Remove the last comma.  */
8292       text[strlen (text) - 2] = '\0';
8293       ui_out_field_string (uiout, "what", text);
8294     }
8295   else
8296     ui_out_field_string (uiout, "what", "<any syscall>");
8297   ui_out_text (uiout, "\" ");
8298
8299   if (ui_out_is_mi_like_p (uiout))
8300     ui_out_field_string (uiout, "catch-type", "syscall");
8301 }
8302
8303 /* Implement the "print_mention" breakpoint_ops method for syscall
8304    catchpoints.  */
8305
8306 static void
8307 print_mention_catch_syscall (struct breakpoint *b)
8308 {
8309   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8310
8311   if (c->syscalls_to_be_caught)
8312     {
8313       int i, iter;
8314
8315       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8316         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8317       else
8318         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8319
8320       for (i = 0;
8321            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8322            i++)
8323         {
8324           struct syscall s;
8325           get_syscall_by_number (iter, &s);
8326
8327           if (s.name)
8328             printf_filtered (" '%s' [%d]", s.name, s.number);
8329           else
8330             printf_filtered (" %d", s.number);
8331         }
8332       printf_filtered (")");
8333     }
8334   else
8335     printf_filtered (_("Catchpoint %d (any syscall)"),
8336                      b->number);
8337 }
8338
8339 /* Implement the "print_recreate" breakpoint_ops method for syscall
8340    catchpoints.  */
8341
8342 static void
8343 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8344 {
8345   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8346
8347   fprintf_unfiltered (fp, "catch syscall");
8348
8349   if (c->syscalls_to_be_caught)
8350     {
8351       int i, iter;
8352
8353       for (i = 0;
8354            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8355            i++)
8356         {
8357           struct syscall s;
8358
8359           get_syscall_by_number (iter, &s);
8360           if (s.name)
8361             fprintf_unfiltered (fp, " %s", s.name);
8362           else
8363             fprintf_unfiltered (fp, " %d", s.number);
8364         }
8365     }
8366   print_recreate_thread (b, fp);
8367 }
8368
8369 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8370
8371 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8372
8373 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8374
8375 static int
8376 syscall_catchpoint_p (struct breakpoint *b)
8377 {
8378   return (b->ops == &catch_syscall_breakpoint_ops);
8379 }
8380
8381 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8382    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8383    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8384    the breakpoint_ops structure associated to the catchpoint.  */
8385
8386 void
8387 init_catchpoint (struct breakpoint *b,
8388                  struct gdbarch *gdbarch, int tempflag,
8389                  char *cond_string,
8390                  const struct breakpoint_ops *ops)
8391 {
8392   struct symtab_and_line sal;
8393
8394   init_sal (&sal);
8395   sal.pspace = current_program_space;
8396
8397   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8398
8399   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8400   b->disposition = tempflag ? disp_del : disp_donttouch;
8401 }
8402
8403 void
8404 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8405 {
8406   add_to_breakpoint_chain (b);
8407   set_breakpoint_number (internal, b);
8408   if (is_tracepoint (b))
8409     set_tracepoint_count (breakpoint_count);
8410   if (!internal)
8411     mention (b);
8412   observer_notify_breakpoint_created (b);
8413
8414   if (update_gll)
8415     update_global_location_list (1);
8416 }
8417
8418 static void
8419 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8420                                     int tempflag, char *cond_string,
8421                                     const struct breakpoint_ops *ops)
8422 {
8423   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8424
8425   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8426
8427   c->forked_inferior_pid = null_ptid;
8428
8429   install_breakpoint (0, &c->base, 1);
8430 }
8431
8432 /* Exec catchpoints.  */
8433
8434 /* An instance of this type is used to represent an exec catchpoint.
8435    It includes a "struct breakpoint" as a kind of base class; users
8436    downcast to "struct breakpoint *" when needed.  A breakpoint is
8437    really of this type iff its ops pointer points to
8438    CATCH_EXEC_BREAKPOINT_OPS.  */
8439
8440 struct exec_catchpoint
8441 {
8442   /* The base class.  */
8443   struct breakpoint base;
8444
8445   /* Filename of a program whose exec triggered this catchpoint.
8446      This field is only valid immediately after this catchpoint has
8447      triggered.  */
8448   char *exec_pathname;
8449 };
8450
8451 /* Implement the "dtor" breakpoint_ops method for exec
8452    catchpoints.  */
8453
8454 static void
8455 dtor_catch_exec (struct breakpoint *b)
8456 {
8457   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8458
8459   xfree (c->exec_pathname);
8460
8461   base_breakpoint_ops.dtor (b);
8462 }
8463
8464 static int
8465 insert_catch_exec (struct bp_location *bl)
8466 {
8467   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8468 }
8469
8470 static int
8471 remove_catch_exec (struct bp_location *bl)
8472 {
8473   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8474 }
8475
8476 static int
8477 breakpoint_hit_catch_exec (const struct bp_location *bl,
8478                            struct address_space *aspace, CORE_ADDR bp_addr,
8479                            const struct target_waitstatus *ws)
8480 {
8481   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8482
8483   if (ws->kind != TARGET_WAITKIND_EXECD)
8484     return 0;
8485
8486   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8487   return 1;
8488 }
8489
8490 static enum print_stop_action
8491 print_it_catch_exec (bpstat bs)
8492 {
8493   struct ui_out *uiout = current_uiout;
8494   struct breakpoint *b = bs->breakpoint_at;
8495   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8496
8497   annotate_catchpoint (b->number);
8498   if (b->disposition == disp_del)
8499     ui_out_text (uiout, "\nTemporary catchpoint ");
8500   else
8501     ui_out_text (uiout, "\nCatchpoint ");
8502   if (ui_out_is_mi_like_p (uiout))
8503     {
8504       ui_out_field_string (uiout, "reason",
8505                            async_reason_lookup (EXEC_ASYNC_EXEC));
8506       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8507     }
8508   ui_out_field_int (uiout, "bkptno", b->number);
8509   ui_out_text (uiout, " (exec'd ");
8510   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8511   ui_out_text (uiout, "), ");
8512
8513   return PRINT_SRC_AND_LOC;
8514 }
8515
8516 static void
8517 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8518 {
8519   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8520   struct value_print_options opts;
8521   struct ui_out *uiout = current_uiout;
8522
8523   get_user_print_options (&opts);
8524
8525   /* Field 4, the address, is omitted (which makes the columns
8526      not line up too nicely with the headers, but the effect
8527      is relatively readable).  */
8528   if (opts.addressprint)
8529     ui_out_field_skip (uiout, "addr");
8530   annotate_field (5);
8531   ui_out_text (uiout, "exec");
8532   if (c->exec_pathname != NULL)
8533     {
8534       ui_out_text (uiout, ", program \"");
8535       ui_out_field_string (uiout, "what", c->exec_pathname);
8536       ui_out_text (uiout, "\" ");
8537     }
8538
8539   if (ui_out_is_mi_like_p (uiout))
8540     ui_out_field_string (uiout, "catch-type", "exec");
8541 }
8542
8543 static void
8544 print_mention_catch_exec (struct breakpoint *b)
8545 {
8546   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8547 }
8548
8549 /* Implement the "print_recreate" breakpoint_ops method for exec
8550    catchpoints.  */
8551
8552 static void
8553 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8554 {
8555   fprintf_unfiltered (fp, "catch exec");
8556   print_recreate_thread (b, fp);
8557 }
8558
8559 static struct breakpoint_ops catch_exec_breakpoint_ops;
8560
8561 static void
8562 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8563                                  const struct breakpoint_ops *ops)
8564 {
8565   struct syscall_catchpoint *c;
8566   struct gdbarch *gdbarch = get_current_arch ();
8567
8568   c = XNEW (struct syscall_catchpoint);
8569   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8570   c->syscalls_to_be_caught = filter;
8571
8572   install_breakpoint (0, &c->base, 1);
8573 }
8574
8575 static int
8576 hw_breakpoint_used_count (void)
8577 {
8578   int i = 0;
8579   struct breakpoint *b;
8580   struct bp_location *bl;
8581
8582   ALL_BREAKPOINTS (b)
8583   {
8584     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8585       for (bl = b->loc; bl; bl = bl->next)
8586         {
8587           /* Special types of hardware breakpoints may use more than
8588              one register.  */
8589           i += b->ops->resources_needed (bl);
8590         }
8591   }
8592
8593   return i;
8594 }
8595
8596 /* Returns the resources B would use if it were a hardware
8597    watchpoint.  */
8598
8599 static int
8600 hw_watchpoint_use_count (struct breakpoint *b)
8601 {
8602   int i = 0;
8603   struct bp_location *bl;
8604
8605   if (!breakpoint_enabled (b))
8606     return 0;
8607
8608   for (bl = b->loc; bl; bl = bl->next)
8609     {
8610       /* Special types of hardware watchpoints may use more than
8611          one register.  */
8612       i += b->ops->resources_needed (bl);
8613     }
8614
8615   return i;
8616 }
8617
8618 /* Returns the sum the used resources of all hardware watchpoints of
8619    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8620    the sum of the used resources of all hardware watchpoints of other
8621    types _not_ TYPE.  */
8622
8623 static int
8624 hw_watchpoint_used_count_others (struct breakpoint *except,
8625                                  enum bptype type, int *other_type_used)
8626 {
8627   int i = 0;
8628   struct breakpoint *b;
8629
8630   *other_type_used = 0;
8631   ALL_BREAKPOINTS (b)
8632     {
8633       if (b == except)
8634         continue;
8635       if (!breakpoint_enabled (b))
8636         continue;
8637
8638       if (b->type == type)
8639         i += hw_watchpoint_use_count (b);
8640       else if (is_hardware_watchpoint (b))
8641         *other_type_used = 1;
8642     }
8643
8644   return i;
8645 }
8646
8647 void
8648 disable_watchpoints_before_interactive_call_start (void)
8649 {
8650   struct breakpoint *b;
8651
8652   ALL_BREAKPOINTS (b)
8653   {
8654     if (is_watchpoint (b) && breakpoint_enabled (b))
8655       {
8656         b->enable_state = bp_call_disabled;
8657         update_global_location_list (0);
8658       }
8659   }
8660 }
8661
8662 void
8663 enable_watchpoints_after_interactive_call_stop (void)
8664 {
8665   struct breakpoint *b;
8666
8667   ALL_BREAKPOINTS (b)
8668   {
8669     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8670       {
8671         b->enable_state = bp_enabled;
8672         update_global_location_list (1);
8673       }
8674   }
8675 }
8676
8677 void
8678 disable_breakpoints_before_startup (void)
8679 {
8680   current_program_space->executing_startup = 1;
8681   update_global_location_list (0);
8682 }
8683
8684 void
8685 enable_breakpoints_after_startup (void)
8686 {
8687   current_program_space->executing_startup = 0;
8688   breakpoint_re_set ();
8689 }
8690
8691
8692 /* Set a breakpoint that will evaporate an end of command
8693    at address specified by SAL.
8694    Restrict it to frame FRAME if FRAME is nonzero.  */
8695
8696 struct breakpoint *
8697 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8698                           struct frame_id frame_id, enum bptype type)
8699 {
8700   struct breakpoint *b;
8701
8702   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8703      tail-called one.  */
8704   gdb_assert (!frame_id_artificial_p (frame_id));
8705
8706   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8707   b->enable_state = bp_enabled;
8708   b->disposition = disp_donttouch;
8709   b->frame_id = frame_id;
8710
8711   /* If we're debugging a multi-threaded program, then we want
8712      momentary breakpoints to be active in only a single thread of
8713      control.  */
8714   if (in_thread_list (inferior_ptid))
8715     b->thread = pid_to_thread_id (inferior_ptid);
8716
8717   update_global_location_list_nothrow (1);
8718
8719   return b;
8720 }
8721
8722 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8723    The new breakpoint will have type TYPE, and use OPS as it
8724    breakpoint_ops.  */
8725
8726 static struct breakpoint *
8727 momentary_breakpoint_from_master (struct breakpoint *orig,
8728                                   enum bptype type,
8729                                   const struct breakpoint_ops *ops)
8730 {
8731   struct breakpoint *copy;
8732
8733   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8734   copy->loc = allocate_bp_location (copy);
8735   set_breakpoint_location_function (copy->loc, 1);
8736
8737   copy->loc->gdbarch = orig->loc->gdbarch;
8738   copy->loc->requested_address = orig->loc->requested_address;
8739   copy->loc->address = orig->loc->address;
8740   copy->loc->section = orig->loc->section;
8741   copy->loc->pspace = orig->loc->pspace;
8742   copy->loc->probe = orig->loc->probe;
8743   copy->loc->line_number = orig->loc->line_number;
8744   copy->loc->symtab = orig->loc->symtab;
8745   copy->frame_id = orig->frame_id;
8746   copy->thread = orig->thread;
8747   copy->pspace = orig->pspace;
8748
8749   copy->enable_state = bp_enabled;
8750   copy->disposition = disp_donttouch;
8751   copy->number = internal_breakpoint_number--;
8752
8753   update_global_location_list_nothrow (0);
8754   return copy;
8755 }
8756
8757 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8758    ORIG is NULL.  */
8759
8760 struct breakpoint *
8761 clone_momentary_breakpoint (struct breakpoint *orig)
8762 {
8763   /* If there's nothing to clone, then return nothing.  */
8764   if (orig == NULL)
8765     return NULL;
8766
8767   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8768 }
8769
8770 struct breakpoint *
8771 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8772                                 enum bptype type)
8773 {
8774   struct symtab_and_line sal;
8775
8776   sal = find_pc_line (pc, 0);
8777   sal.pc = pc;
8778   sal.section = find_pc_overlay (pc);
8779   sal.explicit_pc = 1;
8780
8781   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8782 }
8783 \f
8784
8785 /* Tell the user we have just set a breakpoint B.  */
8786
8787 static void
8788 mention (struct breakpoint *b)
8789 {
8790   b->ops->print_mention (b);
8791   if (ui_out_is_mi_like_p (current_uiout))
8792     return;
8793   printf_filtered ("\n");
8794 }
8795 \f
8796
8797 static struct bp_location *
8798 add_location_to_breakpoint (struct breakpoint *b,
8799                             const struct symtab_and_line *sal)
8800 {
8801   struct bp_location *loc, **tmp;
8802   CORE_ADDR adjusted_address;
8803   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8804
8805   if (loc_gdbarch == NULL)
8806     loc_gdbarch = b->gdbarch;
8807
8808   /* Adjust the breakpoint's address prior to allocating a location.
8809      Once we call allocate_bp_location(), that mostly uninitialized
8810      location will be placed on the location chain.  Adjustment of the
8811      breakpoint may cause target_read_memory() to be called and we do
8812      not want its scan of the location chain to find a breakpoint and
8813      location that's only been partially initialized.  */
8814   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8815                                                 sal->pc, b->type);
8816
8817   /* Sort the locations by their ADDRESS.  */
8818   loc = allocate_bp_location (b);
8819   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8820        tmp = &((*tmp)->next))
8821     ;
8822   loc->next = *tmp;
8823   *tmp = loc;
8824
8825   loc->requested_address = sal->pc;
8826   loc->address = adjusted_address;
8827   loc->pspace = sal->pspace;
8828   loc->probe = sal->probe;
8829   gdb_assert (loc->pspace != NULL);
8830   loc->section = sal->section;
8831   loc->gdbarch = loc_gdbarch;
8832   loc->line_number = sal->line;
8833   loc->symtab = sal->symtab;
8834
8835   set_breakpoint_location_function (loc,
8836                                     sal->explicit_pc || sal->explicit_line);
8837   return loc;
8838 }
8839 \f
8840
8841 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8842    return 0 otherwise.  */
8843
8844 static int
8845 bp_loc_is_permanent (struct bp_location *loc)
8846 {
8847   int len;
8848   CORE_ADDR addr;
8849   const gdb_byte *bpoint;
8850   gdb_byte *target_mem;
8851   struct cleanup *cleanup;
8852   int retval = 0;
8853
8854   gdb_assert (loc != NULL);
8855
8856   addr = loc->address;
8857   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8858
8859   /* Software breakpoints unsupported?  */
8860   if (bpoint == NULL)
8861     return 0;
8862
8863   target_mem = alloca (len);
8864
8865   /* Enable the automatic memory restoration from breakpoints while
8866      we read the memory.  Otherwise we could say about our temporary
8867      breakpoints they are permanent.  */
8868   cleanup = save_current_space_and_thread ();
8869
8870   switch_to_program_space_and_thread (loc->pspace);
8871   make_show_memory_breakpoints_cleanup (0);
8872
8873   if (target_read_memory (loc->address, target_mem, len) == 0
8874       && memcmp (target_mem, bpoint, len) == 0)
8875     retval = 1;
8876
8877   do_cleanups (cleanup);
8878
8879   return retval;
8880 }
8881
8882 /* Build a command list for the dprintf corresponding to the current
8883    settings of the dprintf style options.  */
8884
8885 static void
8886 update_dprintf_command_list (struct breakpoint *b)
8887 {
8888   char *dprintf_args = b->extra_string;
8889   char *printf_line = NULL;
8890
8891   if (!dprintf_args)
8892     return;
8893
8894   dprintf_args = skip_spaces (dprintf_args);
8895
8896   /* Allow a comma, as it may have terminated a location, but don't
8897      insist on it.  */
8898   if (*dprintf_args == ',')
8899     ++dprintf_args;
8900   dprintf_args = skip_spaces (dprintf_args);
8901
8902   if (*dprintf_args != '"')
8903     error (_("Bad format string, missing '\"'."));
8904
8905   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8906     printf_line = xstrprintf ("printf %s", dprintf_args);
8907   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8908     {
8909       if (!dprintf_function)
8910         error (_("No function supplied for dprintf call"));
8911
8912       if (dprintf_channel && strlen (dprintf_channel) > 0)
8913         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8914                                   dprintf_function,
8915                                   dprintf_channel,
8916                                   dprintf_args);
8917       else
8918         printf_line = xstrprintf ("call (void) %s (%s)",
8919                                   dprintf_function,
8920                                   dprintf_args);
8921     }
8922   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8923     {
8924       if (target_can_run_breakpoint_commands ())
8925         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8926       else
8927         {
8928           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8929           printf_line = xstrprintf ("printf %s", dprintf_args);
8930         }
8931     }
8932   else
8933     internal_error (__FILE__, __LINE__,
8934                     _("Invalid dprintf style."));
8935
8936   gdb_assert (printf_line != NULL);
8937   /* Manufacture a printf/continue sequence.  */
8938   {
8939     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8940
8941     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8942       {
8943         cont_cmd_line = xmalloc (sizeof (struct command_line));
8944         cont_cmd_line->control_type = simple_control;
8945         cont_cmd_line->body_count = 0;
8946         cont_cmd_line->body_list = NULL;
8947         cont_cmd_line->next = NULL;
8948         cont_cmd_line->line = xstrdup ("continue");
8949       }
8950
8951     printf_cmd_line = xmalloc (sizeof (struct command_line));
8952     printf_cmd_line->control_type = simple_control;
8953     printf_cmd_line->body_count = 0;
8954     printf_cmd_line->body_list = NULL;
8955     printf_cmd_line->next = cont_cmd_line;
8956     printf_cmd_line->line = printf_line;
8957
8958     breakpoint_set_commands (b, printf_cmd_line);
8959   }
8960 }
8961
8962 /* Update all dprintf commands, making their command lists reflect
8963    current style settings.  */
8964
8965 static void
8966 update_dprintf_commands (char *args, int from_tty,
8967                          struct cmd_list_element *c)
8968 {
8969   struct breakpoint *b;
8970
8971   ALL_BREAKPOINTS (b)
8972     {
8973       if (b->type == bp_dprintf)
8974         update_dprintf_command_list (b);
8975     }
8976 }
8977
8978 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8979    as textual description of the location, and COND_STRING
8980    as condition expression.  */
8981
8982 static void
8983 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8984                      struct symtabs_and_lines sals, char *addr_string,
8985                      char *filter, char *cond_string,
8986                      char *extra_string,
8987                      enum bptype type, enum bpdisp disposition,
8988                      int thread, int task, int ignore_count,
8989                      const struct breakpoint_ops *ops, int from_tty,
8990                      int enabled, int internal, unsigned flags,
8991                      int display_canonical)
8992 {
8993   int i;
8994
8995   if (type == bp_hardware_breakpoint)
8996     {
8997       int target_resources_ok;
8998
8999       i = hw_breakpoint_used_count ();
9000       target_resources_ok =
9001         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9002                                             i + 1, 0);
9003       if (target_resources_ok == 0)
9004         error (_("No hardware breakpoint support in the target."));
9005       else if (target_resources_ok < 0)
9006         error (_("Hardware breakpoints used exceeds limit."));
9007     }
9008
9009   gdb_assert (sals.nelts > 0);
9010
9011   for (i = 0; i < sals.nelts; ++i)
9012     {
9013       struct symtab_and_line sal = sals.sals[i];
9014       struct bp_location *loc;
9015
9016       if (from_tty)
9017         {
9018           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9019           if (!loc_gdbarch)
9020             loc_gdbarch = gdbarch;
9021
9022           describe_other_breakpoints (loc_gdbarch,
9023                                       sal.pspace, sal.pc, sal.section, thread);
9024         }
9025
9026       if (i == 0)
9027         {
9028           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9029           b->thread = thread;
9030           b->task = task;
9031
9032           b->cond_string = cond_string;
9033           b->extra_string = extra_string;
9034           b->ignore_count = ignore_count;
9035           b->enable_state = enabled ? bp_enabled : bp_disabled;
9036           b->disposition = disposition;
9037
9038           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9039             b->loc->inserted = 1;
9040
9041           if (type == bp_static_tracepoint)
9042             {
9043               struct tracepoint *t = (struct tracepoint *) b;
9044               struct static_tracepoint_marker marker;
9045
9046               if (strace_marker_p (b))
9047                 {
9048                   /* We already know the marker exists, otherwise, we
9049                      wouldn't see a sal for it.  */
9050                   char *p = &addr_string[3];
9051                   char *endp;
9052                   char *marker_str;
9053
9054                   p = skip_spaces (p);
9055
9056                   endp = skip_to_space (p);
9057
9058                   marker_str = savestring (p, endp - p);
9059                   t->static_trace_marker_id = marker_str;
9060
9061                   printf_filtered (_("Probed static tracepoint "
9062                                      "marker \"%s\"\n"),
9063                                    t->static_trace_marker_id);
9064                 }
9065               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9066                 {
9067                   t->static_trace_marker_id = xstrdup (marker.str_id);
9068                   release_static_tracepoint_marker (&marker);
9069
9070                   printf_filtered (_("Probed static tracepoint "
9071                                      "marker \"%s\"\n"),
9072                                    t->static_trace_marker_id);
9073                 }
9074               else
9075                 warning (_("Couldn't determine the static "
9076                            "tracepoint marker to probe"));
9077             }
9078
9079           loc = b->loc;
9080         }
9081       else
9082         {
9083           loc = add_location_to_breakpoint (b, &sal);
9084           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9085             loc->inserted = 1;
9086         }
9087
9088       if (bp_loc_is_permanent (loc))
9089         make_breakpoint_permanent (b);
9090
9091       if (b->cond_string)
9092         {
9093           const char *arg = b->cond_string;
9094
9095           loc->cond = parse_exp_1 (&arg, loc->address,
9096                                    block_for_pc (loc->address), 0);
9097           if (*arg)
9098               error (_("Garbage '%s' follows condition"), arg);
9099         }
9100
9101       /* Dynamic printf requires and uses additional arguments on the
9102          command line, otherwise it's an error.  */
9103       if (type == bp_dprintf)
9104         {
9105           if (b->extra_string)
9106             update_dprintf_command_list (b);
9107           else
9108             error (_("Format string required"));
9109         }
9110       else if (b->extra_string)
9111         error (_("Garbage '%s' at end of command"), b->extra_string);
9112     }
9113
9114   b->display_canonical = display_canonical;
9115   if (addr_string)
9116     b->addr_string = addr_string;
9117   else
9118     /* addr_string has to be used or breakpoint_re_set will delete
9119        me.  */
9120     b->addr_string
9121       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9122   b->filter = filter;
9123 }
9124
9125 static void
9126 create_breakpoint_sal (struct gdbarch *gdbarch,
9127                        struct symtabs_and_lines sals, char *addr_string,
9128                        char *filter, char *cond_string,
9129                        char *extra_string,
9130                        enum bptype type, enum bpdisp disposition,
9131                        int thread, int task, int ignore_count,
9132                        const struct breakpoint_ops *ops, int from_tty,
9133                        int enabled, int internal, unsigned flags,
9134                        int display_canonical)
9135 {
9136   struct breakpoint *b;
9137   struct cleanup *old_chain;
9138
9139   if (is_tracepoint_type (type))
9140     {
9141       struct tracepoint *t;
9142
9143       t = XCNEW (struct tracepoint);
9144       b = &t->base;
9145     }
9146   else
9147     b = XNEW (struct breakpoint);
9148
9149   old_chain = make_cleanup (xfree, b);
9150
9151   init_breakpoint_sal (b, gdbarch,
9152                        sals, addr_string,
9153                        filter, cond_string, extra_string,
9154                        type, disposition,
9155                        thread, task, ignore_count,
9156                        ops, from_tty,
9157                        enabled, internal, flags,
9158                        display_canonical);
9159   discard_cleanups (old_chain);
9160
9161   install_breakpoint (internal, b, 0);
9162 }
9163
9164 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9165    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9166    value.  COND_STRING, if not NULL, specified the condition to be
9167    used for all breakpoints.  Essentially the only case where
9168    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9169    function.  In that case, it's still not possible to specify
9170    separate conditions for different overloaded functions, so
9171    we take just a single condition string.
9172    
9173    NOTE: If the function succeeds, the caller is expected to cleanup
9174    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9175    array contents).  If the function fails (error() is called), the
9176    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9177    COND and SALS arrays and each of those arrays contents.  */
9178
9179 static void
9180 create_breakpoints_sal (struct gdbarch *gdbarch,
9181                         struct linespec_result *canonical,
9182                         char *cond_string, char *extra_string,
9183                         enum bptype type, enum bpdisp disposition,
9184                         int thread, int task, int ignore_count,
9185                         const struct breakpoint_ops *ops, int from_tty,
9186                         int enabled, int internal, unsigned flags)
9187 {
9188   int i;
9189   struct linespec_sals *lsal;
9190
9191   if (canonical->pre_expanded)
9192     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9193
9194   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9195     {
9196       /* Note that 'addr_string' can be NULL in the case of a plain
9197          'break', without arguments.  */
9198       char *addr_string = (canonical->addr_string
9199                            ? xstrdup (canonical->addr_string)
9200                            : NULL);
9201       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9202       struct cleanup *inner = make_cleanup (xfree, addr_string);
9203
9204       make_cleanup (xfree, filter_string);
9205       create_breakpoint_sal (gdbarch, lsal->sals,
9206                              addr_string,
9207                              filter_string,
9208                              cond_string, extra_string,
9209                              type, disposition,
9210                              thread, task, ignore_count, ops,
9211                              from_tty, enabled, internal, flags,
9212                              canonical->special_display);
9213       discard_cleanups (inner);
9214     }
9215 }
9216
9217 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9218    followed by conditionals.  On return, SALS contains an array of SAL
9219    addresses found.  ADDR_STRING contains a vector of (canonical)
9220    address strings.  ADDRESS points to the end of the SAL.
9221
9222    The array and the line spec strings are allocated on the heap, it is
9223    the caller's responsibility to free them.  */
9224
9225 static void
9226 parse_breakpoint_sals (char **address,
9227                        struct linespec_result *canonical)
9228 {
9229   /* If no arg given, or if first arg is 'if ', use the default
9230      breakpoint.  */
9231   if ((*address) == NULL
9232       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9233     {
9234       /* The last displayed codepoint, if it's valid, is our default breakpoint
9235          address.  */
9236       if (last_displayed_sal_is_valid ())
9237         {
9238           struct linespec_sals lsal;
9239           struct symtab_and_line sal;
9240           CORE_ADDR pc;
9241
9242           init_sal (&sal);              /* Initialize to zeroes.  */
9243           lsal.sals.sals = (struct symtab_and_line *)
9244             xmalloc (sizeof (struct symtab_and_line));
9245
9246           /* Set sal's pspace, pc, symtab, and line to the values
9247              corresponding to the last call to print_frame_info.
9248              Be sure to reinitialize LINE with NOTCURRENT == 0
9249              as the breakpoint line number is inappropriate otherwise.
9250              find_pc_line would adjust PC, re-set it back.  */
9251           get_last_displayed_sal (&sal);
9252           pc = sal.pc;
9253           sal = find_pc_line (pc, 0);
9254
9255           /* "break" without arguments is equivalent to "break *PC"
9256              where PC is the last displayed codepoint's address.  So
9257              make sure to set sal.explicit_pc to prevent GDB from
9258              trying to expand the list of sals to include all other
9259              instances with the same symtab and line.  */
9260           sal.pc = pc;
9261           sal.explicit_pc = 1;
9262
9263           lsal.sals.sals[0] = sal;
9264           lsal.sals.nelts = 1;
9265           lsal.canonical = NULL;
9266
9267           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9268         }
9269       else
9270         error (_("No default breakpoint address now."));
9271     }
9272   else
9273     {
9274       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9275
9276       /* Force almost all breakpoints to be in terms of the
9277          current_source_symtab (which is decode_line_1's default).
9278          This should produce the results we want almost all of the
9279          time while leaving default_breakpoint_* alone.
9280
9281          ObjC: However, don't match an Objective-C method name which
9282          may have a '+' or '-' succeeded by a '['.  */
9283       if (last_displayed_sal_is_valid ()
9284           && (!cursal.symtab
9285               || ((strchr ("+-", (*address)[0]) != NULL)
9286                   && ((*address)[1] != '['))))
9287         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9288                           get_last_displayed_symtab (),
9289                           get_last_displayed_line (),
9290                           canonical, NULL, NULL);
9291       else
9292         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9293                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9294     }
9295 }
9296
9297
9298 /* Convert each SAL into a real PC.  Verify that the PC can be
9299    inserted as a breakpoint.  If it can't throw an error.  */
9300
9301 static void
9302 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9303 {    
9304   int i;
9305
9306   for (i = 0; i < sals->nelts; i++)
9307     resolve_sal_pc (&sals->sals[i]);
9308 }
9309
9310 /* Fast tracepoints may have restrictions on valid locations.  For
9311    instance, a fast tracepoint using a jump instead of a trap will
9312    likely have to overwrite more bytes than a trap would, and so can
9313    only be placed where the instruction is longer than the jump, or a
9314    multi-instruction sequence does not have a jump into the middle of
9315    it, etc.  */
9316
9317 static void
9318 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9319                             struct symtabs_and_lines *sals)
9320 {
9321   int i, rslt;
9322   struct symtab_and_line *sal;
9323   char *msg;
9324   struct cleanup *old_chain;
9325
9326   for (i = 0; i < sals->nelts; i++)
9327     {
9328       struct gdbarch *sarch;
9329
9330       sal = &sals->sals[i];
9331
9332       sarch = get_sal_arch (*sal);
9333       /* We fall back to GDBARCH if there is no architecture
9334          associated with SAL.  */
9335       if (sarch == NULL)
9336         sarch = gdbarch;
9337       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9338                                                NULL, &msg);
9339       old_chain = make_cleanup (xfree, msg);
9340
9341       if (!rslt)
9342         error (_("May not have a fast tracepoint at 0x%s%s"),
9343                paddress (sarch, sal->pc), (msg ? msg : ""));
9344
9345       do_cleanups (old_chain);
9346     }
9347 }
9348
9349 /* Issue an invalid thread ID error.  */
9350
9351 static void ATTRIBUTE_NORETURN
9352 invalid_thread_id_error (int id)
9353 {
9354   error (_("Unknown thread %d."), id);
9355 }
9356
9357 /* Given TOK, a string specification of condition and thread, as
9358    accepted by the 'break' command, extract the condition
9359    string and thread number and set *COND_STRING and *THREAD.
9360    PC identifies the context at which the condition should be parsed.
9361    If no condition is found, *COND_STRING is set to NULL.
9362    If no thread is found, *THREAD is set to -1.  */
9363
9364 static void
9365 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9366                            char **cond_string, int *thread, int *task,
9367                            char **rest)
9368 {
9369   *cond_string = NULL;
9370   *thread = -1;
9371   *task = 0;
9372   *rest = NULL;
9373
9374   while (tok && *tok)
9375     {
9376       const char *end_tok;
9377       int toklen;
9378       const char *cond_start = NULL;
9379       const char *cond_end = NULL;
9380
9381       tok = skip_spaces_const (tok);
9382
9383       if ((*tok == '"' || *tok == ',') && rest)
9384         {
9385           *rest = savestring (tok, strlen (tok));
9386           return;
9387         }
9388
9389       end_tok = skip_to_space_const (tok);
9390
9391       toklen = end_tok - tok;
9392
9393       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9394         {
9395           struct expression *expr;
9396
9397           tok = cond_start = end_tok + 1;
9398           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9399           xfree (expr);
9400           cond_end = tok;
9401           *cond_string = savestring (cond_start, cond_end - cond_start);
9402         }
9403       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9404         {
9405           char *tmptok;
9406
9407           tok = end_tok + 1;
9408           *thread = strtol (tok, &tmptok, 0);
9409           if (tok == tmptok)
9410             error (_("Junk after thread keyword."));
9411           if (!valid_thread_id (*thread))
9412             invalid_thread_id_error (*thread);
9413           tok = tmptok;
9414         }
9415       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9416         {
9417           char *tmptok;
9418
9419           tok = end_tok + 1;
9420           *task = strtol (tok, &tmptok, 0);
9421           if (tok == tmptok)
9422             error (_("Junk after task keyword."));
9423           if (!valid_task_id (*task))
9424             error (_("Unknown task %d."), *task);
9425           tok = tmptok;
9426         }
9427       else if (rest)
9428         {
9429           *rest = savestring (tok, strlen (tok));
9430           return;
9431         }
9432       else
9433         error (_("Junk at end of arguments."));
9434     }
9435 }
9436
9437 /* Decode a static tracepoint marker spec.  */
9438
9439 static struct symtabs_and_lines
9440 decode_static_tracepoint_spec (char **arg_p)
9441 {
9442   VEC(static_tracepoint_marker_p) *markers = NULL;
9443   struct symtabs_and_lines sals;
9444   struct cleanup *old_chain;
9445   char *p = &(*arg_p)[3];
9446   char *endp;
9447   char *marker_str;
9448   int i;
9449
9450   p = skip_spaces (p);
9451
9452   endp = skip_to_space (p);
9453
9454   marker_str = savestring (p, endp - p);
9455   old_chain = make_cleanup (xfree, marker_str);
9456
9457   markers = target_static_tracepoint_markers_by_strid (marker_str);
9458   if (VEC_empty(static_tracepoint_marker_p, markers))
9459     error (_("No known static tracepoint marker named %s"), marker_str);
9460
9461   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9462   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9463
9464   for (i = 0; i < sals.nelts; i++)
9465     {
9466       struct static_tracepoint_marker *marker;
9467
9468       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9469
9470       init_sal (&sals.sals[i]);
9471
9472       sals.sals[i] = find_pc_line (marker->address, 0);
9473       sals.sals[i].pc = marker->address;
9474
9475       release_static_tracepoint_marker (marker);
9476     }
9477
9478   do_cleanups (old_chain);
9479
9480   *arg_p = endp;
9481   return sals;
9482 }
9483
9484 /* Set a breakpoint.  This function is shared between CLI and MI
9485    functions for setting a breakpoint.  This function has two major
9486    modes of operations, selected by the PARSE_ARG parameter.  If
9487    non-zero, the function will parse ARG, extracting location,
9488    condition, thread and extra string.  Otherwise, ARG is just the
9489    breakpoint's location, with condition, thread, and extra string
9490    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9491    If INTERNAL is non-zero, the breakpoint number will be allocated
9492    from the internal breakpoint count.  Returns true if any breakpoint
9493    was created; false otherwise.  */
9494
9495 int
9496 create_breakpoint (struct gdbarch *gdbarch,
9497                    char *arg, char *cond_string,
9498                    int thread, char *extra_string,
9499                    int parse_arg,
9500                    int tempflag, enum bptype type_wanted,
9501                    int ignore_count,
9502                    enum auto_boolean pending_break_support,
9503                    const struct breakpoint_ops *ops,
9504                    int from_tty, int enabled, int internal,
9505                    unsigned flags)
9506 {
9507   volatile struct gdb_exception e;
9508   char *copy_arg = NULL;
9509   char *addr_start = arg;
9510   struct linespec_result canonical;
9511   struct cleanup *old_chain;
9512   struct cleanup *bkpt_chain = NULL;
9513   int pending = 0;
9514   int task = 0;
9515   int prev_bkpt_count = breakpoint_count;
9516
9517   gdb_assert (ops != NULL);
9518
9519   init_linespec_result (&canonical);
9520
9521   TRY_CATCH (e, RETURN_MASK_ALL)
9522     {
9523       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9524                                      addr_start, &copy_arg);
9525     }
9526
9527   /* If caller is interested in rc value from parse, set value.  */
9528   switch (e.reason)
9529     {
9530     case GDB_NO_ERROR:
9531       if (VEC_empty (linespec_sals, canonical.sals))
9532         return 0;
9533       break;
9534     case RETURN_ERROR:
9535       switch (e.error)
9536         {
9537         case NOT_FOUND_ERROR:
9538
9539           /* If pending breakpoint support is turned off, throw
9540              error.  */
9541
9542           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9543             throw_exception (e);
9544
9545           exception_print (gdb_stderr, e);
9546
9547           /* If pending breakpoint support is auto query and the user
9548              selects no, then simply return the error code.  */
9549           if (pending_break_support == AUTO_BOOLEAN_AUTO
9550               && !nquery (_("Make %s pending on future shared library load? "),
9551                           bptype_string (type_wanted)))
9552             return 0;
9553
9554           /* At this point, either the user was queried about setting
9555              a pending breakpoint and selected yes, or pending
9556              breakpoint behavior is on and thus a pending breakpoint
9557              is defaulted on behalf of the user.  */
9558           {
9559             struct linespec_sals lsal;
9560
9561             copy_arg = xstrdup (addr_start);
9562             lsal.canonical = xstrdup (copy_arg);
9563             lsal.sals.nelts = 1;
9564             lsal.sals.sals = XNEW (struct symtab_and_line);
9565             init_sal (&lsal.sals.sals[0]);
9566             pending = 1;
9567             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9568           }
9569           break;
9570         default:
9571           throw_exception (e);
9572         }
9573       break;
9574     default:
9575       throw_exception (e);
9576     }
9577
9578   /* Create a chain of things that always need to be cleaned up.  */
9579   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9580
9581   /* ----------------------------- SNIP -----------------------------
9582      Anything added to the cleanup chain beyond this point is assumed
9583      to be part of a breakpoint.  If the breakpoint create succeeds
9584      then the memory is not reclaimed.  */
9585   bkpt_chain = make_cleanup (null_cleanup, 0);
9586
9587   /* Resolve all line numbers to PC's and verify that the addresses
9588      are ok for the target.  */
9589   if (!pending)
9590     {
9591       int ix;
9592       struct linespec_sals *iter;
9593
9594       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9595         breakpoint_sals_to_pc (&iter->sals);
9596     }
9597
9598   /* Fast tracepoints may have additional restrictions on location.  */
9599   if (!pending && type_wanted == bp_fast_tracepoint)
9600     {
9601       int ix;
9602       struct linespec_sals *iter;
9603
9604       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9605         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9606     }
9607
9608   /* Verify that condition can be parsed, before setting any
9609      breakpoints.  Allocate a separate condition expression for each
9610      breakpoint.  */
9611   if (!pending)
9612     {
9613       struct linespec_sals *lsal;
9614
9615       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9616
9617       if (parse_arg)
9618         {
9619             char *rest;
9620             /* Here we only parse 'arg' to separate condition
9621                from thread number, so parsing in context of first
9622                sal is OK.  When setting the breakpoint we'll 
9623                re-parse it in context of each sal.  */
9624
9625             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9626                                        &thread, &task, &rest);
9627             if (cond_string)
9628                 make_cleanup (xfree, cond_string);
9629             if (rest)
9630               make_cleanup (xfree, rest);
9631             if (rest)
9632               extra_string = rest;
9633         }
9634       else
9635         {
9636             if (*arg != '\0')
9637               error (_("Garbage '%s' at end of location"), arg);
9638
9639             /* Create a private copy of condition string.  */
9640             if (cond_string)
9641             {
9642                 cond_string = xstrdup (cond_string);
9643                 make_cleanup (xfree, cond_string);
9644             }
9645             /* Create a private copy of any extra string.  */
9646             if (extra_string)
9647               {
9648                 extra_string = xstrdup (extra_string);
9649                 make_cleanup (xfree, extra_string);
9650               }
9651         }
9652
9653       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9654                                    cond_string, extra_string, type_wanted,
9655                                    tempflag ? disp_del : disp_donttouch,
9656                                    thread, task, ignore_count, ops,
9657                                    from_tty, enabled, internal, flags);
9658     }
9659   else
9660     {
9661       struct breakpoint *b;
9662
9663       make_cleanup (xfree, copy_arg);
9664
9665       if (is_tracepoint_type (type_wanted))
9666         {
9667           struct tracepoint *t;
9668
9669           t = XCNEW (struct tracepoint);
9670           b = &t->base;
9671         }
9672       else
9673         b = XNEW (struct breakpoint);
9674
9675       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9676
9677       b->addr_string = copy_arg;
9678       if (parse_arg)
9679         b->cond_string = NULL;
9680       else
9681         {
9682           /* Create a private copy of condition string.  */
9683           if (cond_string)
9684             {
9685               cond_string = xstrdup (cond_string);
9686               make_cleanup (xfree, cond_string);
9687             }
9688           b->cond_string = cond_string;
9689         }
9690       b->extra_string = NULL;
9691       b->ignore_count = ignore_count;
9692       b->disposition = tempflag ? disp_del : disp_donttouch;
9693       b->condition_not_parsed = 1;
9694       b->enable_state = enabled ? bp_enabled : bp_disabled;
9695       if ((type_wanted != bp_breakpoint
9696            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9697         b->pspace = current_program_space;
9698
9699       install_breakpoint (internal, b, 0);
9700     }
9701   
9702   if (VEC_length (linespec_sals, canonical.sals) > 1)
9703     {
9704       warning (_("Multiple breakpoints were set.\nUse the "
9705                  "\"delete\" command to delete unwanted breakpoints."));
9706       prev_breakpoint_count = prev_bkpt_count;
9707     }
9708
9709   /* That's it.  Discard the cleanups for data inserted into the
9710      breakpoint.  */
9711   discard_cleanups (bkpt_chain);
9712   /* But cleanup everything else.  */
9713   do_cleanups (old_chain);
9714
9715   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9716   update_global_location_list (1);
9717
9718   return 1;
9719 }
9720
9721 /* Set a breakpoint.
9722    ARG is a string describing breakpoint address,
9723    condition, and thread.
9724    FLAG specifies if a breakpoint is hardware on,
9725    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9726    and BP_TEMPFLAG.  */
9727
9728 static void
9729 break_command_1 (char *arg, int flag, int from_tty)
9730 {
9731   int tempflag = flag & BP_TEMPFLAG;
9732   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9733                              ? bp_hardware_breakpoint
9734                              : bp_breakpoint);
9735   struct breakpoint_ops *ops;
9736   const char *arg_cp = arg;
9737
9738   /* Matching breakpoints on probes.  */
9739   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9740     ops = &bkpt_probe_breakpoint_ops;
9741   else
9742     ops = &bkpt_breakpoint_ops;
9743
9744   create_breakpoint (get_current_arch (),
9745                      arg,
9746                      NULL, 0, NULL, 1 /* parse arg */,
9747                      tempflag, type_wanted,
9748                      0 /* Ignore count */,
9749                      pending_break_support,
9750                      ops,
9751                      from_tty,
9752                      1 /* enabled */,
9753                      0 /* internal */,
9754                      0);
9755 }
9756
9757 /* Helper function for break_command_1 and disassemble_command.  */
9758
9759 void
9760 resolve_sal_pc (struct symtab_and_line *sal)
9761 {
9762   CORE_ADDR pc;
9763
9764   if (sal->pc == 0 && sal->symtab != NULL)
9765     {
9766       if (!find_line_pc (sal->symtab, sal->line, &pc))
9767         error (_("No line %d in file \"%s\"."),
9768                sal->line, symtab_to_filename_for_display (sal->symtab));
9769       sal->pc = pc;
9770
9771       /* If this SAL corresponds to a breakpoint inserted using a line
9772          number, then skip the function prologue if necessary.  */
9773       if (sal->explicit_line)
9774         skip_prologue_sal (sal);
9775     }
9776
9777   if (sal->section == 0 && sal->symtab != NULL)
9778     {
9779       struct blockvector *bv;
9780       struct block *b;
9781       struct symbol *sym;
9782
9783       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9784       if (bv != NULL)
9785         {
9786           sym = block_linkage_function (b);
9787           if (sym != NULL)
9788             {
9789               fixup_symbol_section (sym, sal->symtab->objfile);
9790               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
9791             }
9792           else
9793             {
9794               /* It really is worthwhile to have the section, so we'll
9795                  just have to look harder. This case can be executed
9796                  if we have line numbers but no functions (as can
9797                  happen in assembly source).  */
9798
9799               struct bound_minimal_symbol msym;
9800               struct cleanup *old_chain = save_current_space_and_thread ();
9801
9802               switch_to_program_space_and_thread (sal->pspace);
9803
9804               msym = lookup_minimal_symbol_by_pc (sal->pc);
9805               if (msym.minsym)
9806                 sal->section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9807
9808               do_cleanups (old_chain);
9809             }
9810         }
9811     }
9812 }
9813
9814 void
9815 break_command (char *arg, int from_tty)
9816 {
9817   break_command_1 (arg, 0, from_tty);
9818 }
9819
9820 void
9821 tbreak_command (char *arg, int from_tty)
9822 {
9823   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9824 }
9825
9826 static void
9827 hbreak_command (char *arg, int from_tty)
9828 {
9829   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9830 }
9831
9832 static void
9833 thbreak_command (char *arg, int from_tty)
9834 {
9835   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9836 }
9837
9838 static void
9839 stop_command (char *arg, int from_tty)
9840 {
9841   printf_filtered (_("Specify the type of breakpoint to set.\n\
9842 Usage: stop in <function | address>\n\
9843        stop at <line>\n"));
9844 }
9845
9846 static void
9847 stopin_command (char *arg, int from_tty)
9848 {
9849   int badInput = 0;
9850
9851   if (arg == (char *) NULL)
9852     badInput = 1;
9853   else if (*arg != '*')
9854     {
9855       char *argptr = arg;
9856       int hasColon = 0;
9857
9858       /* Look for a ':'.  If this is a line number specification, then
9859          say it is bad, otherwise, it should be an address or
9860          function/method name.  */
9861       while (*argptr && !hasColon)
9862         {
9863           hasColon = (*argptr == ':');
9864           argptr++;
9865         }
9866
9867       if (hasColon)
9868         badInput = (*argptr != ':');    /* Not a class::method */
9869       else
9870         badInput = isdigit (*arg);      /* a simple line number */
9871     }
9872
9873   if (badInput)
9874     printf_filtered (_("Usage: stop in <function | address>\n"));
9875   else
9876     break_command_1 (arg, 0, from_tty);
9877 }
9878
9879 static void
9880 stopat_command (char *arg, int from_tty)
9881 {
9882   int badInput = 0;
9883
9884   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9885     badInput = 1;
9886   else
9887     {
9888       char *argptr = arg;
9889       int hasColon = 0;
9890
9891       /* Look for a ':'.  If there is a '::' then get out, otherwise
9892          it is probably a line number.  */
9893       while (*argptr && !hasColon)
9894         {
9895           hasColon = (*argptr == ':');
9896           argptr++;
9897         }
9898
9899       if (hasColon)
9900         badInput = (*argptr == ':');    /* we have class::method */
9901       else
9902         badInput = !isdigit (*arg);     /* not a line number */
9903     }
9904
9905   if (badInput)
9906     printf_filtered (_("Usage: stop at <line>\n"));
9907   else
9908     break_command_1 (arg, 0, from_tty);
9909 }
9910
9911 /* The dynamic printf command is mostly like a regular breakpoint, but
9912    with a prewired command list consisting of a single output command,
9913    built from extra arguments supplied on the dprintf command
9914    line.  */
9915
9916 static void
9917 dprintf_command (char *arg, int from_tty)
9918 {
9919   create_breakpoint (get_current_arch (),
9920                      arg,
9921                      NULL, 0, NULL, 1 /* parse arg */,
9922                      0, bp_dprintf,
9923                      0 /* Ignore count */,
9924                      pending_break_support,
9925                      &dprintf_breakpoint_ops,
9926                      from_tty,
9927                      1 /* enabled */,
9928                      0 /* internal */,
9929                      0);
9930 }
9931
9932 static void
9933 agent_printf_command (char *arg, int from_tty)
9934 {
9935   error (_("May only run agent-printf on the target"));
9936 }
9937
9938 /* Implement the "breakpoint_hit" breakpoint_ops method for
9939    ranged breakpoints.  */
9940
9941 static int
9942 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9943                                   struct address_space *aspace,
9944                                   CORE_ADDR bp_addr,
9945                                   const struct target_waitstatus *ws)
9946 {
9947   if (ws->kind != TARGET_WAITKIND_STOPPED
9948       || ws->value.sig != GDB_SIGNAL_TRAP)
9949     return 0;
9950
9951   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9952                                          bl->length, aspace, bp_addr);
9953 }
9954
9955 /* Implement the "resources_needed" breakpoint_ops method for
9956    ranged breakpoints.  */
9957
9958 static int
9959 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9960 {
9961   return target_ranged_break_num_registers ();
9962 }
9963
9964 /* Implement the "print_it" breakpoint_ops method for
9965    ranged breakpoints.  */
9966
9967 static enum print_stop_action
9968 print_it_ranged_breakpoint (bpstat bs)
9969 {
9970   struct breakpoint *b = bs->breakpoint_at;
9971   struct bp_location *bl = b->loc;
9972   struct ui_out *uiout = current_uiout;
9973
9974   gdb_assert (b->type == bp_hardware_breakpoint);
9975
9976   /* Ranged breakpoints have only one location.  */
9977   gdb_assert (bl && bl->next == NULL);
9978
9979   annotate_breakpoint (b->number);
9980   if (b->disposition == disp_del)
9981     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9982   else
9983     ui_out_text (uiout, "\nRanged breakpoint ");
9984   if (ui_out_is_mi_like_p (uiout))
9985     {
9986       ui_out_field_string (uiout, "reason",
9987                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9988       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9989     }
9990   ui_out_field_int (uiout, "bkptno", b->number);
9991   ui_out_text (uiout, ", ");
9992
9993   return PRINT_SRC_AND_LOC;
9994 }
9995
9996 /* Implement the "print_one" breakpoint_ops method for
9997    ranged breakpoints.  */
9998
9999 static void
10000 print_one_ranged_breakpoint (struct breakpoint *b,
10001                              struct bp_location **last_loc)
10002 {
10003   struct bp_location *bl = b->loc;
10004   struct value_print_options opts;
10005   struct ui_out *uiout = current_uiout;
10006
10007   /* Ranged breakpoints have only one location.  */
10008   gdb_assert (bl && bl->next == NULL);
10009
10010   get_user_print_options (&opts);
10011
10012   if (opts.addressprint)
10013     /* We don't print the address range here, it will be printed later
10014        by print_one_detail_ranged_breakpoint.  */
10015     ui_out_field_skip (uiout, "addr");
10016   annotate_field (5);
10017   print_breakpoint_location (b, bl);
10018   *last_loc = bl;
10019 }
10020
10021 /* Implement the "print_one_detail" breakpoint_ops method for
10022    ranged breakpoints.  */
10023
10024 static void
10025 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10026                                     struct ui_out *uiout)
10027 {
10028   CORE_ADDR address_start, address_end;
10029   struct bp_location *bl = b->loc;
10030   struct ui_file *stb = mem_fileopen ();
10031   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10032
10033   gdb_assert (bl);
10034
10035   address_start = bl->address;
10036   address_end = address_start + bl->length - 1;
10037
10038   ui_out_text (uiout, "\taddress range: ");
10039   fprintf_unfiltered (stb, "[%s, %s]",
10040                       print_core_address (bl->gdbarch, address_start),
10041                       print_core_address (bl->gdbarch, address_end));
10042   ui_out_field_stream (uiout, "addr", stb);
10043   ui_out_text (uiout, "\n");
10044
10045   do_cleanups (cleanup);
10046 }
10047
10048 /* Implement the "print_mention" breakpoint_ops method for
10049    ranged breakpoints.  */
10050
10051 static void
10052 print_mention_ranged_breakpoint (struct breakpoint *b)
10053 {
10054   struct bp_location *bl = b->loc;
10055   struct ui_out *uiout = current_uiout;
10056
10057   gdb_assert (bl);
10058   gdb_assert (b->type == bp_hardware_breakpoint);
10059
10060   if (ui_out_is_mi_like_p (uiout))
10061     return;
10062
10063   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10064                    b->number, paddress (bl->gdbarch, bl->address),
10065                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10066 }
10067
10068 /* Implement the "print_recreate" breakpoint_ops method for
10069    ranged breakpoints.  */
10070
10071 static void
10072 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10073 {
10074   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10075                       b->addr_string_range_end);
10076   print_recreate_thread (b, fp);
10077 }
10078
10079 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10080
10081 static struct breakpoint_ops ranged_breakpoint_ops;
10082
10083 /* Find the address where the end of the breakpoint range should be
10084    placed, given the SAL of the end of the range.  This is so that if
10085    the user provides a line number, the end of the range is set to the
10086    last instruction of the given line.  */
10087
10088 static CORE_ADDR
10089 find_breakpoint_range_end (struct symtab_and_line sal)
10090 {
10091   CORE_ADDR end;
10092
10093   /* If the user provided a PC value, use it.  Otherwise,
10094      find the address of the end of the given location.  */
10095   if (sal.explicit_pc)
10096     end = sal.pc;
10097   else
10098     {
10099       int ret;
10100       CORE_ADDR start;
10101
10102       ret = find_line_pc_range (sal, &start, &end);
10103       if (!ret)
10104         error (_("Could not find location of the end of the range."));
10105
10106       /* find_line_pc_range returns the start of the next line.  */
10107       end--;
10108     }
10109
10110   return end;
10111 }
10112
10113 /* Implement the "break-range" CLI command.  */
10114
10115 static void
10116 break_range_command (char *arg, int from_tty)
10117 {
10118   char *arg_start, *addr_string_start, *addr_string_end;
10119   struct linespec_result canonical_start, canonical_end;
10120   int bp_count, can_use_bp, length;
10121   CORE_ADDR end;
10122   struct breakpoint *b;
10123   struct symtab_and_line sal_start, sal_end;
10124   struct cleanup *cleanup_bkpt;
10125   struct linespec_sals *lsal_start, *lsal_end;
10126
10127   /* We don't support software ranged breakpoints.  */
10128   if (target_ranged_break_num_registers () < 0)
10129     error (_("This target does not support hardware ranged breakpoints."));
10130
10131   bp_count = hw_breakpoint_used_count ();
10132   bp_count += target_ranged_break_num_registers ();
10133   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10134                                                    bp_count, 0);
10135   if (can_use_bp < 0)
10136     error (_("Hardware breakpoints used exceeds limit."));
10137
10138   arg = skip_spaces (arg);
10139   if (arg == NULL || arg[0] == '\0')
10140     error(_("No address range specified."));
10141
10142   init_linespec_result (&canonical_start);
10143
10144   arg_start = arg;
10145   parse_breakpoint_sals (&arg, &canonical_start);
10146
10147   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10148
10149   if (arg[0] != ',')
10150     error (_("Too few arguments."));
10151   else if (VEC_empty (linespec_sals, canonical_start.sals))
10152     error (_("Could not find location of the beginning of the range."));
10153
10154   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10155
10156   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10157       || lsal_start->sals.nelts != 1)
10158     error (_("Cannot create a ranged breakpoint with multiple locations."));
10159
10160   sal_start = lsal_start->sals.sals[0];
10161   addr_string_start = savestring (arg_start, arg - arg_start);
10162   make_cleanup (xfree, addr_string_start);
10163
10164   arg++;        /* Skip the comma.  */
10165   arg = skip_spaces (arg);
10166
10167   /* Parse the end location.  */
10168
10169   init_linespec_result (&canonical_end);
10170   arg_start = arg;
10171
10172   /* We call decode_line_full directly here instead of using
10173      parse_breakpoint_sals because we need to specify the start location's
10174      symtab and line as the default symtab and line for the end of the
10175      range.  This makes it possible to have ranges like "foo.c:27, +14",
10176      where +14 means 14 lines from the start location.  */
10177   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10178                     sal_start.symtab, sal_start.line,
10179                     &canonical_end, NULL, NULL);
10180
10181   make_cleanup_destroy_linespec_result (&canonical_end);
10182
10183   if (VEC_empty (linespec_sals, canonical_end.sals))
10184     error (_("Could not find location of the end of the range."));
10185
10186   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10187   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10188       || lsal_end->sals.nelts != 1)
10189     error (_("Cannot create a ranged breakpoint with multiple locations."));
10190
10191   sal_end = lsal_end->sals.sals[0];
10192   addr_string_end = savestring (arg_start, arg - arg_start);
10193   make_cleanup (xfree, addr_string_end);
10194
10195   end = find_breakpoint_range_end (sal_end);
10196   if (sal_start.pc > end)
10197     error (_("Invalid address range, end precedes start."));
10198
10199   length = end - sal_start.pc + 1;
10200   if (length < 0)
10201     /* Length overflowed.  */
10202     error (_("Address range too large."));
10203   else if (length == 1)
10204     {
10205       /* This range is simple enough to be handled by
10206          the `hbreak' command.  */
10207       hbreak_command (addr_string_start, 1);
10208
10209       do_cleanups (cleanup_bkpt);
10210
10211       return;
10212     }
10213
10214   /* Now set up the breakpoint.  */
10215   b = set_raw_breakpoint (get_current_arch (), sal_start,
10216                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10217   set_breakpoint_count (breakpoint_count + 1);
10218   b->number = breakpoint_count;
10219   b->disposition = disp_donttouch;
10220   b->addr_string = xstrdup (addr_string_start);
10221   b->addr_string_range_end = xstrdup (addr_string_end);
10222   b->loc->length = length;
10223
10224   do_cleanups (cleanup_bkpt);
10225
10226   mention (b);
10227   observer_notify_breakpoint_created (b);
10228   update_global_location_list (1);
10229 }
10230
10231 /*  Return non-zero if EXP is verified as constant.  Returned zero
10232     means EXP is variable.  Also the constant detection may fail for
10233     some constant expressions and in such case still falsely return
10234     zero.  */
10235
10236 static int
10237 watchpoint_exp_is_const (const struct expression *exp)
10238 {
10239   int i = exp->nelts;
10240
10241   while (i > 0)
10242     {
10243       int oplenp, argsp;
10244
10245       /* We are only interested in the descriptor of each element.  */
10246       operator_length (exp, i, &oplenp, &argsp);
10247       i -= oplenp;
10248
10249       switch (exp->elts[i].opcode)
10250         {
10251         case BINOP_ADD:
10252         case BINOP_SUB:
10253         case BINOP_MUL:
10254         case BINOP_DIV:
10255         case BINOP_REM:
10256         case BINOP_MOD:
10257         case BINOP_LSH:
10258         case BINOP_RSH:
10259         case BINOP_LOGICAL_AND:
10260         case BINOP_LOGICAL_OR:
10261         case BINOP_BITWISE_AND:
10262         case BINOP_BITWISE_IOR:
10263         case BINOP_BITWISE_XOR:
10264         case BINOP_EQUAL:
10265         case BINOP_NOTEQUAL:
10266         case BINOP_LESS:
10267         case BINOP_GTR:
10268         case BINOP_LEQ:
10269         case BINOP_GEQ:
10270         case BINOP_REPEAT:
10271         case BINOP_COMMA:
10272         case BINOP_EXP:
10273         case BINOP_MIN:
10274         case BINOP_MAX:
10275         case BINOP_INTDIV:
10276         case BINOP_CONCAT:
10277         case BINOP_IN:
10278         case BINOP_RANGE:
10279         case TERNOP_COND:
10280         case TERNOP_SLICE:
10281
10282         case OP_LONG:
10283         case OP_DOUBLE:
10284         case OP_DECFLOAT:
10285         case OP_LAST:
10286         case OP_COMPLEX:
10287         case OP_STRING:
10288         case OP_ARRAY:
10289         case OP_TYPE:
10290         case OP_TYPEOF:
10291         case OP_DECLTYPE:
10292         case OP_TYPEID:
10293         case OP_NAME:
10294         case OP_OBJC_NSSTRING:
10295
10296         case UNOP_NEG:
10297         case UNOP_LOGICAL_NOT:
10298         case UNOP_COMPLEMENT:
10299         case UNOP_ADDR:
10300         case UNOP_HIGH:
10301         case UNOP_CAST:
10302
10303         case UNOP_CAST_TYPE:
10304         case UNOP_REINTERPRET_CAST:
10305         case UNOP_DYNAMIC_CAST:
10306           /* Unary, binary and ternary operators: We have to check
10307              their operands.  If they are constant, then so is the
10308              result of that operation.  For instance, if A and B are
10309              determined to be constants, then so is "A + B".
10310
10311              UNOP_IND is one exception to the rule above, because the
10312              value of *ADDR is not necessarily a constant, even when
10313              ADDR is.  */
10314           break;
10315
10316         case OP_VAR_VALUE:
10317           /* Check whether the associated symbol is a constant.
10318
10319              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10320              possible that a buggy compiler could mark a variable as
10321              constant even when it is not, and TYPE_CONST would return
10322              true in this case, while SYMBOL_CLASS wouldn't.
10323
10324              We also have to check for function symbols because they
10325              are always constant.  */
10326           {
10327             struct symbol *s = exp->elts[i + 2].symbol;
10328
10329             if (SYMBOL_CLASS (s) != LOC_BLOCK
10330                 && SYMBOL_CLASS (s) != LOC_CONST
10331                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10332               return 0;
10333             break;
10334           }
10335
10336         /* The default action is to return 0 because we are using
10337            the optimistic approach here: If we don't know something,
10338            then it is not a constant.  */
10339         default:
10340           return 0;
10341         }
10342     }
10343
10344   return 1;
10345 }
10346
10347 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10348
10349 static void
10350 dtor_watchpoint (struct breakpoint *self)
10351 {
10352   struct watchpoint *w = (struct watchpoint *) self;
10353
10354   xfree (w->cond_exp);
10355   xfree (w->exp);
10356   xfree (w->exp_string);
10357   xfree (w->exp_string_reparse);
10358   value_free (w->val);
10359
10360   base_breakpoint_ops.dtor (self);
10361 }
10362
10363 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10364
10365 static void
10366 re_set_watchpoint (struct breakpoint *b)
10367 {
10368   struct watchpoint *w = (struct watchpoint *) b;
10369
10370   /* Watchpoint can be either on expression using entirely global
10371      variables, or it can be on local variables.
10372
10373      Watchpoints of the first kind are never auto-deleted, and even
10374      persist across program restarts.  Since they can use variables
10375      from shared libraries, we need to reparse expression as libraries
10376      are loaded and unloaded.
10377
10378      Watchpoints on local variables can also change meaning as result
10379      of solib event.  For example, if a watchpoint uses both a local
10380      and a global variables in expression, it's a local watchpoint,
10381      but unloading of a shared library will make the expression
10382      invalid.  This is not a very common use case, but we still
10383      re-evaluate expression, to avoid surprises to the user.
10384
10385      Note that for local watchpoints, we re-evaluate it only if
10386      watchpoints frame id is still valid.  If it's not, it means the
10387      watchpoint is out of scope and will be deleted soon.  In fact,
10388      I'm not sure we'll ever be called in this case.
10389
10390      If a local watchpoint's frame id is still valid, then
10391      w->exp_valid_block is likewise valid, and we can safely use it.
10392
10393      Don't do anything about disabled watchpoints, since they will be
10394      reevaluated again when enabled.  */
10395   update_watchpoint (w, 1 /* reparse */);
10396 }
10397
10398 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10399
10400 static int
10401 insert_watchpoint (struct bp_location *bl)
10402 {
10403   struct watchpoint *w = (struct watchpoint *) bl->owner;
10404   int length = w->exact ? 1 : bl->length;
10405
10406   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10407                                    w->cond_exp);
10408 }
10409
10410 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10411
10412 static int
10413 remove_watchpoint (struct bp_location *bl)
10414 {
10415   struct watchpoint *w = (struct watchpoint *) bl->owner;
10416   int length = w->exact ? 1 : bl->length;
10417
10418   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10419                                    w->cond_exp);
10420 }
10421
10422 static int
10423 breakpoint_hit_watchpoint (const struct bp_location *bl,
10424                            struct address_space *aspace, CORE_ADDR bp_addr,
10425                            const struct target_waitstatus *ws)
10426 {
10427   struct breakpoint *b = bl->owner;
10428   struct watchpoint *w = (struct watchpoint *) b;
10429
10430   /* Continuable hardware watchpoints are treated as non-existent if the
10431      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10432      some data address).  Otherwise gdb won't stop on a break instruction
10433      in the code (not from a breakpoint) when a hardware watchpoint has
10434      been defined.  Also skip watchpoints which we know did not trigger
10435      (did not match the data address).  */
10436   if (is_hardware_watchpoint (b)
10437       && w->watchpoint_triggered == watch_triggered_no)
10438     return 0;
10439
10440   return 1;
10441 }
10442
10443 static void
10444 check_status_watchpoint (bpstat bs)
10445 {
10446   gdb_assert (is_watchpoint (bs->breakpoint_at));
10447
10448   bpstat_check_watchpoint (bs);
10449 }
10450
10451 /* Implement the "resources_needed" breakpoint_ops method for
10452    hardware watchpoints.  */
10453
10454 static int
10455 resources_needed_watchpoint (const struct bp_location *bl)
10456 {
10457   struct watchpoint *w = (struct watchpoint *) bl->owner;
10458   int length = w->exact? 1 : bl->length;
10459
10460   return target_region_ok_for_hw_watchpoint (bl->address, length);
10461 }
10462
10463 /* Implement the "works_in_software_mode" breakpoint_ops method for
10464    hardware watchpoints.  */
10465
10466 static int
10467 works_in_software_mode_watchpoint (const struct breakpoint *b)
10468 {
10469   /* Read and access watchpoints only work with hardware support.  */
10470   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10471 }
10472
10473 static enum print_stop_action
10474 print_it_watchpoint (bpstat bs)
10475 {
10476   struct cleanup *old_chain;
10477   struct breakpoint *b;
10478   struct ui_file *stb;
10479   enum print_stop_action result;
10480   struct watchpoint *w;
10481   struct ui_out *uiout = current_uiout;
10482
10483   gdb_assert (bs->bp_location_at != NULL);
10484
10485   b = bs->breakpoint_at;
10486   w = (struct watchpoint *) b;
10487
10488   stb = mem_fileopen ();
10489   old_chain = make_cleanup_ui_file_delete (stb);
10490
10491   switch (b->type)
10492     {
10493     case bp_watchpoint:
10494     case bp_hardware_watchpoint:
10495       annotate_watchpoint (b->number);
10496       if (ui_out_is_mi_like_p (uiout))
10497         ui_out_field_string
10498           (uiout, "reason",
10499            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10500       mention (b);
10501       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10502       ui_out_text (uiout, "\nOld value = ");
10503       watchpoint_value_print (bs->old_val, stb);
10504       ui_out_field_stream (uiout, "old", stb);
10505       ui_out_text (uiout, "\nNew value = ");
10506       watchpoint_value_print (w->val, stb);
10507       ui_out_field_stream (uiout, "new", stb);
10508       ui_out_text (uiout, "\n");
10509       /* More than one watchpoint may have been triggered.  */
10510       result = PRINT_UNKNOWN;
10511       break;
10512
10513     case bp_read_watchpoint:
10514       if (ui_out_is_mi_like_p (uiout))
10515         ui_out_field_string
10516           (uiout, "reason",
10517            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10518       mention (b);
10519       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10520       ui_out_text (uiout, "\nValue = ");
10521       watchpoint_value_print (w->val, stb);
10522       ui_out_field_stream (uiout, "value", stb);
10523       ui_out_text (uiout, "\n");
10524       result = PRINT_UNKNOWN;
10525       break;
10526
10527     case bp_access_watchpoint:
10528       if (bs->old_val != NULL)
10529         {
10530           annotate_watchpoint (b->number);
10531           if (ui_out_is_mi_like_p (uiout))
10532             ui_out_field_string
10533               (uiout, "reason",
10534                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10535           mention (b);
10536           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10537           ui_out_text (uiout, "\nOld value = ");
10538           watchpoint_value_print (bs->old_val, stb);
10539           ui_out_field_stream (uiout, "old", stb);
10540           ui_out_text (uiout, "\nNew value = ");
10541         }
10542       else
10543         {
10544           mention (b);
10545           if (ui_out_is_mi_like_p (uiout))
10546             ui_out_field_string
10547               (uiout, "reason",
10548                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10549           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10550           ui_out_text (uiout, "\nValue = ");
10551         }
10552       watchpoint_value_print (w->val, stb);
10553       ui_out_field_stream (uiout, "new", stb);
10554       ui_out_text (uiout, "\n");
10555       result = PRINT_UNKNOWN;
10556       break;
10557     default:
10558       result = PRINT_UNKNOWN;
10559     }
10560
10561   do_cleanups (old_chain);
10562   return result;
10563 }
10564
10565 /* Implement the "print_mention" breakpoint_ops method for hardware
10566    watchpoints.  */
10567
10568 static void
10569 print_mention_watchpoint (struct breakpoint *b)
10570 {
10571   struct cleanup *ui_out_chain;
10572   struct watchpoint *w = (struct watchpoint *) b;
10573   struct ui_out *uiout = current_uiout;
10574
10575   switch (b->type)
10576     {
10577     case bp_watchpoint:
10578       ui_out_text (uiout, "Watchpoint ");
10579       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10580       break;
10581     case bp_hardware_watchpoint:
10582       ui_out_text (uiout, "Hardware watchpoint ");
10583       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10584       break;
10585     case bp_read_watchpoint:
10586       ui_out_text (uiout, "Hardware read watchpoint ");
10587       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10588       break;
10589     case bp_access_watchpoint:
10590       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10591       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10592       break;
10593     default:
10594       internal_error (__FILE__, __LINE__,
10595                       _("Invalid hardware watchpoint type."));
10596     }
10597
10598   ui_out_field_int (uiout, "number", b->number);
10599   ui_out_text (uiout, ": ");
10600   ui_out_field_string (uiout, "exp", w->exp_string);
10601   do_cleanups (ui_out_chain);
10602 }
10603
10604 /* Implement the "print_recreate" breakpoint_ops method for
10605    watchpoints.  */
10606
10607 static void
10608 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10609 {
10610   struct watchpoint *w = (struct watchpoint *) b;
10611
10612   switch (b->type)
10613     {
10614     case bp_watchpoint:
10615     case bp_hardware_watchpoint:
10616       fprintf_unfiltered (fp, "watch");
10617       break;
10618     case bp_read_watchpoint:
10619       fprintf_unfiltered (fp, "rwatch");
10620       break;
10621     case bp_access_watchpoint:
10622       fprintf_unfiltered (fp, "awatch");
10623       break;
10624     default:
10625       internal_error (__FILE__, __LINE__,
10626                       _("Invalid watchpoint type."));
10627     }
10628
10629   fprintf_unfiltered (fp, " %s", w->exp_string);
10630   print_recreate_thread (b, fp);
10631 }
10632
10633 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10634
10635 static struct breakpoint_ops watchpoint_breakpoint_ops;
10636
10637 /* Implement the "insert" breakpoint_ops method for
10638    masked hardware watchpoints.  */
10639
10640 static int
10641 insert_masked_watchpoint (struct bp_location *bl)
10642 {
10643   struct watchpoint *w = (struct watchpoint *) bl->owner;
10644
10645   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10646                                         bl->watchpoint_type);
10647 }
10648
10649 /* Implement the "remove" breakpoint_ops method for
10650    masked hardware watchpoints.  */
10651
10652 static int
10653 remove_masked_watchpoint (struct bp_location *bl)
10654 {
10655   struct watchpoint *w = (struct watchpoint *) bl->owner;
10656
10657   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10658                                         bl->watchpoint_type);
10659 }
10660
10661 /* Implement the "resources_needed" breakpoint_ops method for
10662    masked hardware watchpoints.  */
10663
10664 static int
10665 resources_needed_masked_watchpoint (const struct bp_location *bl)
10666 {
10667   struct watchpoint *w = (struct watchpoint *) bl->owner;
10668
10669   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10670 }
10671
10672 /* Implement the "works_in_software_mode" breakpoint_ops method for
10673    masked hardware watchpoints.  */
10674
10675 static int
10676 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10677 {
10678   return 0;
10679 }
10680
10681 /* Implement the "print_it" breakpoint_ops method for
10682    masked hardware watchpoints.  */
10683
10684 static enum print_stop_action
10685 print_it_masked_watchpoint (bpstat bs)
10686 {
10687   struct breakpoint *b = bs->breakpoint_at;
10688   struct ui_out *uiout = current_uiout;
10689
10690   /* Masked watchpoints have only one location.  */
10691   gdb_assert (b->loc && b->loc->next == NULL);
10692
10693   switch (b->type)
10694     {
10695     case bp_hardware_watchpoint:
10696       annotate_watchpoint (b->number);
10697       if (ui_out_is_mi_like_p (uiout))
10698         ui_out_field_string
10699           (uiout, "reason",
10700            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10701       break;
10702
10703     case bp_read_watchpoint:
10704       if (ui_out_is_mi_like_p (uiout))
10705         ui_out_field_string
10706           (uiout, "reason",
10707            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10708       break;
10709
10710     case bp_access_watchpoint:
10711       if (ui_out_is_mi_like_p (uiout))
10712         ui_out_field_string
10713           (uiout, "reason",
10714            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10715       break;
10716     default:
10717       internal_error (__FILE__, __LINE__,
10718                       _("Invalid hardware watchpoint type."));
10719     }
10720
10721   mention (b);
10722   ui_out_text (uiout, _("\n\
10723 Check the underlying instruction at PC for the memory\n\
10724 address and value which triggered this watchpoint.\n"));
10725   ui_out_text (uiout, "\n");
10726
10727   /* More than one watchpoint may have been triggered.  */
10728   return PRINT_UNKNOWN;
10729 }
10730
10731 /* Implement the "print_one_detail" breakpoint_ops method for
10732    masked hardware watchpoints.  */
10733
10734 static void
10735 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10736                                     struct ui_out *uiout)
10737 {
10738   struct watchpoint *w = (struct watchpoint *) b;
10739
10740   /* Masked watchpoints have only one location.  */
10741   gdb_assert (b->loc && b->loc->next == NULL);
10742
10743   ui_out_text (uiout, "\tmask ");
10744   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10745   ui_out_text (uiout, "\n");
10746 }
10747
10748 /* Implement the "print_mention" breakpoint_ops method for
10749    masked hardware watchpoints.  */
10750
10751 static void
10752 print_mention_masked_watchpoint (struct breakpoint *b)
10753 {
10754   struct watchpoint *w = (struct watchpoint *) b;
10755   struct ui_out *uiout = current_uiout;
10756   struct cleanup *ui_out_chain;
10757
10758   switch (b->type)
10759     {
10760     case bp_hardware_watchpoint:
10761       ui_out_text (uiout, "Masked hardware watchpoint ");
10762       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10763       break;
10764     case bp_read_watchpoint:
10765       ui_out_text (uiout, "Masked hardware read watchpoint ");
10766       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10767       break;
10768     case bp_access_watchpoint:
10769       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10770       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10771       break;
10772     default:
10773       internal_error (__FILE__, __LINE__,
10774                       _("Invalid hardware watchpoint type."));
10775     }
10776
10777   ui_out_field_int (uiout, "number", b->number);
10778   ui_out_text (uiout, ": ");
10779   ui_out_field_string (uiout, "exp", w->exp_string);
10780   do_cleanups (ui_out_chain);
10781 }
10782
10783 /* Implement the "print_recreate" breakpoint_ops method for
10784    masked hardware watchpoints.  */
10785
10786 static void
10787 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10788 {
10789   struct watchpoint *w = (struct watchpoint *) b;
10790   char tmp[40];
10791
10792   switch (b->type)
10793     {
10794     case bp_hardware_watchpoint:
10795       fprintf_unfiltered (fp, "watch");
10796       break;
10797     case bp_read_watchpoint:
10798       fprintf_unfiltered (fp, "rwatch");
10799       break;
10800     case bp_access_watchpoint:
10801       fprintf_unfiltered (fp, "awatch");
10802       break;
10803     default:
10804       internal_error (__FILE__, __LINE__,
10805                       _("Invalid hardware watchpoint type."));
10806     }
10807
10808   sprintf_vma (tmp, w->hw_wp_mask);
10809   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10810   print_recreate_thread (b, fp);
10811 }
10812
10813 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10814
10815 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10816
10817 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10818
10819 static int
10820 is_masked_watchpoint (const struct breakpoint *b)
10821 {
10822   return b->ops == &masked_watchpoint_breakpoint_ops;
10823 }
10824
10825 /* accessflag:  hw_write:  watch write, 
10826                 hw_read:   watch read, 
10827                 hw_access: watch access (read or write) */
10828 static void
10829 watch_command_1 (const char *arg, int accessflag, int from_tty,
10830                  int just_location, int internal)
10831 {
10832   volatile struct gdb_exception e;
10833   struct breakpoint *b, *scope_breakpoint = NULL;
10834   struct expression *exp;
10835   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10836   struct value *val, *mark, *result;
10837   struct frame_info *frame;
10838   const char *exp_start = NULL;
10839   const char *exp_end = NULL;
10840   const char *tok, *end_tok;
10841   int toklen = -1;
10842   const char *cond_start = NULL;
10843   const char *cond_end = NULL;
10844   enum bptype bp_type;
10845   int thread = -1;
10846   int pc = 0;
10847   /* Flag to indicate whether we are going to use masks for
10848      the hardware watchpoint.  */
10849   int use_mask = 0;
10850   CORE_ADDR mask = 0;
10851   struct watchpoint *w;
10852   char *expression;
10853   struct cleanup *back_to;
10854
10855   /* Make sure that we actually have parameters to parse.  */
10856   if (arg != NULL && arg[0] != '\0')
10857     {
10858       const char *value_start;
10859
10860       exp_end = arg + strlen (arg);
10861
10862       /* Look for "parameter value" pairs at the end
10863          of the arguments string.  */
10864       for (tok = exp_end - 1; tok > arg; tok--)
10865         {
10866           /* Skip whitespace at the end of the argument list.  */
10867           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10868             tok--;
10869
10870           /* Find the beginning of the last token.
10871              This is the value of the parameter.  */
10872           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10873             tok--;
10874           value_start = tok + 1;
10875
10876           /* Skip whitespace.  */
10877           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10878             tok--;
10879
10880           end_tok = tok;
10881
10882           /* Find the beginning of the second to last token.
10883              This is the parameter itself.  */
10884           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10885             tok--;
10886           tok++;
10887           toklen = end_tok - tok + 1;
10888
10889           if (toklen == 6 && !strncmp (tok, "thread", 6))
10890             {
10891               /* At this point we've found a "thread" token, which means
10892                  the user is trying to set a watchpoint that triggers
10893                  only in a specific thread.  */
10894               char *endp;
10895
10896               if (thread != -1)
10897                 error(_("You can specify only one thread."));
10898
10899               /* Extract the thread ID from the next token.  */
10900               thread = strtol (value_start, &endp, 0);
10901
10902               /* Check if the user provided a valid numeric value for the
10903                  thread ID.  */
10904               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10905                 error (_("Invalid thread ID specification %s."), value_start);
10906
10907               /* Check if the thread actually exists.  */
10908               if (!valid_thread_id (thread))
10909                 invalid_thread_id_error (thread);
10910             }
10911           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10912             {
10913               /* We've found a "mask" token, which means the user wants to
10914                  create a hardware watchpoint that is going to have the mask
10915                  facility.  */
10916               struct value *mask_value, *mark;
10917
10918               if (use_mask)
10919                 error(_("You can specify only one mask."));
10920
10921               use_mask = just_location = 1;
10922
10923               mark = value_mark ();
10924               mask_value = parse_to_comma_and_eval (&value_start);
10925               mask = value_as_address (mask_value);
10926               value_free_to_mark (mark);
10927             }
10928           else
10929             /* We didn't recognize what we found.  We should stop here.  */
10930             break;
10931
10932           /* Truncate the string and get rid of the "parameter value" pair before
10933              the arguments string is parsed by the parse_exp_1 function.  */
10934           exp_end = tok;
10935         }
10936     }
10937   else
10938     exp_end = arg;
10939
10940   /* Parse the rest of the arguments.  From here on out, everything
10941      is in terms of a newly allocated string instead of the original
10942      ARG.  */
10943   innermost_block = NULL;
10944   expression = savestring (arg, exp_end - arg);
10945   back_to = make_cleanup (xfree, expression);
10946   exp_start = arg = expression;
10947   exp = parse_exp_1 (&arg, 0, 0, 0);
10948   exp_end = arg;
10949   /* Remove trailing whitespace from the expression before saving it.
10950      This makes the eventual display of the expression string a bit
10951      prettier.  */
10952   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10953     --exp_end;
10954
10955   /* Checking if the expression is not constant.  */
10956   if (watchpoint_exp_is_const (exp))
10957     {
10958       int len;
10959
10960       len = exp_end - exp_start;
10961       while (len > 0 && isspace (exp_start[len - 1]))
10962         len--;
10963       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10964     }
10965
10966   exp_valid_block = innermost_block;
10967   mark = value_mark ();
10968   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10969
10970   if (just_location)
10971     {
10972       int ret;
10973
10974       exp_valid_block = NULL;
10975       val = value_addr (result);
10976       release_value (val);
10977       value_free_to_mark (mark);
10978
10979       if (use_mask)
10980         {
10981           ret = target_masked_watch_num_registers (value_as_address (val),
10982                                                    mask);
10983           if (ret == -1)
10984             error (_("This target does not support masked watchpoints."));
10985           else if (ret == -2)
10986             error (_("Invalid mask or memory region."));
10987         }
10988     }
10989   else if (val != NULL)
10990     release_value (val);
10991
10992   tok = skip_spaces_const (arg);
10993   end_tok = skip_to_space_const (tok);
10994
10995   toklen = end_tok - tok;
10996   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10997     {
10998       struct expression *cond;
10999
11000       innermost_block = NULL;
11001       tok = cond_start = end_tok + 1;
11002       cond = parse_exp_1 (&tok, 0, 0, 0);
11003
11004       /* The watchpoint expression may not be local, but the condition
11005          may still be.  E.g.: `watch global if local > 0'.  */
11006       cond_exp_valid_block = innermost_block;
11007
11008       xfree (cond);
11009       cond_end = tok;
11010     }
11011   if (*tok)
11012     error (_("Junk at end of command."));
11013
11014   if (accessflag == hw_read)
11015     bp_type = bp_read_watchpoint;
11016   else if (accessflag == hw_access)
11017     bp_type = bp_access_watchpoint;
11018   else
11019     bp_type = bp_hardware_watchpoint;
11020
11021   frame = block_innermost_frame (exp_valid_block);
11022
11023   /* If the expression is "local", then set up a "watchpoint scope"
11024      breakpoint at the point where we've left the scope of the watchpoint
11025      expression.  Create the scope breakpoint before the watchpoint, so
11026      that we will encounter it first in bpstat_stop_status.  */
11027   if (exp_valid_block && frame)
11028     {
11029       if (frame_id_p (frame_unwind_caller_id (frame)))
11030         {
11031           scope_breakpoint
11032             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11033                                           frame_unwind_caller_pc (frame),
11034                                           bp_watchpoint_scope,
11035                                           &momentary_breakpoint_ops);
11036
11037           scope_breakpoint->enable_state = bp_enabled;
11038
11039           /* Automatically delete the breakpoint when it hits.  */
11040           scope_breakpoint->disposition = disp_del;
11041
11042           /* Only break in the proper frame (help with recursion).  */
11043           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11044
11045           /* Set the address at which we will stop.  */
11046           scope_breakpoint->loc->gdbarch
11047             = frame_unwind_caller_arch (frame);
11048           scope_breakpoint->loc->requested_address
11049             = frame_unwind_caller_pc (frame);
11050           scope_breakpoint->loc->address
11051             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11052                                          scope_breakpoint->loc->requested_address,
11053                                          scope_breakpoint->type);
11054         }
11055     }
11056
11057   /* Now set up the breakpoint.  */
11058
11059   w = XCNEW (struct watchpoint);
11060   b = &w->base;
11061   if (use_mask)
11062     init_raw_breakpoint_without_location (b, NULL, bp_type,
11063                                           &masked_watchpoint_breakpoint_ops);
11064   else
11065     init_raw_breakpoint_without_location (b, NULL, bp_type,
11066                                           &watchpoint_breakpoint_ops);
11067   b->thread = thread;
11068   b->disposition = disp_donttouch;
11069   b->pspace = current_program_space;
11070   w->exp = exp;
11071   w->exp_valid_block = exp_valid_block;
11072   w->cond_exp_valid_block = cond_exp_valid_block;
11073   if (just_location)
11074     {
11075       struct type *t = value_type (val);
11076       CORE_ADDR addr = value_as_address (val);
11077       char *name;
11078
11079       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11080       name = type_to_string (t);
11081
11082       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11083                                           core_addr_to_string (addr));
11084       xfree (name);
11085
11086       w->exp_string = xstrprintf ("-location %.*s",
11087                                   (int) (exp_end - exp_start), exp_start);
11088
11089       /* The above expression is in C.  */
11090       b->language = language_c;
11091     }
11092   else
11093     w->exp_string = savestring (exp_start, exp_end - exp_start);
11094
11095   if (use_mask)
11096     {
11097       w->hw_wp_mask = mask;
11098     }
11099   else
11100     {
11101       w->val = val;
11102       w->val_valid = 1;
11103     }
11104
11105   if (cond_start)
11106     b->cond_string = savestring (cond_start, cond_end - cond_start);
11107   else
11108     b->cond_string = 0;
11109
11110   if (frame)
11111     {
11112       w->watchpoint_frame = get_frame_id (frame);
11113       w->watchpoint_thread = inferior_ptid;
11114     }
11115   else
11116     {
11117       w->watchpoint_frame = null_frame_id;
11118       w->watchpoint_thread = null_ptid;
11119     }
11120
11121   if (scope_breakpoint != NULL)
11122     {
11123       /* The scope breakpoint is related to the watchpoint.  We will
11124          need to act on them together.  */
11125       b->related_breakpoint = scope_breakpoint;
11126       scope_breakpoint->related_breakpoint = b;
11127     }
11128
11129   if (!just_location)
11130     value_free_to_mark (mark);
11131
11132   TRY_CATCH (e, RETURN_MASK_ALL)
11133     {
11134       /* Finally update the new watchpoint.  This creates the locations
11135          that should be inserted.  */
11136       update_watchpoint (w, 1);
11137     }
11138   if (e.reason < 0)
11139     {
11140       delete_breakpoint (b);
11141       throw_exception (e);
11142     }
11143
11144   install_breakpoint (internal, b, 1);
11145   do_cleanups (back_to);
11146 }
11147
11148 /* Return count of debug registers needed to watch the given expression.
11149    If the watchpoint cannot be handled in hardware return zero.  */
11150
11151 static int
11152 can_use_hardware_watchpoint (struct value *v)
11153 {
11154   int found_memory_cnt = 0;
11155   struct value *head = v;
11156
11157   /* Did the user specifically forbid us to use hardware watchpoints? */
11158   if (!can_use_hw_watchpoints)
11159     return 0;
11160
11161   /* Make sure that the value of the expression depends only upon
11162      memory contents, and values computed from them within GDB.  If we
11163      find any register references or function calls, we can't use a
11164      hardware watchpoint.
11165
11166      The idea here is that evaluating an expression generates a series
11167      of values, one holding the value of every subexpression.  (The
11168      expression a*b+c has five subexpressions: a, b, a*b, c, and
11169      a*b+c.)  GDB's values hold almost enough information to establish
11170      the criteria given above --- they identify memory lvalues,
11171      register lvalues, computed values, etcetera.  So we can evaluate
11172      the expression, and then scan the chain of values that leaves
11173      behind to decide whether we can detect any possible change to the
11174      expression's final value using only hardware watchpoints.
11175
11176      However, I don't think that the values returned by inferior
11177      function calls are special in any way.  So this function may not
11178      notice that an expression involving an inferior function call
11179      can't be watched with hardware watchpoints.  FIXME.  */
11180   for (; v; v = value_next (v))
11181     {
11182       if (VALUE_LVAL (v) == lval_memory)
11183         {
11184           if (v != head && value_lazy (v))
11185             /* A lazy memory lvalue in the chain is one that GDB never
11186                needed to fetch; we either just used its address (e.g.,
11187                `a' in `a.b') or we never needed it at all (e.g., `a'
11188                in `a,b').  This doesn't apply to HEAD; if that is
11189                lazy then it was not readable, but watch it anyway.  */
11190             ;
11191           else
11192             {
11193               /* Ahh, memory we actually used!  Check if we can cover
11194                  it with hardware watchpoints.  */
11195               struct type *vtype = check_typedef (value_type (v));
11196
11197               /* We only watch structs and arrays if user asked for it
11198                  explicitly, never if they just happen to appear in a
11199                  middle of some value chain.  */
11200               if (v == head
11201                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11202                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11203                 {
11204                   CORE_ADDR vaddr = value_address (v);
11205                   int len;
11206                   int num_regs;
11207
11208                   len = (target_exact_watchpoints
11209                          && is_scalar_type_recursive (vtype))?
11210                     1 : TYPE_LENGTH (value_type (v));
11211
11212                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11213                   if (!num_regs)
11214                     return 0;
11215                   else
11216                     found_memory_cnt += num_regs;
11217                 }
11218             }
11219         }
11220       else if (VALUE_LVAL (v) != not_lval
11221                && deprecated_value_modifiable (v) == 0)
11222         return 0;       /* These are values from the history (e.g., $1).  */
11223       else if (VALUE_LVAL (v) == lval_register)
11224         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11225     }
11226
11227   /* The expression itself looks suitable for using a hardware
11228      watchpoint, but give the target machine a chance to reject it.  */
11229   return found_memory_cnt;
11230 }
11231
11232 void
11233 watch_command_wrapper (char *arg, int from_tty, int internal)
11234 {
11235   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11236 }
11237
11238 /* A helper function that looks for the "-location" argument and then
11239    calls watch_command_1.  */
11240
11241 static void
11242 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11243 {
11244   int just_location = 0;
11245
11246   if (arg
11247       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11248           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11249     {
11250       arg = skip_spaces (arg);
11251       just_location = 1;
11252     }
11253
11254   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11255 }
11256
11257 static void
11258 watch_command (char *arg, int from_tty)
11259 {
11260   watch_maybe_just_location (arg, hw_write, from_tty);
11261 }
11262
11263 void
11264 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11265 {
11266   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11267 }
11268
11269 static void
11270 rwatch_command (char *arg, int from_tty)
11271 {
11272   watch_maybe_just_location (arg, hw_read, from_tty);
11273 }
11274
11275 void
11276 awatch_command_wrapper (char *arg, int from_tty, int internal)
11277 {
11278   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11279 }
11280
11281 static void
11282 awatch_command (char *arg, int from_tty)
11283 {
11284   watch_maybe_just_location (arg, hw_access, from_tty);
11285 }
11286 \f
11287
11288 /* Helper routines for the until_command routine in infcmd.c.  Here
11289    because it uses the mechanisms of breakpoints.  */
11290
11291 struct until_break_command_continuation_args
11292 {
11293   struct breakpoint *breakpoint;
11294   struct breakpoint *breakpoint2;
11295   int thread_num;
11296 };
11297
11298 /* This function is called by fetch_inferior_event via the
11299    cmd_continuation pointer, to complete the until command.  It takes
11300    care of cleaning up the temporary breakpoints set up by the until
11301    command.  */
11302 static void
11303 until_break_command_continuation (void *arg, int err)
11304 {
11305   struct until_break_command_continuation_args *a = arg;
11306
11307   delete_breakpoint (a->breakpoint);
11308   if (a->breakpoint2)
11309     delete_breakpoint (a->breakpoint2);
11310   delete_longjmp_breakpoint (a->thread_num);
11311 }
11312
11313 void
11314 until_break_command (char *arg, int from_tty, int anywhere)
11315 {
11316   struct symtabs_and_lines sals;
11317   struct symtab_and_line sal;
11318   struct frame_info *frame;
11319   struct gdbarch *frame_gdbarch;
11320   struct frame_id stack_frame_id;
11321   struct frame_id caller_frame_id;
11322   struct breakpoint *breakpoint;
11323   struct breakpoint *breakpoint2 = NULL;
11324   struct cleanup *old_chain;
11325   int thread;
11326   struct thread_info *tp;
11327
11328   clear_proceed_status ();
11329
11330   /* Set a breakpoint where the user wants it and at return from
11331      this function.  */
11332
11333   if (last_displayed_sal_is_valid ())
11334     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11335                           get_last_displayed_symtab (),
11336                           get_last_displayed_line ());
11337   else
11338     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11339                           (struct symtab *) NULL, 0);
11340
11341   if (sals.nelts != 1)
11342     error (_("Couldn't get information on specified line."));
11343
11344   sal = sals.sals[0];
11345   xfree (sals.sals);    /* malloc'd, so freed.  */
11346
11347   if (*arg)
11348     error (_("Junk at end of arguments."));
11349
11350   resolve_sal_pc (&sal);
11351
11352   tp = inferior_thread ();
11353   thread = tp->num;
11354
11355   old_chain = make_cleanup (null_cleanup, NULL);
11356
11357   /* Note linespec handling above invalidates the frame chain.
11358      Installing a breakpoint also invalidates the frame chain (as it
11359      may need to switch threads), so do any frame handling before
11360      that.  */
11361
11362   frame = get_selected_frame (NULL);
11363   frame_gdbarch = get_frame_arch (frame);
11364   stack_frame_id = get_stack_frame_id (frame);
11365   caller_frame_id = frame_unwind_caller_id (frame);
11366
11367   /* Keep within the current frame, or in frames called by the current
11368      one.  */
11369
11370   if (frame_id_p (caller_frame_id))
11371     {
11372       struct symtab_and_line sal2;
11373
11374       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11375       sal2.pc = frame_unwind_caller_pc (frame);
11376       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11377                                               sal2,
11378                                               caller_frame_id,
11379                                               bp_until);
11380       make_cleanup_delete_breakpoint (breakpoint2);
11381
11382       set_longjmp_breakpoint (tp, caller_frame_id);
11383       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11384     }
11385
11386   /* set_momentary_breakpoint could invalidate FRAME.  */
11387   frame = NULL;
11388
11389   if (anywhere)
11390     /* If the user told us to continue until a specified location,
11391        we don't specify a frame at which we need to stop.  */
11392     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11393                                            null_frame_id, bp_until);
11394   else
11395     /* Otherwise, specify the selected frame, because we want to stop
11396        only at the very same frame.  */
11397     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11398                                            stack_frame_id, bp_until);
11399   make_cleanup_delete_breakpoint (breakpoint);
11400
11401   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11402
11403   /* If we are running asynchronously, and proceed call above has
11404      actually managed to start the target, arrange for breakpoints to
11405      be deleted when the target stops.  Otherwise, we're already
11406      stopped and delete breakpoints via cleanup chain.  */
11407
11408   if (target_can_async_p () && is_running (inferior_ptid))
11409     {
11410       struct until_break_command_continuation_args *args;
11411       args = xmalloc (sizeof (*args));
11412
11413       args->breakpoint = breakpoint;
11414       args->breakpoint2 = breakpoint2;
11415       args->thread_num = thread;
11416
11417       discard_cleanups (old_chain);
11418       add_continuation (inferior_thread (),
11419                         until_break_command_continuation, args,
11420                         xfree);
11421     }
11422   else
11423     do_cleanups (old_chain);
11424 }
11425
11426 /* This function attempts to parse an optional "if <cond>" clause
11427    from the arg string.  If one is not found, it returns NULL.
11428
11429    Else, it returns a pointer to the condition string.  (It does not
11430    attempt to evaluate the string against a particular block.)  And,
11431    it updates arg to point to the first character following the parsed
11432    if clause in the arg string.  */
11433
11434 char *
11435 ep_parse_optional_if_clause (char **arg)
11436 {
11437   char *cond_string;
11438
11439   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11440     return NULL;
11441
11442   /* Skip the "if" keyword.  */
11443   (*arg) += 2;
11444
11445   /* Skip any extra leading whitespace, and record the start of the
11446      condition string.  */
11447   *arg = skip_spaces (*arg);
11448   cond_string = *arg;
11449
11450   /* Assume that the condition occupies the remainder of the arg
11451      string.  */
11452   (*arg) += strlen (cond_string);
11453
11454   return cond_string;
11455 }
11456
11457 /* Commands to deal with catching events, such as signals, exceptions,
11458    process start/exit, etc.  */
11459
11460 typedef enum
11461 {
11462   catch_fork_temporary, catch_vfork_temporary,
11463   catch_fork_permanent, catch_vfork_permanent
11464 }
11465 catch_fork_kind;
11466
11467 static void
11468 catch_fork_command_1 (char *arg, int from_tty, 
11469                       struct cmd_list_element *command)
11470 {
11471   struct gdbarch *gdbarch = get_current_arch ();
11472   char *cond_string = NULL;
11473   catch_fork_kind fork_kind;
11474   int tempflag;
11475
11476   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11477   tempflag = (fork_kind == catch_fork_temporary
11478               || fork_kind == catch_vfork_temporary);
11479
11480   if (!arg)
11481     arg = "";
11482   arg = skip_spaces (arg);
11483
11484   /* The allowed syntax is:
11485      catch [v]fork
11486      catch [v]fork if <cond>
11487
11488      First, check if there's an if clause.  */
11489   cond_string = ep_parse_optional_if_clause (&arg);
11490
11491   if ((*arg != '\0') && !isspace (*arg))
11492     error (_("Junk at end of arguments."));
11493
11494   /* If this target supports it, create a fork or vfork catchpoint
11495      and enable reporting of such events.  */
11496   switch (fork_kind)
11497     {
11498     case catch_fork_temporary:
11499     case catch_fork_permanent:
11500       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11501                                           &catch_fork_breakpoint_ops);
11502       break;
11503     case catch_vfork_temporary:
11504     case catch_vfork_permanent:
11505       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11506                                           &catch_vfork_breakpoint_ops);
11507       break;
11508     default:
11509       error (_("unsupported or unknown fork kind; cannot catch it"));
11510       break;
11511     }
11512 }
11513
11514 static void
11515 catch_exec_command_1 (char *arg, int from_tty, 
11516                       struct cmd_list_element *command)
11517 {
11518   struct exec_catchpoint *c;
11519   struct gdbarch *gdbarch = get_current_arch ();
11520   int tempflag;
11521   char *cond_string = NULL;
11522
11523   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11524
11525   if (!arg)
11526     arg = "";
11527   arg = skip_spaces (arg);
11528
11529   /* The allowed syntax is:
11530      catch exec
11531      catch exec if <cond>
11532
11533      First, check if there's an if clause.  */
11534   cond_string = ep_parse_optional_if_clause (&arg);
11535
11536   if ((*arg != '\0') && !isspace (*arg))
11537     error (_("Junk at end of arguments."));
11538
11539   c = XNEW (struct exec_catchpoint);
11540   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11541                    &catch_exec_breakpoint_ops);
11542   c->exec_pathname = NULL;
11543
11544   install_breakpoint (0, &c->base, 1);
11545 }
11546
11547 void
11548 init_ada_exception_breakpoint (struct breakpoint *b,
11549                                struct gdbarch *gdbarch,
11550                                struct symtab_and_line sal,
11551                                char *addr_string,
11552                                const struct breakpoint_ops *ops,
11553                                int tempflag,
11554                                int from_tty)
11555 {
11556   if (from_tty)
11557     {
11558       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11559       if (!loc_gdbarch)
11560         loc_gdbarch = gdbarch;
11561
11562       describe_other_breakpoints (loc_gdbarch,
11563                                   sal.pspace, sal.pc, sal.section, -1);
11564       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11565          version for exception catchpoints, because two catchpoints
11566          used for different exception names will use the same address.
11567          In this case, a "breakpoint ... also set at..." warning is
11568          unproductive.  Besides, the warning phrasing is also a bit
11569          inappropriate, we should use the word catchpoint, and tell
11570          the user what type of catchpoint it is.  The above is good
11571          enough for now, though.  */
11572     }
11573
11574   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11575
11576   b->enable_state = bp_enabled;
11577   b->disposition = tempflag ? disp_del : disp_donttouch;
11578   b->addr_string = addr_string;
11579   b->language = language_ada;
11580 }
11581
11582 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11583    filter list, or NULL if no filtering is required.  */
11584 static VEC(int) *
11585 catch_syscall_split_args (char *arg)
11586 {
11587   VEC(int) *result = NULL;
11588   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11589
11590   while (*arg != '\0')
11591     {
11592       int i, syscall_number;
11593       char *endptr;
11594       char cur_name[128];
11595       struct syscall s;
11596
11597       /* Skip whitespace.  */
11598       arg = skip_spaces (arg);
11599
11600       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11601         cur_name[i] = arg[i];
11602       cur_name[i] = '\0';
11603       arg += i;
11604
11605       /* Check if the user provided a syscall name or a number.  */
11606       syscall_number = (int) strtol (cur_name, &endptr, 0);
11607       if (*endptr == '\0')
11608         get_syscall_by_number (syscall_number, &s);
11609       else
11610         {
11611           /* We have a name.  Let's check if it's valid and convert it
11612              to a number.  */
11613           get_syscall_by_name (cur_name, &s);
11614
11615           if (s.number == UNKNOWN_SYSCALL)
11616             /* Here we have to issue an error instead of a warning,
11617                because GDB cannot do anything useful if there's no
11618                syscall number to be caught.  */
11619             error (_("Unknown syscall name '%s'."), cur_name);
11620         }
11621
11622       /* Ok, it's valid.  */
11623       VEC_safe_push (int, result, s.number);
11624     }
11625
11626   discard_cleanups (cleanup);
11627   return result;
11628 }
11629
11630 /* Implement the "catch syscall" command.  */
11631
11632 static void
11633 catch_syscall_command_1 (char *arg, int from_tty, 
11634                          struct cmd_list_element *command)
11635 {
11636   int tempflag;
11637   VEC(int) *filter;
11638   struct syscall s;
11639   struct gdbarch *gdbarch = get_current_arch ();
11640
11641   /* Checking if the feature if supported.  */
11642   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11643     error (_("The feature 'catch syscall' is not supported on \
11644 this architecture yet."));
11645
11646   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11647
11648   arg = skip_spaces (arg);
11649
11650   /* We need to do this first "dummy" translation in order
11651      to get the syscall XML file loaded or, most important,
11652      to display a warning to the user if there's no XML file
11653      for his/her architecture.  */
11654   get_syscall_by_number (0, &s);
11655
11656   /* The allowed syntax is:
11657      catch syscall
11658      catch syscall <name | number> [<name | number> ... <name | number>]
11659
11660      Let's check if there's a syscall name.  */
11661
11662   if (arg != NULL)
11663     filter = catch_syscall_split_args (arg);
11664   else
11665     filter = NULL;
11666
11667   create_syscall_event_catchpoint (tempflag, filter,
11668                                    &catch_syscall_breakpoint_ops);
11669 }
11670
11671 static void
11672 catch_command (char *arg, int from_tty)
11673 {
11674   error (_("Catch requires an event name."));
11675 }
11676 \f
11677
11678 static void
11679 tcatch_command (char *arg, int from_tty)
11680 {
11681   error (_("Catch requires an event name."));
11682 }
11683
11684 /* A qsort comparison function that sorts breakpoints in order.  */
11685
11686 static int
11687 compare_breakpoints (const void *a, const void *b)
11688 {
11689   const breakpoint_p *ba = a;
11690   uintptr_t ua = (uintptr_t) *ba;
11691   const breakpoint_p *bb = b;
11692   uintptr_t ub = (uintptr_t) *bb;
11693
11694   if ((*ba)->number < (*bb)->number)
11695     return -1;
11696   else if ((*ba)->number > (*bb)->number)
11697     return 1;
11698
11699   /* Now sort by address, in case we see, e..g, two breakpoints with
11700      the number 0.  */
11701   if (ua < ub)
11702     return -1;
11703   return ua > ub ? 1 : 0;
11704 }
11705
11706 /* Delete breakpoints by address or line.  */
11707
11708 static void
11709 clear_command (char *arg, int from_tty)
11710 {
11711   struct breakpoint *b, *prev;
11712   VEC(breakpoint_p) *found = 0;
11713   int ix;
11714   int default_match;
11715   struct symtabs_and_lines sals;
11716   struct symtab_and_line sal;
11717   int i;
11718   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11719
11720   if (arg)
11721     {
11722       sals = decode_line_with_current_source (arg,
11723                                               (DECODE_LINE_FUNFIRSTLINE
11724                                                | DECODE_LINE_LIST_MODE));
11725       make_cleanup (xfree, sals.sals);
11726       default_match = 0;
11727     }
11728   else
11729     {
11730       sals.sals = (struct symtab_and_line *)
11731         xmalloc (sizeof (struct symtab_and_line));
11732       make_cleanup (xfree, sals.sals);
11733       init_sal (&sal);          /* Initialize to zeroes.  */
11734
11735       /* Set sal's line, symtab, pc, and pspace to the values
11736          corresponding to the last call to print_frame_info.  If the
11737          codepoint is not valid, this will set all the fields to 0.  */
11738       get_last_displayed_sal (&sal);
11739       if (sal.symtab == 0)
11740         error (_("No source file specified."));
11741
11742       sals.sals[0] = sal;
11743       sals.nelts = 1;
11744
11745       default_match = 1;
11746     }
11747
11748   /* We don't call resolve_sal_pc here.  That's not as bad as it
11749      seems, because all existing breakpoints typically have both
11750      file/line and pc set.  So, if clear is given file/line, we can
11751      match this to existing breakpoint without obtaining pc at all.
11752
11753      We only support clearing given the address explicitly 
11754      present in breakpoint table.  Say, we've set breakpoint 
11755      at file:line.  There were several PC values for that file:line,
11756      due to optimization, all in one block.
11757
11758      We've picked one PC value.  If "clear" is issued with another
11759      PC corresponding to the same file:line, the breakpoint won't
11760      be cleared.  We probably can still clear the breakpoint, but 
11761      since the other PC value is never presented to user, user
11762      can only find it by guessing, and it does not seem important
11763      to support that.  */
11764
11765   /* For each line spec given, delete bps which correspond to it.  Do
11766      it in two passes, solely to preserve the current behavior that
11767      from_tty is forced true if we delete more than one
11768      breakpoint.  */
11769
11770   found = NULL;
11771   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11772   for (i = 0; i < sals.nelts; i++)
11773     {
11774       const char *sal_fullname;
11775
11776       /* If exact pc given, clear bpts at that pc.
11777          If line given (pc == 0), clear all bpts on specified line.
11778          If defaulting, clear all bpts on default line
11779          or at default pc.
11780
11781          defaulting    sal.pc != 0    tests to do
11782
11783          0              1             pc
11784          1              1             pc _and_ line
11785          0              0             line
11786          1              0             <can't happen> */
11787
11788       sal = sals.sals[i];
11789       sal_fullname = (sal.symtab == NULL
11790                       ? NULL : symtab_to_fullname (sal.symtab));
11791
11792       /* Find all matching breakpoints and add them to 'found'.  */
11793       ALL_BREAKPOINTS (b)
11794         {
11795           int match = 0;
11796           /* Are we going to delete b?  */
11797           if (b->type != bp_none && !is_watchpoint (b))
11798             {
11799               struct bp_location *loc = b->loc;
11800               for (; loc; loc = loc->next)
11801                 {
11802                   /* If the user specified file:line, don't allow a PC
11803                      match.  This matches historical gdb behavior.  */
11804                   int pc_match = (!sal.explicit_line
11805                                   && sal.pc
11806                                   && (loc->pspace == sal.pspace)
11807                                   && (loc->address == sal.pc)
11808                                   && (!section_is_overlay (loc->section)
11809                                       || loc->section == sal.section));
11810                   int line_match = 0;
11811
11812                   if ((default_match || sal.explicit_line)
11813                       && loc->symtab != NULL
11814                       && sal_fullname != NULL
11815                       && sal.pspace == loc->pspace
11816                       && loc->line_number == sal.line
11817                       && filename_cmp (symtab_to_fullname (loc->symtab),
11818                                        sal_fullname) == 0)
11819                     line_match = 1;
11820
11821                   if (pc_match || line_match)
11822                     {
11823                       match = 1;
11824                       break;
11825                     }
11826                 }
11827             }
11828
11829           if (match)
11830             VEC_safe_push(breakpoint_p, found, b);
11831         }
11832     }
11833
11834   /* Now go thru the 'found' chain and delete them.  */
11835   if (VEC_empty(breakpoint_p, found))
11836     {
11837       if (arg)
11838         error (_("No breakpoint at %s."), arg);
11839       else
11840         error (_("No breakpoint at this line."));
11841     }
11842
11843   /* Remove duplicates from the vec.  */
11844   qsort (VEC_address (breakpoint_p, found),
11845          VEC_length (breakpoint_p, found),
11846          sizeof (breakpoint_p),
11847          compare_breakpoints);
11848   prev = VEC_index (breakpoint_p, found, 0);
11849   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11850     {
11851       if (b == prev)
11852         {
11853           VEC_ordered_remove (breakpoint_p, found, ix);
11854           --ix;
11855         }
11856     }
11857
11858   if (VEC_length(breakpoint_p, found) > 1)
11859     from_tty = 1;       /* Always report if deleted more than one.  */
11860   if (from_tty)
11861     {
11862       if (VEC_length(breakpoint_p, found) == 1)
11863         printf_unfiltered (_("Deleted breakpoint "));
11864       else
11865         printf_unfiltered (_("Deleted breakpoints "));
11866     }
11867
11868   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11869     {
11870       if (from_tty)
11871         printf_unfiltered ("%d ", b->number);
11872       delete_breakpoint (b);
11873     }
11874   if (from_tty)
11875     putchar_unfiltered ('\n');
11876
11877   do_cleanups (cleanups);
11878 }
11879 \f
11880 /* Delete breakpoint in BS if they are `delete' breakpoints and
11881    all breakpoints that are marked for deletion, whether hit or not.
11882    This is called after any breakpoint is hit, or after errors.  */
11883
11884 void
11885 breakpoint_auto_delete (bpstat bs)
11886 {
11887   struct breakpoint *b, *b_tmp;
11888
11889   for (; bs; bs = bs->next)
11890     if (bs->breakpoint_at
11891         && bs->breakpoint_at->disposition == disp_del
11892         && bs->stop)
11893       delete_breakpoint (bs->breakpoint_at);
11894
11895   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11896   {
11897     if (b->disposition == disp_del_at_next_stop)
11898       delete_breakpoint (b);
11899   }
11900 }
11901
11902 /* A comparison function for bp_location AP and BP being interfaced to
11903    qsort.  Sort elements primarily by their ADDRESS (no matter what
11904    does breakpoint_address_is_meaningful say for its OWNER),
11905    secondarily by ordering first bp_permanent OWNERed elements and
11906    terciarily just ensuring the array is sorted stable way despite
11907    qsort being an unstable algorithm.  */
11908
11909 static int
11910 bp_location_compare (const void *ap, const void *bp)
11911 {
11912   struct bp_location *a = *(void **) ap;
11913   struct bp_location *b = *(void **) bp;
11914   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11915   int a_perm = a->owner->enable_state == bp_permanent;
11916   int b_perm = b->owner->enable_state == bp_permanent;
11917
11918   if (a->address != b->address)
11919     return (a->address > b->address) - (a->address < b->address);
11920
11921   /* Sort locations at the same address by their pspace number, keeping
11922      locations of the same inferior (in a multi-inferior environment)
11923      grouped.  */
11924
11925   if (a->pspace->num != b->pspace->num)
11926     return ((a->pspace->num > b->pspace->num)
11927             - (a->pspace->num < b->pspace->num));
11928
11929   /* Sort permanent breakpoints first.  */
11930   if (a_perm != b_perm)
11931     return (a_perm < b_perm) - (a_perm > b_perm);
11932
11933   /* Make the internal GDB representation stable across GDB runs
11934      where A and B memory inside GDB can differ.  Breakpoint locations of
11935      the same type at the same address can be sorted in arbitrary order.  */
11936
11937   if (a->owner->number != b->owner->number)
11938     return ((a->owner->number > b->owner->number)
11939             - (a->owner->number < b->owner->number));
11940
11941   return (a > b) - (a < b);
11942 }
11943
11944 /* Set bp_location_placed_address_before_address_max and
11945    bp_location_shadow_len_after_address_max according to the current
11946    content of the bp_location array.  */
11947
11948 static void
11949 bp_location_target_extensions_update (void)
11950 {
11951   struct bp_location *bl, **blp_tmp;
11952
11953   bp_location_placed_address_before_address_max = 0;
11954   bp_location_shadow_len_after_address_max = 0;
11955
11956   ALL_BP_LOCATIONS (bl, blp_tmp)
11957     {
11958       CORE_ADDR start, end, addr;
11959
11960       if (!bp_location_has_shadow (bl))
11961         continue;
11962
11963       start = bl->target_info.placed_address;
11964       end = start + bl->target_info.shadow_len;
11965
11966       gdb_assert (bl->address >= start);
11967       addr = bl->address - start;
11968       if (addr > bp_location_placed_address_before_address_max)
11969         bp_location_placed_address_before_address_max = addr;
11970
11971       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11972
11973       gdb_assert (bl->address < end);
11974       addr = end - bl->address;
11975       if (addr > bp_location_shadow_len_after_address_max)
11976         bp_location_shadow_len_after_address_max = addr;
11977     }
11978 }
11979
11980 /* Download tracepoint locations if they haven't been.  */
11981
11982 static void
11983 download_tracepoint_locations (void)
11984 {
11985   struct breakpoint *b;
11986   struct cleanup *old_chain;
11987
11988   if (!target_can_download_tracepoint ())
11989     return;
11990
11991   old_chain = save_current_space_and_thread ();
11992
11993   ALL_TRACEPOINTS (b)
11994     {
11995       struct bp_location *bl;
11996       struct tracepoint *t;
11997       int bp_location_downloaded = 0;
11998
11999       if ((b->type == bp_fast_tracepoint
12000            ? !may_insert_fast_tracepoints
12001            : !may_insert_tracepoints))
12002         continue;
12003
12004       for (bl = b->loc; bl; bl = bl->next)
12005         {
12006           /* In tracepoint, locations are _never_ duplicated, so
12007              should_be_inserted is equivalent to
12008              unduplicated_should_be_inserted.  */
12009           if (!should_be_inserted (bl) || bl->inserted)
12010             continue;
12011
12012           switch_to_program_space_and_thread (bl->pspace);
12013
12014           target_download_tracepoint (bl);
12015
12016           bl->inserted = 1;
12017           bp_location_downloaded = 1;
12018         }
12019       t = (struct tracepoint *) b;
12020       t->number_on_target = b->number;
12021       if (bp_location_downloaded)
12022         observer_notify_breakpoint_modified (b);
12023     }
12024
12025   do_cleanups (old_chain);
12026 }
12027
12028 /* Swap the insertion/duplication state between two locations.  */
12029
12030 static void
12031 swap_insertion (struct bp_location *left, struct bp_location *right)
12032 {
12033   const int left_inserted = left->inserted;
12034   const int left_duplicate = left->duplicate;
12035   const int left_needs_update = left->needs_update;
12036   const struct bp_target_info left_target_info = left->target_info;
12037
12038   /* Locations of tracepoints can never be duplicated.  */
12039   if (is_tracepoint (left->owner))
12040     gdb_assert (!left->duplicate);
12041   if (is_tracepoint (right->owner))
12042     gdb_assert (!right->duplicate);
12043
12044   left->inserted = right->inserted;
12045   left->duplicate = right->duplicate;
12046   left->needs_update = right->needs_update;
12047   left->target_info = right->target_info;
12048   right->inserted = left_inserted;
12049   right->duplicate = left_duplicate;
12050   right->needs_update = left_needs_update;
12051   right->target_info = left_target_info;
12052 }
12053
12054 /* Force the re-insertion of the locations at ADDRESS.  This is called
12055    once a new/deleted/modified duplicate location is found and we are evaluating
12056    conditions on the target's side.  Such conditions need to be updated on
12057    the target.  */
12058
12059 static void
12060 force_breakpoint_reinsertion (struct bp_location *bl)
12061 {
12062   struct bp_location **locp = NULL, **loc2p;
12063   struct bp_location *loc;
12064   CORE_ADDR address = 0;
12065   int pspace_num;
12066
12067   address = bl->address;
12068   pspace_num = bl->pspace->num;
12069
12070   /* This is only meaningful if the target is
12071      evaluating conditions and if the user has
12072      opted for condition evaluation on the target's
12073      side.  */
12074   if (gdb_evaluates_breakpoint_condition_p ()
12075       || !target_supports_evaluation_of_breakpoint_conditions ())
12076     return;
12077
12078   /* Flag all breakpoint locations with this address and
12079      the same program space as the location
12080      as "its condition has changed".  We need to
12081      update the conditions on the target's side.  */
12082   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12083     {
12084       loc = *loc2p;
12085
12086       if (!is_breakpoint (loc->owner)
12087           || pspace_num != loc->pspace->num)
12088         continue;
12089
12090       /* Flag the location appropriately.  We use a different state to
12091          let everyone know that we already updated the set of locations
12092          with addr bl->address and program space bl->pspace.  This is so
12093          we don't have to keep calling these functions just to mark locations
12094          that have already been marked.  */
12095       loc->condition_changed = condition_updated;
12096
12097       /* Free the agent expression bytecode as well.  We will compute
12098          it later on.  */
12099       if (loc->cond_bytecode)
12100         {
12101           free_agent_expr (loc->cond_bytecode);
12102           loc->cond_bytecode = NULL;
12103         }
12104     }
12105 }
12106
12107 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12108    into the inferior, only remove already-inserted locations that no
12109    longer should be inserted.  Functions that delete a breakpoint or
12110    breakpoints should pass false, so that deleting a breakpoint
12111    doesn't have the side effect of inserting the locations of other
12112    breakpoints that are marked not-inserted, but should_be_inserted
12113    returns true on them.
12114
12115    This behaviour is useful is situations close to tear-down -- e.g.,
12116    after an exec, while the target still has execution, but breakpoint
12117    shadows of the previous executable image should *NOT* be restored
12118    to the new image; or before detaching, where the target still has
12119    execution and wants to delete breakpoints from GDB's lists, and all
12120    breakpoints had already been removed from the inferior.  */
12121
12122 static void
12123 update_global_location_list (int should_insert)
12124 {
12125   struct breakpoint *b;
12126   struct bp_location **locp, *loc;
12127   struct cleanup *cleanups;
12128   /* Last breakpoint location address that was marked for update.  */
12129   CORE_ADDR last_addr = 0;
12130   /* Last breakpoint location program space that was marked for update.  */
12131   int last_pspace_num = -1;
12132
12133   /* Used in the duplicates detection below.  When iterating over all
12134      bp_locations, points to the first bp_location of a given address.
12135      Breakpoints and watchpoints of different types are never
12136      duplicates of each other.  Keep one pointer for each type of
12137      breakpoint/watchpoint, so we only need to loop over all locations
12138      once.  */
12139   struct bp_location *bp_loc_first;  /* breakpoint */
12140   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12141   struct bp_location *awp_loc_first; /* access watchpoint */
12142   struct bp_location *rwp_loc_first; /* read watchpoint */
12143
12144   /* Saved former bp_location array which we compare against the newly
12145      built bp_location from the current state of ALL_BREAKPOINTS.  */
12146   struct bp_location **old_location, **old_locp;
12147   unsigned old_location_count;
12148
12149   old_location = bp_location;
12150   old_location_count = bp_location_count;
12151   bp_location = NULL;
12152   bp_location_count = 0;
12153   cleanups = make_cleanup (xfree, old_location);
12154
12155   ALL_BREAKPOINTS (b)
12156     for (loc = b->loc; loc; loc = loc->next)
12157       bp_location_count++;
12158
12159   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12160   locp = bp_location;
12161   ALL_BREAKPOINTS (b)
12162     for (loc = b->loc; loc; loc = loc->next)
12163       *locp++ = loc;
12164   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12165          bp_location_compare);
12166
12167   bp_location_target_extensions_update ();
12168
12169   /* Identify bp_location instances that are no longer present in the
12170      new list, and therefore should be freed.  Note that it's not
12171      necessary that those locations should be removed from inferior --
12172      if there's another location at the same address (previously
12173      marked as duplicate), we don't need to remove/insert the
12174      location.
12175      
12176      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12177      and former bp_location array state respectively.  */
12178
12179   locp = bp_location;
12180   for (old_locp = old_location; old_locp < old_location + old_location_count;
12181        old_locp++)
12182     {
12183       struct bp_location *old_loc = *old_locp;
12184       struct bp_location **loc2p;
12185
12186       /* Tells if 'old_loc' is found among the new locations.  If
12187          not, we have to free it.  */
12188       int found_object = 0;
12189       /* Tells if the location should remain inserted in the target.  */
12190       int keep_in_target = 0;
12191       int removed = 0;
12192
12193       /* Skip LOCP entries which will definitely never be needed.
12194          Stop either at or being the one matching OLD_LOC.  */
12195       while (locp < bp_location + bp_location_count
12196              && (*locp)->address < old_loc->address)
12197         locp++;
12198
12199       for (loc2p = locp;
12200            (loc2p < bp_location + bp_location_count
12201             && (*loc2p)->address == old_loc->address);
12202            loc2p++)
12203         {
12204           /* Check if this is a new/duplicated location or a duplicated
12205              location that had its condition modified.  If so, we want to send
12206              its condition to the target if evaluation of conditions is taking
12207              place there.  */
12208           if ((*loc2p)->condition_changed == condition_modified
12209               && (last_addr != old_loc->address
12210                   || last_pspace_num != old_loc->pspace->num))
12211             {
12212               force_breakpoint_reinsertion (*loc2p);
12213               last_pspace_num = old_loc->pspace->num;
12214             }
12215
12216           if (*loc2p == old_loc)
12217             found_object = 1;
12218         }
12219
12220       /* We have already handled this address, update it so that we don't
12221          have to go through updates again.  */
12222       last_addr = old_loc->address;
12223
12224       /* Target-side condition evaluation: Handle deleted locations.  */
12225       if (!found_object)
12226         force_breakpoint_reinsertion (old_loc);
12227
12228       /* If this location is no longer present, and inserted, look if
12229          there's maybe a new location at the same address.  If so,
12230          mark that one inserted, and don't remove this one.  This is
12231          needed so that we don't have a time window where a breakpoint
12232          at certain location is not inserted.  */
12233
12234       if (old_loc->inserted)
12235         {
12236           /* If the location is inserted now, we might have to remove
12237              it.  */
12238
12239           if (found_object && should_be_inserted (old_loc))
12240             {
12241               /* The location is still present in the location list,
12242                  and still should be inserted.  Don't do anything.  */
12243               keep_in_target = 1;
12244             }
12245           else
12246             {
12247               /* This location still exists, but it won't be kept in the
12248                  target since it may have been disabled.  We proceed to
12249                  remove its target-side condition.  */
12250
12251               /* The location is either no longer present, or got
12252                  disabled.  See if there's another location at the
12253                  same address, in which case we don't need to remove
12254                  this one from the target.  */
12255
12256               /* OLD_LOC comes from existing struct breakpoint.  */
12257               if (breakpoint_address_is_meaningful (old_loc->owner))
12258                 {
12259                   for (loc2p = locp;
12260                        (loc2p < bp_location + bp_location_count
12261                         && (*loc2p)->address == old_loc->address);
12262                        loc2p++)
12263                     {
12264                       struct bp_location *loc2 = *loc2p;
12265
12266                       if (breakpoint_locations_match (loc2, old_loc))
12267                         {
12268                           /* Read watchpoint locations are switched to
12269                              access watchpoints, if the former are not
12270                              supported, but the latter are.  */
12271                           if (is_hardware_watchpoint (old_loc->owner))
12272                             {
12273                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12274                               loc2->watchpoint_type = old_loc->watchpoint_type;
12275                             }
12276
12277                           /* loc2 is a duplicated location. We need to check
12278                              if it should be inserted in case it will be
12279                              unduplicated.  */
12280                           if (loc2 != old_loc
12281                               && unduplicated_should_be_inserted (loc2))
12282                             {
12283                               swap_insertion (old_loc, loc2);
12284                               keep_in_target = 1;
12285                               break;
12286                             }
12287                         }
12288                     }
12289                 }
12290             }
12291
12292           if (!keep_in_target)
12293             {
12294               if (remove_breakpoint (old_loc, mark_uninserted))
12295                 {
12296                   /* This is just about all we can do.  We could keep
12297                      this location on the global list, and try to
12298                      remove it next time, but there's no particular
12299                      reason why we will succeed next time.
12300                      
12301                      Note that at this point, old_loc->owner is still
12302                      valid, as delete_breakpoint frees the breakpoint
12303                      only after calling us.  */
12304                   printf_filtered (_("warning: Error removing "
12305                                      "breakpoint %d\n"), 
12306                                    old_loc->owner->number);
12307                 }
12308               removed = 1;
12309             }
12310         }
12311
12312       if (!found_object)
12313         {
12314           if (removed && non_stop
12315               && breakpoint_address_is_meaningful (old_loc->owner)
12316               && !is_hardware_watchpoint (old_loc->owner))
12317             {
12318               /* This location was removed from the target.  In
12319                  non-stop mode, a race condition is possible where
12320                  we've removed a breakpoint, but stop events for that
12321                  breakpoint are already queued and will arrive later.
12322                  We apply an heuristic to be able to distinguish such
12323                  SIGTRAPs from other random SIGTRAPs: we keep this
12324                  breakpoint location for a bit, and will retire it
12325                  after we see some number of events.  The theory here
12326                  is that reporting of events should, "on the average",
12327                  be fair, so after a while we'll see events from all
12328                  threads that have anything of interest, and no longer
12329                  need to keep this breakpoint location around.  We
12330                  don't hold locations forever so to reduce chances of
12331                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12332                  SIGTRAP.
12333
12334                  The heuristic failing can be disastrous on
12335                  decr_pc_after_break targets.
12336
12337                  On decr_pc_after_break targets, like e.g., x86-linux,
12338                  if we fail to recognize a late breakpoint SIGTRAP,
12339                  because events_till_retirement has reached 0 too
12340                  soon, we'll fail to do the PC adjustment, and report
12341                  a random SIGTRAP to the user.  When the user resumes
12342                  the inferior, it will most likely immediately crash
12343                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12344                  corrupted, because of being resumed e.g., in the
12345                  middle of a multi-byte instruction, or skipped a
12346                  one-byte instruction.  This was actually seen happen
12347                  on native x86-linux, and should be less rare on
12348                  targets that do not support new thread events, like
12349                  remote, due to the heuristic depending on
12350                  thread_count.
12351
12352                  Mistaking a random SIGTRAP for a breakpoint trap
12353                  causes similar symptoms (PC adjustment applied when
12354                  it shouldn't), but then again, playing with SIGTRAPs
12355                  behind the debugger's back is asking for trouble.
12356
12357                  Since hardware watchpoint traps are always
12358                  distinguishable from other traps, so we don't need to
12359                  apply keep hardware watchpoint moribund locations
12360                  around.  We simply always ignore hardware watchpoint
12361                  traps we can no longer explain.  */
12362
12363               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12364               old_loc->owner = NULL;
12365
12366               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12367             }
12368           else
12369             {
12370               old_loc->owner = NULL;
12371               decref_bp_location (&old_loc);
12372             }
12373         }
12374     }
12375
12376   /* Rescan breakpoints at the same address and section, marking the
12377      first one as "first" and any others as "duplicates".  This is so
12378      that the bpt instruction is only inserted once.  If we have a
12379      permanent breakpoint at the same place as BPT, make that one the
12380      official one, and the rest as duplicates.  Permanent breakpoints
12381      are sorted first for the same address.
12382
12383      Do the same for hardware watchpoints, but also considering the
12384      watchpoint's type (regular/access/read) and length.  */
12385
12386   bp_loc_first = NULL;
12387   wp_loc_first = NULL;
12388   awp_loc_first = NULL;
12389   rwp_loc_first = NULL;
12390   ALL_BP_LOCATIONS (loc, locp)
12391     {
12392       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12393          non-NULL.  */
12394       struct bp_location **loc_first_p;
12395       b = loc->owner;
12396
12397       if (!unduplicated_should_be_inserted (loc)
12398           || !breakpoint_address_is_meaningful (b)
12399           /* Don't detect duplicate for tracepoint locations because they are
12400            never duplicated.  See the comments in field `duplicate' of
12401            `struct bp_location'.  */
12402           || is_tracepoint (b))
12403         {
12404           /* Clear the condition modification flag.  */
12405           loc->condition_changed = condition_unchanged;
12406           continue;
12407         }
12408
12409       /* Permanent breakpoint should always be inserted.  */
12410       if (b->enable_state == bp_permanent && ! loc->inserted)
12411         internal_error (__FILE__, __LINE__,
12412                         _("allegedly permanent breakpoint is not "
12413                         "actually inserted"));
12414
12415       if (b->type == bp_hardware_watchpoint)
12416         loc_first_p = &wp_loc_first;
12417       else if (b->type == bp_read_watchpoint)
12418         loc_first_p = &rwp_loc_first;
12419       else if (b->type == bp_access_watchpoint)
12420         loc_first_p = &awp_loc_first;
12421       else
12422         loc_first_p = &bp_loc_first;
12423
12424       if (*loc_first_p == NULL
12425           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12426           || !breakpoint_locations_match (loc, *loc_first_p))
12427         {
12428           *loc_first_p = loc;
12429           loc->duplicate = 0;
12430
12431           if (is_breakpoint (loc->owner) && loc->condition_changed)
12432             {
12433               loc->needs_update = 1;
12434               /* Clear the condition modification flag.  */
12435               loc->condition_changed = condition_unchanged;
12436             }
12437           continue;
12438         }
12439
12440
12441       /* This and the above ensure the invariant that the first location
12442          is not duplicated, and is the inserted one.
12443          All following are marked as duplicated, and are not inserted.  */
12444       if (loc->inserted)
12445         swap_insertion (loc, *loc_first_p);
12446       loc->duplicate = 1;
12447
12448       /* Clear the condition modification flag.  */
12449       loc->condition_changed = condition_unchanged;
12450
12451       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12452           && b->enable_state != bp_permanent)
12453         internal_error (__FILE__, __LINE__,
12454                         _("another breakpoint was inserted on top of "
12455                         "a permanent breakpoint"));
12456     }
12457
12458   if (breakpoints_always_inserted_mode ()
12459       && (have_live_inferiors ()
12460           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12461     {
12462       if (should_insert)
12463         insert_breakpoint_locations ();
12464       else
12465         {
12466           /* Though should_insert is false, we may need to update conditions
12467              on the target's side if it is evaluating such conditions.  We
12468              only update conditions for locations that are marked
12469              "needs_update".  */
12470           update_inserted_breakpoint_locations ();
12471         }
12472     }
12473
12474   if (should_insert)
12475     download_tracepoint_locations ();
12476
12477   do_cleanups (cleanups);
12478 }
12479
12480 void
12481 breakpoint_retire_moribund (void)
12482 {
12483   struct bp_location *loc;
12484   int ix;
12485
12486   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12487     if (--(loc->events_till_retirement) == 0)
12488       {
12489         decref_bp_location (&loc);
12490         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12491         --ix;
12492       }
12493 }
12494
12495 static void
12496 update_global_location_list_nothrow (int inserting)
12497 {
12498   volatile struct gdb_exception e;
12499
12500   TRY_CATCH (e, RETURN_MASK_ERROR)
12501     update_global_location_list (inserting);
12502 }
12503
12504 /* Clear BKP from a BPS.  */
12505
12506 static void
12507 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12508 {
12509   bpstat bs;
12510
12511   for (bs = bps; bs; bs = bs->next)
12512     if (bs->breakpoint_at == bpt)
12513       {
12514         bs->breakpoint_at = NULL;
12515         bs->old_val = NULL;
12516         /* bs->commands will be freed later.  */
12517       }
12518 }
12519
12520 /* Callback for iterate_over_threads.  */
12521 static int
12522 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12523 {
12524   struct breakpoint *bpt = data;
12525
12526   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12527   return 0;
12528 }
12529
12530 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12531    callbacks.  */
12532
12533 static void
12534 say_where (struct breakpoint *b)
12535 {
12536   struct value_print_options opts;
12537
12538   get_user_print_options (&opts);
12539
12540   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12541      single string.  */
12542   if (b->loc == NULL)
12543     {
12544       printf_filtered (_(" (%s) pending."), b->addr_string);
12545     }
12546   else
12547     {
12548       if (opts.addressprint || b->loc->symtab == NULL)
12549         {
12550           printf_filtered (" at ");
12551           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12552                           gdb_stdout);
12553         }
12554       if (b->loc->symtab != NULL)
12555         {
12556           /* If there is a single location, we can print the location
12557              more nicely.  */
12558           if (b->loc->next == NULL)
12559             printf_filtered (": file %s, line %d.",
12560                              symtab_to_filename_for_display (b->loc->symtab),
12561                              b->loc->line_number);
12562           else
12563             /* This is not ideal, but each location may have a
12564                different file name, and this at least reflects the
12565                real situation somewhat.  */
12566             printf_filtered (": %s.", b->addr_string);
12567         }
12568
12569       if (b->loc->next)
12570         {
12571           struct bp_location *loc = b->loc;
12572           int n = 0;
12573           for (; loc; loc = loc->next)
12574             ++n;
12575           printf_filtered (" (%d locations)", n);
12576         }
12577     }
12578 }
12579
12580 /* Default bp_location_ops methods.  */
12581
12582 static void
12583 bp_location_dtor (struct bp_location *self)
12584 {
12585   xfree (self->cond);
12586   if (self->cond_bytecode)
12587     free_agent_expr (self->cond_bytecode);
12588   xfree (self->function_name);
12589 }
12590
12591 static const struct bp_location_ops bp_location_ops =
12592 {
12593   bp_location_dtor
12594 };
12595
12596 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12597    inherit from.  */
12598
12599 static void
12600 base_breakpoint_dtor (struct breakpoint *self)
12601 {
12602   decref_counted_command_line (&self->commands);
12603   xfree (self->cond_string);
12604   xfree (self->extra_string);
12605   xfree (self->addr_string);
12606   xfree (self->filter);
12607   xfree (self->addr_string_range_end);
12608 }
12609
12610 static struct bp_location *
12611 base_breakpoint_allocate_location (struct breakpoint *self)
12612 {
12613   struct bp_location *loc;
12614
12615   loc = XNEW (struct bp_location);
12616   init_bp_location (loc, &bp_location_ops, self);
12617   return loc;
12618 }
12619
12620 static void
12621 base_breakpoint_re_set (struct breakpoint *b)
12622 {
12623   /* Nothing to re-set. */
12624 }
12625
12626 #define internal_error_pure_virtual_called() \
12627   gdb_assert_not_reached ("pure virtual function called")
12628
12629 static int
12630 base_breakpoint_insert_location (struct bp_location *bl)
12631 {
12632   internal_error_pure_virtual_called ();
12633 }
12634
12635 static int
12636 base_breakpoint_remove_location (struct bp_location *bl)
12637 {
12638   internal_error_pure_virtual_called ();
12639 }
12640
12641 static int
12642 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12643                                 struct address_space *aspace,
12644                                 CORE_ADDR bp_addr,
12645                                 const struct target_waitstatus *ws)
12646 {
12647   internal_error_pure_virtual_called ();
12648 }
12649
12650 static void
12651 base_breakpoint_check_status (bpstat bs)
12652 {
12653   /* Always stop.   */
12654 }
12655
12656 /* A "works_in_software_mode" breakpoint_ops method that just internal
12657    errors.  */
12658
12659 static int
12660 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12661 {
12662   internal_error_pure_virtual_called ();
12663 }
12664
12665 /* A "resources_needed" breakpoint_ops method that just internal
12666    errors.  */
12667
12668 static int
12669 base_breakpoint_resources_needed (const struct bp_location *bl)
12670 {
12671   internal_error_pure_virtual_called ();
12672 }
12673
12674 static enum print_stop_action
12675 base_breakpoint_print_it (bpstat bs)
12676 {
12677   internal_error_pure_virtual_called ();
12678 }
12679
12680 static void
12681 base_breakpoint_print_one_detail (const struct breakpoint *self,
12682                                   struct ui_out *uiout)
12683 {
12684   /* nothing */
12685 }
12686
12687 static void
12688 base_breakpoint_print_mention (struct breakpoint *b)
12689 {
12690   internal_error_pure_virtual_called ();
12691 }
12692
12693 static void
12694 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12695 {
12696   internal_error_pure_virtual_called ();
12697 }
12698
12699 static void
12700 base_breakpoint_create_sals_from_address (char **arg,
12701                                           struct linespec_result *canonical,
12702                                           enum bptype type_wanted,
12703                                           char *addr_start,
12704                                           char **copy_arg)
12705 {
12706   internal_error_pure_virtual_called ();
12707 }
12708
12709 static void
12710 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12711                                         struct linespec_result *c,
12712                                         struct linespec_sals *lsal,
12713                                         char *cond_string,
12714                                         char *extra_string,
12715                                         enum bptype type_wanted,
12716                                         enum bpdisp disposition,
12717                                         int thread,
12718                                         int task, int ignore_count,
12719                                         const struct breakpoint_ops *o,
12720                                         int from_tty, int enabled,
12721                                         int internal, unsigned flags)
12722 {
12723   internal_error_pure_virtual_called ();
12724 }
12725
12726 static void
12727 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12728                                  struct symtabs_and_lines *sals)
12729 {
12730   internal_error_pure_virtual_called ();
12731 }
12732
12733 /* The default 'explains_signal' method.  */
12734
12735 static enum bpstat_signal_value
12736 base_breakpoint_explains_signal (struct breakpoint *b)
12737 {
12738   return BPSTAT_SIGNAL_HIDE;
12739 }
12740
12741 struct breakpoint_ops base_breakpoint_ops =
12742 {
12743   base_breakpoint_dtor,
12744   base_breakpoint_allocate_location,
12745   base_breakpoint_re_set,
12746   base_breakpoint_insert_location,
12747   base_breakpoint_remove_location,
12748   base_breakpoint_breakpoint_hit,
12749   base_breakpoint_check_status,
12750   base_breakpoint_resources_needed,
12751   base_breakpoint_works_in_software_mode,
12752   base_breakpoint_print_it,
12753   NULL,
12754   base_breakpoint_print_one_detail,
12755   base_breakpoint_print_mention,
12756   base_breakpoint_print_recreate,
12757   base_breakpoint_create_sals_from_address,
12758   base_breakpoint_create_breakpoints_sal,
12759   base_breakpoint_decode_linespec,
12760   base_breakpoint_explains_signal
12761 };
12762
12763 /* Default breakpoint_ops methods.  */
12764
12765 static void
12766 bkpt_re_set (struct breakpoint *b)
12767 {
12768   /* FIXME: is this still reachable?  */
12769   if (b->addr_string == NULL)
12770     {
12771       /* Anything without a string can't be re-set.  */
12772       delete_breakpoint (b);
12773       return;
12774     }
12775
12776   breakpoint_re_set_default (b);
12777 }
12778
12779 static int
12780 bkpt_insert_location (struct bp_location *bl)
12781 {
12782   if (bl->loc_type == bp_loc_hardware_breakpoint)
12783     return target_insert_hw_breakpoint (bl->gdbarch,
12784                                         &bl->target_info);
12785   else
12786     return target_insert_breakpoint (bl->gdbarch,
12787                                      &bl->target_info);
12788 }
12789
12790 static int
12791 bkpt_remove_location (struct bp_location *bl)
12792 {
12793   if (bl->loc_type == bp_loc_hardware_breakpoint)
12794     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12795   else
12796     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12797 }
12798
12799 static int
12800 bkpt_breakpoint_hit (const struct bp_location *bl,
12801                      struct address_space *aspace, CORE_ADDR bp_addr,
12802                      const struct target_waitstatus *ws)
12803 {
12804   if (ws->kind != TARGET_WAITKIND_STOPPED
12805       || ws->value.sig != GDB_SIGNAL_TRAP)
12806     return 0;
12807
12808   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12809                                  aspace, bp_addr))
12810     return 0;
12811
12812   if (overlay_debugging         /* unmapped overlay section */
12813       && section_is_overlay (bl->section)
12814       && !section_is_mapped (bl->section))
12815     return 0;
12816
12817   return 1;
12818 }
12819
12820 static int
12821 bkpt_resources_needed (const struct bp_location *bl)
12822 {
12823   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12824
12825   return 1;
12826 }
12827
12828 static enum print_stop_action
12829 bkpt_print_it (bpstat bs)
12830 {
12831   struct breakpoint *b;
12832   const struct bp_location *bl;
12833   int bp_temp;
12834   struct ui_out *uiout = current_uiout;
12835
12836   gdb_assert (bs->bp_location_at != NULL);
12837
12838   bl = bs->bp_location_at;
12839   b = bs->breakpoint_at;
12840
12841   bp_temp = b->disposition == disp_del;
12842   if (bl->address != bl->requested_address)
12843     breakpoint_adjustment_warning (bl->requested_address,
12844                                    bl->address,
12845                                    b->number, 1);
12846   annotate_breakpoint (b->number);
12847   if (bp_temp)
12848     ui_out_text (uiout, "\nTemporary breakpoint ");
12849   else
12850     ui_out_text (uiout, "\nBreakpoint ");
12851   if (ui_out_is_mi_like_p (uiout))
12852     {
12853       ui_out_field_string (uiout, "reason",
12854                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12855       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12856     }
12857   ui_out_field_int (uiout, "bkptno", b->number);
12858   ui_out_text (uiout, ", ");
12859
12860   return PRINT_SRC_AND_LOC;
12861 }
12862
12863 static void
12864 bkpt_print_mention (struct breakpoint *b)
12865 {
12866   if (ui_out_is_mi_like_p (current_uiout))
12867     return;
12868
12869   switch (b->type)
12870     {
12871     case bp_breakpoint:
12872     case bp_gnu_ifunc_resolver:
12873       if (b->disposition == disp_del)
12874         printf_filtered (_("Temporary breakpoint"));
12875       else
12876         printf_filtered (_("Breakpoint"));
12877       printf_filtered (_(" %d"), b->number);
12878       if (b->type == bp_gnu_ifunc_resolver)
12879         printf_filtered (_(" at gnu-indirect-function resolver"));
12880       break;
12881     case bp_hardware_breakpoint:
12882       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12883       break;
12884     case bp_dprintf:
12885       printf_filtered (_("Dprintf %d"), b->number);
12886       break;
12887     }
12888
12889   say_where (b);
12890 }
12891
12892 static void
12893 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12894 {
12895   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12896     fprintf_unfiltered (fp, "tbreak");
12897   else if (tp->type == bp_breakpoint)
12898     fprintf_unfiltered (fp, "break");
12899   else if (tp->type == bp_hardware_breakpoint
12900            && tp->disposition == disp_del)
12901     fprintf_unfiltered (fp, "thbreak");
12902   else if (tp->type == bp_hardware_breakpoint)
12903     fprintf_unfiltered (fp, "hbreak");
12904   else
12905     internal_error (__FILE__, __LINE__,
12906                     _("unhandled breakpoint type %d"), (int) tp->type);
12907
12908   fprintf_unfiltered (fp, " %s", tp->addr_string);
12909   print_recreate_thread (tp, fp);
12910 }
12911
12912 static void
12913 bkpt_create_sals_from_address (char **arg,
12914                                struct linespec_result *canonical,
12915                                enum bptype type_wanted,
12916                                char *addr_start, char **copy_arg)
12917 {
12918   create_sals_from_address_default (arg, canonical, type_wanted,
12919                                     addr_start, copy_arg);
12920 }
12921
12922 static void
12923 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12924                              struct linespec_result *canonical,
12925                              struct linespec_sals *lsal,
12926                              char *cond_string,
12927                              char *extra_string,
12928                              enum bptype type_wanted,
12929                              enum bpdisp disposition,
12930                              int thread,
12931                              int task, int ignore_count,
12932                              const struct breakpoint_ops *ops,
12933                              int from_tty, int enabled,
12934                              int internal, unsigned flags)
12935 {
12936   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12937                                   cond_string, extra_string,
12938                                   type_wanted,
12939                                   disposition, thread, task,
12940                                   ignore_count, ops, from_tty,
12941                                   enabled, internal, flags);
12942 }
12943
12944 static void
12945 bkpt_decode_linespec (struct breakpoint *b, char **s,
12946                       struct symtabs_and_lines *sals)
12947 {
12948   decode_linespec_default (b, s, sals);
12949 }
12950
12951 /* Virtual table for internal breakpoints.  */
12952
12953 static void
12954 internal_bkpt_re_set (struct breakpoint *b)
12955 {
12956   switch (b->type)
12957     {
12958       /* Delete overlay event and longjmp master breakpoints; they
12959          will be reset later by breakpoint_re_set.  */
12960     case bp_overlay_event:
12961     case bp_longjmp_master:
12962     case bp_std_terminate_master:
12963     case bp_exception_master:
12964       delete_breakpoint (b);
12965       break;
12966
12967       /* This breakpoint is special, it's set up when the inferior
12968          starts and we really don't want to touch it.  */
12969     case bp_shlib_event:
12970
12971       /* Like bp_shlib_event, this breakpoint type is special.  Once
12972          it is set up, we do not want to touch it.  */
12973     case bp_thread_event:
12974       break;
12975     }
12976 }
12977
12978 static void
12979 internal_bkpt_check_status (bpstat bs)
12980 {
12981   if (bs->breakpoint_at->type == bp_shlib_event)
12982     {
12983       /* If requested, stop when the dynamic linker notifies GDB of
12984          events.  This allows the user to get control and place
12985          breakpoints in initializer routines for dynamically loaded
12986          objects (among other things).  */
12987       bs->stop = stop_on_solib_events;
12988       bs->print = stop_on_solib_events;
12989     }
12990   else
12991     bs->stop = 0;
12992 }
12993
12994 static enum print_stop_action
12995 internal_bkpt_print_it (bpstat bs)
12996 {
12997   struct breakpoint *b;
12998
12999   b = bs->breakpoint_at;
13000
13001   switch (b->type)
13002     {
13003     case bp_shlib_event:
13004       /* Did we stop because the user set the stop_on_solib_events
13005          variable?  (If so, we report this as a generic, "Stopped due
13006          to shlib event" message.) */
13007       print_solib_event (0);
13008       break;
13009
13010     case bp_thread_event:
13011       /* Not sure how we will get here.
13012          GDB should not stop for these breakpoints.  */
13013       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13014       break;
13015
13016     case bp_overlay_event:
13017       /* By analogy with the thread event, GDB should not stop for these.  */
13018       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13019       break;
13020
13021     case bp_longjmp_master:
13022       /* These should never be enabled.  */
13023       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13024       break;
13025
13026     case bp_std_terminate_master:
13027       /* These should never be enabled.  */
13028       printf_filtered (_("std::terminate Master Breakpoint: "
13029                          "gdb should not stop!\n"));
13030       break;
13031
13032     case bp_exception_master:
13033       /* These should never be enabled.  */
13034       printf_filtered (_("Exception Master Breakpoint: "
13035                          "gdb should not stop!\n"));
13036       break;
13037     }
13038
13039   return PRINT_NOTHING;
13040 }
13041
13042 static void
13043 internal_bkpt_print_mention (struct breakpoint *b)
13044 {
13045   /* Nothing to mention.  These breakpoints are internal.  */
13046 }
13047
13048 /* Virtual table for momentary breakpoints  */
13049
13050 static void
13051 momentary_bkpt_re_set (struct breakpoint *b)
13052 {
13053   /* Keep temporary breakpoints, which can be encountered when we step
13054      over a dlopen call and solib_add is resetting the breakpoints.
13055      Otherwise these should have been blown away via the cleanup chain
13056      or by breakpoint_init_inferior when we rerun the executable.  */
13057 }
13058
13059 static void
13060 momentary_bkpt_check_status (bpstat bs)
13061 {
13062   /* Nothing.  The point of these breakpoints is causing a stop.  */
13063 }
13064
13065 static enum print_stop_action
13066 momentary_bkpt_print_it (bpstat bs)
13067 {
13068   struct ui_out *uiout = current_uiout;
13069
13070   if (ui_out_is_mi_like_p (uiout))
13071     {
13072       struct breakpoint *b = bs->breakpoint_at;
13073
13074       switch (b->type)
13075         {
13076         case bp_finish:
13077           ui_out_field_string
13078             (uiout, "reason",
13079              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13080           break;
13081
13082         case bp_until:
13083           ui_out_field_string
13084             (uiout, "reason",
13085              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13086           break;
13087         }
13088     }
13089
13090   return PRINT_UNKNOWN;
13091 }
13092
13093 static void
13094 momentary_bkpt_print_mention (struct breakpoint *b)
13095 {
13096   /* Nothing to mention.  These breakpoints are internal.  */
13097 }
13098
13099 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13100
13101    It gets cleared already on the removal of the first one of such placed
13102    breakpoints.  This is OK as they get all removed altogether.  */
13103
13104 static void
13105 longjmp_bkpt_dtor (struct breakpoint *self)
13106 {
13107   struct thread_info *tp = find_thread_id (self->thread);
13108
13109   if (tp)
13110     tp->initiating_frame = null_frame_id;
13111
13112   momentary_breakpoint_ops.dtor (self);
13113 }
13114
13115 /* Specific methods for probe breakpoints.  */
13116
13117 static int
13118 bkpt_probe_insert_location (struct bp_location *bl)
13119 {
13120   int v = bkpt_insert_location (bl);
13121
13122   if (v == 0)
13123     {
13124       /* The insertion was successful, now let's set the probe's semaphore
13125          if needed.  */
13126       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13127     }
13128
13129   return v;
13130 }
13131
13132 static int
13133 bkpt_probe_remove_location (struct bp_location *bl)
13134 {
13135   /* Let's clear the semaphore before removing the location.  */
13136   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13137
13138   return bkpt_remove_location (bl);
13139 }
13140
13141 static void
13142 bkpt_probe_create_sals_from_address (char **arg,
13143                                      struct linespec_result *canonical,
13144                                      enum bptype type_wanted,
13145                                      char *addr_start, char **copy_arg)
13146 {
13147   struct linespec_sals lsal;
13148
13149   lsal.sals = parse_probes (arg, canonical);
13150
13151   *copy_arg = xstrdup (canonical->addr_string);
13152   lsal.canonical = xstrdup (*copy_arg);
13153
13154   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13155 }
13156
13157 static void
13158 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13159                             struct symtabs_and_lines *sals)
13160 {
13161   *sals = parse_probes (s, NULL);
13162   if (!sals->sals)
13163     error (_("probe not found"));
13164 }
13165
13166 /* The breakpoint_ops structure to be used in tracepoints.  */
13167
13168 static void
13169 tracepoint_re_set (struct breakpoint *b)
13170 {
13171   breakpoint_re_set_default (b);
13172 }
13173
13174 static int
13175 tracepoint_breakpoint_hit (const struct bp_location *bl,
13176                            struct address_space *aspace, CORE_ADDR bp_addr,
13177                            const struct target_waitstatus *ws)
13178 {
13179   /* By definition, the inferior does not report stops at
13180      tracepoints.  */
13181   return 0;
13182 }
13183
13184 static void
13185 tracepoint_print_one_detail (const struct breakpoint *self,
13186                              struct ui_out *uiout)
13187 {
13188   struct tracepoint *tp = (struct tracepoint *) self;
13189   if (tp->static_trace_marker_id)
13190     {
13191       gdb_assert (self->type == bp_static_tracepoint);
13192
13193       ui_out_text (uiout, "\tmarker id is ");
13194       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13195                            tp->static_trace_marker_id);
13196       ui_out_text (uiout, "\n");
13197     }
13198 }
13199
13200 static void
13201 tracepoint_print_mention (struct breakpoint *b)
13202 {
13203   if (ui_out_is_mi_like_p (current_uiout))
13204     return;
13205
13206   switch (b->type)
13207     {
13208     case bp_tracepoint:
13209       printf_filtered (_("Tracepoint"));
13210       printf_filtered (_(" %d"), b->number);
13211       break;
13212     case bp_fast_tracepoint:
13213       printf_filtered (_("Fast tracepoint"));
13214       printf_filtered (_(" %d"), b->number);
13215       break;
13216     case bp_static_tracepoint:
13217       printf_filtered (_("Static tracepoint"));
13218       printf_filtered (_(" %d"), b->number);
13219       break;
13220     default:
13221       internal_error (__FILE__, __LINE__,
13222                       _("unhandled tracepoint type %d"), (int) b->type);
13223     }
13224
13225   say_where (b);
13226 }
13227
13228 static void
13229 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13230 {
13231   struct tracepoint *tp = (struct tracepoint *) self;
13232
13233   if (self->type == bp_fast_tracepoint)
13234     fprintf_unfiltered (fp, "ftrace");
13235   if (self->type == bp_static_tracepoint)
13236     fprintf_unfiltered (fp, "strace");
13237   else if (self->type == bp_tracepoint)
13238     fprintf_unfiltered (fp, "trace");
13239   else
13240     internal_error (__FILE__, __LINE__,
13241                     _("unhandled tracepoint type %d"), (int) self->type);
13242
13243   fprintf_unfiltered (fp, " %s", self->addr_string);
13244   print_recreate_thread (self, fp);
13245
13246   if (tp->pass_count)
13247     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13248 }
13249
13250 static void
13251 tracepoint_create_sals_from_address (char **arg,
13252                                      struct linespec_result *canonical,
13253                                      enum bptype type_wanted,
13254                                      char *addr_start, char **copy_arg)
13255 {
13256   create_sals_from_address_default (arg, canonical, type_wanted,
13257                                     addr_start, copy_arg);
13258 }
13259
13260 static void
13261 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13262                                    struct linespec_result *canonical,
13263                                    struct linespec_sals *lsal,
13264                                    char *cond_string,
13265                                    char *extra_string,
13266                                    enum bptype type_wanted,
13267                                    enum bpdisp disposition,
13268                                    int thread,
13269                                    int task, int ignore_count,
13270                                    const struct breakpoint_ops *ops,
13271                                    int from_tty, int enabled,
13272                                    int internal, unsigned flags)
13273 {
13274   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13275                                   cond_string, extra_string,
13276                                   type_wanted,
13277                                   disposition, thread, task,
13278                                   ignore_count, ops, from_tty,
13279                                   enabled, internal, flags);
13280 }
13281
13282 static void
13283 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13284                             struct symtabs_and_lines *sals)
13285 {
13286   decode_linespec_default (b, s, sals);
13287 }
13288
13289 struct breakpoint_ops tracepoint_breakpoint_ops;
13290
13291 /* The breakpoint_ops structure to be use on tracepoints placed in a
13292    static probe.  */
13293
13294 static void
13295 tracepoint_probe_create_sals_from_address (char **arg,
13296                                            struct linespec_result *canonical,
13297                                            enum bptype type_wanted,
13298                                            char *addr_start, char **copy_arg)
13299 {
13300   /* We use the same method for breakpoint on probes.  */
13301   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13302                                        addr_start, copy_arg);
13303 }
13304
13305 static void
13306 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13307                                   struct symtabs_and_lines *sals)
13308 {
13309   /* We use the same method for breakpoint on probes.  */
13310   bkpt_probe_decode_linespec (b, s, sals);
13311 }
13312
13313 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13314
13315 /* Dprintf breakpoint_ops methods.  */
13316
13317 static void
13318 dprintf_re_set (struct breakpoint *b)
13319 {
13320   breakpoint_re_set_default (b);
13321
13322   /* This breakpoint could have been pending, and be resolved now, and
13323      if so, we should now have the extra string.  If we don't, the
13324      dprintf was malformed when created, but we couldn't tell because
13325      we can't extract the extra string until the location is
13326      resolved.  */
13327   if (b->loc != NULL && b->extra_string == NULL)
13328     error (_("Format string required"));
13329
13330   /* 1 - connect to target 1, that can run breakpoint commands.
13331      2 - create a dprintf, which resolves fine.
13332      3 - disconnect from target 1
13333      4 - connect to target 2, that can NOT run breakpoint commands.
13334
13335      After steps #3/#4, you'll want the dprintf command list to
13336      be updated, because target 1 and 2 may well return different
13337      answers for target_can_run_breakpoint_commands().
13338      Given absence of finer grained resetting, we get to do
13339      it all the time.  */
13340   if (b->extra_string != NULL)
13341     update_dprintf_command_list (b);
13342 }
13343
13344 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13345
13346 static void
13347 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13348 {
13349   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13350                       tp->extra_string);
13351   print_recreate_thread (tp, fp);
13352 }
13353
13354 /* The breakpoint_ops structure to be used on static tracepoints with
13355    markers (`-m').  */
13356
13357 static void
13358 strace_marker_create_sals_from_address (char **arg,
13359                                         struct linespec_result *canonical,
13360                                         enum bptype type_wanted,
13361                                         char *addr_start, char **copy_arg)
13362 {
13363   struct linespec_sals lsal;
13364
13365   lsal.sals = decode_static_tracepoint_spec (arg);
13366
13367   *copy_arg = savestring (addr_start, *arg - addr_start);
13368
13369   canonical->addr_string = xstrdup (*copy_arg);
13370   lsal.canonical = xstrdup (*copy_arg);
13371   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13372 }
13373
13374 static void
13375 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13376                                       struct linespec_result *canonical,
13377                                       struct linespec_sals *lsal,
13378                                       char *cond_string,
13379                                       char *extra_string,
13380                                       enum bptype type_wanted,
13381                                       enum bpdisp disposition,
13382                                       int thread,
13383                                       int task, int ignore_count,
13384                                       const struct breakpoint_ops *ops,
13385                                       int from_tty, int enabled,
13386                                       int internal, unsigned flags)
13387 {
13388   int i;
13389
13390   /* If the user is creating a static tracepoint by marker id
13391      (strace -m MARKER_ID), then store the sals index, so that
13392      breakpoint_re_set can try to match up which of the newly
13393      found markers corresponds to this one, and, don't try to
13394      expand multiple locations for each sal, given than SALS
13395      already should contain all sals for MARKER_ID.  */
13396
13397   for (i = 0; i < lsal->sals.nelts; ++i)
13398     {
13399       struct symtabs_and_lines expanded;
13400       struct tracepoint *tp;
13401       struct cleanup *old_chain;
13402       char *addr_string;
13403
13404       expanded.nelts = 1;
13405       expanded.sals = &lsal->sals.sals[i];
13406
13407       addr_string = xstrdup (canonical->addr_string);
13408       old_chain = make_cleanup (xfree, addr_string);
13409
13410       tp = XCNEW (struct tracepoint);
13411       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13412                            addr_string, NULL,
13413                            cond_string, extra_string,
13414                            type_wanted, disposition,
13415                            thread, task, ignore_count, ops,
13416                            from_tty, enabled, internal, flags,
13417                            canonical->special_display);
13418       /* Given that its possible to have multiple markers with
13419          the same string id, if the user is creating a static
13420          tracepoint by marker id ("strace -m MARKER_ID"), then
13421          store the sals index, so that breakpoint_re_set can
13422          try to match up which of the newly found markers
13423          corresponds to this one  */
13424       tp->static_trace_marker_id_idx = i;
13425
13426       install_breakpoint (internal, &tp->base, 0);
13427
13428       discard_cleanups (old_chain);
13429     }
13430 }
13431
13432 static void
13433 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13434                                struct symtabs_and_lines *sals)
13435 {
13436   struct tracepoint *tp = (struct tracepoint *) b;
13437
13438   *sals = decode_static_tracepoint_spec (s);
13439   if (sals->nelts > tp->static_trace_marker_id_idx)
13440     {
13441       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13442       sals->nelts = 1;
13443     }
13444   else
13445     error (_("marker %s not found"), tp->static_trace_marker_id);
13446 }
13447
13448 static struct breakpoint_ops strace_marker_breakpoint_ops;
13449
13450 static int
13451 strace_marker_p (struct breakpoint *b)
13452 {
13453   return b->ops == &strace_marker_breakpoint_ops;
13454 }
13455
13456 /* Delete a breakpoint and clean up all traces of it in the data
13457    structures.  */
13458
13459 void
13460 delete_breakpoint (struct breakpoint *bpt)
13461 {
13462   struct breakpoint *b;
13463
13464   gdb_assert (bpt != NULL);
13465
13466   /* Has this bp already been deleted?  This can happen because
13467      multiple lists can hold pointers to bp's.  bpstat lists are
13468      especial culprits.
13469
13470      One example of this happening is a watchpoint's scope bp.  When
13471      the scope bp triggers, we notice that the watchpoint is out of
13472      scope, and delete it.  We also delete its scope bp.  But the
13473      scope bp is marked "auto-deleting", and is already on a bpstat.
13474      That bpstat is then checked for auto-deleting bp's, which are
13475      deleted.
13476
13477      A real solution to this problem might involve reference counts in
13478      bp's, and/or giving them pointers back to their referencing
13479      bpstat's, and teaching delete_breakpoint to only free a bp's
13480      storage when no more references were extent.  A cheaper bandaid
13481      was chosen.  */
13482   if (bpt->type == bp_none)
13483     return;
13484
13485   /* At least avoid this stale reference until the reference counting
13486      of breakpoints gets resolved.  */
13487   if (bpt->related_breakpoint != bpt)
13488     {
13489       struct breakpoint *related;
13490       struct watchpoint *w;
13491
13492       if (bpt->type == bp_watchpoint_scope)
13493         w = (struct watchpoint *) bpt->related_breakpoint;
13494       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13495         w = (struct watchpoint *) bpt;
13496       else
13497         w = NULL;
13498       if (w != NULL)
13499         watchpoint_del_at_next_stop (w);
13500
13501       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13502       for (related = bpt; related->related_breakpoint != bpt;
13503            related = related->related_breakpoint);
13504       related->related_breakpoint = bpt->related_breakpoint;
13505       bpt->related_breakpoint = bpt;
13506     }
13507
13508   /* watch_command_1 creates a watchpoint but only sets its number if
13509      update_watchpoint succeeds in creating its bp_locations.  If there's
13510      a problem in that process, we'll be asked to delete the half-created
13511      watchpoint.  In that case, don't announce the deletion.  */
13512   if (bpt->number)
13513     observer_notify_breakpoint_deleted (bpt);
13514
13515   if (breakpoint_chain == bpt)
13516     breakpoint_chain = bpt->next;
13517
13518   ALL_BREAKPOINTS (b)
13519     if (b->next == bpt)
13520     {
13521       b->next = bpt->next;
13522       break;
13523     }
13524
13525   /* Be sure no bpstat's are pointing at the breakpoint after it's
13526      been freed.  */
13527   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13528      in all threads for now.  Note that we cannot just remove bpstats
13529      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13530      commands are associated with the bpstat; if we remove it here,
13531      then the later call to bpstat_do_actions (&stop_bpstat); in
13532      event-top.c won't do anything, and temporary breakpoints with
13533      commands won't work.  */
13534
13535   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13536
13537   /* Now that breakpoint is removed from breakpoint list, update the
13538      global location list.  This will remove locations that used to
13539      belong to this breakpoint.  Do this before freeing the breakpoint
13540      itself, since remove_breakpoint looks at location's owner.  It
13541      might be better design to have location completely
13542      self-contained, but it's not the case now.  */
13543   update_global_location_list (0);
13544
13545   bpt->ops->dtor (bpt);
13546   /* On the chance that someone will soon try again to delete this
13547      same bp, we mark it as deleted before freeing its storage.  */
13548   bpt->type = bp_none;
13549   xfree (bpt);
13550 }
13551
13552 static void
13553 do_delete_breakpoint_cleanup (void *b)
13554 {
13555   delete_breakpoint (b);
13556 }
13557
13558 struct cleanup *
13559 make_cleanup_delete_breakpoint (struct breakpoint *b)
13560 {
13561   return make_cleanup (do_delete_breakpoint_cleanup, b);
13562 }
13563
13564 /* Iterator function to call a user-provided callback function once
13565    for each of B and its related breakpoints.  */
13566
13567 static void
13568 iterate_over_related_breakpoints (struct breakpoint *b,
13569                                   void (*function) (struct breakpoint *,
13570                                                     void *),
13571                                   void *data)
13572 {
13573   struct breakpoint *related;
13574
13575   related = b;
13576   do
13577     {
13578       struct breakpoint *next;
13579
13580       /* FUNCTION may delete RELATED.  */
13581       next = related->related_breakpoint;
13582
13583       if (next == related)
13584         {
13585           /* RELATED is the last ring entry.  */
13586           function (related, data);
13587
13588           /* FUNCTION may have deleted it, so we'd never reach back to
13589              B.  There's nothing left to do anyway, so just break
13590              out.  */
13591           break;
13592         }
13593       else
13594         function (related, data);
13595
13596       related = next;
13597     }
13598   while (related != b);
13599 }
13600
13601 static void
13602 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13603 {
13604   delete_breakpoint (b);
13605 }
13606
13607 /* A callback for map_breakpoint_numbers that calls
13608    delete_breakpoint.  */
13609
13610 static void
13611 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13612 {
13613   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13614 }
13615
13616 void
13617 delete_command (char *arg, int from_tty)
13618 {
13619   struct breakpoint *b, *b_tmp;
13620
13621   dont_repeat ();
13622
13623   if (arg == 0)
13624     {
13625       int breaks_to_delete = 0;
13626
13627       /* Delete all breakpoints if no argument.  Do not delete
13628          internal breakpoints, these have to be deleted with an
13629          explicit breakpoint number argument.  */
13630       ALL_BREAKPOINTS (b)
13631         if (user_breakpoint_p (b))
13632           {
13633             breaks_to_delete = 1;
13634             break;
13635           }
13636
13637       /* Ask user only if there are some breakpoints to delete.  */
13638       if (!from_tty
13639           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13640         {
13641           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13642             if (user_breakpoint_p (b))
13643               delete_breakpoint (b);
13644         }
13645     }
13646   else
13647     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13648 }
13649
13650 static int
13651 all_locations_are_pending (struct bp_location *loc)
13652 {
13653   for (; loc; loc = loc->next)
13654     if (!loc->shlib_disabled
13655         && !loc->pspace->executing_startup)
13656       return 0;
13657   return 1;
13658 }
13659
13660 /* Subroutine of update_breakpoint_locations to simplify it.
13661    Return non-zero if multiple fns in list LOC have the same name.
13662    Null names are ignored.  */
13663
13664 static int
13665 ambiguous_names_p (struct bp_location *loc)
13666 {
13667   struct bp_location *l;
13668   htab_t htab = htab_create_alloc (13, htab_hash_string,
13669                                    (int (*) (const void *, 
13670                                              const void *)) streq,
13671                                    NULL, xcalloc, xfree);
13672
13673   for (l = loc; l != NULL; l = l->next)
13674     {
13675       const char **slot;
13676       const char *name = l->function_name;
13677
13678       /* Allow for some names to be NULL, ignore them.  */
13679       if (name == NULL)
13680         continue;
13681
13682       slot = (const char **) htab_find_slot (htab, (const void *) name,
13683                                              INSERT);
13684       /* NOTE: We can assume slot != NULL here because xcalloc never
13685          returns NULL.  */
13686       if (*slot != NULL)
13687         {
13688           htab_delete (htab);
13689           return 1;
13690         }
13691       *slot = name;
13692     }
13693
13694   htab_delete (htab);
13695   return 0;
13696 }
13697
13698 /* When symbols change, it probably means the sources changed as well,
13699    and it might mean the static tracepoint markers are no longer at
13700    the same address or line numbers they used to be at last we
13701    checked.  Losing your static tracepoints whenever you rebuild is
13702    undesirable.  This function tries to resync/rematch gdb static
13703    tracepoints with the markers on the target, for static tracepoints
13704    that have not been set by marker id.  Static tracepoint that have
13705    been set by marker id are reset by marker id in breakpoint_re_set.
13706    The heuristic is:
13707
13708    1) For a tracepoint set at a specific address, look for a marker at
13709    the old PC.  If one is found there, assume to be the same marker.
13710    If the name / string id of the marker found is different from the
13711    previous known name, assume that means the user renamed the marker
13712    in the sources, and output a warning.
13713
13714    2) For a tracepoint set at a given line number, look for a marker
13715    at the new address of the old line number.  If one is found there,
13716    assume to be the same marker.  If the name / string id of the
13717    marker found is different from the previous known name, assume that
13718    means the user renamed the marker in the sources, and output a
13719    warning.
13720
13721    3) If a marker is no longer found at the same address or line, it
13722    may mean the marker no longer exists.  But it may also just mean
13723    the code changed a bit.  Maybe the user added a few lines of code
13724    that made the marker move up or down (in line number terms).  Ask
13725    the target for info about the marker with the string id as we knew
13726    it.  If found, update line number and address in the matching
13727    static tracepoint.  This will get confused if there's more than one
13728    marker with the same ID (possible in UST, although unadvised
13729    precisely because it confuses tools).  */
13730
13731 static struct symtab_and_line
13732 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13733 {
13734   struct tracepoint *tp = (struct tracepoint *) b;
13735   struct static_tracepoint_marker marker;
13736   CORE_ADDR pc;
13737
13738   pc = sal.pc;
13739   if (sal.line)
13740     find_line_pc (sal.symtab, sal.line, &pc);
13741
13742   if (target_static_tracepoint_marker_at (pc, &marker))
13743     {
13744       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13745         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13746                  b->number,
13747                  tp->static_trace_marker_id, marker.str_id);
13748
13749       xfree (tp->static_trace_marker_id);
13750       tp->static_trace_marker_id = xstrdup (marker.str_id);
13751       release_static_tracepoint_marker (&marker);
13752
13753       return sal;
13754     }
13755
13756   /* Old marker wasn't found on target at lineno.  Try looking it up
13757      by string ID.  */
13758   if (!sal.explicit_pc
13759       && sal.line != 0
13760       && sal.symtab != NULL
13761       && tp->static_trace_marker_id != NULL)
13762     {
13763       VEC(static_tracepoint_marker_p) *markers;
13764
13765       markers
13766         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13767
13768       if (!VEC_empty(static_tracepoint_marker_p, markers))
13769         {
13770           struct symtab_and_line sal2;
13771           struct symbol *sym;
13772           struct static_tracepoint_marker *tpmarker;
13773           struct ui_out *uiout = current_uiout;
13774
13775           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13776
13777           xfree (tp->static_trace_marker_id);
13778           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13779
13780           warning (_("marker for static tracepoint %d (%s) not "
13781                      "found at previous line number"),
13782                    b->number, tp->static_trace_marker_id);
13783
13784           init_sal (&sal2);
13785
13786           sal2.pc = tpmarker->address;
13787
13788           sal2 = find_pc_line (tpmarker->address, 0);
13789           sym = find_pc_sect_function (tpmarker->address, NULL);
13790           ui_out_text (uiout, "Now in ");
13791           if (sym)
13792             {
13793               ui_out_field_string (uiout, "func",
13794                                    SYMBOL_PRINT_NAME (sym));
13795               ui_out_text (uiout, " at ");
13796             }
13797           ui_out_field_string (uiout, "file",
13798                                symtab_to_filename_for_display (sal2.symtab));
13799           ui_out_text (uiout, ":");
13800
13801           if (ui_out_is_mi_like_p (uiout))
13802             {
13803               const char *fullname = symtab_to_fullname (sal2.symtab);
13804
13805               ui_out_field_string (uiout, "fullname", fullname);
13806             }
13807
13808           ui_out_field_int (uiout, "line", sal2.line);
13809           ui_out_text (uiout, "\n");
13810
13811           b->loc->line_number = sal2.line;
13812           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13813
13814           xfree (b->addr_string);
13815           b->addr_string = xstrprintf ("%s:%d",
13816                                    symtab_to_filename_for_display (sal2.symtab),
13817                                        b->loc->line_number);
13818
13819           /* Might be nice to check if function changed, and warn if
13820              so.  */
13821
13822           release_static_tracepoint_marker (tpmarker);
13823         }
13824     }
13825   return sal;
13826 }
13827
13828 /* Returns 1 iff locations A and B are sufficiently same that
13829    we don't need to report breakpoint as changed.  */
13830
13831 static int
13832 locations_are_equal (struct bp_location *a, struct bp_location *b)
13833 {
13834   while (a && b)
13835     {
13836       if (a->address != b->address)
13837         return 0;
13838
13839       if (a->shlib_disabled != b->shlib_disabled)
13840         return 0;
13841
13842       if (a->enabled != b->enabled)
13843         return 0;
13844
13845       a = a->next;
13846       b = b->next;
13847     }
13848
13849   if ((a == NULL) != (b == NULL))
13850     return 0;
13851
13852   return 1;
13853 }
13854
13855 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13856    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13857    a ranged breakpoint.  */
13858
13859 void
13860 update_breakpoint_locations (struct breakpoint *b,
13861                              struct symtabs_and_lines sals,
13862                              struct symtabs_and_lines sals_end)
13863 {
13864   int i;
13865   struct bp_location *existing_locations = b->loc;
13866
13867   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13868     {
13869       /* Ranged breakpoints have only one start location and one end
13870          location.  */
13871       b->enable_state = bp_disabled;
13872       update_global_location_list (1);
13873       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13874                            "multiple locations found\n"),
13875                          b->number);
13876       return;
13877     }
13878
13879   /* If there's no new locations, and all existing locations are
13880      pending, don't do anything.  This optimizes the common case where
13881      all locations are in the same shared library, that was unloaded.
13882      We'd like to retain the location, so that when the library is
13883      loaded again, we don't loose the enabled/disabled status of the
13884      individual locations.  */
13885   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13886     return;
13887
13888   b->loc = NULL;
13889
13890   for (i = 0; i < sals.nelts; ++i)
13891     {
13892       struct bp_location *new_loc;
13893
13894       switch_to_program_space_and_thread (sals.sals[i].pspace);
13895
13896       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13897
13898       /* Reparse conditions, they might contain references to the
13899          old symtab.  */
13900       if (b->cond_string != NULL)
13901         {
13902           const char *s;
13903           volatile struct gdb_exception e;
13904
13905           s = b->cond_string;
13906           TRY_CATCH (e, RETURN_MASK_ERROR)
13907             {
13908               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13909                                            block_for_pc (sals.sals[i].pc), 
13910                                            0);
13911             }
13912           if (e.reason < 0)
13913             {
13914               warning (_("failed to reevaluate condition "
13915                          "for breakpoint %d: %s"), 
13916                        b->number, e.message);
13917               new_loc->enabled = 0;
13918             }
13919         }
13920
13921       if (sals_end.nelts)
13922         {
13923           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13924
13925           new_loc->length = end - sals.sals[0].pc + 1;
13926         }
13927     }
13928
13929   /* Update locations of permanent breakpoints.  */
13930   if (b->enable_state == bp_permanent)
13931     make_breakpoint_permanent (b);
13932
13933   /* If possible, carry over 'disable' status from existing
13934      breakpoints.  */
13935   {
13936     struct bp_location *e = existing_locations;
13937     /* If there are multiple breakpoints with the same function name,
13938        e.g. for inline functions, comparing function names won't work.
13939        Instead compare pc addresses; this is just a heuristic as things
13940        may have moved, but in practice it gives the correct answer
13941        often enough until a better solution is found.  */
13942     int have_ambiguous_names = ambiguous_names_p (b->loc);
13943
13944     for (; e; e = e->next)
13945       {
13946         if (!e->enabled && e->function_name)
13947           {
13948             struct bp_location *l = b->loc;
13949             if (have_ambiguous_names)
13950               {
13951                 for (; l; l = l->next)
13952                   if (breakpoint_locations_match (e, l))
13953                     {
13954                       l->enabled = 0;
13955                       break;
13956                     }
13957               }
13958             else
13959               {
13960                 for (; l; l = l->next)
13961                   if (l->function_name
13962                       && strcmp (e->function_name, l->function_name) == 0)
13963                     {
13964                       l->enabled = 0;
13965                       break;
13966                     }
13967               }
13968           }
13969       }
13970   }
13971
13972   if (!locations_are_equal (existing_locations, b->loc))
13973     observer_notify_breakpoint_modified (b);
13974
13975   update_global_location_list (1);
13976 }
13977
13978 /* Find the SaL locations corresponding to the given ADDR_STRING.
13979    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13980
13981 static struct symtabs_and_lines
13982 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13983 {
13984   char *s;
13985   struct symtabs_and_lines sals = {0};
13986   volatile struct gdb_exception e;
13987
13988   gdb_assert (b->ops != NULL);
13989   s = addr_string;
13990
13991   TRY_CATCH (e, RETURN_MASK_ERROR)
13992     {
13993       b->ops->decode_linespec (b, &s, &sals);
13994     }
13995   if (e.reason < 0)
13996     {
13997       int not_found_and_ok = 0;
13998       /* For pending breakpoints, it's expected that parsing will
13999          fail until the right shared library is loaded.  User has
14000          already told to create pending breakpoints and don't need
14001          extra messages.  If breakpoint is in bp_shlib_disabled
14002          state, then user already saw the message about that
14003          breakpoint being disabled, and don't want to see more
14004          errors.  */
14005       if (e.error == NOT_FOUND_ERROR
14006           && (b->condition_not_parsed 
14007               || (b->loc && b->loc->shlib_disabled)
14008               || (b->loc && b->loc->pspace->executing_startup)
14009               || b->enable_state == bp_disabled))
14010         not_found_and_ok = 1;
14011
14012       if (!not_found_and_ok)
14013         {
14014           /* We surely don't want to warn about the same breakpoint
14015              10 times.  One solution, implemented here, is disable
14016              the breakpoint on error.  Another solution would be to
14017              have separate 'warning emitted' flag.  Since this
14018              happens only when a binary has changed, I don't know
14019              which approach is better.  */
14020           b->enable_state = bp_disabled;
14021           throw_exception (e);
14022         }
14023     }
14024
14025   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14026     {
14027       int i;
14028
14029       for (i = 0; i < sals.nelts; ++i)
14030         resolve_sal_pc (&sals.sals[i]);
14031       if (b->condition_not_parsed && s && s[0])
14032         {
14033           char *cond_string, *extra_string;
14034           int thread, task;
14035
14036           find_condition_and_thread (s, sals.sals[0].pc,
14037                                      &cond_string, &thread, &task,
14038                                      &extra_string);
14039           if (cond_string)
14040             b->cond_string = cond_string;
14041           b->thread = thread;
14042           b->task = task;
14043           if (extra_string)
14044             b->extra_string = extra_string;
14045           b->condition_not_parsed = 0;
14046         }
14047
14048       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14049         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14050
14051       *found = 1;
14052     }
14053   else
14054     *found = 0;
14055
14056   return sals;
14057 }
14058
14059 /* The default re_set method, for typical hardware or software
14060    breakpoints.  Reevaluate the breakpoint and recreate its
14061    locations.  */
14062
14063 static void
14064 breakpoint_re_set_default (struct breakpoint *b)
14065 {
14066   int found;
14067   struct symtabs_and_lines sals, sals_end;
14068   struct symtabs_and_lines expanded = {0};
14069   struct symtabs_and_lines expanded_end = {0};
14070
14071   sals = addr_string_to_sals (b, b->addr_string, &found);
14072   if (found)
14073     {
14074       make_cleanup (xfree, sals.sals);
14075       expanded = sals;
14076     }
14077
14078   if (b->addr_string_range_end)
14079     {
14080       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14081       if (found)
14082         {
14083           make_cleanup (xfree, sals_end.sals);
14084           expanded_end = sals_end;
14085         }
14086     }
14087
14088   update_breakpoint_locations (b, expanded, expanded_end);
14089 }
14090
14091 /* Default method for creating SALs from an address string.  It basically
14092    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14093
14094 static void
14095 create_sals_from_address_default (char **arg,
14096                                   struct linespec_result *canonical,
14097                                   enum bptype type_wanted,
14098                                   char *addr_start, char **copy_arg)
14099 {
14100   parse_breakpoint_sals (arg, canonical);
14101 }
14102
14103 /* Call create_breakpoints_sal for the given arguments.  This is the default
14104    function for the `create_breakpoints_sal' method of
14105    breakpoint_ops.  */
14106
14107 static void
14108 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14109                                 struct linespec_result *canonical,
14110                                 struct linespec_sals *lsal,
14111                                 char *cond_string,
14112                                 char *extra_string,
14113                                 enum bptype type_wanted,
14114                                 enum bpdisp disposition,
14115                                 int thread,
14116                                 int task, int ignore_count,
14117                                 const struct breakpoint_ops *ops,
14118                                 int from_tty, int enabled,
14119                                 int internal, unsigned flags)
14120 {
14121   create_breakpoints_sal (gdbarch, canonical, cond_string,
14122                           extra_string,
14123                           type_wanted, disposition,
14124                           thread, task, ignore_count, ops, from_tty,
14125                           enabled, internal, flags);
14126 }
14127
14128 /* Decode the line represented by S by calling decode_line_full.  This is the
14129    default function for the `decode_linespec' method of breakpoint_ops.  */
14130
14131 static void
14132 decode_linespec_default (struct breakpoint *b, char **s,
14133                          struct symtabs_and_lines *sals)
14134 {
14135   struct linespec_result canonical;
14136
14137   init_linespec_result (&canonical);
14138   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14139                     (struct symtab *) NULL, 0,
14140                     &canonical, multiple_symbols_all,
14141                     b->filter);
14142
14143   /* We should get 0 or 1 resulting SALs.  */
14144   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14145
14146   if (VEC_length (linespec_sals, canonical.sals) > 0)
14147     {
14148       struct linespec_sals *lsal;
14149
14150       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14151       *sals = lsal->sals;
14152       /* Arrange it so the destructor does not free the
14153          contents.  */
14154       lsal->sals.sals = NULL;
14155     }
14156
14157   destroy_linespec_result (&canonical);
14158 }
14159
14160 /* Prepare the global context for a re-set of breakpoint B.  */
14161
14162 static struct cleanup *
14163 prepare_re_set_context (struct breakpoint *b)
14164 {
14165   struct cleanup *cleanups;
14166
14167   input_radix = b->input_radix;
14168   cleanups = save_current_space_and_thread ();
14169   if (b->pspace != NULL)
14170     switch_to_program_space_and_thread (b->pspace);
14171   set_language (b->language);
14172
14173   return cleanups;
14174 }
14175
14176 /* Reset a breakpoint given it's struct breakpoint * BINT.
14177    The value we return ends up being the return value from catch_errors.
14178    Unused in this case.  */
14179
14180 static int
14181 breakpoint_re_set_one (void *bint)
14182 {
14183   /* Get past catch_errs.  */
14184   struct breakpoint *b = (struct breakpoint *) bint;
14185   struct cleanup *cleanups;
14186
14187   cleanups = prepare_re_set_context (b);
14188   b->ops->re_set (b);
14189   do_cleanups (cleanups);
14190   return 0;
14191 }
14192
14193 /* Re-set all breakpoints after symbols have been re-loaded.  */
14194 void
14195 breakpoint_re_set (void)
14196 {
14197   struct breakpoint *b, *b_tmp;
14198   enum language save_language;
14199   int save_input_radix;
14200   struct cleanup *old_chain;
14201
14202   save_language = current_language->la_language;
14203   save_input_radix = input_radix;
14204   old_chain = save_current_program_space ();
14205
14206   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14207   {
14208     /* Format possible error msg.  */
14209     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14210                                 b->number);
14211     struct cleanup *cleanups = make_cleanup (xfree, message);
14212     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14213     do_cleanups (cleanups);
14214   }
14215   set_language (save_language);
14216   input_radix = save_input_radix;
14217
14218   jit_breakpoint_re_set ();
14219
14220   do_cleanups (old_chain);
14221
14222   create_overlay_event_breakpoint ();
14223   create_longjmp_master_breakpoint ();
14224   create_std_terminate_master_breakpoint ();
14225   create_exception_master_breakpoint ();
14226 }
14227 \f
14228 /* Reset the thread number of this breakpoint:
14229
14230    - If the breakpoint is for all threads, leave it as-is.
14231    - Else, reset it to the current thread for inferior_ptid.  */
14232 void
14233 breakpoint_re_set_thread (struct breakpoint *b)
14234 {
14235   if (b->thread != -1)
14236     {
14237       if (in_thread_list (inferior_ptid))
14238         b->thread = pid_to_thread_id (inferior_ptid);
14239
14240       /* We're being called after following a fork.  The new fork is
14241          selected as current, and unless this was a vfork will have a
14242          different program space from the original thread.  Reset that
14243          as well.  */
14244       b->loc->pspace = current_program_space;
14245     }
14246 }
14247
14248 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14249    If from_tty is nonzero, it prints a message to that effect,
14250    which ends with a period (no newline).  */
14251
14252 void
14253 set_ignore_count (int bptnum, int count, int from_tty)
14254 {
14255   struct breakpoint *b;
14256
14257   if (count < 0)
14258     count = 0;
14259
14260   ALL_BREAKPOINTS (b)
14261     if (b->number == bptnum)
14262     {
14263       if (is_tracepoint (b))
14264         {
14265           if (from_tty && count != 0)
14266             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14267                              bptnum);
14268           return;
14269         }
14270       
14271       b->ignore_count = count;
14272       if (from_tty)
14273         {
14274           if (count == 0)
14275             printf_filtered (_("Will stop next time "
14276                                "breakpoint %d is reached."),
14277                              bptnum);
14278           else if (count == 1)
14279             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14280                              bptnum);
14281           else
14282             printf_filtered (_("Will ignore next %d "
14283                                "crossings of breakpoint %d."),
14284                              count, bptnum);
14285         }
14286       observer_notify_breakpoint_modified (b);
14287       return;
14288     }
14289
14290   error (_("No breakpoint number %d."), bptnum);
14291 }
14292
14293 /* Command to set ignore-count of breakpoint N to COUNT.  */
14294
14295 static void
14296 ignore_command (char *args, int from_tty)
14297 {
14298   char *p = args;
14299   int num;
14300
14301   if (p == 0)
14302     error_no_arg (_("a breakpoint number"));
14303
14304   num = get_number (&p);
14305   if (num == 0)
14306     error (_("bad breakpoint number: '%s'"), args);
14307   if (*p == 0)
14308     error (_("Second argument (specified ignore-count) is missing."));
14309
14310   set_ignore_count (num,
14311                     longest_to_int (value_as_long (parse_and_eval (p))),
14312                     from_tty);
14313   if (from_tty)
14314     printf_filtered ("\n");
14315 }
14316 \f
14317 /* Call FUNCTION on each of the breakpoints
14318    whose numbers are given in ARGS.  */
14319
14320 static void
14321 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14322                                                       void *),
14323                         void *data)
14324 {
14325   int num;
14326   struct breakpoint *b, *tmp;
14327   int match;
14328   struct get_number_or_range_state state;
14329
14330   if (args == 0)
14331     error_no_arg (_("one or more breakpoint numbers"));
14332
14333   init_number_or_range (&state, args);
14334
14335   while (!state.finished)
14336     {
14337       char *p = state.string;
14338
14339       match = 0;
14340
14341       num = get_number_or_range (&state);
14342       if (num == 0)
14343         {
14344           warning (_("bad breakpoint number at or near '%s'"), p);
14345         }
14346       else
14347         {
14348           ALL_BREAKPOINTS_SAFE (b, tmp)
14349             if (b->number == num)
14350               {
14351                 match = 1;
14352                 function (b, data);
14353                 break;
14354               }
14355           if (match == 0)
14356             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14357         }
14358     }
14359 }
14360
14361 static struct bp_location *
14362 find_location_by_number (char *number)
14363 {
14364   char *dot = strchr (number, '.');
14365   char *p1;
14366   int bp_num;
14367   int loc_num;
14368   struct breakpoint *b;
14369   struct bp_location *loc;  
14370
14371   *dot = '\0';
14372
14373   p1 = number;
14374   bp_num = get_number (&p1);
14375   if (bp_num == 0)
14376     error (_("Bad breakpoint number '%s'"), number);
14377
14378   ALL_BREAKPOINTS (b)
14379     if (b->number == bp_num)
14380       {
14381         break;
14382       }
14383
14384   if (!b || b->number != bp_num)
14385     error (_("Bad breakpoint number '%s'"), number);
14386   
14387   p1 = dot+1;
14388   loc_num = get_number (&p1);
14389   if (loc_num == 0)
14390     error (_("Bad breakpoint location number '%s'"), number);
14391
14392   --loc_num;
14393   loc = b->loc;
14394   for (;loc_num && loc; --loc_num, loc = loc->next)
14395     ;
14396   if (!loc)
14397     error (_("Bad breakpoint location number '%s'"), dot+1);
14398     
14399   return loc;  
14400 }
14401
14402
14403 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14404    If from_tty is nonzero, it prints a message to that effect,
14405    which ends with a period (no newline).  */
14406
14407 void
14408 disable_breakpoint (struct breakpoint *bpt)
14409 {
14410   /* Never disable a watchpoint scope breakpoint; we want to
14411      hit them when we leave scope so we can delete both the
14412      watchpoint and its scope breakpoint at that time.  */
14413   if (bpt->type == bp_watchpoint_scope)
14414     return;
14415
14416   /* You can't disable permanent breakpoints.  */
14417   if (bpt->enable_state == bp_permanent)
14418     return;
14419
14420   bpt->enable_state = bp_disabled;
14421
14422   /* Mark breakpoint locations modified.  */
14423   mark_breakpoint_modified (bpt);
14424
14425   if (target_supports_enable_disable_tracepoint ()
14426       && current_trace_status ()->running && is_tracepoint (bpt))
14427     {
14428       struct bp_location *location;
14429      
14430       for (location = bpt->loc; location; location = location->next)
14431         target_disable_tracepoint (location);
14432     }
14433
14434   update_global_location_list (0);
14435
14436   observer_notify_breakpoint_modified (bpt);
14437 }
14438
14439 /* A callback for iterate_over_related_breakpoints.  */
14440
14441 static void
14442 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14443 {
14444   disable_breakpoint (b);
14445 }
14446
14447 /* A callback for map_breakpoint_numbers that calls
14448    disable_breakpoint.  */
14449
14450 static void
14451 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14452 {
14453   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14454 }
14455
14456 static void
14457 disable_command (char *args, int from_tty)
14458 {
14459   if (args == 0)
14460     {
14461       struct breakpoint *bpt;
14462
14463       ALL_BREAKPOINTS (bpt)
14464         if (user_breakpoint_p (bpt))
14465           disable_breakpoint (bpt);
14466     }
14467   else if (strchr (args, '.'))
14468     {
14469       struct bp_location *loc = find_location_by_number (args);
14470       if (loc)
14471         {
14472           if (loc->enabled)
14473             {
14474               loc->enabled = 0;
14475               mark_breakpoint_location_modified (loc);
14476             }
14477           if (target_supports_enable_disable_tracepoint ()
14478               && current_trace_status ()->running && loc->owner
14479               && is_tracepoint (loc->owner))
14480             target_disable_tracepoint (loc);
14481         }
14482       update_global_location_list (0);
14483     }
14484   else
14485     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14486 }
14487
14488 static void
14489 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14490                         int count)
14491 {
14492   int target_resources_ok;
14493
14494   if (bpt->type == bp_hardware_breakpoint)
14495     {
14496       int i;
14497       i = hw_breakpoint_used_count ();
14498       target_resources_ok = 
14499         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14500                                             i + 1, 0);
14501       if (target_resources_ok == 0)
14502         error (_("No hardware breakpoint support in the target."));
14503       else if (target_resources_ok < 0)
14504         error (_("Hardware breakpoints used exceeds limit."));
14505     }
14506
14507   if (is_watchpoint (bpt))
14508     {
14509       /* Initialize it just to avoid a GCC false warning.  */
14510       enum enable_state orig_enable_state = 0;
14511       volatile struct gdb_exception e;
14512
14513       TRY_CATCH (e, RETURN_MASK_ALL)
14514         {
14515           struct watchpoint *w = (struct watchpoint *) bpt;
14516
14517           orig_enable_state = bpt->enable_state;
14518           bpt->enable_state = bp_enabled;
14519           update_watchpoint (w, 1 /* reparse */);
14520         }
14521       if (e.reason < 0)
14522         {
14523           bpt->enable_state = orig_enable_state;
14524           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14525                              bpt->number);
14526           return;
14527         }
14528     }
14529
14530   if (bpt->enable_state != bp_permanent)
14531     bpt->enable_state = bp_enabled;
14532
14533   bpt->enable_state = bp_enabled;
14534
14535   /* Mark breakpoint locations modified.  */
14536   mark_breakpoint_modified (bpt);
14537
14538   if (target_supports_enable_disable_tracepoint ()
14539       && current_trace_status ()->running && is_tracepoint (bpt))
14540     {
14541       struct bp_location *location;
14542
14543       for (location = bpt->loc; location; location = location->next)
14544         target_enable_tracepoint (location);
14545     }
14546
14547   bpt->disposition = disposition;
14548   bpt->enable_count = count;
14549   update_global_location_list (1);
14550
14551   observer_notify_breakpoint_modified (bpt);
14552 }
14553
14554
14555 void
14556 enable_breakpoint (struct breakpoint *bpt)
14557 {
14558   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14559 }
14560
14561 static void
14562 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14563 {
14564   enable_breakpoint (bpt);
14565 }
14566
14567 /* A callback for map_breakpoint_numbers that calls
14568    enable_breakpoint.  */
14569
14570 static void
14571 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14572 {
14573   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14574 }
14575
14576 /* The enable command enables the specified breakpoints (or all defined
14577    breakpoints) so they once again become (or continue to be) effective
14578    in stopping the inferior.  */
14579
14580 static void
14581 enable_command (char *args, int from_tty)
14582 {
14583   if (args == 0)
14584     {
14585       struct breakpoint *bpt;
14586
14587       ALL_BREAKPOINTS (bpt)
14588         if (user_breakpoint_p (bpt))
14589           enable_breakpoint (bpt);
14590     }
14591   else if (strchr (args, '.'))
14592     {
14593       struct bp_location *loc = find_location_by_number (args);
14594       if (loc)
14595         {
14596           if (!loc->enabled)
14597             {
14598               loc->enabled = 1;
14599               mark_breakpoint_location_modified (loc);
14600             }
14601           if (target_supports_enable_disable_tracepoint ()
14602               && current_trace_status ()->running && loc->owner
14603               && is_tracepoint (loc->owner))
14604             target_enable_tracepoint (loc);
14605         }
14606       update_global_location_list (1);
14607     }
14608   else
14609     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14610 }
14611
14612 /* This struct packages up disposition data for application to multiple
14613    breakpoints.  */
14614
14615 struct disp_data
14616 {
14617   enum bpdisp disp;
14618   int count;
14619 };
14620
14621 static void
14622 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14623 {
14624   struct disp_data disp_data = *(struct disp_data *) arg;
14625
14626   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14627 }
14628
14629 static void
14630 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14631 {
14632   struct disp_data disp = { disp_disable, 1 };
14633
14634   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14635 }
14636
14637 static void
14638 enable_once_command (char *args, int from_tty)
14639 {
14640   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14641 }
14642
14643 static void
14644 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14645 {
14646   struct disp_data disp = { disp_disable, *(int *) countptr };
14647
14648   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14649 }
14650
14651 static void
14652 enable_count_command (char *args, int from_tty)
14653 {
14654   int count = get_number (&args);
14655
14656   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14657 }
14658
14659 static void
14660 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14661 {
14662   struct disp_data disp = { disp_del, 1 };
14663
14664   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14665 }
14666
14667 static void
14668 enable_delete_command (char *args, int from_tty)
14669 {
14670   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14671 }
14672 \f
14673 static void
14674 set_breakpoint_cmd (char *args, int from_tty)
14675 {
14676 }
14677
14678 static void
14679 show_breakpoint_cmd (char *args, int from_tty)
14680 {
14681 }
14682
14683 /* Invalidate last known value of any hardware watchpoint if
14684    the memory which that value represents has been written to by
14685    GDB itself.  */
14686
14687 static void
14688 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14689                                       CORE_ADDR addr, ssize_t len,
14690                                       const bfd_byte *data)
14691 {
14692   struct breakpoint *bp;
14693
14694   ALL_BREAKPOINTS (bp)
14695     if (bp->enable_state == bp_enabled
14696         && bp->type == bp_hardware_watchpoint)
14697       {
14698         struct watchpoint *wp = (struct watchpoint *) bp;
14699
14700         if (wp->val_valid && wp->val)
14701           {
14702             struct bp_location *loc;
14703
14704             for (loc = bp->loc; loc != NULL; loc = loc->next)
14705               if (loc->loc_type == bp_loc_hardware_watchpoint
14706                   && loc->address + loc->length > addr
14707                   && addr + len > loc->address)
14708                 {
14709                   value_free (wp->val);
14710                   wp->val = NULL;
14711                   wp->val_valid = 0;
14712                 }
14713           }
14714       }
14715 }
14716
14717 /* Create and insert a raw software breakpoint at PC.  Return an
14718    identifier, which should be used to remove the breakpoint later.
14719    In general, places which call this should be using something on the
14720    breakpoint chain instead; this function should be eliminated
14721    someday.  */
14722
14723 void *
14724 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14725                                   struct address_space *aspace, CORE_ADDR pc)
14726 {
14727   struct bp_target_info *bp_tgt;
14728
14729   bp_tgt = XZALLOC (struct bp_target_info);
14730
14731   bp_tgt->placed_address_space = aspace;
14732   bp_tgt->placed_address = pc;
14733
14734   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14735     {
14736       /* Could not insert the breakpoint.  */
14737       xfree (bp_tgt);
14738       return NULL;
14739     }
14740
14741   return bp_tgt;
14742 }
14743
14744 /* Remove a breakpoint BP inserted by
14745    deprecated_insert_raw_breakpoint.  */
14746
14747 int
14748 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14749 {
14750   struct bp_target_info *bp_tgt = bp;
14751   int ret;
14752
14753   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14754   xfree (bp_tgt);
14755
14756   return ret;
14757 }
14758
14759 /* One (or perhaps two) breakpoints used for software single
14760    stepping.  */
14761
14762 static void *single_step_breakpoints[2];
14763 static struct gdbarch *single_step_gdbarch[2];
14764
14765 /* Create and insert a breakpoint for software single step.  */
14766
14767 void
14768 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14769                                struct address_space *aspace, 
14770                                CORE_ADDR next_pc)
14771 {
14772   void **bpt_p;
14773
14774   if (single_step_breakpoints[0] == NULL)
14775     {
14776       bpt_p = &single_step_breakpoints[0];
14777       single_step_gdbarch[0] = gdbarch;
14778     }
14779   else
14780     {
14781       gdb_assert (single_step_breakpoints[1] == NULL);
14782       bpt_p = &single_step_breakpoints[1];
14783       single_step_gdbarch[1] = gdbarch;
14784     }
14785
14786   /* NOTE drow/2006-04-11: A future improvement to this function would
14787      be to only create the breakpoints once, and actually put them on
14788      the breakpoint chain.  That would let us use set_raw_breakpoint.
14789      We could adjust the addresses each time they were needed.  Doing
14790      this requires corresponding changes elsewhere where single step
14791      breakpoints are handled, however.  So, for now, we use this.  */
14792
14793   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14794   if (*bpt_p == NULL)
14795     error (_("Could not insert single-step breakpoint at %s"),
14796              paddress (gdbarch, next_pc));
14797 }
14798
14799 /* Check if the breakpoints used for software single stepping
14800    were inserted or not.  */
14801
14802 int
14803 single_step_breakpoints_inserted (void)
14804 {
14805   return (single_step_breakpoints[0] != NULL
14806           || single_step_breakpoints[1] != NULL);
14807 }
14808
14809 /* Remove and delete any breakpoints used for software single step.  */
14810
14811 void
14812 remove_single_step_breakpoints (void)
14813 {
14814   gdb_assert (single_step_breakpoints[0] != NULL);
14815
14816   /* See insert_single_step_breakpoint for more about this deprecated
14817      call.  */
14818   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14819                                     single_step_breakpoints[0]);
14820   single_step_gdbarch[0] = NULL;
14821   single_step_breakpoints[0] = NULL;
14822
14823   if (single_step_breakpoints[1] != NULL)
14824     {
14825       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14826                                         single_step_breakpoints[1]);
14827       single_step_gdbarch[1] = NULL;
14828       single_step_breakpoints[1] = NULL;
14829     }
14830 }
14831
14832 /* Delete software single step breakpoints without removing them from
14833    the inferior.  This is intended to be used if the inferior's address
14834    space where they were inserted is already gone, e.g. after exit or
14835    exec.  */
14836
14837 void
14838 cancel_single_step_breakpoints (void)
14839 {
14840   int i;
14841
14842   for (i = 0; i < 2; i++)
14843     if (single_step_breakpoints[i])
14844       {
14845         xfree (single_step_breakpoints[i]);
14846         single_step_breakpoints[i] = NULL;
14847         single_step_gdbarch[i] = NULL;
14848       }
14849 }
14850
14851 /* Detach software single-step breakpoints from INFERIOR_PTID without
14852    removing them.  */
14853
14854 static void
14855 detach_single_step_breakpoints (void)
14856 {
14857   int i;
14858
14859   for (i = 0; i < 2; i++)
14860     if (single_step_breakpoints[i])
14861       target_remove_breakpoint (single_step_gdbarch[i],
14862                                 single_step_breakpoints[i]);
14863 }
14864
14865 /* Check whether a software single-step breakpoint is inserted at
14866    PC.  */
14867
14868 static int
14869 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14870                                         CORE_ADDR pc)
14871 {
14872   int i;
14873
14874   for (i = 0; i < 2; i++)
14875     {
14876       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14877       if (bp_tgt
14878           && breakpoint_address_match (bp_tgt->placed_address_space,
14879                                        bp_tgt->placed_address,
14880                                        aspace, pc))
14881         return 1;
14882     }
14883
14884   return 0;
14885 }
14886
14887 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14888    non-zero otherwise.  */
14889 static int
14890 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14891 {
14892   if (syscall_catchpoint_p (bp)
14893       && bp->enable_state != bp_disabled
14894       && bp->enable_state != bp_call_disabled)
14895     return 1;
14896   else
14897     return 0;
14898 }
14899
14900 int
14901 catch_syscall_enabled (void)
14902 {
14903   struct catch_syscall_inferior_data *inf_data
14904     = get_catch_syscall_inferior_data (current_inferior ());
14905
14906   return inf_data->total_syscalls_count != 0;
14907 }
14908
14909 int
14910 catching_syscall_number (int syscall_number)
14911 {
14912   struct breakpoint *bp;
14913
14914   ALL_BREAKPOINTS (bp)
14915     if (is_syscall_catchpoint_enabled (bp))
14916       {
14917         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14918
14919         if (c->syscalls_to_be_caught)
14920           {
14921             int i, iter;
14922             for (i = 0;
14923                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14924                  i++)
14925               if (syscall_number == iter)
14926                 return 1;
14927           }
14928         else
14929           return 1;
14930       }
14931
14932   return 0;
14933 }
14934
14935 /* Complete syscall names.  Used by "catch syscall".  */
14936 static VEC (char_ptr) *
14937 catch_syscall_completer (struct cmd_list_element *cmd,
14938                          const char *text, const char *word)
14939 {
14940   const char **list = get_syscall_names ();
14941   VEC (char_ptr) *retlist
14942     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
14943
14944   xfree (list);
14945   return retlist;
14946 }
14947
14948 /* Tracepoint-specific operations.  */
14949
14950 /* Set tracepoint count to NUM.  */
14951 static void
14952 set_tracepoint_count (int num)
14953 {
14954   tracepoint_count = num;
14955   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14956 }
14957
14958 static void
14959 trace_command (char *arg, int from_tty)
14960 {
14961   struct breakpoint_ops *ops;
14962   const char *arg_cp = arg;
14963
14964   if (arg && probe_linespec_to_ops (&arg_cp))
14965     ops = &tracepoint_probe_breakpoint_ops;
14966   else
14967     ops = &tracepoint_breakpoint_ops;
14968
14969   create_breakpoint (get_current_arch (),
14970                      arg,
14971                      NULL, 0, NULL, 1 /* parse arg */,
14972                      0 /* tempflag */,
14973                      bp_tracepoint /* type_wanted */,
14974                      0 /* Ignore count */,
14975                      pending_break_support,
14976                      ops,
14977                      from_tty,
14978                      1 /* enabled */,
14979                      0 /* internal */, 0);
14980 }
14981
14982 static void
14983 ftrace_command (char *arg, int from_tty)
14984 {
14985   create_breakpoint (get_current_arch (),
14986                      arg,
14987                      NULL, 0, NULL, 1 /* parse arg */,
14988                      0 /* tempflag */,
14989                      bp_fast_tracepoint /* type_wanted */,
14990                      0 /* Ignore count */,
14991                      pending_break_support,
14992                      &tracepoint_breakpoint_ops,
14993                      from_tty,
14994                      1 /* enabled */,
14995                      0 /* internal */, 0);
14996 }
14997
14998 /* strace command implementation.  Creates a static tracepoint.  */
14999
15000 static void
15001 strace_command (char *arg, int from_tty)
15002 {
15003   struct breakpoint_ops *ops;
15004
15005   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15006      or with a normal static tracepoint.  */
15007   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15008     ops = &strace_marker_breakpoint_ops;
15009   else
15010     ops = &tracepoint_breakpoint_ops;
15011
15012   create_breakpoint (get_current_arch (),
15013                      arg,
15014                      NULL, 0, NULL, 1 /* parse arg */,
15015                      0 /* tempflag */,
15016                      bp_static_tracepoint /* type_wanted */,
15017                      0 /* Ignore count */,
15018                      pending_break_support,
15019                      ops,
15020                      from_tty,
15021                      1 /* enabled */,
15022                      0 /* internal */, 0);
15023 }
15024
15025 /* Set up a fake reader function that gets command lines from a linked
15026    list that was acquired during tracepoint uploading.  */
15027
15028 static struct uploaded_tp *this_utp;
15029 static int next_cmd;
15030
15031 static char *
15032 read_uploaded_action (void)
15033 {
15034   char *rslt;
15035
15036   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15037
15038   next_cmd++;
15039
15040   return rslt;
15041 }
15042
15043 /* Given information about a tracepoint as recorded on a target (which
15044    can be either a live system or a trace file), attempt to create an
15045    equivalent GDB tracepoint.  This is not a reliable process, since
15046    the target does not necessarily have all the information used when
15047    the tracepoint was originally defined.  */
15048   
15049 struct tracepoint *
15050 create_tracepoint_from_upload (struct uploaded_tp *utp)
15051 {
15052   char *addr_str, small_buf[100];
15053   struct tracepoint *tp;
15054
15055   if (utp->at_string)
15056     addr_str = utp->at_string;
15057   else
15058     {
15059       /* In the absence of a source location, fall back to raw
15060          address.  Since there is no way to confirm that the address
15061          means the same thing as when the trace was started, warn the
15062          user.  */
15063       warning (_("Uploaded tracepoint %d has no "
15064                  "source location, using raw address"),
15065                utp->number);
15066       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15067       addr_str = small_buf;
15068     }
15069
15070   /* There's not much we can do with a sequence of bytecodes.  */
15071   if (utp->cond && !utp->cond_string)
15072     warning (_("Uploaded tracepoint %d condition "
15073                "has no source form, ignoring it"),
15074              utp->number);
15075
15076   if (!create_breakpoint (get_current_arch (),
15077                           addr_str,
15078                           utp->cond_string, -1, NULL,
15079                           0 /* parse cond/thread */,
15080                           0 /* tempflag */,
15081                           utp->type /* type_wanted */,
15082                           0 /* Ignore count */,
15083                           pending_break_support,
15084                           &tracepoint_breakpoint_ops,
15085                           0 /* from_tty */,
15086                           utp->enabled /* enabled */,
15087                           0 /* internal */,
15088                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15089     return NULL;
15090
15091   /* Get the tracepoint we just created.  */
15092   tp = get_tracepoint (tracepoint_count);
15093   gdb_assert (tp != NULL);
15094
15095   if (utp->pass > 0)
15096     {
15097       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15098                  tp->base.number);
15099
15100       trace_pass_command (small_buf, 0);
15101     }
15102
15103   /* If we have uploaded versions of the original commands, set up a
15104      special-purpose "reader" function and call the usual command line
15105      reader, then pass the result to the breakpoint command-setting
15106      function.  */
15107   if (!VEC_empty (char_ptr, utp->cmd_strings))
15108     {
15109       struct command_line *cmd_list;
15110
15111       this_utp = utp;
15112       next_cmd = 0;
15113
15114       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15115
15116       breakpoint_set_commands (&tp->base, cmd_list);
15117     }
15118   else if (!VEC_empty (char_ptr, utp->actions)
15119            || !VEC_empty (char_ptr, utp->step_actions))
15120     warning (_("Uploaded tracepoint %d actions "
15121                "have no source form, ignoring them"),
15122              utp->number);
15123
15124   /* Copy any status information that might be available.  */
15125   tp->base.hit_count = utp->hit_count;
15126   tp->traceframe_usage = utp->traceframe_usage;
15127
15128   return tp;
15129 }
15130   
15131 /* Print information on tracepoint number TPNUM_EXP, or all if
15132    omitted.  */
15133
15134 static void
15135 tracepoints_info (char *args, int from_tty)
15136 {
15137   struct ui_out *uiout = current_uiout;
15138   int num_printed;
15139
15140   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15141
15142   if (num_printed == 0)
15143     {
15144       if (args == NULL || *args == '\0')
15145         ui_out_message (uiout, 0, "No tracepoints.\n");
15146       else
15147         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15148     }
15149
15150   default_collect_info ();
15151 }
15152
15153 /* The 'enable trace' command enables tracepoints.
15154    Not supported by all targets.  */
15155 static void
15156 enable_trace_command (char *args, int from_tty)
15157 {
15158   enable_command (args, from_tty);
15159 }
15160
15161 /* The 'disable trace' command disables tracepoints.
15162    Not supported by all targets.  */
15163 static void
15164 disable_trace_command (char *args, int from_tty)
15165 {
15166   disable_command (args, from_tty);
15167 }
15168
15169 /* Remove a tracepoint (or all if no argument).  */
15170 static void
15171 delete_trace_command (char *arg, int from_tty)
15172 {
15173   struct breakpoint *b, *b_tmp;
15174
15175   dont_repeat ();
15176
15177   if (arg == 0)
15178     {
15179       int breaks_to_delete = 0;
15180
15181       /* Delete all breakpoints if no argument.
15182          Do not delete internal or call-dummy breakpoints, these
15183          have to be deleted with an explicit breakpoint number 
15184          argument.  */
15185       ALL_TRACEPOINTS (b)
15186         if (is_tracepoint (b) && user_breakpoint_p (b))
15187           {
15188             breaks_to_delete = 1;
15189             break;
15190           }
15191
15192       /* Ask user only if there are some breakpoints to delete.  */
15193       if (!from_tty
15194           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15195         {
15196           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15197             if (is_tracepoint (b) && user_breakpoint_p (b))
15198               delete_breakpoint (b);
15199         }
15200     }
15201   else
15202     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15203 }
15204
15205 /* Helper function for trace_pass_command.  */
15206
15207 static void
15208 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15209 {
15210   tp->pass_count = count;
15211   observer_notify_breakpoint_modified (&tp->base);
15212   if (from_tty)
15213     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15214                      tp->base.number, count);
15215 }
15216
15217 /* Set passcount for tracepoint.
15218
15219    First command argument is passcount, second is tracepoint number.
15220    If tracepoint number omitted, apply to most recently defined.
15221    Also accepts special argument "all".  */
15222
15223 static void
15224 trace_pass_command (char *args, int from_tty)
15225 {
15226   struct tracepoint *t1;
15227   unsigned int count;
15228
15229   if (args == 0 || *args == 0)
15230     error (_("passcount command requires an "
15231              "argument (count + optional TP num)"));
15232
15233   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15234
15235   args = skip_spaces (args);
15236   if (*args && strncasecmp (args, "all", 3) == 0)
15237     {
15238       struct breakpoint *b;
15239
15240       args += 3;                        /* Skip special argument "all".  */
15241       if (*args)
15242         error (_("Junk at end of arguments."));
15243
15244       ALL_TRACEPOINTS (b)
15245       {
15246         t1 = (struct tracepoint *) b;
15247         trace_pass_set_count (t1, count, from_tty);
15248       }
15249     }
15250   else if (*args == '\0')
15251     {
15252       t1 = get_tracepoint_by_number (&args, NULL, 1);
15253       if (t1)
15254         trace_pass_set_count (t1, count, from_tty);
15255     }
15256   else
15257     {
15258       struct get_number_or_range_state state;
15259
15260       init_number_or_range (&state, args);
15261       while (!state.finished)
15262         {
15263           t1 = get_tracepoint_by_number (&args, &state, 1);
15264           if (t1)
15265             trace_pass_set_count (t1, count, from_tty);
15266         }
15267     }
15268 }
15269
15270 struct tracepoint *
15271 get_tracepoint (int num)
15272 {
15273   struct breakpoint *t;
15274
15275   ALL_TRACEPOINTS (t)
15276     if (t->number == num)
15277       return (struct tracepoint *) t;
15278
15279   return NULL;
15280 }
15281
15282 /* Find the tracepoint with the given target-side number (which may be
15283    different from the tracepoint number after disconnecting and
15284    reconnecting).  */
15285
15286 struct tracepoint *
15287 get_tracepoint_by_number_on_target (int num)
15288 {
15289   struct breakpoint *b;
15290
15291   ALL_TRACEPOINTS (b)
15292     {
15293       struct tracepoint *t = (struct tracepoint *) b;
15294
15295       if (t->number_on_target == num)
15296         return t;
15297     }
15298
15299   return NULL;
15300 }
15301
15302 /* Utility: parse a tracepoint number and look it up in the list.
15303    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15304    If OPTIONAL_P is true, then if the argument is missing, the most
15305    recent tracepoint (tracepoint_count) is returned.  */
15306 struct tracepoint *
15307 get_tracepoint_by_number (char **arg,
15308                           struct get_number_or_range_state *state,
15309                           int optional_p)
15310 {
15311   struct breakpoint *t;
15312   int tpnum;
15313   char *instring = arg == NULL ? NULL : *arg;
15314
15315   if (state)
15316     {
15317       gdb_assert (!state->finished);
15318       tpnum = get_number_or_range (state);
15319     }
15320   else if (arg == NULL || *arg == NULL || ! **arg)
15321     {
15322       if (optional_p)
15323         tpnum = tracepoint_count;
15324       else
15325         error_no_arg (_("tracepoint number"));
15326     }
15327   else
15328     tpnum = get_number (arg);
15329
15330   if (tpnum <= 0)
15331     {
15332       if (instring && *instring)
15333         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15334                          instring);
15335       else
15336         printf_filtered (_("Tracepoint argument missing "
15337                            "and no previous tracepoint\n"));
15338       return NULL;
15339     }
15340
15341   ALL_TRACEPOINTS (t)
15342     if (t->number == tpnum)
15343     {
15344       return (struct tracepoint *) t;
15345     }
15346
15347   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15348   return NULL;
15349 }
15350
15351 void
15352 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15353 {
15354   if (b->thread != -1)
15355     fprintf_unfiltered (fp, " thread %d", b->thread);
15356
15357   if (b->task != 0)
15358     fprintf_unfiltered (fp, " task %d", b->task);
15359
15360   fprintf_unfiltered (fp, "\n");
15361 }
15362
15363 /* Save information on user settable breakpoints (watchpoints, etc) to
15364    a new script file named FILENAME.  If FILTER is non-NULL, call it
15365    on each breakpoint and only include the ones for which it returns
15366    non-zero.  */
15367
15368 static void
15369 save_breakpoints (char *filename, int from_tty,
15370                   int (*filter) (const struct breakpoint *))
15371 {
15372   struct breakpoint *tp;
15373   int any = 0;
15374   char *pathname;
15375   struct cleanup *cleanup;
15376   struct ui_file *fp;
15377   int extra_trace_bits = 0;
15378
15379   if (filename == 0 || *filename == 0)
15380     error (_("Argument required (file name in which to save)"));
15381
15382   /* See if we have anything to save.  */
15383   ALL_BREAKPOINTS (tp)
15384   {
15385     /* Skip internal and momentary breakpoints.  */
15386     if (!user_breakpoint_p (tp))
15387       continue;
15388
15389     /* If we have a filter, only save the breakpoints it accepts.  */
15390     if (filter && !filter (tp))
15391       continue;
15392
15393     any = 1;
15394
15395     if (is_tracepoint (tp))
15396       {
15397         extra_trace_bits = 1;
15398
15399         /* We can stop searching.  */
15400         break;
15401       }
15402   }
15403
15404   if (!any)
15405     {
15406       warning (_("Nothing to save."));
15407       return;
15408     }
15409
15410   pathname = tilde_expand (filename);
15411   cleanup = make_cleanup (xfree, pathname);
15412   fp = gdb_fopen (pathname, "w");
15413   if (!fp)
15414     error (_("Unable to open file '%s' for saving (%s)"),
15415            filename, safe_strerror (errno));
15416   make_cleanup_ui_file_delete (fp);
15417
15418   if (extra_trace_bits)
15419     save_trace_state_variables (fp);
15420
15421   ALL_BREAKPOINTS (tp)
15422   {
15423     /* Skip internal and momentary breakpoints.  */
15424     if (!user_breakpoint_p (tp))
15425       continue;
15426
15427     /* If we have a filter, only save the breakpoints it accepts.  */
15428     if (filter && !filter (tp))
15429       continue;
15430
15431     tp->ops->print_recreate (tp, fp);
15432
15433     /* Note, we can't rely on tp->number for anything, as we can't
15434        assume the recreated breakpoint numbers will match.  Use $bpnum
15435        instead.  */
15436
15437     if (tp->cond_string)
15438       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15439
15440     if (tp->ignore_count)
15441       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15442
15443     if (tp->type != bp_dprintf && tp->commands)
15444       {
15445         volatile struct gdb_exception ex;       
15446
15447         fprintf_unfiltered (fp, "  commands\n");
15448         
15449         ui_out_redirect (current_uiout, fp);
15450         TRY_CATCH (ex, RETURN_MASK_ALL)
15451           {
15452             print_command_lines (current_uiout, tp->commands->commands, 2);
15453           }
15454         ui_out_redirect (current_uiout, NULL);
15455
15456         if (ex.reason < 0)
15457           throw_exception (ex);
15458
15459         fprintf_unfiltered (fp, "  end\n");
15460       }
15461
15462     if (tp->enable_state == bp_disabled)
15463       fprintf_unfiltered (fp, "disable\n");
15464
15465     /* If this is a multi-location breakpoint, check if the locations
15466        should be individually disabled.  Watchpoint locations are
15467        special, and not user visible.  */
15468     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15469       {
15470         struct bp_location *loc;
15471         int n = 1;
15472
15473         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15474           if (!loc->enabled)
15475             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15476       }
15477   }
15478
15479   if (extra_trace_bits && *default_collect)
15480     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15481
15482   do_cleanups (cleanup);
15483   if (from_tty)
15484     printf_filtered (_("Saved to file '%s'.\n"), filename);
15485 }
15486
15487 /* The `save breakpoints' command.  */
15488
15489 static void
15490 save_breakpoints_command (char *args, int from_tty)
15491 {
15492   save_breakpoints (args, from_tty, NULL);
15493 }
15494
15495 /* The `save tracepoints' command.  */
15496
15497 static void
15498 save_tracepoints_command (char *args, int from_tty)
15499 {
15500   save_breakpoints (args, from_tty, is_tracepoint);
15501 }
15502
15503 /* Create a vector of all tracepoints.  */
15504
15505 VEC(breakpoint_p) *
15506 all_tracepoints (void)
15507 {
15508   VEC(breakpoint_p) *tp_vec = 0;
15509   struct breakpoint *tp;
15510
15511   ALL_TRACEPOINTS (tp)
15512   {
15513     VEC_safe_push (breakpoint_p, tp_vec, tp);
15514   }
15515
15516   return tp_vec;
15517 }
15518
15519 \f
15520 /* This help string is used for the break, hbreak, tbreak and thbreak
15521    commands.  It is defined as a macro to prevent duplication.
15522    COMMAND should be a string constant containing the name of the
15523    command.  */
15524 #define BREAK_ARGS_HELP(command) \
15525 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15526 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15527 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15528 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15529 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15530 If a line number is specified, break at start of code for that line.\n\
15531 If a function is specified, break at start of code for that function.\n\
15532 If an address is specified, break at that exact address.\n\
15533 With no LOCATION, uses current execution address of the selected\n\
15534 stack frame.  This is useful for breaking on return to a stack frame.\n\
15535 \n\
15536 THREADNUM is the number from \"info threads\".\n\
15537 CONDITION is a boolean expression.\n\
15538 \n\
15539 Multiple breakpoints at one place are permitted, and useful if their\n\
15540 conditions are different.\n\
15541 \n\
15542 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15543
15544 /* List of subcommands for "catch".  */
15545 static struct cmd_list_element *catch_cmdlist;
15546
15547 /* List of subcommands for "tcatch".  */
15548 static struct cmd_list_element *tcatch_cmdlist;
15549
15550 void
15551 add_catch_command (char *name, char *docstring,
15552                    void (*sfunc) (char *args, int from_tty,
15553                                   struct cmd_list_element *command),
15554                    completer_ftype *completer,
15555                    void *user_data_catch,
15556                    void *user_data_tcatch)
15557 {
15558   struct cmd_list_element *command;
15559
15560   command = add_cmd (name, class_breakpoint, NULL, docstring,
15561                      &catch_cmdlist);
15562   set_cmd_sfunc (command, sfunc);
15563   set_cmd_context (command, user_data_catch);
15564   set_cmd_completer (command, completer);
15565
15566   command = add_cmd (name, class_breakpoint, NULL, docstring,
15567                      &tcatch_cmdlist);
15568   set_cmd_sfunc (command, sfunc);
15569   set_cmd_context (command, user_data_tcatch);
15570   set_cmd_completer (command, completer);
15571 }
15572
15573 static void
15574 clear_syscall_counts (struct inferior *inf)
15575 {
15576   struct catch_syscall_inferior_data *inf_data
15577     = get_catch_syscall_inferior_data (inf);
15578
15579   inf_data->total_syscalls_count = 0;
15580   inf_data->any_syscall_count = 0;
15581   VEC_free (int, inf_data->syscalls_counts);
15582 }
15583
15584 static void
15585 save_command (char *arg, int from_tty)
15586 {
15587   printf_unfiltered (_("\"save\" must be followed by "
15588                        "the name of a save subcommand.\n"));
15589   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15590 }
15591
15592 struct breakpoint *
15593 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15594                           void *data)
15595 {
15596   struct breakpoint *b, *b_tmp;
15597
15598   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15599     {
15600       if ((*callback) (b, data))
15601         return b;
15602     }
15603
15604   return NULL;
15605 }
15606
15607 /* Zero if any of the breakpoint's locations could be a location where
15608    functions have been inlined, nonzero otherwise.  */
15609
15610 static int
15611 is_non_inline_function (struct breakpoint *b)
15612 {
15613   /* The shared library event breakpoint is set on the address of a
15614      non-inline function.  */
15615   if (b->type == bp_shlib_event)
15616     return 1;
15617
15618   return 0;
15619 }
15620
15621 /* Nonzero if the specified PC cannot be a location where functions
15622    have been inlined.  */
15623
15624 int
15625 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15626                            const struct target_waitstatus *ws)
15627 {
15628   struct breakpoint *b;
15629   struct bp_location *bl;
15630
15631   ALL_BREAKPOINTS (b)
15632     {
15633       if (!is_non_inline_function (b))
15634         continue;
15635
15636       for (bl = b->loc; bl != NULL; bl = bl->next)
15637         {
15638           if (!bl->shlib_disabled
15639               && bpstat_check_location (bl, aspace, pc, ws))
15640             return 1;
15641         }
15642     }
15643
15644   return 0;
15645 }
15646
15647 /* Remove any references to OBJFILE which is going to be freed.  */
15648
15649 void
15650 breakpoint_free_objfile (struct objfile *objfile)
15651 {
15652   struct bp_location **locp, *loc;
15653
15654   ALL_BP_LOCATIONS (loc, locp)
15655     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15656       loc->symtab = NULL;
15657 }
15658
15659 void
15660 initialize_breakpoint_ops (void)
15661 {
15662   static int initialized = 0;
15663
15664   struct breakpoint_ops *ops;
15665
15666   if (initialized)
15667     return;
15668   initialized = 1;
15669
15670   /* The breakpoint_ops structure to be inherit by all kinds of
15671      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15672      internal and momentary breakpoints, etc.).  */
15673   ops = &bkpt_base_breakpoint_ops;
15674   *ops = base_breakpoint_ops;
15675   ops->re_set = bkpt_re_set;
15676   ops->insert_location = bkpt_insert_location;
15677   ops->remove_location = bkpt_remove_location;
15678   ops->breakpoint_hit = bkpt_breakpoint_hit;
15679   ops->create_sals_from_address = bkpt_create_sals_from_address;
15680   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15681   ops->decode_linespec = bkpt_decode_linespec;
15682
15683   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15684   ops = &bkpt_breakpoint_ops;
15685   *ops = bkpt_base_breakpoint_ops;
15686   ops->re_set = bkpt_re_set;
15687   ops->resources_needed = bkpt_resources_needed;
15688   ops->print_it = bkpt_print_it;
15689   ops->print_mention = bkpt_print_mention;
15690   ops->print_recreate = bkpt_print_recreate;
15691
15692   /* Ranged breakpoints.  */
15693   ops = &ranged_breakpoint_ops;
15694   *ops = bkpt_breakpoint_ops;
15695   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15696   ops->resources_needed = resources_needed_ranged_breakpoint;
15697   ops->print_it = print_it_ranged_breakpoint;
15698   ops->print_one = print_one_ranged_breakpoint;
15699   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15700   ops->print_mention = print_mention_ranged_breakpoint;
15701   ops->print_recreate = print_recreate_ranged_breakpoint;
15702
15703   /* Internal breakpoints.  */
15704   ops = &internal_breakpoint_ops;
15705   *ops = bkpt_base_breakpoint_ops;
15706   ops->re_set = internal_bkpt_re_set;
15707   ops->check_status = internal_bkpt_check_status;
15708   ops->print_it = internal_bkpt_print_it;
15709   ops->print_mention = internal_bkpt_print_mention;
15710
15711   /* Momentary breakpoints.  */
15712   ops = &momentary_breakpoint_ops;
15713   *ops = bkpt_base_breakpoint_ops;
15714   ops->re_set = momentary_bkpt_re_set;
15715   ops->check_status = momentary_bkpt_check_status;
15716   ops->print_it = momentary_bkpt_print_it;
15717   ops->print_mention = momentary_bkpt_print_mention;
15718
15719   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15720   ops = &longjmp_breakpoint_ops;
15721   *ops = momentary_breakpoint_ops;
15722   ops->dtor = longjmp_bkpt_dtor;
15723
15724   /* Probe breakpoints.  */
15725   ops = &bkpt_probe_breakpoint_ops;
15726   *ops = bkpt_breakpoint_ops;
15727   ops->insert_location = bkpt_probe_insert_location;
15728   ops->remove_location = bkpt_probe_remove_location;
15729   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15730   ops->decode_linespec = bkpt_probe_decode_linespec;
15731
15732   /* Watchpoints.  */
15733   ops = &watchpoint_breakpoint_ops;
15734   *ops = base_breakpoint_ops;
15735   ops->dtor = dtor_watchpoint;
15736   ops->re_set = re_set_watchpoint;
15737   ops->insert_location = insert_watchpoint;
15738   ops->remove_location = remove_watchpoint;
15739   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15740   ops->check_status = check_status_watchpoint;
15741   ops->resources_needed = resources_needed_watchpoint;
15742   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15743   ops->print_it = print_it_watchpoint;
15744   ops->print_mention = print_mention_watchpoint;
15745   ops->print_recreate = print_recreate_watchpoint;
15746
15747   /* Masked watchpoints.  */
15748   ops = &masked_watchpoint_breakpoint_ops;
15749   *ops = watchpoint_breakpoint_ops;
15750   ops->insert_location = insert_masked_watchpoint;
15751   ops->remove_location = remove_masked_watchpoint;
15752   ops->resources_needed = resources_needed_masked_watchpoint;
15753   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15754   ops->print_it = print_it_masked_watchpoint;
15755   ops->print_one_detail = print_one_detail_masked_watchpoint;
15756   ops->print_mention = print_mention_masked_watchpoint;
15757   ops->print_recreate = print_recreate_masked_watchpoint;
15758
15759   /* Tracepoints.  */
15760   ops = &tracepoint_breakpoint_ops;
15761   *ops = base_breakpoint_ops;
15762   ops->re_set = tracepoint_re_set;
15763   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15764   ops->print_one_detail = tracepoint_print_one_detail;
15765   ops->print_mention = tracepoint_print_mention;
15766   ops->print_recreate = tracepoint_print_recreate;
15767   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15768   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15769   ops->decode_linespec = tracepoint_decode_linespec;
15770
15771   /* Probe tracepoints.  */
15772   ops = &tracepoint_probe_breakpoint_ops;
15773   *ops = tracepoint_breakpoint_ops;
15774   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15775   ops->decode_linespec = tracepoint_probe_decode_linespec;
15776
15777   /* Static tracepoints with marker (`-m').  */
15778   ops = &strace_marker_breakpoint_ops;
15779   *ops = tracepoint_breakpoint_ops;
15780   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15781   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15782   ops->decode_linespec = strace_marker_decode_linespec;
15783
15784   /* Fork catchpoints.  */
15785   ops = &catch_fork_breakpoint_ops;
15786   *ops = base_breakpoint_ops;
15787   ops->insert_location = insert_catch_fork;
15788   ops->remove_location = remove_catch_fork;
15789   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15790   ops->print_it = print_it_catch_fork;
15791   ops->print_one = print_one_catch_fork;
15792   ops->print_mention = print_mention_catch_fork;
15793   ops->print_recreate = print_recreate_catch_fork;
15794
15795   /* Vfork catchpoints.  */
15796   ops = &catch_vfork_breakpoint_ops;
15797   *ops = base_breakpoint_ops;
15798   ops->insert_location = insert_catch_vfork;
15799   ops->remove_location = remove_catch_vfork;
15800   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15801   ops->print_it = print_it_catch_vfork;
15802   ops->print_one = print_one_catch_vfork;
15803   ops->print_mention = print_mention_catch_vfork;
15804   ops->print_recreate = print_recreate_catch_vfork;
15805
15806   /* Exec catchpoints.  */
15807   ops = &catch_exec_breakpoint_ops;
15808   *ops = base_breakpoint_ops;
15809   ops->dtor = dtor_catch_exec;
15810   ops->insert_location = insert_catch_exec;
15811   ops->remove_location = remove_catch_exec;
15812   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15813   ops->print_it = print_it_catch_exec;
15814   ops->print_one = print_one_catch_exec;
15815   ops->print_mention = print_mention_catch_exec;
15816   ops->print_recreate = print_recreate_catch_exec;
15817
15818   /* Syscall catchpoints.  */
15819   ops = &catch_syscall_breakpoint_ops;
15820   *ops = base_breakpoint_ops;
15821   ops->dtor = dtor_catch_syscall;
15822   ops->insert_location = insert_catch_syscall;
15823   ops->remove_location = remove_catch_syscall;
15824   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15825   ops->print_it = print_it_catch_syscall;
15826   ops->print_one = print_one_catch_syscall;
15827   ops->print_mention = print_mention_catch_syscall;
15828   ops->print_recreate = print_recreate_catch_syscall;
15829
15830   /* Solib-related catchpoints.  */
15831   ops = &catch_solib_breakpoint_ops;
15832   *ops = base_breakpoint_ops;
15833   ops->dtor = dtor_catch_solib;
15834   ops->insert_location = insert_catch_solib;
15835   ops->remove_location = remove_catch_solib;
15836   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15837   ops->check_status = check_status_catch_solib;
15838   ops->print_it = print_it_catch_solib;
15839   ops->print_one = print_one_catch_solib;
15840   ops->print_mention = print_mention_catch_solib;
15841   ops->print_recreate = print_recreate_catch_solib;
15842
15843   ops = &dprintf_breakpoint_ops;
15844   *ops = bkpt_base_breakpoint_ops;
15845   ops->re_set = dprintf_re_set;
15846   ops->resources_needed = bkpt_resources_needed;
15847   ops->print_it = bkpt_print_it;
15848   ops->print_mention = bkpt_print_mention;
15849   ops->print_recreate = dprintf_print_recreate;
15850 }
15851
15852 /* Chain containing all defined "enable breakpoint" subcommands.  */
15853
15854 static struct cmd_list_element *enablebreaklist = NULL;
15855
15856 void
15857 _initialize_breakpoint (void)
15858 {
15859   struct cmd_list_element *c;
15860
15861   initialize_breakpoint_ops ();
15862
15863   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15864   observer_attach_inferior_exit (clear_syscall_counts);
15865   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15866
15867   breakpoint_objfile_key
15868     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15869
15870   catch_syscall_inferior_data
15871     = register_inferior_data_with_cleanup (NULL,
15872                                            catch_syscall_inferior_data_cleanup);
15873
15874   breakpoint_chain = 0;
15875   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15876      before a breakpoint is set.  */
15877   breakpoint_count = 0;
15878
15879   tracepoint_count = 0;
15880
15881   add_com ("ignore", class_breakpoint, ignore_command, _("\
15882 Set ignore-count of breakpoint number N to COUNT.\n\
15883 Usage is `ignore N COUNT'."));
15884   if (xdb_commands)
15885     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15886
15887   add_com ("commands", class_breakpoint, commands_command, _("\
15888 Set commands to be executed when a breakpoint is hit.\n\
15889 Give breakpoint number as argument after \"commands\".\n\
15890 With no argument, the targeted breakpoint is the last one set.\n\
15891 The commands themselves follow starting on the next line.\n\
15892 Type a line containing \"end\" to indicate the end of them.\n\
15893 Give \"silent\" as the first line to make the breakpoint silent;\n\
15894 then no output is printed when it is hit, except what the commands print."));
15895
15896   c = add_com ("condition", class_breakpoint, condition_command, _("\
15897 Specify breakpoint number N to break only if COND is true.\n\
15898 Usage is `condition N COND', where N is an integer and COND is an\n\
15899 expression to be evaluated whenever breakpoint N is reached."));
15900   set_cmd_completer (c, condition_completer);
15901
15902   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15903 Set a temporary breakpoint.\n\
15904 Like \"break\" except the breakpoint is only temporary,\n\
15905 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15906 by using \"enable delete\" on the breakpoint number.\n\
15907 \n"
15908 BREAK_ARGS_HELP ("tbreak")));
15909   set_cmd_completer (c, location_completer);
15910
15911   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15912 Set a hardware assisted breakpoint.\n\
15913 Like \"break\" except the breakpoint requires hardware support,\n\
15914 some target hardware may not have this support.\n\
15915 \n"
15916 BREAK_ARGS_HELP ("hbreak")));
15917   set_cmd_completer (c, location_completer);
15918
15919   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15920 Set a temporary hardware assisted breakpoint.\n\
15921 Like \"hbreak\" except the breakpoint is only temporary,\n\
15922 so it will be deleted when hit.\n\
15923 \n"
15924 BREAK_ARGS_HELP ("thbreak")));
15925   set_cmd_completer (c, location_completer);
15926
15927   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15928 Enable some breakpoints.\n\
15929 Give breakpoint numbers (separated by spaces) as arguments.\n\
15930 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15931 This is used to cancel the effect of the \"disable\" command.\n\
15932 With a subcommand you can enable temporarily."),
15933                   &enablelist, "enable ", 1, &cmdlist);
15934   if (xdb_commands)
15935     add_com ("ab", class_breakpoint, enable_command, _("\
15936 Enable some breakpoints.\n\
15937 Give breakpoint numbers (separated by spaces) as arguments.\n\
15938 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15939 This is used to cancel the effect of the \"disable\" command.\n\
15940 With a subcommand you can enable temporarily."));
15941
15942   add_com_alias ("en", "enable", class_breakpoint, 1);
15943
15944   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15945 Enable some breakpoints.\n\
15946 Give breakpoint numbers (separated by spaces) as arguments.\n\
15947 This is used to cancel the effect of the \"disable\" command.\n\
15948 May be abbreviated to simply \"enable\".\n"),
15949                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15950
15951   add_cmd ("once", no_class, enable_once_command, _("\
15952 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15953 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15954            &enablebreaklist);
15955
15956   add_cmd ("delete", no_class, enable_delete_command, _("\
15957 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15958 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15959            &enablebreaklist);
15960
15961   add_cmd ("count", no_class, enable_count_command, _("\
15962 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15963 If a breakpoint is hit while enabled in this fashion,\n\
15964 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15965            &enablebreaklist);
15966
15967   add_cmd ("delete", no_class, enable_delete_command, _("\
15968 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15969 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15970            &enablelist);
15971
15972   add_cmd ("once", no_class, enable_once_command, _("\
15973 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15974 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15975            &enablelist);
15976
15977   add_cmd ("count", no_class, enable_count_command, _("\
15978 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15979 If a breakpoint is hit while enabled in this fashion,\n\
15980 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15981            &enablelist);
15982
15983   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15984 Disable some breakpoints.\n\
15985 Arguments are breakpoint numbers with spaces in between.\n\
15986 To disable all breakpoints, give no argument.\n\
15987 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15988                   &disablelist, "disable ", 1, &cmdlist);
15989   add_com_alias ("dis", "disable", class_breakpoint, 1);
15990   add_com_alias ("disa", "disable", class_breakpoint, 1);
15991   if (xdb_commands)
15992     add_com ("sb", class_breakpoint, disable_command, _("\
15993 Disable some breakpoints.\n\
15994 Arguments are breakpoint numbers with spaces in between.\n\
15995 To disable all breakpoints, give no argument.\n\
15996 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
15997
15998   add_cmd ("breakpoints", class_alias, disable_command, _("\
15999 Disable some breakpoints.\n\
16000 Arguments are breakpoint numbers with spaces in between.\n\
16001 To disable all breakpoints, give no argument.\n\
16002 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16003 This command may be abbreviated \"disable\"."),
16004            &disablelist);
16005
16006   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16007 Delete some breakpoints or auto-display expressions.\n\
16008 Arguments are breakpoint numbers with spaces in between.\n\
16009 To delete all breakpoints, give no argument.\n\
16010 \n\
16011 Also a prefix command for deletion of other GDB objects.\n\
16012 The \"unset\" command is also an alias for \"delete\"."),
16013                   &deletelist, "delete ", 1, &cmdlist);
16014   add_com_alias ("d", "delete", class_breakpoint, 1);
16015   add_com_alias ("del", "delete", class_breakpoint, 1);
16016   if (xdb_commands)
16017     add_com ("db", class_breakpoint, delete_command, _("\
16018 Delete some breakpoints.\n\
16019 Arguments are breakpoint numbers with spaces in between.\n\
16020 To delete all breakpoints, give no argument.\n"));
16021
16022   add_cmd ("breakpoints", class_alias, delete_command, _("\
16023 Delete some breakpoints or auto-display expressions.\n\
16024 Arguments are breakpoint numbers with spaces in between.\n\
16025 To delete all breakpoints, give no argument.\n\
16026 This command may be abbreviated \"delete\"."),
16027            &deletelist);
16028
16029   add_com ("clear", class_breakpoint, clear_command, _("\
16030 Clear breakpoint at specified line or function.\n\
16031 Argument may be line number, function name, or \"*\" and an address.\n\
16032 If line number is specified, all breakpoints in that line are cleared.\n\
16033 If function is specified, breakpoints at beginning of function are cleared.\n\
16034 If an address is specified, breakpoints at that address are cleared.\n\
16035 \n\
16036 With no argument, clears all breakpoints in the line that the selected frame\n\
16037 is executing in.\n\
16038 \n\
16039 See also the \"delete\" command which clears breakpoints by number."));
16040   add_com_alias ("cl", "clear", class_breakpoint, 1);
16041
16042   c = add_com ("break", class_breakpoint, break_command, _("\
16043 Set breakpoint at specified line or function.\n"
16044 BREAK_ARGS_HELP ("break")));
16045   set_cmd_completer (c, location_completer);
16046
16047   add_com_alias ("b", "break", class_run, 1);
16048   add_com_alias ("br", "break", class_run, 1);
16049   add_com_alias ("bre", "break", class_run, 1);
16050   add_com_alias ("brea", "break", class_run, 1);
16051
16052   if (xdb_commands)
16053    add_com_alias ("ba", "break", class_breakpoint, 1);
16054
16055   if (dbx_commands)
16056     {
16057       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16058 Break in function/address or break at a line in the current file."),
16059                              &stoplist, "stop ", 1, &cmdlist);
16060       add_cmd ("in", class_breakpoint, stopin_command,
16061                _("Break in function or address."), &stoplist);
16062       add_cmd ("at", class_breakpoint, stopat_command,
16063                _("Break at a line in the current file."), &stoplist);
16064       add_com ("status", class_info, breakpoints_info, _("\
16065 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16066 The \"Type\" column indicates one of:\n\
16067 \tbreakpoint     - normal breakpoint\n\
16068 \twatchpoint     - watchpoint\n\
16069 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16070 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16071 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16072 address and file/line number respectively.\n\
16073 \n\
16074 Convenience variable \"$_\" and default examine address for \"x\"\n\
16075 are set to the address of the last breakpoint listed unless the command\n\
16076 is prefixed with \"server \".\n\n\
16077 Convenience variable \"$bpnum\" contains the number of the last\n\
16078 breakpoint set."));
16079     }
16080
16081   add_info ("breakpoints", breakpoints_info, _("\
16082 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16083 The \"Type\" column indicates one of:\n\
16084 \tbreakpoint     - normal breakpoint\n\
16085 \twatchpoint     - watchpoint\n\
16086 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16087 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16088 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16089 address and file/line number respectively.\n\
16090 \n\
16091 Convenience variable \"$_\" and default examine address for \"x\"\n\
16092 are set to the address of the last breakpoint listed unless the command\n\
16093 is prefixed with \"server \".\n\n\
16094 Convenience variable \"$bpnum\" contains the number of the last\n\
16095 breakpoint set."));
16096
16097   add_info_alias ("b", "breakpoints", 1);
16098
16099   if (xdb_commands)
16100     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16101 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16102 The \"Type\" column indicates one of:\n\
16103 \tbreakpoint     - normal breakpoint\n\
16104 \twatchpoint     - watchpoint\n\
16105 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16106 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16107 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16108 address and file/line number respectively.\n\
16109 \n\
16110 Convenience variable \"$_\" and default examine address for \"x\"\n\
16111 are set to the address of the last breakpoint listed unless the command\n\
16112 is prefixed with \"server \".\n\n\
16113 Convenience variable \"$bpnum\" contains the number of the last\n\
16114 breakpoint set."));
16115
16116   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16117 Status of all breakpoints, or breakpoint number NUMBER.\n\
16118 The \"Type\" column indicates one of:\n\
16119 \tbreakpoint     - normal breakpoint\n\
16120 \twatchpoint     - watchpoint\n\
16121 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16122 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16123 \tuntil          - internal breakpoint used by the \"until\" command\n\
16124 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16125 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16126 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16127 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16128 address and file/line number respectively.\n\
16129 \n\
16130 Convenience variable \"$_\" and default examine address for \"x\"\n\
16131 are set to the address of the last breakpoint listed unless the command\n\
16132 is prefixed with \"server \".\n\n\
16133 Convenience variable \"$bpnum\" contains the number of the last\n\
16134 breakpoint set."),
16135            &maintenanceinfolist);
16136
16137   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16138 Set catchpoints to catch events."),
16139                   &catch_cmdlist, "catch ",
16140                   0/*allow-unknown*/, &cmdlist);
16141
16142   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16143 Set temporary catchpoints to catch events."),
16144                   &tcatch_cmdlist, "tcatch ",
16145                   0/*allow-unknown*/, &cmdlist);
16146
16147   add_catch_command ("fork", _("Catch calls to fork."),
16148                      catch_fork_command_1,
16149                      NULL,
16150                      (void *) (uintptr_t) catch_fork_permanent,
16151                      (void *) (uintptr_t) catch_fork_temporary);
16152   add_catch_command ("vfork", _("Catch calls to vfork."),
16153                      catch_fork_command_1,
16154                      NULL,
16155                      (void *) (uintptr_t) catch_vfork_permanent,
16156                      (void *) (uintptr_t) catch_vfork_temporary);
16157   add_catch_command ("exec", _("Catch calls to exec."),
16158                      catch_exec_command_1,
16159                      NULL,
16160                      CATCH_PERMANENT,
16161                      CATCH_TEMPORARY);
16162   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16163 Usage: catch load [REGEX]\n\
16164 If REGEX is given, only stop for libraries matching the regular expression."),
16165                      catch_load_command_1,
16166                      NULL,
16167                      CATCH_PERMANENT,
16168                      CATCH_TEMPORARY);
16169   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16170 Usage: catch unload [REGEX]\n\
16171 If REGEX is given, only stop for libraries matching the regular expression."),
16172                      catch_unload_command_1,
16173                      NULL,
16174                      CATCH_PERMANENT,
16175                      CATCH_TEMPORARY);
16176   add_catch_command ("syscall", _("\
16177 Catch system calls by their names and/or numbers.\n\
16178 Arguments say which system calls to catch.  If no arguments\n\
16179 are given, every system call will be caught.\n\
16180 Arguments, if given, should be one or more system call names\n\
16181 (if your system supports that), or system call numbers."),
16182                      catch_syscall_command_1,
16183                      catch_syscall_completer,
16184                      CATCH_PERMANENT,
16185                      CATCH_TEMPORARY);
16186
16187   c = add_com ("watch", class_breakpoint, watch_command, _("\
16188 Set a watchpoint for an expression.\n\
16189 Usage: watch [-l|-location] EXPRESSION\n\
16190 A watchpoint stops execution of your program whenever the value of\n\
16191 an expression changes.\n\
16192 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16193 the memory to which it refers."));
16194   set_cmd_completer (c, expression_completer);
16195
16196   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16197 Set a read watchpoint for an expression.\n\
16198 Usage: rwatch [-l|-location] EXPRESSION\n\
16199 A watchpoint stops execution of your program whenever the value of\n\
16200 an expression is read.\n\
16201 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16202 the memory to which it refers."));
16203   set_cmd_completer (c, expression_completer);
16204
16205   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16206 Set a watchpoint for an expression.\n\
16207 Usage: awatch [-l|-location] EXPRESSION\n\
16208 A watchpoint stops execution of your program whenever the value of\n\
16209 an expression is either read or written.\n\
16210 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16211 the memory to which it refers."));
16212   set_cmd_completer (c, expression_completer);
16213
16214   add_info ("watchpoints", watchpoints_info, _("\
16215 Status of specified watchpoints (all watchpoints if no argument)."));
16216
16217   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16218      respond to changes - contrary to the description.  */
16219   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16220                             &can_use_hw_watchpoints, _("\
16221 Set debugger's willingness to use watchpoint hardware."), _("\
16222 Show debugger's willingness to use watchpoint hardware."), _("\
16223 If zero, gdb will not use hardware for new watchpoints, even if\n\
16224 such is available.  (However, any hardware watchpoints that were\n\
16225 created before setting this to nonzero, will continue to use watchpoint\n\
16226 hardware.)"),
16227                             NULL,
16228                             show_can_use_hw_watchpoints,
16229                             &setlist, &showlist);
16230
16231   can_use_hw_watchpoints = 1;
16232
16233   /* Tracepoint manipulation commands.  */
16234
16235   c = add_com ("trace", class_breakpoint, trace_command, _("\
16236 Set a tracepoint at specified line or function.\n\
16237 \n"
16238 BREAK_ARGS_HELP ("trace") "\n\
16239 Do \"help tracepoints\" for info on other tracepoint commands."));
16240   set_cmd_completer (c, location_completer);
16241
16242   add_com_alias ("tp", "trace", class_alias, 0);
16243   add_com_alias ("tr", "trace", class_alias, 1);
16244   add_com_alias ("tra", "trace", class_alias, 1);
16245   add_com_alias ("trac", "trace", class_alias, 1);
16246
16247   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16248 Set a fast tracepoint at specified line or function.\n\
16249 \n"
16250 BREAK_ARGS_HELP ("ftrace") "\n\
16251 Do \"help tracepoints\" for info on other tracepoint commands."));
16252   set_cmd_completer (c, location_completer);
16253
16254   c = add_com ("strace", class_breakpoint, strace_command, _("\
16255 Set a static tracepoint at specified line, function or marker.\n\
16256 \n\
16257 strace [LOCATION] [if CONDITION]\n\
16258 LOCATION may be a line number, function name, \"*\" and an address,\n\
16259 or -m MARKER_ID.\n\
16260 If a line number is specified, probe the marker at start of code\n\
16261 for that line.  If a function is specified, probe the marker at start\n\
16262 of code for that function.  If an address is specified, probe the marker\n\
16263 at that exact address.  If a marker id is specified, probe the marker\n\
16264 with that name.  With no LOCATION, uses current execution address of\n\
16265 the selected stack frame.\n\
16266 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16267 This collects arbitrary user data passed in the probe point call to the\n\
16268 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16269 by printing the $_sdata variable like any other convenience variable.\n\
16270 \n\
16271 CONDITION is a boolean expression.\n\
16272 \n\
16273 Multiple tracepoints at one place are permitted, and useful if their\n\
16274 conditions are different.\n\
16275 \n\
16276 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16277 Do \"help tracepoints\" for info on other tracepoint commands."));
16278   set_cmd_completer (c, location_completer);
16279
16280   add_info ("tracepoints", tracepoints_info, _("\
16281 Status of specified tracepoints (all tracepoints if no argument).\n\
16282 Convenience variable \"$tpnum\" contains the number of the\n\
16283 last tracepoint set."));
16284
16285   add_info_alias ("tp", "tracepoints", 1);
16286
16287   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16288 Delete specified tracepoints.\n\
16289 Arguments are tracepoint numbers, separated by spaces.\n\
16290 No argument means delete all tracepoints."),
16291            &deletelist);
16292   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16293
16294   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16295 Disable specified tracepoints.\n\
16296 Arguments are tracepoint numbers, separated by spaces.\n\
16297 No argument means disable all tracepoints."),
16298            &disablelist);
16299   deprecate_cmd (c, "disable");
16300
16301   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16302 Enable specified tracepoints.\n\
16303 Arguments are tracepoint numbers, separated by spaces.\n\
16304 No argument means enable all tracepoints."),
16305            &enablelist);
16306   deprecate_cmd (c, "enable");
16307
16308   add_com ("passcount", class_trace, trace_pass_command, _("\
16309 Set the passcount for a tracepoint.\n\
16310 The trace will end when the tracepoint has been passed 'count' times.\n\
16311 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16312 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16313
16314   add_prefix_cmd ("save", class_breakpoint, save_command,
16315                   _("Save breakpoint definitions as a script."),
16316                   &save_cmdlist, "save ",
16317                   0/*allow-unknown*/, &cmdlist);
16318
16319   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16320 Save current breakpoint definitions as a script.\n\
16321 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16322 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16323 session to restore them."),
16324                &save_cmdlist);
16325   set_cmd_completer (c, filename_completer);
16326
16327   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16328 Save current tracepoint definitions as a script.\n\
16329 Use the 'source' command in another debug session to restore them."),
16330                &save_cmdlist);
16331   set_cmd_completer (c, filename_completer);
16332
16333   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16334   deprecate_cmd (c, "save tracepoints");
16335
16336   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16337 Breakpoint specific settings\n\
16338 Configure various breakpoint-specific variables such as\n\
16339 pending breakpoint behavior"),
16340                   &breakpoint_set_cmdlist, "set breakpoint ",
16341                   0/*allow-unknown*/, &setlist);
16342   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16343 Breakpoint specific settings\n\
16344 Configure various breakpoint-specific variables such as\n\
16345 pending breakpoint behavior"),
16346                   &breakpoint_show_cmdlist, "show breakpoint ",
16347                   0/*allow-unknown*/, &showlist);
16348
16349   add_setshow_auto_boolean_cmd ("pending", no_class,
16350                                 &pending_break_support, _("\
16351 Set debugger's behavior regarding pending breakpoints."), _("\
16352 Show debugger's behavior regarding pending breakpoints."), _("\
16353 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16354 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16355 an error.  If auto, an unrecognized breakpoint location results in a\n\
16356 user-query to see if a pending breakpoint should be created."),
16357                                 NULL,
16358                                 show_pending_break_support,
16359                                 &breakpoint_set_cmdlist,
16360                                 &breakpoint_show_cmdlist);
16361
16362   pending_break_support = AUTO_BOOLEAN_AUTO;
16363
16364   add_setshow_boolean_cmd ("auto-hw", no_class,
16365                            &automatic_hardware_breakpoints, _("\
16366 Set automatic usage of hardware breakpoints."), _("\
16367 Show automatic usage of hardware breakpoints."), _("\
16368 If set, the debugger will automatically use hardware breakpoints for\n\
16369 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16370 a warning will be emitted for such breakpoints."),
16371                            NULL,
16372                            show_automatic_hardware_breakpoints,
16373                            &breakpoint_set_cmdlist,
16374                            &breakpoint_show_cmdlist);
16375
16376   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16377                                 &always_inserted_mode, _("\
16378 Set mode for inserting breakpoints."), _("\
16379 Show mode for inserting breakpoints."), _("\
16380 When this mode is off, breakpoints are inserted in inferior when it is\n\
16381 resumed, and removed when execution stops.  When this mode is on,\n\
16382 breakpoints are inserted immediately and removed only when the user\n\
16383 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16384 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16385 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16386 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16387 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16388                                 NULL,
16389                                 &show_always_inserted_mode,
16390                                 &breakpoint_set_cmdlist,
16391                                 &breakpoint_show_cmdlist);
16392
16393   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16394                         condition_evaluation_enums,
16395                         &condition_evaluation_mode_1, _("\
16396 Set mode of breakpoint condition evaluation."), _("\
16397 Show mode of breakpoint condition evaluation."), _("\
16398 When this is set to \"host\", breakpoint conditions will be\n\
16399 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16400 breakpoint conditions will be downloaded to the target (if the target\n\
16401 supports such feature) and conditions will be evaluated on the target's side.\n\
16402 If this is set to \"auto\" (default), this will be automatically set to\n\
16403 \"target\" if it supports condition evaluation, otherwise it will\n\
16404 be set to \"gdb\""),
16405                            &set_condition_evaluation_mode,
16406                            &show_condition_evaluation_mode,
16407                            &breakpoint_set_cmdlist,
16408                            &breakpoint_show_cmdlist);
16409
16410   add_com ("break-range", class_breakpoint, break_range_command, _("\
16411 Set a breakpoint for an address range.\n\
16412 break-range START-LOCATION, END-LOCATION\n\
16413 where START-LOCATION and END-LOCATION can be one of the following:\n\
16414   LINENUM, for that line in the current file,\n\
16415   FILE:LINENUM, for that line in that file,\n\
16416   +OFFSET, for that number of lines after the current line\n\
16417            or the start of the range\n\
16418   FUNCTION, for the first line in that function,\n\
16419   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16420   *ADDRESS, for the instruction at that address.\n\
16421 \n\
16422 The breakpoint will stop execution of the inferior whenever it executes\n\
16423 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16424 range (including START-LOCATION and END-LOCATION)."));
16425
16426   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16427 Set a dynamic printf at specified line or function.\n\
16428 dprintf location,format string,arg1,arg2,...\n\
16429 location may be a line number, function name, or \"*\" and an address.\n\
16430 If a line number is specified, break at start of code for that line.\n\
16431 If a function is specified, break at start of code for that function.\n\
16432 "));
16433   set_cmd_completer (c, location_completer);
16434
16435   add_setshow_enum_cmd ("dprintf-style", class_support,
16436                         dprintf_style_enums, &dprintf_style, _("\
16437 Set the style of usage for dynamic printf."), _("\
16438 Show the style of usage for dynamic printf."), _("\
16439 This setting chooses how GDB will do a dynamic printf.\n\
16440 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16441 console, as with the \"printf\" command.\n\
16442 If the value is \"call\", the print is done by calling a function in your\n\
16443 program; by default printf(), but you can choose a different function or\n\
16444 output stream by setting dprintf-function and dprintf-channel."),
16445                         update_dprintf_commands, NULL,
16446                         &setlist, &showlist);
16447
16448   dprintf_function = xstrdup ("printf");
16449   add_setshow_string_cmd ("dprintf-function", class_support,
16450                           &dprintf_function, _("\
16451 Set the function to use for dynamic printf"), _("\
16452 Show the function to use for dynamic printf"), NULL,
16453                           update_dprintf_commands, NULL,
16454                           &setlist, &showlist);
16455
16456   dprintf_channel = xstrdup ("");
16457   add_setshow_string_cmd ("dprintf-channel", class_support,
16458                           &dprintf_channel, _("\
16459 Set the channel to use for dynamic printf"), _("\
16460 Show the channel to use for dynamic printf"), NULL,
16461                           update_dprintf_commands, NULL,
16462                           &setlist, &showlist);
16463
16464   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16465                            &disconnected_dprintf, _("\
16466 Set whether dprintf continues after GDB disconnects."), _("\
16467 Show whether dprintf continues after GDB disconnects."), _("\
16468 Use this to let dprintf commands continue to hit and produce output\n\
16469 even if GDB disconnects or detaches from the target."),
16470                            NULL,
16471                            NULL,
16472                            &setlist, &showlist);
16473
16474   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16475 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16476 (target agent only) This is useful for formatted output in user-defined commands."));
16477
16478   automatic_hardware_breakpoints = 1;
16479
16480   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16481 }