* Makefile.in (SFILES): Add break-catch-throw.c
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_RETHROW,
90   EX_EVENT_CATCH
91 };
92
93 /* Prototypes for local functions.  */
94
95 static void enable_delete_command (char *, int);
96
97 static void enable_once_command (char *, int);
98
99 static void enable_count_command (char *, int);
100
101 static void disable_command (char *, int);
102
103 static void enable_command (char *, int);
104
105 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
106                                                       void *),
107                                     void *);
108
109 static void ignore_command (char *, int);
110
111 static int breakpoint_re_set_one (void *);
112
113 static void breakpoint_re_set_default (struct breakpoint *);
114
115 static void create_sals_from_address_default (char **,
116                                               struct linespec_result *,
117                                               enum bptype, char *,
118                                               char **);
119
120 static void create_breakpoints_sal_default (struct gdbarch *,
121                                             struct linespec_result *,
122                                             struct linespec_sals *,
123                                             char *, char *, enum bptype,
124                                             enum bpdisp, int, int,
125                                             int,
126                                             const struct breakpoint_ops *,
127                                             int, int, int, unsigned);
128
129 static void decode_linespec_default (struct breakpoint *, char **,
130                                      struct symtabs_and_lines *);
131
132 static void clear_command (char *, int);
133
134 static void catch_command (char *, int);
135
136 static int can_use_hardware_watchpoint (struct value *);
137
138 static void break_command_1 (char *, int, int);
139
140 static void mention (struct breakpoint *);
141
142 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
143                                                                enum bptype,
144                                                                const struct breakpoint_ops *);
145 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
146                                                        const struct symtab_and_line *);
147
148 /* This function is used in gdbtk sources and thus can not be made
149    static.  */
150 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
151                                        struct symtab_and_line,
152                                        enum bptype,
153                                        const struct breakpoint_ops *);
154
155 static struct breakpoint *
156   momentary_breakpoint_from_master (struct breakpoint *orig,
157                                     enum bptype type,
158                                     const struct breakpoint_ops *ops);
159
160 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
161
162 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
163                                             CORE_ADDR bpaddr,
164                                             enum bptype bptype);
165
166 static void describe_other_breakpoints (struct gdbarch *,
167                                         struct program_space *, CORE_ADDR,
168                                         struct obj_section *, int);
169
170 static int breakpoint_address_match (struct address_space *aspace1,
171                                      CORE_ADDR addr1,
172                                      struct address_space *aspace2,
173                                      CORE_ADDR addr2);
174
175 static int watchpoint_locations_match (struct bp_location *loc1,
176                                        struct bp_location *loc2);
177
178 static int breakpoint_location_address_match (struct bp_location *bl,
179                                               struct address_space *aspace,
180                                               CORE_ADDR addr);
181
182 static void breakpoints_info (char *, int);
183
184 static void watchpoints_info (char *, int);
185
186 static int breakpoint_1 (char *, int, 
187                          int (*) (const struct breakpoint *));
188
189 static int breakpoint_cond_eval (void *);
190
191 static void cleanup_executing_breakpoints (void *);
192
193 static void commands_command (char *, int);
194
195 static void condition_command (char *, int);
196
197 typedef enum
198   {
199     mark_inserted,
200     mark_uninserted
201   }
202 insertion_state_t;
203
204 static int remove_breakpoint (struct bp_location *, insertion_state_t);
205 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
206
207 static enum print_stop_action print_bp_stop_message (bpstat bs);
208
209 static int watchpoint_check (void *);
210
211 static void maintenance_info_breakpoints (char *, int);
212
213 static int hw_breakpoint_used_count (void);
214
215 static int hw_watchpoint_use_count (struct breakpoint *);
216
217 static int hw_watchpoint_used_count_others (struct breakpoint *except,
218                                             enum bptype type,
219                                             int *other_type_used);
220
221 static void hbreak_command (char *, int);
222
223 static void thbreak_command (char *, int);
224
225 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
226                                     int count);
227
228 static void stop_command (char *arg, int from_tty);
229
230 static void stopin_command (char *arg, int from_tty);
231
232 static void stopat_command (char *arg, int from_tty);
233
234 static void tcatch_command (char *arg, int from_tty);
235
236 static void detach_single_step_breakpoints (void);
237
238 static int single_step_breakpoint_inserted_here_p (struct address_space *,
239                                                    CORE_ADDR pc);
240
241 static void free_bp_location (struct bp_location *loc);
242 static void incref_bp_location (struct bp_location *loc);
243 static void decref_bp_location (struct bp_location **loc);
244
245 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
246
247 static void update_global_location_list (int);
248
249 static void update_global_location_list_nothrow (int);
250
251 static int is_hardware_watchpoint (const struct breakpoint *bpt);
252
253 static void insert_breakpoint_locations (void);
254
255 static int syscall_catchpoint_p (struct breakpoint *b);
256
257 static void tracepoints_info (char *, int);
258
259 static void delete_trace_command (char *, int);
260
261 static void enable_trace_command (char *, int);
262
263 static void disable_trace_command (char *, int);
264
265 static void trace_pass_command (char *, int);
266
267 static void set_tracepoint_count (int num);
268
269 static int is_masked_watchpoint (const struct breakpoint *b);
270
271 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
272
273 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
274    otherwise.  */
275
276 static int strace_marker_p (struct breakpoint *b);
277
278 /* The abstract base class all breakpoint_ops structures inherit
279    from.  */
280 struct breakpoint_ops base_breakpoint_ops;
281
282 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
283    that are implemented on top of software or hardware breakpoints
284    (user breakpoints, internal and momentary breakpoints, etc.).  */
285 static struct breakpoint_ops bkpt_base_breakpoint_ops;
286
287 /* Internal breakpoints class type.  */
288 static struct breakpoint_ops internal_breakpoint_ops;
289
290 /* Momentary breakpoints class type.  */
291 static struct breakpoint_ops momentary_breakpoint_ops;
292
293 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
294 static struct breakpoint_ops longjmp_breakpoint_ops;
295
296 /* The breakpoint_ops structure to be used in regular user created
297    breakpoints.  */
298 struct breakpoint_ops bkpt_breakpoint_ops;
299
300 /* Breakpoints set on probes.  */
301 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
302
303 /* Dynamic printf class type.  */
304 static struct breakpoint_ops dprintf_breakpoint_ops;
305
306 /* The style in which to perform a dynamic printf.  This is a user
307    option because different output options have different tradeoffs;
308    if GDB does the printing, there is better error handling if there
309    is a problem with any of the arguments, but using an inferior
310    function lets you have special-purpose printers and sending of
311    output to the same place as compiled-in print functions.  */
312
313 static const char dprintf_style_gdb[] = "gdb";
314 static const char dprintf_style_call[] = "call";
315 static const char dprintf_style_agent[] = "agent";
316 static const char *const dprintf_style_enums[] = {
317   dprintf_style_gdb,
318   dprintf_style_call,
319   dprintf_style_agent,
320   NULL
321 };
322 static const char *dprintf_style = dprintf_style_gdb;
323
324 /* The function to use for dynamic printf if the preferred style is to
325    call into the inferior.  The value is simply a string that is
326    copied into the command, so it can be anything that GDB can
327    evaluate to a callable address, not necessarily a function name.  */
328
329 static char *dprintf_function = "";
330
331 /* The channel to use for dynamic printf if the preferred style is to
332    call into the inferior; if a nonempty string, it will be passed to
333    the call as the first argument, with the format string as the
334    second.  As with the dprintf function, this can be anything that
335    GDB knows how to evaluate, so in addition to common choices like
336    "stderr", this could be an app-specific expression like
337    "mystreams[curlogger]".  */
338
339 static char *dprintf_channel = "";
340
341 /* True if dprintf commands should continue to operate even if GDB
342    has disconnected.  */
343 static int disconnected_dprintf = 1;
344
345 /* A reference-counted struct command_line.  This lets multiple
346    breakpoints share a single command list.  */
347 struct counted_command_line
348 {
349   /* The reference count.  */
350   int refc;
351
352   /* The command list.  */
353   struct command_line *commands;
354 };
355
356 struct command_line *
357 breakpoint_commands (struct breakpoint *b)
358 {
359   return b->commands ? b->commands->commands : NULL;
360 }
361
362 /* Flag indicating that a command has proceeded the inferior past the
363    current breakpoint.  */
364
365 static int breakpoint_proceeded;
366
367 const char *
368 bpdisp_text (enum bpdisp disp)
369 {
370   /* NOTE: the following values are a part of MI protocol and
371      represent values of 'disp' field returned when inferior stops at
372      a breakpoint.  */
373   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
374
375   return bpdisps[(int) disp];
376 }
377
378 /* Prototypes for exported functions.  */
379 /* If FALSE, gdb will not use hardware support for watchpoints, even
380    if such is available.  */
381 static int can_use_hw_watchpoints;
382
383 static void
384 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
385                              struct cmd_list_element *c,
386                              const char *value)
387 {
388   fprintf_filtered (file,
389                     _("Debugger's willingness to use "
390                       "watchpoint hardware is %s.\n"),
391                     value);
392 }
393
394 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
395    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
396    for unrecognized breakpoint locations.
397    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
398 static enum auto_boolean pending_break_support;
399 static void
400 show_pending_break_support (struct ui_file *file, int from_tty,
401                             struct cmd_list_element *c,
402                             const char *value)
403 {
404   fprintf_filtered (file,
405                     _("Debugger's behavior regarding "
406                       "pending breakpoints is %s.\n"),
407                     value);
408 }
409
410 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
411    set with "break" but falling in read-only memory.
412    If 0, gdb will warn about such breakpoints, but won't automatically
413    use hardware breakpoints.  */
414 static int automatic_hardware_breakpoints;
415 static void
416 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
417                                      struct cmd_list_element *c,
418                                      const char *value)
419 {
420   fprintf_filtered (file,
421                     _("Automatic usage of hardware breakpoints is %s.\n"),
422                     value);
423 }
424
425 /* If on, gdb will keep breakpoints inserted even as inferior is
426    stopped, and immediately insert any new breakpoints.  If off, gdb
427    will insert breakpoints into inferior only when resuming it, and
428    will remove breakpoints upon stop.  If auto, GDB will behave as ON
429    if in non-stop mode, and as OFF if all-stop mode.*/
430
431 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
432
433 static void
434 show_always_inserted_mode (struct ui_file *file, int from_tty,
435                      struct cmd_list_element *c, const char *value)
436 {
437   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
438     fprintf_filtered (file,
439                       _("Always inserted breakpoint "
440                         "mode is %s (currently %s).\n"),
441                       value,
442                       breakpoints_always_inserted_mode () ? "on" : "off");
443   else
444     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
445                       value);
446 }
447
448 int
449 breakpoints_always_inserted_mode (void)
450 {
451   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
452           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
453 }
454
455 static const char condition_evaluation_both[] = "host or target";
456
457 /* Modes for breakpoint condition evaluation.  */
458 static const char condition_evaluation_auto[] = "auto";
459 static const char condition_evaluation_host[] = "host";
460 static const char condition_evaluation_target[] = "target";
461 static const char *const condition_evaluation_enums[] = {
462   condition_evaluation_auto,
463   condition_evaluation_host,
464   condition_evaluation_target,
465   NULL
466 };
467
468 /* Global that holds the current mode for breakpoint condition evaluation.  */
469 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
470
471 /* Global that we use to display information to the user (gets its value from
472    condition_evaluation_mode_1.  */
473 static const char *condition_evaluation_mode = condition_evaluation_auto;
474
475 /* Translate a condition evaluation mode MODE into either "host"
476    or "target".  This is used mostly to translate from "auto" to the
477    real setting that is being used.  It returns the translated
478    evaluation mode.  */
479
480 static const char *
481 translate_condition_evaluation_mode (const char *mode)
482 {
483   if (mode == condition_evaluation_auto)
484     {
485       if (target_supports_evaluation_of_breakpoint_conditions ())
486         return condition_evaluation_target;
487       else
488         return condition_evaluation_host;
489     }
490   else
491     return mode;
492 }
493
494 /* Discovers what condition_evaluation_auto translates to.  */
495
496 static const char *
497 breakpoint_condition_evaluation_mode (void)
498 {
499   return translate_condition_evaluation_mode (condition_evaluation_mode);
500 }
501
502 /* Return true if GDB should evaluate breakpoint conditions or false
503    otherwise.  */
504
505 static int
506 gdb_evaluates_breakpoint_condition_p (void)
507 {
508   const char *mode = breakpoint_condition_evaluation_mode ();
509
510   return (mode == condition_evaluation_host);
511 }
512
513 void _initialize_breakpoint (void);
514
515 /* Are we executing breakpoint commands?  */
516 static int executing_breakpoint_commands;
517
518 /* Are overlay event breakpoints enabled? */
519 static int overlay_events_enabled;
520
521 /* See description in breakpoint.h. */
522 int target_exact_watchpoints = 0;
523
524 /* Walk the following statement or block through all breakpoints.
525    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
526    current breakpoint.  */
527
528 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
529
530 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
531         for (B = breakpoint_chain;      \
532              B ? (TMP=B->next, 1): 0;   \
533              B = TMP)
534
535 /* Similar iterator for the low-level breakpoints.  SAFE variant is
536    not provided so update_global_location_list must not be called
537    while executing the block of ALL_BP_LOCATIONS.  */
538
539 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
540         for (BP_TMP = bp_location;                                      \
541              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
542              BP_TMP++)
543
544 /* Iterates through locations with address ADDRESS for the currently selected
545    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
546    to where the loop should start from.
547    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
548    appropriate location to start with.  */
549
550 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
551         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
552              BP_LOCP_TMP = BP_LOCP_START;                               \
553              BP_LOCP_START                                              \
554              && (BP_LOCP_TMP < bp_location + bp_location_count          \
555              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
556              BP_LOCP_TMP++)
557
558 /* Iterator for tracepoints only.  */
559
560 #define ALL_TRACEPOINTS(B)  \
561   for (B = breakpoint_chain; B; B = B->next)  \
562     if (is_tracepoint (B))
563
564 /* Chains of all breakpoints defined.  */
565
566 struct breakpoint *breakpoint_chain;
567
568 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
569
570 static struct bp_location **bp_location;
571
572 /* Number of elements of BP_LOCATION.  */
573
574 static unsigned bp_location_count;
575
576 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
577    ADDRESS for the current elements of BP_LOCATION which get a valid
578    result from bp_location_has_shadow.  You can use it for roughly
579    limiting the subrange of BP_LOCATION to scan for shadow bytes for
580    an address you need to read.  */
581
582 static CORE_ADDR bp_location_placed_address_before_address_max;
583
584 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
585    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
586    BP_LOCATION which get a valid result from bp_location_has_shadow.
587    You can use it for roughly limiting the subrange of BP_LOCATION to
588    scan for shadow bytes for an address you need to read.  */
589
590 static CORE_ADDR bp_location_shadow_len_after_address_max;
591
592 /* The locations that no longer correspond to any breakpoint, unlinked
593    from bp_location array, but for which a hit may still be reported
594    by a target.  */
595 VEC(bp_location_p) *moribund_locations = NULL;
596
597 /* Number of last breakpoint made.  */
598
599 static int breakpoint_count;
600
601 /* The value of `breakpoint_count' before the last command that
602    created breakpoints.  If the last (break-like) command created more
603    than one breakpoint, then the difference between BREAKPOINT_COUNT
604    and PREV_BREAKPOINT_COUNT is more than one.  */
605 static int prev_breakpoint_count;
606
607 /* Number of last tracepoint made.  */
608
609 static int tracepoint_count;
610
611 static struct cmd_list_element *breakpoint_set_cmdlist;
612 static struct cmd_list_element *breakpoint_show_cmdlist;
613 struct cmd_list_element *save_cmdlist;
614
615 /* Return whether a breakpoint is an active enabled breakpoint.  */
616 static int
617 breakpoint_enabled (struct breakpoint *b)
618 {
619   return (b->enable_state == bp_enabled);
620 }
621
622 /* Set breakpoint count to NUM.  */
623
624 static void
625 set_breakpoint_count (int num)
626 {
627   prev_breakpoint_count = breakpoint_count;
628   breakpoint_count = num;
629   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
630 }
631
632 /* Used by `start_rbreak_breakpoints' below, to record the current
633    breakpoint count before "rbreak" creates any breakpoint.  */
634 static int rbreak_start_breakpoint_count;
635
636 /* Called at the start an "rbreak" command to record the first
637    breakpoint made.  */
638
639 void
640 start_rbreak_breakpoints (void)
641 {
642   rbreak_start_breakpoint_count = breakpoint_count;
643 }
644
645 /* Called at the end of an "rbreak" command to record the last
646    breakpoint made.  */
647
648 void
649 end_rbreak_breakpoints (void)
650 {
651   prev_breakpoint_count = rbreak_start_breakpoint_count;
652 }
653
654 /* Used in run_command to zero the hit count when a new run starts.  */
655
656 void
657 clear_breakpoint_hit_counts (void)
658 {
659   struct breakpoint *b;
660
661   ALL_BREAKPOINTS (b)
662     b->hit_count = 0;
663 }
664
665 /* Allocate a new counted_command_line with reference count of 1.
666    The new structure owns COMMANDS.  */
667
668 static struct counted_command_line *
669 alloc_counted_command_line (struct command_line *commands)
670 {
671   struct counted_command_line *result
672     = xmalloc (sizeof (struct counted_command_line));
673
674   result->refc = 1;
675   result->commands = commands;
676   return result;
677 }
678
679 /* Increment reference count.  This does nothing if CMD is NULL.  */
680
681 static void
682 incref_counted_command_line (struct counted_command_line *cmd)
683 {
684   if (cmd)
685     ++cmd->refc;
686 }
687
688 /* Decrement reference count.  If the reference count reaches 0,
689    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
690    nothing if *CMDP is NULL.  */
691
692 static void
693 decref_counted_command_line (struct counted_command_line **cmdp)
694 {
695   if (*cmdp)
696     {
697       if (--(*cmdp)->refc == 0)
698         {
699           free_command_lines (&(*cmdp)->commands);
700           xfree (*cmdp);
701         }
702       *cmdp = NULL;
703     }
704 }
705
706 /* A cleanup function that calls decref_counted_command_line.  */
707
708 static void
709 do_cleanup_counted_command_line (void *arg)
710 {
711   decref_counted_command_line (arg);
712 }
713
714 /* Create a cleanup that calls decref_counted_command_line on the
715    argument.  */
716
717 static struct cleanup *
718 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
719 {
720   return make_cleanup (do_cleanup_counted_command_line, cmdp);
721 }
722
723 \f
724 /* Return the breakpoint with the specified number, or NULL
725    if the number does not refer to an existing breakpoint.  */
726
727 struct breakpoint *
728 get_breakpoint (int num)
729 {
730   struct breakpoint *b;
731
732   ALL_BREAKPOINTS (b)
733     if (b->number == num)
734       return b;
735   
736   return NULL;
737 }
738
739 \f
740
741 /* Mark locations as "conditions have changed" in case the target supports
742    evaluating conditions on its side.  */
743
744 static void
745 mark_breakpoint_modified (struct breakpoint *b)
746 {
747   struct bp_location *loc;
748
749   /* This is only meaningful if the target is
750      evaluating conditions and if the user has
751      opted for condition evaluation on the target's
752      side.  */
753   if (gdb_evaluates_breakpoint_condition_p ()
754       || !target_supports_evaluation_of_breakpoint_conditions ())
755     return;
756
757   if (!is_breakpoint (b))
758     return;
759
760   for (loc = b->loc; loc; loc = loc->next)
761     loc->condition_changed = condition_modified;
762 }
763
764 /* Mark location as "conditions have changed" in case the target supports
765    evaluating conditions on its side.  */
766
767 static void
768 mark_breakpoint_location_modified (struct bp_location *loc)
769 {
770   /* This is only meaningful if the target is
771      evaluating conditions and if the user has
772      opted for condition evaluation on the target's
773      side.  */
774   if (gdb_evaluates_breakpoint_condition_p ()
775       || !target_supports_evaluation_of_breakpoint_conditions ())
776
777     return;
778
779   if (!is_breakpoint (loc->owner))
780     return;
781
782   loc->condition_changed = condition_modified;
783 }
784
785 /* Sets the condition-evaluation mode using the static global
786    condition_evaluation_mode.  */
787
788 static void
789 set_condition_evaluation_mode (char *args, int from_tty,
790                                struct cmd_list_element *c)
791 {
792   const char *old_mode, *new_mode;
793
794   if ((condition_evaluation_mode_1 == condition_evaluation_target)
795       && !target_supports_evaluation_of_breakpoint_conditions ())
796     {
797       condition_evaluation_mode_1 = condition_evaluation_mode;
798       warning (_("Target does not support breakpoint condition evaluation.\n"
799                  "Using host evaluation mode instead."));
800       return;
801     }
802
803   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
804   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
805
806   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
807      settings was "auto".  */
808   condition_evaluation_mode = condition_evaluation_mode_1;
809
810   /* Only update the mode if the user picked a different one.  */
811   if (new_mode != old_mode)
812     {
813       struct bp_location *loc, **loc_tmp;
814       /* If the user switched to a different evaluation mode, we
815          need to synch the changes with the target as follows:
816
817          "host" -> "target": Send all (valid) conditions to the target.
818          "target" -> "host": Remove all the conditions from the target.
819       */
820
821       if (new_mode == condition_evaluation_target)
822         {
823           /* Mark everything modified and synch conditions with the
824              target.  */
825           ALL_BP_LOCATIONS (loc, loc_tmp)
826             mark_breakpoint_location_modified (loc);
827         }
828       else
829         {
830           /* Manually mark non-duplicate locations to synch conditions
831              with the target.  We do this to remove all the conditions the
832              target knows about.  */
833           ALL_BP_LOCATIONS (loc, loc_tmp)
834             if (is_breakpoint (loc->owner) && loc->inserted)
835               loc->needs_update = 1;
836         }
837
838       /* Do the update.  */
839       update_global_location_list (1);
840     }
841
842   return;
843 }
844
845 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
846    what "auto" is translating to.  */
847
848 static void
849 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
850                                 struct cmd_list_element *c, const char *value)
851 {
852   if (condition_evaluation_mode == condition_evaluation_auto)
853     fprintf_filtered (file,
854                       _("Breakpoint condition evaluation "
855                         "mode is %s (currently %s).\n"),
856                       value,
857                       breakpoint_condition_evaluation_mode ());
858   else
859     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
860                       value);
861 }
862
863 /* A comparison function for bp_location AP and BP that is used by
864    bsearch.  This comparison function only cares about addresses, unlike
865    the more general bp_location_compare function.  */
866
867 static int
868 bp_location_compare_addrs (const void *ap, const void *bp)
869 {
870   struct bp_location *a = *(void **) ap;
871   struct bp_location *b = *(void **) bp;
872
873   if (a->address == b->address)
874     return 0;
875   else
876     return ((a->address > b->address) - (a->address < b->address));
877 }
878
879 /* Helper function to skip all bp_locations with addresses
880    less than ADDRESS.  It returns the first bp_location that
881    is greater than or equal to ADDRESS.  If none is found, just
882    return NULL.  */
883
884 static struct bp_location **
885 get_first_locp_gte_addr (CORE_ADDR address)
886 {
887   struct bp_location dummy_loc;
888   struct bp_location *dummy_locp = &dummy_loc;
889   struct bp_location **locp_found = NULL;
890
891   /* Initialize the dummy location's address field.  */
892   memset (&dummy_loc, 0, sizeof (struct bp_location));
893   dummy_loc.address = address;
894
895   /* Find a close match to the first location at ADDRESS.  */
896   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
897                         sizeof (struct bp_location **),
898                         bp_location_compare_addrs);
899
900   /* Nothing was found, nothing left to do.  */
901   if (locp_found == NULL)
902     return NULL;
903
904   /* We may have found a location that is at ADDRESS but is not the first in the
905      location's list.  Go backwards (if possible) and locate the first one.  */
906   while ((locp_found - 1) >= bp_location
907          && (*(locp_found - 1))->address == address)
908     locp_found--;
909
910   return locp_found;
911 }
912
913 void
914 set_breakpoint_condition (struct breakpoint *b, char *exp,
915                           int from_tty)
916 {
917   xfree (b->cond_string);
918   b->cond_string = NULL;
919
920   if (is_watchpoint (b))
921     {
922       struct watchpoint *w = (struct watchpoint *) b;
923
924       xfree (w->cond_exp);
925       w->cond_exp = NULL;
926     }
927   else
928     {
929       struct bp_location *loc;
930
931       for (loc = b->loc; loc; loc = loc->next)
932         {
933           xfree (loc->cond);
934           loc->cond = NULL;
935
936           /* No need to free the condition agent expression
937              bytecode (if we have one).  We will handle this
938              when we go through update_global_location_list.  */
939         }
940     }
941
942   if (*exp == 0)
943     {
944       if (from_tty)
945         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
946     }
947   else
948     {
949       const char *arg = exp;
950
951       /* I don't know if it matters whether this is the string the user
952          typed in or the decompiled expression.  */
953       b->cond_string = xstrdup (arg);
954       b->condition_not_parsed = 0;
955
956       if (is_watchpoint (b))
957         {
958           struct watchpoint *w = (struct watchpoint *) b;
959
960           innermost_block = NULL;
961           arg = exp;
962           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
963           if (*arg)
964             error (_("Junk at end of expression"));
965           w->cond_exp_valid_block = innermost_block;
966         }
967       else
968         {
969           struct bp_location *loc;
970
971           for (loc = b->loc; loc; loc = loc->next)
972             {
973               arg = exp;
974               loc->cond =
975                 parse_exp_1 (&arg, loc->address,
976                              block_for_pc (loc->address), 0);
977               if (*arg)
978                 error (_("Junk at end of expression"));
979             }
980         }
981     }
982   mark_breakpoint_modified (b);
983
984   observer_notify_breakpoint_modified (b);
985 }
986
987 /* Completion for the "condition" command.  */
988
989 static VEC (char_ptr) *
990 condition_completer (struct cmd_list_element *cmd,
991                      const char *text, const char *word)
992 {
993   const char *space;
994
995   text = skip_spaces_const (text);
996   space = skip_to_space_const (text);
997   if (*space == '\0')
998     {
999       int len;
1000       struct breakpoint *b;
1001       VEC (char_ptr) *result = NULL;
1002
1003       if (text[0] == '$')
1004         {
1005           /* We don't support completion of history indices.  */
1006           if (isdigit (text[1]))
1007             return NULL;
1008           return complete_internalvar (&text[1]);
1009         }
1010
1011       /* We're completing the breakpoint number.  */
1012       len = strlen (text);
1013
1014       ALL_BREAKPOINTS (b)
1015       {
1016         int single = b->loc->next == NULL;
1017         struct bp_location *loc;
1018         int count = 1;
1019
1020         for (loc = b->loc; loc; loc = loc->next)
1021           {
1022             char location[50];
1023
1024             if (single)
1025               xsnprintf (location, sizeof (location), "%d", b->number);
1026             else
1027               xsnprintf (location, sizeof (location),  "%d.%d", b->number,
1028                          count);
1029
1030             if (strncmp (location, text, len) == 0)
1031               VEC_safe_push (char_ptr, result, xstrdup (location));
1032
1033             ++count;
1034           }
1035       }
1036
1037       return result;
1038     }
1039
1040   /* We're completing the expression part.  */
1041   text = skip_spaces_const (space);
1042   return expression_completer (cmd, text, word);
1043 }
1044
1045 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1046
1047 static void
1048 condition_command (char *arg, int from_tty)
1049 {
1050   struct breakpoint *b;
1051   char *p;
1052   int bnum;
1053
1054   if (arg == 0)
1055     error_no_arg (_("breakpoint number"));
1056
1057   p = arg;
1058   bnum = get_number (&p);
1059   if (bnum == 0)
1060     error (_("Bad breakpoint argument: '%s'"), arg);
1061
1062   ALL_BREAKPOINTS (b)
1063     if (b->number == bnum)
1064       {
1065         /* Check if this breakpoint has a Python object assigned to
1066            it, and if it has a definition of the "stop"
1067            method.  This method and conditions entered into GDB from
1068            the CLI are mutually exclusive.  */
1069         if (b->py_bp_object
1070             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1071           error (_("Cannot set a condition where a Python 'stop' "
1072                    "method has been defined in the breakpoint."));
1073         set_breakpoint_condition (b, p, from_tty);
1074
1075         if (is_breakpoint (b))
1076           update_global_location_list (1);
1077
1078         return;
1079       }
1080
1081   error (_("No breakpoint number %d."), bnum);
1082 }
1083
1084 /* Check that COMMAND do not contain commands that are suitable
1085    only for tracepoints and not suitable for ordinary breakpoints.
1086    Throw if any such commands is found.  */
1087
1088 static void
1089 check_no_tracepoint_commands (struct command_line *commands)
1090 {
1091   struct command_line *c;
1092
1093   for (c = commands; c; c = c->next)
1094     {
1095       int i;
1096
1097       if (c->control_type == while_stepping_control)
1098         error (_("The 'while-stepping' command can "
1099                  "only be used for tracepoints"));
1100
1101       for (i = 0; i < c->body_count; ++i)
1102         check_no_tracepoint_commands ((c->body_list)[i]);
1103
1104       /* Not that command parsing removes leading whitespace and comment
1105          lines and also empty lines.  So, we only need to check for
1106          command directly.  */
1107       if (strstr (c->line, "collect ") == c->line)
1108         error (_("The 'collect' command can only be used for tracepoints"));
1109
1110       if (strstr (c->line, "teval ") == c->line)
1111         error (_("The 'teval' command can only be used for tracepoints"));
1112     }
1113 }
1114
1115 /* Encapsulate tests for different types of tracepoints.  */
1116
1117 static int
1118 is_tracepoint_type (enum bptype type)
1119 {
1120   return (type == bp_tracepoint
1121           || type == bp_fast_tracepoint
1122           || type == bp_static_tracepoint);
1123 }
1124
1125 int
1126 is_tracepoint (const struct breakpoint *b)
1127 {
1128   return is_tracepoint_type (b->type);
1129 }
1130
1131 /* A helper function that validates that COMMANDS are valid for a
1132    breakpoint.  This function will throw an exception if a problem is
1133    found.  */
1134
1135 static void
1136 validate_commands_for_breakpoint (struct breakpoint *b,
1137                                   struct command_line *commands)
1138 {
1139   if (is_tracepoint (b))
1140     {
1141       struct tracepoint *t = (struct tracepoint *) b;
1142       struct command_line *c;
1143       struct command_line *while_stepping = 0;
1144
1145       /* Reset the while-stepping step count.  The previous commands
1146          might have included a while-stepping action, while the new
1147          ones might not.  */
1148       t->step_count = 0;
1149
1150       /* We need to verify that each top-level element of commands is
1151          valid for tracepoints, that there's at most one
1152          while-stepping element, and that the while-stepping's body
1153          has valid tracing commands excluding nested while-stepping.
1154          We also need to validate the tracepoint action line in the
1155          context of the tracepoint --- validate_actionline actually
1156          has side effects, like setting the tracepoint's
1157          while-stepping STEP_COUNT, in addition to checking if the
1158          collect/teval actions parse and make sense in the
1159          tracepoint's context.  */
1160       for (c = commands; c; c = c->next)
1161         {
1162           if (c->control_type == while_stepping_control)
1163             {
1164               if (b->type == bp_fast_tracepoint)
1165                 error (_("The 'while-stepping' command "
1166                          "cannot be used for fast tracepoint"));
1167               else if (b->type == bp_static_tracepoint)
1168                 error (_("The 'while-stepping' command "
1169                          "cannot be used for static tracepoint"));
1170
1171               if (while_stepping)
1172                 error (_("The 'while-stepping' command "
1173                          "can be used only once"));
1174               else
1175                 while_stepping = c;
1176             }
1177
1178           validate_actionline (c->line, b);
1179         }
1180       if (while_stepping)
1181         {
1182           struct command_line *c2;
1183
1184           gdb_assert (while_stepping->body_count == 1);
1185           c2 = while_stepping->body_list[0];
1186           for (; c2; c2 = c2->next)
1187             {
1188               if (c2->control_type == while_stepping_control)
1189                 error (_("The 'while-stepping' command cannot be nested"));
1190             }
1191         }
1192     }
1193   else
1194     {
1195       check_no_tracepoint_commands (commands);
1196     }
1197 }
1198
1199 /* Return a vector of all the static tracepoints set at ADDR.  The
1200    caller is responsible for releasing the vector.  */
1201
1202 VEC(breakpoint_p) *
1203 static_tracepoints_here (CORE_ADDR addr)
1204 {
1205   struct breakpoint *b;
1206   VEC(breakpoint_p) *found = 0;
1207   struct bp_location *loc;
1208
1209   ALL_BREAKPOINTS (b)
1210     if (b->type == bp_static_tracepoint)
1211       {
1212         for (loc = b->loc; loc; loc = loc->next)
1213           if (loc->address == addr)
1214             VEC_safe_push(breakpoint_p, found, b);
1215       }
1216
1217   return found;
1218 }
1219
1220 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1221    validate that only allowed commands are included.  */
1222
1223 void
1224 breakpoint_set_commands (struct breakpoint *b, 
1225                          struct command_line *commands)
1226 {
1227   validate_commands_for_breakpoint (b, commands);
1228
1229   decref_counted_command_line (&b->commands);
1230   b->commands = alloc_counted_command_line (commands);
1231   observer_notify_breakpoint_modified (b);
1232 }
1233
1234 /* Set the internal `silent' flag on the breakpoint.  Note that this
1235    is not the same as the "silent" that may appear in the breakpoint's
1236    commands.  */
1237
1238 void
1239 breakpoint_set_silent (struct breakpoint *b, int silent)
1240 {
1241   int old_silent = b->silent;
1242
1243   b->silent = silent;
1244   if (old_silent != silent)
1245     observer_notify_breakpoint_modified (b);
1246 }
1247
1248 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1249    breakpoint work for any thread.  */
1250
1251 void
1252 breakpoint_set_thread (struct breakpoint *b, int thread)
1253 {
1254   int old_thread = b->thread;
1255
1256   b->thread = thread;
1257   if (old_thread != thread)
1258     observer_notify_breakpoint_modified (b);
1259 }
1260
1261 /* Set the task for this breakpoint.  If TASK is 0, make the
1262    breakpoint work for any task.  */
1263
1264 void
1265 breakpoint_set_task (struct breakpoint *b, int task)
1266 {
1267   int old_task = b->task;
1268
1269   b->task = task;
1270   if (old_task != task)
1271     observer_notify_breakpoint_modified (b);
1272 }
1273
1274 void
1275 check_tracepoint_command (char *line, void *closure)
1276 {
1277   struct breakpoint *b = closure;
1278
1279   validate_actionline (line, b);
1280 }
1281
1282 /* A structure used to pass information through
1283    map_breakpoint_numbers.  */
1284
1285 struct commands_info
1286 {
1287   /* True if the command was typed at a tty.  */
1288   int from_tty;
1289
1290   /* The breakpoint range spec.  */
1291   char *arg;
1292
1293   /* Non-NULL if the body of the commands are being read from this
1294      already-parsed command.  */
1295   struct command_line *control;
1296
1297   /* The command lines read from the user, or NULL if they have not
1298      yet been read.  */
1299   struct counted_command_line *cmd;
1300 };
1301
1302 /* A callback for map_breakpoint_numbers that sets the commands for
1303    commands_command.  */
1304
1305 static void
1306 do_map_commands_command (struct breakpoint *b, void *data)
1307 {
1308   struct commands_info *info = data;
1309
1310   if (info->cmd == NULL)
1311     {
1312       struct command_line *l;
1313
1314       if (info->control != NULL)
1315         l = copy_command_lines (info->control->body_list[0]);
1316       else
1317         {
1318           struct cleanup *old_chain;
1319           char *str;
1320
1321           str = xstrprintf (_("Type commands for breakpoint(s) "
1322                               "%s, one per line."),
1323                             info->arg);
1324
1325           old_chain = make_cleanup (xfree, str);
1326
1327           l = read_command_lines (str,
1328                                   info->from_tty, 1,
1329                                   (is_tracepoint (b)
1330                                    ? check_tracepoint_command : 0),
1331                                   b);
1332
1333           do_cleanups (old_chain);
1334         }
1335
1336       info->cmd = alloc_counted_command_line (l);
1337     }
1338
1339   /* If a breakpoint was on the list more than once, we don't need to
1340      do anything.  */
1341   if (b->commands != info->cmd)
1342     {
1343       validate_commands_for_breakpoint (b, info->cmd->commands);
1344       incref_counted_command_line (info->cmd);
1345       decref_counted_command_line (&b->commands);
1346       b->commands = info->cmd;
1347       observer_notify_breakpoint_modified (b);
1348     }
1349 }
1350
1351 static void
1352 commands_command_1 (char *arg, int from_tty, 
1353                     struct command_line *control)
1354 {
1355   struct cleanup *cleanups;
1356   struct commands_info info;
1357
1358   info.from_tty = from_tty;
1359   info.control = control;
1360   info.cmd = NULL;
1361   /* If we read command lines from the user, then `info' will hold an
1362      extra reference to the commands that we must clean up.  */
1363   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1364
1365   if (arg == NULL || !*arg)
1366     {
1367       if (breakpoint_count - prev_breakpoint_count > 1)
1368         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1369                           breakpoint_count);
1370       else if (breakpoint_count > 0)
1371         arg = xstrprintf ("%d", breakpoint_count);
1372       else
1373         {
1374           /* So that we don't try to free the incoming non-NULL
1375              argument in the cleanup below.  Mapping breakpoint
1376              numbers will fail in this case.  */
1377           arg = NULL;
1378         }
1379     }
1380   else
1381     /* The command loop has some static state, so we need to preserve
1382        our argument.  */
1383     arg = xstrdup (arg);
1384
1385   if (arg != NULL)
1386     make_cleanup (xfree, arg);
1387
1388   info.arg = arg;
1389
1390   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1391
1392   if (info.cmd == NULL)
1393     error (_("No breakpoints specified."));
1394
1395   do_cleanups (cleanups);
1396 }
1397
1398 static void
1399 commands_command (char *arg, int from_tty)
1400 {
1401   commands_command_1 (arg, from_tty, NULL);
1402 }
1403
1404 /* Like commands_command, but instead of reading the commands from
1405    input stream, takes them from an already parsed command structure.
1406
1407    This is used by cli-script.c to DTRT with breakpoint commands
1408    that are part of if and while bodies.  */
1409 enum command_control_type
1410 commands_from_control_command (char *arg, struct command_line *cmd)
1411 {
1412   commands_command_1 (arg, 0, cmd);
1413   return simple_control;
1414 }
1415
1416 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1417
1418 static int
1419 bp_location_has_shadow (struct bp_location *bl)
1420 {
1421   if (bl->loc_type != bp_loc_software_breakpoint)
1422     return 0;
1423   if (!bl->inserted)
1424     return 0;
1425   if (bl->target_info.shadow_len == 0)
1426     /* BL isn't valid, or doesn't shadow memory.  */
1427     return 0;
1428   return 1;
1429 }
1430
1431 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1432    by replacing any memory breakpoints with their shadowed contents.
1433
1434    If READBUF is not NULL, this buffer must not overlap with any of
1435    the breakpoint location's shadow_contents buffers.  Otherwise,
1436    a failed assertion internal error will be raised.
1437
1438    The range of shadowed area by each bp_location is:
1439      bl->address - bp_location_placed_address_before_address_max
1440      up to bl->address + bp_location_shadow_len_after_address_max
1441    The range we were requested to resolve shadows for is:
1442      memaddr ... memaddr + len
1443    Thus the safe cutoff boundaries for performance optimization are
1444      memaddr + len <= (bl->address
1445                        - bp_location_placed_address_before_address_max)
1446    and:
1447      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1448
1449 void
1450 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1451                         const gdb_byte *writebuf_org,
1452                         ULONGEST memaddr, LONGEST len)
1453 {
1454   /* Left boundary, right boundary and median element of our binary
1455      search.  */
1456   unsigned bc_l, bc_r, bc;
1457
1458   /* Find BC_L which is a leftmost element which may affect BUF
1459      content.  It is safe to report lower value but a failure to
1460      report higher one.  */
1461
1462   bc_l = 0;
1463   bc_r = bp_location_count;
1464   while (bc_l + 1 < bc_r)
1465     {
1466       struct bp_location *bl;
1467
1468       bc = (bc_l + bc_r) / 2;
1469       bl = bp_location[bc];
1470
1471       /* Check first BL->ADDRESS will not overflow due to the added
1472          constant.  Then advance the left boundary only if we are sure
1473          the BC element can in no way affect the BUF content (MEMADDR
1474          to MEMADDR + LEN range).
1475
1476          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1477          offset so that we cannot miss a breakpoint with its shadow
1478          range tail still reaching MEMADDR.  */
1479
1480       if ((bl->address + bp_location_shadow_len_after_address_max
1481            >= bl->address)
1482           && (bl->address + bp_location_shadow_len_after_address_max
1483               <= memaddr))
1484         bc_l = bc;
1485       else
1486         bc_r = bc;
1487     }
1488
1489   /* Due to the binary search above, we need to make sure we pick the
1490      first location that's at BC_L's address.  E.g., if there are
1491      multiple locations at the same address, BC_L may end up pointing
1492      at a duplicate location, and miss the "master"/"inserted"
1493      location.  Say, given locations L1, L2 and L3 at addresses A and
1494      B:
1495
1496       L1@A, L2@A, L3@B, ...
1497
1498      BC_L could end up pointing at location L2, while the "master"
1499      location could be L1.  Since the `loc->inserted' flag is only set
1500      on "master" locations, we'd forget to restore the shadow of L1
1501      and L2.  */
1502   while (bc_l > 0
1503          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1504     bc_l--;
1505
1506   /* Now do full processing of the found relevant range of elements.  */
1507
1508   for (bc = bc_l; bc < bp_location_count; bc++)
1509   {
1510     struct bp_location *bl = bp_location[bc];
1511     CORE_ADDR bp_addr = 0;
1512     int bp_size = 0;
1513     int bptoffset = 0;
1514
1515     /* bp_location array has BL->OWNER always non-NULL.  */
1516     if (bl->owner->type == bp_none)
1517       warning (_("reading through apparently deleted breakpoint #%d?"),
1518                bl->owner->number);
1519
1520     /* Performance optimization: any further element can no longer affect BUF
1521        content.  */
1522
1523     if (bl->address >= bp_location_placed_address_before_address_max
1524         && memaddr + len <= (bl->address
1525                              - bp_location_placed_address_before_address_max))
1526       break;
1527
1528     if (!bp_location_has_shadow (bl))
1529       continue;
1530     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1531                                    current_program_space->aspace, 0))
1532       continue;
1533
1534     /* Addresses and length of the part of the breakpoint that
1535        we need to copy.  */
1536     bp_addr = bl->target_info.placed_address;
1537     bp_size = bl->target_info.shadow_len;
1538
1539     if (bp_addr + bp_size <= memaddr)
1540       /* The breakpoint is entirely before the chunk of memory we
1541          are reading.  */
1542       continue;
1543
1544     if (bp_addr >= memaddr + len)
1545       /* The breakpoint is entirely after the chunk of memory we are
1546          reading.  */
1547       continue;
1548
1549     /* Offset within shadow_contents.  */
1550     if (bp_addr < memaddr)
1551       {
1552         /* Only copy the second part of the breakpoint.  */
1553         bp_size -= memaddr - bp_addr;
1554         bptoffset = memaddr - bp_addr;
1555         bp_addr = memaddr;
1556       }
1557
1558     if (bp_addr + bp_size > memaddr + len)
1559       {
1560         /* Only copy the first part of the breakpoint.  */
1561         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1562       }
1563
1564     if (readbuf != NULL)
1565       {
1566         /* Verify that the readbuf buffer does not overlap with
1567            the shadow_contents buffer.  */
1568         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1569                     || readbuf >= (bl->target_info.shadow_contents
1570                                    + bl->target_info.shadow_len));
1571
1572         /* Update the read buffer with this inserted breakpoint's
1573            shadow.  */
1574         memcpy (readbuf + bp_addr - memaddr,
1575                 bl->target_info.shadow_contents + bptoffset, bp_size);
1576       }
1577     else
1578       {
1579         struct gdbarch *gdbarch = bl->gdbarch;
1580         const unsigned char *bp;
1581         CORE_ADDR placed_address = bl->target_info.placed_address;
1582         int placed_size = bl->target_info.placed_size;
1583
1584         /* Update the shadow with what we want to write to memory.  */
1585         memcpy (bl->target_info.shadow_contents + bptoffset,
1586                 writebuf_org + bp_addr - memaddr, bp_size);
1587
1588         /* Determine appropriate breakpoint contents and size for this
1589            address.  */
1590         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1591
1592         /* Update the final write buffer with this inserted
1593            breakpoint's INSN.  */
1594         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1595       }
1596   }
1597 }
1598 \f
1599
1600 /* Return true if BPT is either a software breakpoint or a hardware
1601    breakpoint.  */
1602
1603 int
1604 is_breakpoint (const struct breakpoint *bpt)
1605 {
1606   return (bpt->type == bp_breakpoint
1607           || bpt->type == bp_hardware_breakpoint
1608           || bpt->type == bp_dprintf);
1609 }
1610
1611 /* Return true if BPT is of any hardware watchpoint kind.  */
1612
1613 static int
1614 is_hardware_watchpoint (const struct breakpoint *bpt)
1615 {
1616   return (bpt->type == bp_hardware_watchpoint
1617           || bpt->type == bp_read_watchpoint
1618           || bpt->type == bp_access_watchpoint);
1619 }
1620
1621 /* Return true if BPT is of any watchpoint kind, hardware or
1622    software.  */
1623
1624 int
1625 is_watchpoint (const struct breakpoint *bpt)
1626 {
1627   return (is_hardware_watchpoint (bpt)
1628           || bpt->type == bp_watchpoint);
1629 }
1630
1631 /* Returns true if the current thread and its running state are safe
1632    to evaluate or update watchpoint B.  Watchpoints on local
1633    expressions need to be evaluated in the context of the thread that
1634    was current when the watchpoint was created, and, that thread needs
1635    to be stopped to be able to select the correct frame context.
1636    Watchpoints on global expressions can be evaluated on any thread,
1637    and in any state.  It is presently left to the target allowing
1638    memory accesses when threads are running.  */
1639
1640 static int
1641 watchpoint_in_thread_scope (struct watchpoint *b)
1642 {
1643   return (b->base.pspace == current_program_space
1644           && (ptid_equal (b->watchpoint_thread, null_ptid)
1645               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1646                   && !is_executing (inferior_ptid))));
1647 }
1648
1649 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1650    associated bp_watchpoint_scope breakpoint.  */
1651
1652 static void
1653 watchpoint_del_at_next_stop (struct watchpoint *w)
1654 {
1655   struct breakpoint *b = &w->base;
1656
1657   if (b->related_breakpoint != b)
1658     {
1659       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1660       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1661       b->related_breakpoint->disposition = disp_del_at_next_stop;
1662       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1663       b->related_breakpoint = b;
1664     }
1665   b->disposition = disp_del_at_next_stop;
1666 }
1667
1668 /* Assuming that B is a watchpoint:
1669    - Reparse watchpoint expression, if REPARSE is non-zero
1670    - Evaluate expression and store the result in B->val
1671    - Evaluate the condition if there is one, and store the result
1672      in b->loc->cond.
1673    - Update the list of values that must be watched in B->loc.
1674
1675    If the watchpoint disposition is disp_del_at_next_stop, then do
1676    nothing.  If this is local watchpoint that is out of scope, delete
1677    it.
1678
1679    Even with `set breakpoint always-inserted on' the watchpoints are
1680    removed + inserted on each stop here.  Normal breakpoints must
1681    never be removed because they might be missed by a running thread
1682    when debugging in non-stop mode.  On the other hand, hardware
1683    watchpoints (is_hardware_watchpoint; processed here) are specific
1684    to each LWP since they are stored in each LWP's hardware debug
1685    registers.  Therefore, such LWP must be stopped first in order to
1686    be able to modify its hardware watchpoints.
1687
1688    Hardware watchpoints must be reset exactly once after being
1689    presented to the user.  It cannot be done sooner, because it would
1690    reset the data used to present the watchpoint hit to the user.  And
1691    it must not be done later because it could display the same single
1692    watchpoint hit during multiple GDB stops.  Note that the latter is
1693    relevant only to the hardware watchpoint types bp_read_watchpoint
1694    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1695    not user-visible - its hit is suppressed if the memory content has
1696    not changed.
1697
1698    The following constraints influence the location where we can reset
1699    hardware watchpoints:
1700
1701    * target_stopped_by_watchpoint and target_stopped_data_address are
1702      called several times when GDB stops.
1703
1704    [linux] 
1705    * Multiple hardware watchpoints can be hit at the same time,
1706      causing GDB to stop.  GDB only presents one hardware watchpoint
1707      hit at a time as the reason for stopping, and all the other hits
1708      are presented later, one after the other, each time the user
1709      requests the execution to be resumed.  Execution is not resumed
1710      for the threads still having pending hit event stored in
1711      LWP_INFO->STATUS.  While the watchpoint is already removed from
1712      the inferior on the first stop the thread hit event is kept being
1713      reported from its cached value by linux_nat_stopped_data_address
1714      until the real thread resume happens after the watchpoint gets
1715      presented and thus its LWP_INFO->STATUS gets reset.
1716
1717    Therefore the hardware watchpoint hit can get safely reset on the
1718    watchpoint removal from inferior.  */
1719
1720 static void
1721 update_watchpoint (struct watchpoint *b, int reparse)
1722 {
1723   int within_current_scope;
1724   struct frame_id saved_frame_id;
1725   int frame_saved;
1726
1727   /* If this is a local watchpoint, we only want to check if the
1728      watchpoint frame is in scope if the current thread is the thread
1729      that was used to create the watchpoint.  */
1730   if (!watchpoint_in_thread_scope (b))
1731     return;
1732
1733   if (b->base.disposition == disp_del_at_next_stop)
1734     return;
1735  
1736   frame_saved = 0;
1737
1738   /* Determine if the watchpoint is within scope.  */
1739   if (b->exp_valid_block == NULL)
1740     within_current_scope = 1;
1741   else
1742     {
1743       struct frame_info *fi = get_current_frame ();
1744       struct gdbarch *frame_arch = get_frame_arch (fi);
1745       CORE_ADDR frame_pc = get_frame_pc (fi);
1746
1747       /* If we're in a function epilogue, unwinding may not work
1748          properly, so do not attempt to recreate locations at this
1749          point.  See similar comments in watchpoint_check.  */
1750       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1751         return;
1752
1753       /* Save the current frame's ID so we can restore it after
1754          evaluating the watchpoint expression on its own frame.  */
1755       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1756          took a frame parameter, so that we didn't have to change the
1757          selected frame.  */
1758       frame_saved = 1;
1759       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1760
1761       fi = frame_find_by_id (b->watchpoint_frame);
1762       within_current_scope = (fi != NULL);
1763       if (within_current_scope)
1764         select_frame (fi);
1765     }
1766
1767   /* We don't free locations.  They are stored in the bp_location array
1768      and update_global_location_list will eventually delete them and
1769      remove breakpoints if needed.  */
1770   b->base.loc = NULL;
1771
1772   if (within_current_scope && reparse)
1773     {
1774       const char *s;
1775
1776       if (b->exp)
1777         {
1778           xfree (b->exp);
1779           b->exp = NULL;
1780         }
1781       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1782       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1783       /* If the meaning of expression itself changed, the old value is
1784          no longer relevant.  We don't want to report a watchpoint hit
1785          to the user when the old value and the new value may actually
1786          be completely different objects.  */
1787       value_free (b->val);
1788       b->val = NULL;
1789       b->val_valid = 0;
1790
1791       /* Note that unlike with breakpoints, the watchpoint's condition
1792          expression is stored in the breakpoint object, not in the
1793          locations (re)created below.  */
1794       if (b->base.cond_string != NULL)
1795         {
1796           if (b->cond_exp != NULL)
1797             {
1798               xfree (b->cond_exp);
1799               b->cond_exp = NULL;
1800             }
1801
1802           s = b->base.cond_string;
1803           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1804         }
1805     }
1806
1807   /* If we failed to parse the expression, for example because
1808      it refers to a global variable in a not-yet-loaded shared library,
1809      don't try to insert watchpoint.  We don't automatically delete
1810      such watchpoint, though, since failure to parse expression
1811      is different from out-of-scope watchpoint.  */
1812   if ( !target_has_execution)
1813     {
1814       /* Without execution, memory can't change.  No use to try and
1815          set watchpoint locations.  The watchpoint will be reset when
1816          the target gains execution, through breakpoint_re_set.  */
1817     }
1818   else if (within_current_scope && b->exp)
1819     {
1820       int pc = 0;
1821       struct value *val_chain, *v, *result, *next;
1822       struct program_space *frame_pspace;
1823
1824       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1825
1826       /* Avoid setting b->val if it's already set.  The meaning of
1827          b->val is 'the last value' user saw, and we should update
1828          it only if we reported that last value to user.  As it
1829          happens, the code that reports it updates b->val directly.
1830          We don't keep track of the memory value for masked
1831          watchpoints.  */
1832       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1833         {
1834           b->val = v;
1835           b->val_valid = 1;
1836         }
1837
1838       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1839
1840       /* Look at each value on the value chain.  */
1841       for (v = val_chain; v; v = value_next (v))
1842         {
1843           /* If it's a memory location, and GDB actually needed
1844              its contents to evaluate the expression, then we
1845              must watch it.  If the first value returned is
1846              still lazy, that means an error occurred reading it;
1847              watch it anyway in case it becomes readable.  */
1848           if (VALUE_LVAL (v) == lval_memory
1849               && (v == val_chain || ! value_lazy (v)))
1850             {
1851               struct type *vtype = check_typedef (value_type (v));
1852
1853               /* We only watch structs and arrays if user asked
1854                  for it explicitly, never if they just happen to
1855                  appear in the middle of some value chain.  */
1856               if (v == result
1857                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1858                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1859                 {
1860                   CORE_ADDR addr;
1861                   int type;
1862                   struct bp_location *loc, **tmp;
1863
1864                   addr = value_address (v);
1865                   type = hw_write;
1866                   if (b->base.type == bp_read_watchpoint)
1867                     type = hw_read;
1868                   else if (b->base.type == bp_access_watchpoint)
1869                     type = hw_access;
1870
1871                   loc = allocate_bp_location (&b->base);
1872                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1873                     ;
1874                   *tmp = loc;
1875                   loc->gdbarch = get_type_arch (value_type (v));
1876
1877                   loc->pspace = frame_pspace;
1878                   loc->address = addr;
1879                   loc->length = TYPE_LENGTH (value_type (v));
1880                   loc->watchpoint_type = type;
1881                 }
1882             }
1883         }
1884
1885       /* Change the type of breakpoint between hardware assisted or
1886          an ordinary watchpoint depending on the hardware support
1887          and free hardware slots.  REPARSE is set when the inferior
1888          is started.  */
1889       if (reparse)
1890         {
1891           int reg_cnt;
1892           enum bp_loc_type loc_type;
1893           struct bp_location *bl;
1894
1895           reg_cnt = can_use_hardware_watchpoint (val_chain);
1896
1897           if (reg_cnt)
1898             {
1899               int i, target_resources_ok, other_type_used;
1900               enum bptype type;
1901
1902               /* Use an exact watchpoint when there's only one memory region to be
1903                  watched, and only one debug register is needed to watch it.  */
1904               b->exact = target_exact_watchpoints && reg_cnt == 1;
1905
1906               /* We need to determine how many resources are already
1907                  used for all other hardware watchpoints plus this one
1908                  to see if we still have enough resources to also fit
1909                  this watchpoint in as well.  */
1910
1911               /* If this is a software watchpoint, we try to turn it
1912                  to a hardware one -- count resources as if B was of
1913                  hardware watchpoint type.  */
1914               type = b->base.type;
1915               if (type == bp_watchpoint)
1916                 type = bp_hardware_watchpoint;
1917
1918               /* This watchpoint may or may not have been placed on
1919                  the list yet at this point (it won't be in the list
1920                  if we're trying to create it for the first time,
1921                  through watch_command), so always account for it
1922                  manually.  */
1923
1924               /* Count resources used by all watchpoints except B.  */
1925               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1926
1927               /* Add in the resources needed for B.  */
1928               i += hw_watchpoint_use_count (&b->base);
1929
1930               target_resources_ok
1931                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1932               if (target_resources_ok <= 0)
1933                 {
1934                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1935
1936                   if (target_resources_ok == 0 && !sw_mode)
1937                     error (_("Target does not support this type of "
1938                              "hardware watchpoint."));
1939                   else if (target_resources_ok < 0 && !sw_mode)
1940                     error (_("There are not enough available hardware "
1941                              "resources for this watchpoint."));
1942
1943                   /* Downgrade to software watchpoint.  */
1944                   b->base.type = bp_watchpoint;
1945                 }
1946               else
1947                 {
1948                   /* If this was a software watchpoint, we've just
1949                      found we have enough resources to turn it to a
1950                      hardware watchpoint.  Otherwise, this is a
1951                      nop.  */
1952                   b->base.type = type;
1953                 }
1954             }
1955           else if (!b->base.ops->works_in_software_mode (&b->base))
1956             error (_("Expression cannot be implemented with "
1957                      "read/access watchpoint."));
1958           else
1959             b->base.type = bp_watchpoint;
1960
1961           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1962                       : bp_loc_hardware_watchpoint);
1963           for (bl = b->base.loc; bl; bl = bl->next)
1964             bl->loc_type = loc_type;
1965         }
1966
1967       for (v = val_chain; v; v = next)
1968         {
1969           next = value_next (v);
1970           if (v != b->val)
1971             value_free (v);
1972         }
1973
1974       /* If a software watchpoint is not watching any memory, then the
1975          above left it without any location set up.  But,
1976          bpstat_stop_status requires a location to be able to report
1977          stops, so make sure there's at least a dummy one.  */
1978       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1979         {
1980           struct breakpoint *base = &b->base;
1981           base->loc = allocate_bp_location (base);
1982           base->loc->pspace = frame_pspace;
1983           base->loc->address = -1;
1984           base->loc->length = -1;
1985           base->loc->watchpoint_type = -1;
1986         }
1987     }
1988   else if (!within_current_scope)
1989     {
1990       printf_filtered (_("\
1991 Watchpoint %d deleted because the program has left the block\n\
1992 in which its expression is valid.\n"),
1993                        b->base.number);
1994       watchpoint_del_at_next_stop (b);
1995     }
1996
1997   /* Restore the selected frame.  */
1998   if (frame_saved)
1999     select_frame (frame_find_by_id (saved_frame_id));
2000 }
2001
2002
2003 /* Returns 1 iff breakpoint location should be
2004    inserted in the inferior.  We don't differentiate the type of BL's owner
2005    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2006    breakpoint_ops is not defined, because in insert_bp_location,
2007    tracepoint's insert_location will not be called.  */
2008 static int
2009 should_be_inserted (struct bp_location *bl)
2010 {
2011   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2012     return 0;
2013
2014   if (bl->owner->disposition == disp_del_at_next_stop)
2015     return 0;
2016
2017   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2018     return 0;
2019
2020   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2021     return 0;
2022
2023   /* This is set for example, when we're attached to the parent of a
2024      vfork, and have detached from the child.  The child is running
2025      free, and we expect it to do an exec or exit, at which point the
2026      OS makes the parent schedulable again (and the target reports
2027      that the vfork is done).  Until the child is done with the shared
2028      memory region, do not insert breakpoints in the parent, otherwise
2029      the child could still trip on the parent's breakpoints.  Since
2030      the parent is blocked anyway, it won't miss any breakpoint.  */
2031   if (bl->pspace->breakpoints_not_allowed)
2032     return 0;
2033
2034   return 1;
2035 }
2036
2037 /* Same as should_be_inserted but does the check assuming
2038    that the location is not duplicated.  */
2039
2040 static int
2041 unduplicated_should_be_inserted (struct bp_location *bl)
2042 {
2043   int result;
2044   const int save_duplicate = bl->duplicate;
2045
2046   bl->duplicate = 0;
2047   result = should_be_inserted (bl);
2048   bl->duplicate = save_duplicate;
2049   return result;
2050 }
2051
2052 /* Parses a conditional described by an expression COND into an
2053    agent expression bytecode suitable for evaluation
2054    by the bytecode interpreter.  Return NULL if there was
2055    any error during parsing.  */
2056
2057 static struct agent_expr *
2058 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2059 {
2060   struct agent_expr *aexpr = NULL;
2061   volatile struct gdb_exception ex;
2062
2063   if (!cond)
2064     return NULL;
2065
2066   /* We don't want to stop processing, so catch any errors
2067      that may show up.  */
2068   TRY_CATCH (ex, RETURN_MASK_ERROR)
2069     {
2070       aexpr = gen_eval_for_expr (scope, cond);
2071     }
2072
2073   if (ex.reason < 0)
2074     {
2075       /* If we got here, it means the condition could not be parsed to a valid
2076          bytecode expression and thus can't be evaluated on the target's side.
2077          It's no use iterating through the conditions.  */
2078       return NULL;
2079     }
2080
2081   /* We have a valid agent expression.  */
2082   return aexpr;
2083 }
2084
2085 /* Based on location BL, create a list of breakpoint conditions to be
2086    passed on to the target.  If we have duplicated locations with different
2087    conditions, we will add such conditions to the list.  The idea is that the
2088    target will evaluate the list of conditions and will only notify GDB when
2089    one of them is true.  */
2090
2091 static void
2092 build_target_condition_list (struct bp_location *bl)
2093 {
2094   struct bp_location **locp = NULL, **loc2p;
2095   int null_condition_or_parse_error = 0;
2096   int modified = bl->needs_update;
2097   struct bp_location *loc;
2098
2099   /* This is only meaningful if the target is
2100      evaluating conditions and if the user has
2101      opted for condition evaluation on the target's
2102      side.  */
2103   if (gdb_evaluates_breakpoint_condition_p ()
2104       || !target_supports_evaluation_of_breakpoint_conditions ())
2105     return;
2106
2107   /* Do a first pass to check for locations with no assigned
2108      conditions or conditions that fail to parse to a valid agent expression
2109      bytecode.  If any of these happen, then it's no use to send conditions
2110      to the target since this location will always trigger and generate a
2111      response back to GDB.  */
2112   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2113     {
2114       loc = (*loc2p);
2115       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2116         {
2117           if (modified)
2118             {
2119               struct agent_expr *aexpr;
2120
2121               /* Re-parse the conditions since something changed.  In that
2122                  case we already freed the condition bytecodes (see
2123                  force_breakpoint_reinsertion).  We just
2124                  need to parse the condition to bytecodes again.  */
2125               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2126               loc->cond_bytecode = aexpr;
2127
2128               /* Check if we managed to parse the conditional expression
2129                  correctly.  If not, we will not send this condition
2130                  to the target.  */
2131               if (aexpr)
2132                 continue;
2133             }
2134
2135           /* If we have a NULL bytecode expression, it means something
2136              went wrong or we have a null condition expression.  */
2137           if (!loc->cond_bytecode)
2138             {
2139               null_condition_or_parse_error = 1;
2140               break;
2141             }
2142         }
2143     }
2144
2145   /* If any of these happened, it means we will have to evaluate the conditions
2146      for the location's address on gdb's side.  It is no use keeping bytecodes
2147      for all the other duplicate locations, thus we free all of them here.
2148
2149      This is so we have a finer control over which locations' conditions are
2150      being evaluated by GDB or the remote stub.  */
2151   if (null_condition_or_parse_error)
2152     {
2153       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2154         {
2155           loc = (*loc2p);
2156           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2157             {
2158               /* Only go as far as the first NULL bytecode is
2159                  located.  */
2160               if (!loc->cond_bytecode)
2161                 return;
2162
2163               free_agent_expr (loc->cond_bytecode);
2164               loc->cond_bytecode = NULL;
2165             }
2166         }
2167     }
2168
2169   /* No NULL conditions or failed bytecode generation.  Build a condition list
2170      for this location's address.  */
2171   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2172     {
2173       loc = (*loc2p);
2174       if (loc->cond
2175           && is_breakpoint (loc->owner)
2176           && loc->pspace->num == bl->pspace->num
2177           && loc->owner->enable_state == bp_enabled
2178           && loc->enabled)
2179         /* Add the condition to the vector.  This will be used later to send the
2180            conditions to the target.  */
2181         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2182                        loc->cond_bytecode);
2183     }
2184
2185   return;
2186 }
2187
2188 /* Parses a command described by string CMD into an agent expression
2189    bytecode suitable for evaluation by the bytecode interpreter.
2190    Return NULL if there was any error during parsing.  */
2191
2192 static struct agent_expr *
2193 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2194 {
2195   struct cleanup *old_cleanups = 0;
2196   struct expression *expr, **argvec;
2197   struct agent_expr *aexpr = NULL;
2198   volatile struct gdb_exception ex;
2199   const char *cmdrest;
2200   const char *format_start, *format_end;
2201   struct format_piece *fpieces;
2202   int nargs;
2203   struct gdbarch *gdbarch = get_current_arch ();
2204
2205   if (!cmd)
2206     return NULL;
2207
2208   cmdrest = cmd;
2209
2210   if (*cmdrest == ',')
2211     ++cmdrest;
2212   cmdrest = skip_spaces_const (cmdrest);
2213
2214   if (*cmdrest++ != '"')
2215     error (_("No format string following the location"));
2216
2217   format_start = cmdrest;
2218
2219   fpieces = parse_format_string (&cmdrest);
2220
2221   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2222
2223   format_end = cmdrest;
2224
2225   if (*cmdrest++ != '"')
2226     error (_("Bad format string, non-terminated '\"'."));
2227   
2228   cmdrest = skip_spaces_const (cmdrest);
2229
2230   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2231     error (_("Invalid argument syntax"));
2232
2233   if (*cmdrest == ',')
2234     cmdrest++;
2235   cmdrest = skip_spaces_const (cmdrest);
2236
2237   /* For each argument, make an expression.  */
2238
2239   argvec = (struct expression **) alloca (strlen (cmd)
2240                                          * sizeof (struct expression *));
2241
2242   nargs = 0;
2243   while (*cmdrest != '\0')
2244     {
2245       const char *cmd1;
2246
2247       cmd1 = cmdrest;
2248       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2249       argvec[nargs++] = expr;
2250       cmdrest = cmd1;
2251       if (*cmdrest == ',')
2252         ++cmdrest;
2253     }
2254
2255   /* We don't want to stop processing, so catch any errors
2256      that may show up.  */
2257   TRY_CATCH (ex, RETURN_MASK_ERROR)
2258     {
2259       aexpr = gen_printf (scope, gdbarch, 0, 0,
2260                           format_start, format_end - format_start,
2261                           fpieces, nargs, argvec);
2262     }
2263
2264   if (ex.reason < 0)
2265     {
2266       /* If we got here, it means the command could not be parsed to a valid
2267          bytecode expression and thus can't be evaluated on the target's side.
2268          It's no use iterating through the other commands.  */
2269       return NULL;
2270     }
2271
2272   do_cleanups (old_cleanups);
2273
2274   /* We have a valid agent expression, return it.  */
2275   return aexpr;
2276 }
2277
2278 /* Based on location BL, create a list of breakpoint commands to be
2279    passed on to the target.  If we have duplicated locations with
2280    different commands, we will add any such to the list.  */
2281
2282 static void
2283 build_target_command_list (struct bp_location *bl)
2284 {
2285   struct bp_location **locp = NULL, **loc2p;
2286   int null_command_or_parse_error = 0;
2287   int modified = bl->needs_update;
2288   struct bp_location *loc;
2289
2290   /* For now, limit to agent-style dprintf breakpoints.  */
2291   if (bl->owner->type != bp_dprintf
2292       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2293     return;
2294
2295   if (!target_can_run_breakpoint_commands ())
2296     return;
2297
2298   /* Do a first pass to check for locations with no assigned
2299      conditions or conditions that fail to parse to a valid agent expression
2300      bytecode.  If any of these happen, then it's no use to send conditions
2301      to the target since this location will always trigger and generate a
2302      response back to GDB.  */
2303   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2304     {
2305       loc = (*loc2p);
2306       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2307         {
2308           if (modified)
2309             {
2310               struct agent_expr *aexpr;
2311
2312               /* Re-parse the commands since something changed.  In that
2313                  case we already freed the command bytecodes (see
2314                  force_breakpoint_reinsertion).  We just
2315                  need to parse the command to bytecodes again.  */
2316               aexpr = parse_cmd_to_aexpr (bl->address,
2317                                           loc->owner->extra_string);
2318               loc->cmd_bytecode = aexpr;
2319
2320               if (!aexpr)
2321                 continue;
2322             }
2323
2324           /* If we have a NULL bytecode expression, it means something
2325              went wrong or we have a null command expression.  */
2326           if (!loc->cmd_bytecode)
2327             {
2328               null_command_or_parse_error = 1;
2329               break;
2330             }
2331         }
2332     }
2333
2334   /* If anything failed, then we're not doing target-side commands,
2335      and so clean up.  */
2336   if (null_command_or_parse_error)
2337     {
2338       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2339         {
2340           loc = (*loc2p);
2341           if (is_breakpoint (loc->owner)
2342               && loc->pspace->num == bl->pspace->num)
2343             {
2344               /* Only go as far as the first NULL bytecode is
2345                  located.  */
2346               if (!loc->cond_bytecode)
2347                 return;
2348
2349               free_agent_expr (loc->cond_bytecode);
2350               loc->cond_bytecode = NULL;
2351             }
2352         }
2353     }
2354
2355   /* No NULL commands or failed bytecode generation.  Build a command list
2356      for this location's address.  */
2357   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2358     {
2359       loc = (*loc2p);
2360       if (loc->owner->extra_string
2361           && is_breakpoint (loc->owner)
2362           && loc->pspace->num == bl->pspace->num
2363           && loc->owner->enable_state == bp_enabled
2364           && loc->enabled)
2365         /* Add the command to the vector.  This will be used later
2366            to send the commands to the target.  */
2367         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2368                        loc->cmd_bytecode);
2369     }
2370
2371   bl->target_info.persist = 0;
2372   /* Maybe flag this location as persistent.  */
2373   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2374     bl->target_info.persist = 1;
2375 }
2376
2377 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2378    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2379    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2380    Returns 0 for success, 1 if the bp_location type is not supported or
2381    -1 for failure.
2382
2383    NOTE drow/2003-09-09: This routine could be broken down to an
2384    object-style method for each breakpoint or catchpoint type.  */
2385 static int
2386 insert_bp_location (struct bp_location *bl,
2387                     struct ui_file *tmp_error_stream,
2388                     int *disabled_breaks,
2389                     int *hw_breakpoint_error,
2390                     int *hw_bp_error_explained_already)
2391 {
2392   int val = 0;
2393   char *hw_bp_err_string = NULL;
2394   struct gdb_exception e;
2395
2396   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2397     return 0;
2398
2399   /* Note we don't initialize bl->target_info, as that wipes out
2400      the breakpoint location's shadow_contents if the breakpoint
2401      is still inserted at that location.  This in turn breaks
2402      target_read_memory which depends on these buffers when
2403      a memory read is requested at the breakpoint location:
2404      Once the target_info has been wiped, we fail to see that
2405      we have a breakpoint inserted at that address and thus
2406      read the breakpoint instead of returning the data saved in
2407      the breakpoint location's shadow contents.  */
2408   bl->target_info.placed_address = bl->address;
2409   bl->target_info.placed_address_space = bl->pspace->aspace;
2410   bl->target_info.length = bl->length;
2411
2412   /* When working with target-side conditions, we must pass all the conditions
2413      for the same breakpoint address down to the target since GDB will not
2414      insert those locations.  With a list of breakpoint conditions, the target
2415      can decide when to stop and notify GDB.  */
2416
2417   if (is_breakpoint (bl->owner))
2418     {
2419       build_target_condition_list (bl);
2420       build_target_command_list (bl);
2421       /* Reset the modification marker.  */
2422       bl->needs_update = 0;
2423     }
2424
2425   if (bl->loc_type == bp_loc_software_breakpoint
2426       || bl->loc_type == bp_loc_hardware_breakpoint)
2427     {
2428       if (bl->owner->type != bp_hardware_breakpoint)
2429         {
2430           /* If the explicitly specified breakpoint type
2431              is not hardware breakpoint, check the memory map to see
2432              if the breakpoint address is in read only memory or not.
2433
2434              Two important cases are:
2435              - location type is not hardware breakpoint, memory
2436              is readonly.  We change the type of the location to
2437              hardware breakpoint.
2438              - location type is hardware breakpoint, memory is
2439              read-write.  This means we've previously made the
2440              location hardware one, but then the memory map changed,
2441              so we undo.
2442              
2443              When breakpoints are removed, remove_breakpoints will use
2444              location types we've just set here, the only possible
2445              problem is that memory map has changed during running
2446              program, but it's not going to work anyway with current
2447              gdb.  */
2448           struct mem_region *mr 
2449             = lookup_mem_region (bl->target_info.placed_address);
2450           
2451           if (mr)
2452             {
2453               if (automatic_hardware_breakpoints)
2454                 {
2455                   enum bp_loc_type new_type;
2456                   
2457                   if (mr->attrib.mode != MEM_RW)
2458                     new_type = bp_loc_hardware_breakpoint;
2459                   else 
2460                     new_type = bp_loc_software_breakpoint;
2461                   
2462                   if (new_type != bl->loc_type)
2463                     {
2464                       static int said = 0;
2465
2466                       bl->loc_type = new_type;
2467                       if (!said)
2468                         {
2469                           fprintf_filtered (gdb_stdout,
2470                                             _("Note: automatically using "
2471                                               "hardware breakpoints for "
2472                                               "read-only addresses.\n"));
2473                           said = 1;
2474                         }
2475                     }
2476                 }
2477               else if (bl->loc_type == bp_loc_software_breakpoint
2478                        && mr->attrib.mode != MEM_RW)        
2479                 warning (_("cannot set software breakpoint "
2480                            "at readonly address %s"),
2481                          paddress (bl->gdbarch, bl->address));
2482             }
2483         }
2484         
2485       /* First check to see if we have to handle an overlay.  */
2486       if (overlay_debugging == ovly_off
2487           || bl->section == NULL
2488           || !(section_is_overlay (bl->section)))
2489         {
2490           /* No overlay handling: just set the breakpoint.  */
2491           TRY_CATCH (e, RETURN_MASK_ALL)
2492             {
2493               val = bl->owner->ops->insert_location (bl);
2494             }
2495           if (e.reason < 0)
2496             {
2497               val = 1;
2498               hw_bp_err_string = (char *) e.message;
2499             }
2500         }
2501       else
2502         {
2503           /* This breakpoint is in an overlay section.
2504              Shall we set a breakpoint at the LMA?  */
2505           if (!overlay_events_enabled)
2506             {
2507               /* Yes -- overlay event support is not active, 
2508                  so we must try to set a breakpoint at the LMA.
2509                  This will not work for a hardware breakpoint.  */
2510               if (bl->loc_type == bp_loc_hardware_breakpoint)
2511                 warning (_("hardware breakpoint %d not supported in overlay!"),
2512                          bl->owner->number);
2513               else
2514                 {
2515                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2516                                                              bl->section);
2517                   /* Set a software (trap) breakpoint at the LMA.  */
2518                   bl->overlay_target_info = bl->target_info;
2519                   bl->overlay_target_info.placed_address = addr;
2520                   val = target_insert_breakpoint (bl->gdbarch,
2521                                                   &bl->overlay_target_info);
2522                   if (val != 0)
2523                     fprintf_unfiltered (tmp_error_stream,
2524                                         "Overlay breakpoint %d "
2525                                         "failed: in ROM?\n",
2526                                         bl->owner->number);
2527                 }
2528             }
2529           /* Shall we set a breakpoint at the VMA? */
2530           if (section_is_mapped (bl->section))
2531             {
2532               /* Yes.  This overlay section is mapped into memory.  */
2533               TRY_CATCH (e, RETURN_MASK_ALL)
2534                 {
2535                   val = bl->owner->ops->insert_location (bl);
2536                 }
2537               if (e.reason < 0)
2538                 {
2539                   val = 1;
2540                   hw_bp_err_string = (char *) e.message;
2541                 }
2542             }
2543           else
2544             {
2545               /* No.  This breakpoint will not be inserted.  
2546                  No error, but do not mark the bp as 'inserted'.  */
2547               return 0;
2548             }
2549         }
2550
2551       if (val)
2552         {
2553           /* Can't set the breakpoint.  */
2554           if (solib_name_from_address (bl->pspace, bl->address))
2555             {
2556               /* See also: disable_breakpoints_in_shlibs.  */
2557               val = 0;
2558               bl->shlib_disabled = 1;
2559               observer_notify_breakpoint_modified (bl->owner);
2560               if (!*disabled_breaks)
2561                 {
2562                   fprintf_unfiltered (tmp_error_stream, 
2563                                       "Cannot insert breakpoint %d.\n", 
2564                                       bl->owner->number);
2565                   fprintf_unfiltered (tmp_error_stream, 
2566                                       "Temporarily disabling shared "
2567                                       "library breakpoints:\n");
2568                 }
2569               *disabled_breaks = 1;
2570               fprintf_unfiltered (tmp_error_stream,
2571                                   "breakpoint #%d\n", bl->owner->number);
2572             }
2573           else
2574             {
2575               if (bl->loc_type == bp_loc_hardware_breakpoint)
2576                 {
2577                   *hw_breakpoint_error = 1;
2578                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2579                   fprintf_unfiltered (tmp_error_stream,
2580                                       "Cannot insert hardware breakpoint %d%s",
2581                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2582                   if (hw_bp_err_string)
2583                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2584                 }
2585               else
2586                 {
2587                   fprintf_unfiltered (tmp_error_stream, 
2588                                       "Cannot insert breakpoint %d.\n", 
2589                                       bl->owner->number);
2590                   fprintf_filtered (tmp_error_stream, 
2591                                     "Error accessing memory address ");
2592                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2593                                   tmp_error_stream);
2594                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2595                                     safe_strerror (val));
2596                 }
2597
2598             }
2599         }
2600       else
2601         bl->inserted = 1;
2602
2603       return val;
2604     }
2605
2606   else if (bl->loc_type == bp_loc_hardware_watchpoint
2607            /* NOTE drow/2003-09-08: This state only exists for removing
2608               watchpoints.  It's not clear that it's necessary...  */
2609            && bl->owner->disposition != disp_del_at_next_stop)
2610     {
2611       gdb_assert (bl->owner->ops != NULL
2612                   && bl->owner->ops->insert_location != NULL);
2613
2614       val = bl->owner->ops->insert_location (bl);
2615
2616       /* If trying to set a read-watchpoint, and it turns out it's not
2617          supported, try emulating one with an access watchpoint.  */
2618       if (val == 1 && bl->watchpoint_type == hw_read)
2619         {
2620           struct bp_location *loc, **loc_temp;
2621
2622           /* But don't try to insert it, if there's already another
2623              hw_access location that would be considered a duplicate
2624              of this one.  */
2625           ALL_BP_LOCATIONS (loc, loc_temp)
2626             if (loc != bl
2627                 && loc->watchpoint_type == hw_access
2628                 && watchpoint_locations_match (bl, loc))
2629               {
2630                 bl->duplicate = 1;
2631                 bl->inserted = 1;
2632                 bl->target_info = loc->target_info;
2633                 bl->watchpoint_type = hw_access;
2634                 val = 0;
2635                 break;
2636               }
2637
2638           if (val == 1)
2639             {
2640               bl->watchpoint_type = hw_access;
2641               val = bl->owner->ops->insert_location (bl);
2642
2643               if (val)
2644                 /* Back to the original value.  */
2645                 bl->watchpoint_type = hw_read;
2646             }
2647         }
2648
2649       bl->inserted = (val == 0);
2650     }
2651
2652   else if (bl->owner->type == bp_catchpoint)
2653     {
2654       gdb_assert (bl->owner->ops != NULL
2655                   && bl->owner->ops->insert_location != NULL);
2656
2657       val = bl->owner->ops->insert_location (bl);
2658       if (val)
2659         {
2660           bl->owner->enable_state = bp_disabled;
2661
2662           if (val == 1)
2663             warning (_("\
2664 Error inserting catchpoint %d: Your system does not support this type\n\
2665 of catchpoint."), bl->owner->number);
2666           else
2667             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2668         }
2669
2670       bl->inserted = (val == 0);
2671
2672       /* We've already printed an error message if there was a problem
2673          inserting this catchpoint, and we've disabled the catchpoint,
2674          so just return success.  */
2675       return 0;
2676     }
2677
2678   return 0;
2679 }
2680
2681 /* This function is called when program space PSPACE is about to be
2682    deleted.  It takes care of updating breakpoints to not reference
2683    PSPACE anymore.  */
2684
2685 void
2686 breakpoint_program_space_exit (struct program_space *pspace)
2687 {
2688   struct breakpoint *b, *b_temp;
2689   struct bp_location *loc, **loc_temp;
2690
2691   /* Remove any breakpoint that was set through this program space.  */
2692   ALL_BREAKPOINTS_SAFE (b, b_temp)
2693     {
2694       if (b->pspace == pspace)
2695         delete_breakpoint (b);
2696     }
2697
2698   /* Breakpoints set through other program spaces could have locations
2699      bound to PSPACE as well.  Remove those.  */
2700   ALL_BP_LOCATIONS (loc, loc_temp)
2701     {
2702       struct bp_location *tmp;
2703
2704       if (loc->pspace == pspace)
2705         {
2706           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2707           if (loc->owner->loc == loc)
2708             loc->owner->loc = loc->next;
2709           else
2710             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2711               if (tmp->next == loc)
2712                 {
2713                   tmp->next = loc->next;
2714                   break;
2715                 }
2716         }
2717     }
2718
2719   /* Now update the global location list to permanently delete the
2720      removed locations above.  */
2721   update_global_location_list (0);
2722 }
2723
2724 /* Make sure all breakpoints are inserted in inferior.
2725    Throws exception on any error.
2726    A breakpoint that is already inserted won't be inserted
2727    again, so calling this function twice is safe.  */
2728 void
2729 insert_breakpoints (void)
2730 {
2731   struct breakpoint *bpt;
2732
2733   ALL_BREAKPOINTS (bpt)
2734     if (is_hardware_watchpoint (bpt))
2735       {
2736         struct watchpoint *w = (struct watchpoint *) bpt;
2737
2738         update_watchpoint (w, 0 /* don't reparse.  */);
2739       }
2740
2741   update_global_location_list (1);
2742
2743   /* update_global_location_list does not insert breakpoints when
2744      always_inserted_mode is not enabled.  Explicitly insert them
2745      now.  */
2746   if (!breakpoints_always_inserted_mode ())
2747     insert_breakpoint_locations ();
2748 }
2749
2750 /* Invoke CALLBACK for each of bp_location.  */
2751
2752 void
2753 iterate_over_bp_locations (walk_bp_location_callback callback)
2754 {
2755   struct bp_location *loc, **loc_tmp;
2756
2757   ALL_BP_LOCATIONS (loc, loc_tmp)
2758     {
2759       callback (loc, NULL);
2760     }
2761 }
2762
2763 /* This is used when we need to synch breakpoint conditions between GDB and the
2764    target.  It is the case with deleting and disabling of breakpoints when using
2765    always-inserted mode.  */
2766
2767 static void
2768 update_inserted_breakpoint_locations (void)
2769 {
2770   struct bp_location *bl, **blp_tmp;
2771   int error_flag = 0;
2772   int val = 0;
2773   int disabled_breaks = 0;
2774   int hw_breakpoint_error = 0;
2775   int hw_bp_details_reported = 0;
2776
2777   struct ui_file *tmp_error_stream = mem_fileopen ();
2778   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2779
2780   /* Explicitly mark the warning -- this will only be printed if
2781      there was an error.  */
2782   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2783
2784   save_current_space_and_thread ();
2785
2786   ALL_BP_LOCATIONS (bl, blp_tmp)
2787     {
2788       /* We only want to update software breakpoints and hardware
2789          breakpoints.  */
2790       if (!is_breakpoint (bl->owner))
2791         continue;
2792
2793       /* We only want to update locations that are already inserted
2794          and need updating.  This is to avoid unwanted insertion during
2795          deletion of breakpoints.  */
2796       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2797         continue;
2798
2799       switch_to_program_space_and_thread (bl->pspace);
2800
2801       /* For targets that support global breakpoints, there's no need
2802          to select an inferior to insert breakpoint to.  In fact, even
2803          if we aren't attached to any process yet, we should still
2804          insert breakpoints.  */
2805       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2806           && ptid_equal (inferior_ptid, null_ptid))
2807         continue;
2808
2809       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2810                                     &hw_breakpoint_error, &hw_bp_details_reported);
2811       if (val)
2812         error_flag = val;
2813     }
2814
2815   if (error_flag)
2816     {
2817       target_terminal_ours_for_output ();
2818       error_stream (tmp_error_stream);
2819     }
2820
2821   do_cleanups (cleanups);
2822 }
2823
2824 /* Used when starting or continuing the program.  */
2825
2826 static void
2827 insert_breakpoint_locations (void)
2828 {
2829   struct breakpoint *bpt;
2830   struct bp_location *bl, **blp_tmp;
2831   int error_flag = 0;
2832   int val = 0;
2833   int disabled_breaks = 0;
2834   int hw_breakpoint_error = 0;
2835   int hw_bp_error_explained_already = 0;
2836
2837   struct ui_file *tmp_error_stream = mem_fileopen ();
2838   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2839   
2840   /* Explicitly mark the warning -- this will only be printed if
2841      there was an error.  */
2842   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2843
2844   save_current_space_and_thread ();
2845
2846   ALL_BP_LOCATIONS (bl, blp_tmp)
2847     {
2848       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2849         continue;
2850
2851       /* There is no point inserting thread-specific breakpoints if
2852          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2853          has BL->OWNER always non-NULL.  */
2854       if (bl->owner->thread != -1
2855           && !valid_thread_id (bl->owner->thread))
2856         continue;
2857
2858       switch_to_program_space_and_thread (bl->pspace);
2859
2860       /* For targets that support global breakpoints, there's no need
2861          to select an inferior to insert breakpoint to.  In fact, even
2862          if we aren't attached to any process yet, we should still
2863          insert breakpoints.  */
2864       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2865           && ptid_equal (inferior_ptid, null_ptid))
2866         continue;
2867
2868       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2869                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2870       if (val)
2871         error_flag = val;
2872     }
2873
2874   /* If we failed to insert all locations of a watchpoint, remove
2875      them, as half-inserted watchpoint is of limited use.  */
2876   ALL_BREAKPOINTS (bpt)  
2877     {
2878       int some_failed = 0;
2879       struct bp_location *loc;
2880
2881       if (!is_hardware_watchpoint (bpt))
2882         continue;
2883
2884       if (!breakpoint_enabled (bpt))
2885         continue;
2886
2887       if (bpt->disposition == disp_del_at_next_stop)
2888         continue;
2889       
2890       for (loc = bpt->loc; loc; loc = loc->next)
2891         if (!loc->inserted && should_be_inserted (loc))
2892           {
2893             some_failed = 1;
2894             break;
2895           }
2896       if (some_failed)
2897         {
2898           for (loc = bpt->loc; loc; loc = loc->next)
2899             if (loc->inserted)
2900               remove_breakpoint (loc, mark_uninserted);
2901
2902           hw_breakpoint_error = 1;
2903           fprintf_unfiltered (tmp_error_stream,
2904                               "Could not insert hardware watchpoint %d.\n", 
2905                               bpt->number);
2906           error_flag = -1;
2907         }
2908     }
2909
2910   if (error_flag)
2911     {
2912       /* If a hardware breakpoint or watchpoint was inserted, add a
2913          message about possibly exhausted resources.  */
2914       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2915         {
2916           fprintf_unfiltered (tmp_error_stream, 
2917                               "Could not insert hardware breakpoints:\n\
2918 You may have requested too many hardware breakpoints/watchpoints.\n");
2919         }
2920       target_terminal_ours_for_output ();
2921       error_stream (tmp_error_stream);
2922     }
2923
2924   do_cleanups (cleanups);
2925 }
2926
2927 /* Used when the program stops.
2928    Returns zero if successful, or non-zero if there was a problem
2929    removing a breakpoint location.  */
2930
2931 int
2932 remove_breakpoints (void)
2933 {
2934   struct bp_location *bl, **blp_tmp;
2935   int val = 0;
2936
2937   ALL_BP_LOCATIONS (bl, blp_tmp)
2938   {
2939     if (bl->inserted && !is_tracepoint (bl->owner))
2940       val |= remove_breakpoint (bl, mark_uninserted);
2941   }
2942   return val;
2943 }
2944
2945 /* Remove breakpoints of process PID.  */
2946
2947 int
2948 remove_breakpoints_pid (int pid)
2949 {
2950   struct bp_location *bl, **blp_tmp;
2951   int val;
2952   struct inferior *inf = find_inferior_pid (pid);
2953
2954   ALL_BP_LOCATIONS (bl, blp_tmp)
2955   {
2956     if (bl->pspace != inf->pspace)
2957       continue;
2958
2959     if (bl->owner->type == bp_dprintf)
2960       continue;
2961
2962     if (bl->inserted)
2963       {
2964         val = remove_breakpoint (bl, mark_uninserted);
2965         if (val != 0)
2966           return val;
2967       }
2968   }
2969   return 0;
2970 }
2971
2972 int
2973 reattach_breakpoints (int pid)
2974 {
2975   struct cleanup *old_chain;
2976   struct bp_location *bl, **blp_tmp;
2977   int val;
2978   struct ui_file *tmp_error_stream;
2979   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2980   struct inferior *inf;
2981   struct thread_info *tp;
2982
2983   tp = any_live_thread_of_process (pid);
2984   if (tp == NULL)
2985     return 1;
2986
2987   inf = find_inferior_pid (pid);
2988   old_chain = save_inferior_ptid ();
2989
2990   inferior_ptid = tp->ptid;
2991
2992   tmp_error_stream = mem_fileopen ();
2993   make_cleanup_ui_file_delete (tmp_error_stream);
2994
2995   ALL_BP_LOCATIONS (bl, blp_tmp)
2996   {
2997     if (bl->pspace != inf->pspace)
2998       continue;
2999
3000     if (bl->inserted)
3001       {
3002         bl->inserted = 0;
3003         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3004         if (val != 0)
3005           {
3006             do_cleanups (old_chain);
3007             return val;
3008           }
3009       }
3010   }
3011   do_cleanups (old_chain);
3012   return 0;
3013 }
3014
3015 static int internal_breakpoint_number = -1;
3016
3017 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3018    If INTERNAL is non-zero, the breakpoint number will be populated
3019    from internal_breakpoint_number and that variable decremented.
3020    Otherwise the breakpoint number will be populated from
3021    breakpoint_count and that value incremented.  Internal breakpoints
3022    do not set the internal var bpnum.  */
3023 static void
3024 set_breakpoint_number (int internal, struct breakpoint *b)
3025 {
3026   if (internal)
3027     b->number = internal_breakpoint_number--;
3028   else
3029     {
3030       set_breakpoint_count (breakpoint_count + 1);
3031       b->number = breakpoint_count;
3032     }
3033 }
3034
3035 static struct breakpoint *
3036 create_internal_breakpoint (struct gdbarch *gdbarch,
3037                             CORE_ADDR address, enum bptype type,
3038                             const struct breakpoint_ops *ops)
3039 {
3040   struct symtab_and_line sal;
3041   struct breakpoint *b;
3042
3043   init_sal (&sal);              /* Initialize to zeroes.  */
3044
3045   sal.pc = address;
3046   sal.section = find_pc_overlay (sal.pc);
3047   sal.pspace = current_program_space;
3048
3049   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3050   b->number = internal_breakpoint_number--;
3051   b->disposition = disp_donttouch;
3052
3053   return b;
3054 }
3055
3056 static const char *const longjmp_names[] =
3057   {
3058     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3059   };
3060 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3061
3062 /* Per-objfile data private to breakpoint.c.  */
3063 struct breakpoint_objfile_data
3064 {
3065   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3066   struct minimal_symbol *overlay_msym;
3067
3068   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3069   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3070
3071   /* True if we have looked for longjmp probes.  */
3072   int longjmp_searched;
3073
3074   /* SystemTap probe points for longjmp (if any).  */
3075   VEC (probe_p) *longjmp_probes;
3076
3077   /* Minimal symbol for "std::terminate()" (if any).  */
3078   struct minimal_symbol *terminate_msym;
3079
3080   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3081   struct minimal_symbol *exception_msym;
3082
3083   /* True if we have looked for exception probes.  */
3084   int exception_searched;
3085
3086   /* SystemTap probe points for unwinding (if any).  */
3087   VEC (probe_p) *exception_probes;
3088 };
3089
3090 static const struct objfile_data *breakpoint_objfile_key;
3091
3092 /* Minimal symbol not found sentinel.  */
3093 static struct minimal_symbol msym_not_found;
3094
3095 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3096
3097 static int
3098 msym_not_found_p (const struct minimal_symbol *msym)
3099 {
3100   return msym == &msym_not_found;
3101 }
3102
3103 /* Return per-objfile data needed by breakpoint.c.
3104    Allocate the data if necessary.  */
3105
3106 static struct breakpoint_objfile_data *
3107 get_breakpoint_objfile_data (struct objfile *objfile)
3108 {
3109   struct breakpoint_objfile_data *bp_objfile_data;
3110
3111   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3112   if (bp_objfile_data == NULL)
3113     {
3114       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3115                                        sizeof (*bp_objfile_data));
3116
3117       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3118       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3119     }
3120   return bp_objfile_data;
3121 }
3122
3123 static void
3124 free_breakpoint_probes (struct objfile *obj, void *data)
3125 {
3126   struct breakpoint_objfile_data *bp_objfile_data = data;
3127
3128   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3129   VEC_free (probe_p, bp_objfile_data->exception_probes);
3130 }
3131
3132 static void
3133 create_overlay_event_breakpoint (void)
3134 {
3135   struct objfile *objfile;
3136   const char *const func_name = "_ovly_debug_event";
3137
3138   ALL_OBJFILES (objfile)
3139     {
3140       struct breakpoint *b;
3141       struct breakpoint_objfile_data *bp_objfile_data;
3142       CORE_ADDR addr;
3143
3144       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3145
3146       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3147         continue;
3148
3149       if (bp_objfile_data->overlay_msym == NULL)
3150         {
3151           struct minimal_symbol *m;
3152
3153           m = lookup_minimal_symbol_text (func_name, objfile);
3154           if (m == NULL)
3155             {
3156               /* Avoid future lookups in this objfile.  */
3157               bp_objfile_data->overlay_msym = &msym_not_found;
3158               continue;
3159             }
3160           bp_objfile_data->overlay_msym = m;
3161         }
3162
3163       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3164       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3165                                       bp_overlay_event,
3166                                       &internal_breakpoint_ops);
3167       b->addr_string = xstrdup (func_name);
3168
3169       if (overlay_debugging == ovly_auto)
3170         {
3171           b->enable_state = bp_enabled;
3172           overlay_events_enabled = 1;
3173         }
3174       else
3175        {
3176          b->enable_state = bp_disabled;
3177          overlay_events_enabled = 0;
3178        }
3179     }
3180   update_global_location_list (1);
3181 }
3182
3183 static void
3184 create_longjmp_master_breakpoint (void)
3185 {
3186   struct program_space *pspace;
3187   struct cleanup *old_chain;
3188
3189   old_chain = save_current_program_space ();
3190
3191   ALL_PSPACES (pspace)
3192   {
3193     struct objfile *objfile;
3194
3195     set_current_program_space (pspace);
3196
3197     ALL_OBJFILES (objfile)
3198     {
3199       int i;
3200       struct gdbarch *gdbarch;
3201       struct breakpoint_objfile_data *bp_objfile_data;
3202
3203       gdbarch = get_objfile_arch (objfile);
3204       if (!gdbarch_get_longjmp_target_p (gdbarch))
3205         continue;
3206
3207       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3208
3209       if (!bp_objfile_data->longjmp_searched)
3210         {
3211           bp_objfile_data->longjmp_probes
3212             = find_probes_in_objfile (objfile, "libc", "longjmp");
3213           bp_objfile_data->longjmp_searched = 1;
3214         }
3215
3216       if (bp_objfile_data->longjmp_probes != NULL)
3217         {
3218           int i;
3219           struct probe *probe;
3220           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3221
3222           for (i = 0;
3223                VEC_iterate (probe_p,
3224                             bp_objfile_data->longjmp_probes,
3225                             i, probe);
3226                ++i)
3227             {
3228               struct breakpoint *b;
3229
3230               b = create_internal_breakpoint (gdbarch, probe->address,
3231                                               bp_longjmp_master,
3232                                               &internal_breakpoint_ops);
3233               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3234               b->enable_state = bp_disabled;
3235             }
3236
3237           continue;
3238         }
3239
3240       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3241         {
3242           struct breakpoint *b;
3243           const char *func_name;
3244           CORE_ADDR addr;
3245
3246           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3247             continue;
3248
3249           func_name = longjmp_names[i];
3250           if (bp_objfile_data->longjmp_msym[i] == NULL)
3251             {
3252               struct minimal_symbol *m;
3253
3254               m = lookup_minimal_symbol_text (func_name, objfile);
3255               if (m == NULL)
3256                 {
3257                   /* Prevent future lookups in this objfile.  */
3258                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3259                   continue;
3260                 }
3261               bp_objfile_data->longjmp_msym[i] = m;
3262             }
3263
3264           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3265           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3266                                           &internal_breakpoint_ops);
3267           b->addr_string = xstrdup (func_name);
3268           b->enable_state = bp_disabled;
3269         }
3270     }
3271   }
3272   update_global_location_list (1);
3273
3274   do_cleanups (old_chain);
3275 }
3276
3277 /* Create a master std::terminate breakpoint.  */
3278 static void
3279 create_std_terminate_master_breakpoint (void)
3280 {
3281   struct program_space *pspace;
3282   struct cleanup *old_chain;
3283   const char *const func_name = "std::terminate()";
3284
3285   old_chain = save_current_program_space ();
3286
3287   ALL_PSPACES (pspace)
3288   {
3289     struct objfile *objfile;
3290     CORE_ADDR addr;
3291
3292     set_current_program_space (pspace);
3293
3294     ALL_OBJFILES (objfile)
3295     {
3296       struct breakpoint *b;
3297       struct breakpoint_objfile_data *bp_objfile_data;
3298
3299       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3300
3301       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3302         continue;
3303
3304       if (bp_objfile_data->terminate_msym == NULL)
3305         {
3306           struct minimal_symbol *m;
3307
3308           m = lookup_minimal_symbol (func_name, NULL, objfile);
3309           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3310                             && MSYMBOL_TYPE (m) != mst_file_text))
3311             {
3312               /* Prevent future lookups in this objfile.  */
3313               bp_objfile_data->terminate_msym = &msym_not_found;
3314               continue;
3315             }
3316           bp_objfile_data->terminate_msym = m;
3317         }
3318
3319       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3320       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3321                                       bp_std_terminate_master,
3322                                       &internal_breakpoint_ops);
3323       b->addr_string = xstrdup (func_name);
3324       b->enable_state = bp_disabled;
3325     }
3326   }
3327
3328   update_global_location_list (1);
3329
3330   do_cleanups (old_chain);
3331 }
3332
3333 /* Install a master breakpoint on the unwinder's debug hook.  */
3334
3335 static void
3336 create_exception_master_breakpoint (void)
3337 {
3338   struct objfile *objfile;
3339   const char *const func_name = "_Unwind_DebugHook";
3340
3341   ALL_OBJFILES (objfile)
3342     {
3343       struct breakpoint *b;
3344       struct gdbarch *gdbarch;
3345       struct breakpoint_objfile_data *bp_objfile_data;
3346       CORE_ADDR addr;
3347
3348       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3349
3350       /* We prefer the SystemTap probe point if it exists.  */
3351       if (!bp_objfile_data->exception_searched)
3352         {
3353           bp_objfile_data->exception_probes
3354             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3355           bp_objfile_data->exception_searched = 1;
3356         }
3357
3358       if (bp_objfile_data->exception_probes != NULL)
3359         {
3360           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3361           int i;
3362           struct probe *probe;
3363
3364           for (i = 0;
3365                VEC_iterate (probe_p,
3366                             bp_objfile_data->exception_probes,
3367                             i, probe);
3368                ++i)
3369             {
3370               struct breakpoint *b;
3371
3372               b = create_internal_breakpoint (gdbarch, probe->address,
3373                                               bp_exception_master,
3374                                               &internal_breakpoint_ops);
3375               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3376               b->enable_state = bp_disabled;
3377             }
3378
3379           continue;
3380         }
3381
3382       /* Otherwise, try the hook function.  */
3383
3384       if (msym_not_found_p (bp_objfile_data->exception_msym))
3385         continue;
3386
3387       gdbarch = get_objfile_arch (objfile);
3388
3389       if (bp_objfile_data->exception_msym == NULL)
3390         {
3391           struct minimal_symbol *debug_hook;
3392
3393           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3394           if (debug_hook == NULL)
3395             {
3396               bp_objfile_data->exception_msym = &msym_not_found;
3397               continue;
3398             }
3399
3400           bp_objfile_data->exception_msym = debug_hook;
3401         }
3402
3403       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3404       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3405                                                  &current_target);
3406       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3407                                       &internal_breakpoint_ops);
3408       b->addr_string = xstrdup (func_name);
3409       b->enable_state = bp_disabled;
3410     }
3411
3412   update_global_location_list (1);
3413 }
3414
3415 void
3416 update_breakpoints_after_exec (void)
3417 {
3418   struct breakpoint *b, *b_tmp;
3419   struct bp_location *bploc, **bplocp_tmp;
3420
3421   /* We're about to delete breakpoints from GDB's lists.  If the
3422      INSERTED flag is true, GDB will try to lift the breakpoints by
3423      writing the breakpoints' "shadow contents" back into memory.  The
3424      "shadow contents" are NOT valid after an exec, so GDB should not
3425      do that.  Instead, the target is responsible from marking
3426      breakpoints out as soon as it detects an exec.  We don't do that
3427      here instead, because there may be other attempts to delete
3428      breakpoints after detecting an exec and before reaching here.  */
3429   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3430     if (bploc->pspace == current_program_space)
3431       gdb_assert (!bploc->inserted);
3432
3433   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3434   {
3435     if (b->pspace != current_program_space)
3436       continue;
3437
3438     /* Solib breakpoints must be explicitly reset after an exec().  */
3439     if (b->type == bp_shlib_event)
3440       {
3441         delete_breakpoint (b);
3442         continue;
3443       }
3444
3445     /* JIT breakpoints must be explicitly reset after an exec().  */
3446     if (b->type == bp_jit_event)
3447       {
3448         delete_breakpoint (b);
3449         continue;
3450       }
3451
3452     /* Thread event breakpoints must be set anew after an exec(),
3453        as must overlay event and longjmp master breakpoints.  */
3454     if (b->type == bp_thread_event || b->type == bp_overlay_event
3455         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3456         || b->type == bp_exception_master)
3457       {
3458         delete_breakpoint (b);
3459         continue;
3460       }
3461
3462     /* Step-resume breakpoints are meaningless after an exec().  */
3463     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3464       {
3465         delete_breakpoint (b);
3466         continue;
3467       }
3468
3469     /* Longjmp and longjmp-resume breakpoints are also meaningless
3470        after an exec.  */
3471     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3472         || b->type == bp_longjmp_call_dummy
3473         || b->type == bp_exception || b->type == bp_exception_resume)
3474       {
3475         delete_breakpoint (b);
3476         continue;
3477       }
3478
3479     if (b->type == bp_catchpoint)
3480       {
3481         /* For now, none of the bp_catchpoint breakpoints need to
3482            do anything at this point.  In the future, if some of
3483            the catchpoints need to something, we will need to add
3484            a new method, and call this method from here.  */
3485         continue;
3486       }
3487
3488     /* bp_finish is a special case.  The only way we ought to be able
3489        to see one of these when an exec() has happened, is if the user
3490        caught a vfork, and then said "finish".  Ordinarily a finish just
3491        carries them to the call-site of the current callee, by setting
3492        a temporary bp there and resuming.  But in this case, the finish
3493        will carry them entirely through the vfork & exec.
3494
3495        We don't want to allow a bp_finish to remain inserted now.  But
3496        we can't safely delete it, 'cause finish_command has a handle to
3497        the bp on a bpstat, and will later want to delete it.  There's a
3498        chance (and I've seen it happen) that if we delete the bp_finish
3499        here, that its storage will get reused by the time finish_command
3500        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3501        We really must allow finish_command to delete a bp_finish.
3502
3503        In the absence of a general solution for the "how do we know
3504        it's safe to delete something others may have handles to?"
3505        problem, what we'll do here is just uninsert the bp_finish, and
3506        let finish_command delete it.
3507
3508        (We know the bp_finish is "doomed" in the sense that it's
3509        momentary, and will be deleted as soon as finish_command sees
3510        the inferior stopped.  So it doesn't matter that the bp's
3511        address is probably bogus in the new a.out, unlike e.g., the
3512        solib breakpoints.)  */
3513
3514     if (b->type == bp_finish)
3515       {
3516         continue;
3517       }
3518
3519     /* Without a symbolic address, we have little hope of the
3520        pre-exec() address meaning the same thing in the post-exec()
3521        a.out.  */
3522     if (b->addr_string == NULL)
3523       {
3524         delete_breakpoint (b);
3525         continue;
3526       }
3527   }
3528   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3529   create_overlay_event_breakpoint ();
3530   create_longjmp_master_breakpoint ();
3531   create_std_terminate_master_breakpoint ();
3532   create_exception_master_breakpoint ();
3533 }
3534
3535 int
3536 detach_breakpoints (ptid_t ptid)
3537 {
3538   struct bp_location *bl, **blp_tmp;
3539   int val = 0;
3540   struct cleanup *old_chain = save_inferior_ptid ();
3541   struct inferior *inf = current_inferior ();
3542
3543   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3544     error (_("Cannot detach breakpoints of inferior_ptid"));
3545
3546   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3547   inferior_ptid = ptid;
3548   ALL_BP_LOCATIONS (bl, blp_tmp)
3549   {
3550     if (bl->pspace != inf->pspace)
3551       continue;
3552
3553     if (bl->inserted)
3554       val |= remove_breakpoint_1 (bl, mark_inserted);
3555   }
3556
3557   /* Detach single-step breakpoints as well.  */
3558   detach_single_step_breakpoints ();
3559
3560   do_cleanups (old_chain);
3561   return val;
3562 }
3563
3564 /* Remove the breakpoint location BL from the current address space.
3565    Note that this is used to detach breakpoints from a child fork.
3566    When we get here, the child isn't in the inferior list, and neither
3567    do we have objects to represent its address space --- we should
3568    *not* look at bl->pspace->aspace here.  */
3569
3570 static int
3571 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3572 {
3573   int val;
3574
3575   /* BL is never in moribund_locations by our callers.  */
3576   gdb_assert (bl->owner != NULL);
3577
3578   if (bl->owner->enable_state == bp_permanent)
3579     /* Permanent breakpoints cannot be inserted or removed.  */
3580     return 0;
3581
3582   /* The type of none suggests that owner is actually deleted.
3583      This should not ever happen.  */
3584   gdb_assert (bl->owner->type != bp_none);
3585
3586   if (bl->loc_type == bp_loc_software_breakpoint
3587       || bl->loc_type == bp_loc_hardware_breakpoint)
3588     {
3589       /* "Normal" instruction breakpoint: either the standard
3590          trap-instruction bp (bp_breakpoint), or a
3591          bp_hardware_breakpoint.  */
3592
3593       /* First check to see if we have to handle an overlay.  */
3594       if (overlay_debugging == ovly_off
3595           || bl->section == NULL
3596           || !(section_is_overlay (bl->section)))
3597         {
3598           /* No overlay handling: just remove the breakpoint.  */
3599           val = bl->owner->ops->remove_location (bl);
3600         }
3601       else
3602         {
3603           /* This breakpoint is in an overlay section.
3604              Did we set a breakpoint at the LMA?  */
3605           if (!overlay_events_enabled)
3606               {
3607                 /* Yes -- overlay event support is not active, so we
3608                    should have set a breakpoint at the LMA.  Remove it.  
3609                 */
3610                 /* Ignore any failures: if the LMA is in ROM, we will
3611                    have already warned when we failed to insert it.  */
3612                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3613                   target_remove_hw_breakpoint (bl->gdbarch,
3614                                                &bl->overlay_target_info);
3615                 else
3616                   target_remove_breakpoint (bl->gdbarch,
3617                                             &bl->overlay_target_info);
3618               }
3619           /* Did we set a breakpoint at the VMA? 
3620              If so, we will have marked the breakpoint 'inserted'.  */
3621           if (bl->inserted)
3622             {
3623               /* Yes -- remove it.  Previously we did not bother to
3624                  remove the breakpoint if the section had been
3625                  unmapped, but let's not rely on that being safe.  We
3626                  don't know what the overlay manager might do.  */
3627
3628               /* However, we should remove *software* breakpoints only
3629                  if the section is still mapped, or else we overwrite
3630                  wrong code with the saved shadow contents.  */
3631               if (bl->loc_type == bp_loc_hardware_breakpoint
3632                   || section_is_mapped (bl->section))
3633                 val = bl->owner->ops->remove_location (bl);
3634               else
3635                 val = 0;
3636             }
3637           else
3638             {
3639               /* No -- not inserted, so no need to remove.  No error.  */
3640               val = 0;
3641             }
3642         }
3643
3644       /* In some cases, we might not be able to remove a breakpoint
3645          in a shared library that has already been removed, but we
3646          have not yet processed the shlib unload event.  */
3647       if (val && solib_name_from_address (bl->pspace, bl->address))
3648         val = 0;
3649
3650       if (val)
3651         return val;
3652       bl->inserted = (is == mark_inserted);
3653     }
3654   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3655     {
3656       gdb_assert (bl->owner->ops != NULL
3657                   && bl->owner->ops->remove_location != NULL);
3658
3659       bl->inserted = (is == mark_inserted);
3660       bl->owner->ops->remove_location (bl);
3661
3662       /* Failure to remove any of the hardware watchpoints comes here.  */
3663       if ((is == mark_uninserted) && (bl->inserted))
3664         warning (_("Could not remove hardware watchpoint %d."),
3665                  bl->owner->number);
3666     }
3667   else if (bl->owner->type == bp_catchpoint
3668            && breakpoint_enabled (bl->owner)
3669            && !bl->duplicate)
3670     {
3671       gdb_assert (bl->owner->ops != NULL
3672                   && bl->owner->ops->remove_location != NULL);
3673
3674       val = bl->owner->ops->remove_location (bl);
3675       if (val)
3676         return val;
3677
3678       bl->inserted = (is == mark_inserted);
3679     }
3680
3681   return 0;
3682 }
3683
3684 static int
3685 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3686 {
3687   int ret;
3688   struct cleanup *old_chain;
3689
3690   /* BL is never in moribund_locations by our callers.  */
3691   gdb_assert (bl->owner != NULL);
3692
3693   if (bl->owner->enable_state == bp_permanent)
3694     /* Permanent breakpoints cannot be inserted or removed.  */
3695     return 0;
3696
3697   /* The type of none suggests that owner is actually deleted.
3698      This should not ever happen.  */
3699   gdb_assert (bl->owner->type != bp_none);
3700
3701   old_chain = save_current_space_and_thread ();
3702
3703   switch_to_program_space_and_thread (bl->pspace);
3704
3705   ret = remove_breakpoint_1 (bl, is);
3706
3707   do_cleanups (old_chain);
3708   return ret;
3709 }
3710
3711 /* Clear the "inserted" flag in all breakpoints.  */
3712
3713 void
3714 mark_breakpoints_out (void)
3715 {
3716   struct bp_location *bl, **blp_tmp;
3717
3718   ALL_BP_LOCATIONS (bl, blp_tmp)
3719     if (bl->pspace == current_program_space)
3720       bl->inserted = 0;
3721 }
3722
3723 /* Clear the "inserted" flag in all breakpoints and delete any
3724    breakpoints which should go away between runs of the program.
3725
3726    Plus other such housekeeping that has to be done for breakpoints
3727    between runs.
3728
3729    Note: this function gets called at the end of a run (by
3730    generic_mourn_inferior) and when a run begins (by
3731    init_wait_for_inferior).  */
3732
3733
3734
3735 void
3736 breakpoint_init_inferior (enum inf_context context)
3737 {
3738   struct breakpoint *b, *b_tmp;
3739   struct bp_location *bl, **blp_tmp;
3740   int ix;
3741   struct program_space *pspace = current_program_space;
3742
3743   /* If breakpoint locations are shared across processes, then there's
3744      nothing to do.  */
3745   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3746     return;
3747
3748   ALL_BP_LOCATIONS (bl, blp_tmp)
3749   {
3750     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3751     if (bl->pspace == pspace
3752         && bl->owner->enable_state != bp_permanent)
3753       bl->inserted = 0;
3754   }
3755
3756   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3757   {
3758     if (b->loc && b->loc->pspace != pspace)
3759       continue;
3760
3761     switch (b->type)
3762       {
3763       case bp_call_dummy:
3764       case bp_longjmp_call_dummy:
3765
3766         /* If the call dummy breakpoint is at the entry point it will
3767            cause problems when the inferior is rerun, so we better get
3768            rid of it.  */
3769
3770       case bp_watchpoint_scope:
3771
3772         /* Also get rid of scope breakpoints.  */
3773
3774       case bp_shlib_event:
3775
3776         /* Also remove solib event breakpoints.  Their addresses may
3777            have changed since the last time we ran the program.
3778            Actually we may now be debugging against different target;
3779            and so the solib backend that installed this breakpoint may
3780            not be used in by the target.  E.g.,
3781
3782            (gdb) file prog-linux
3783            (gdb) run               # native linux target
3784            ...
3785            (gdb) kill
3786            (gdb) file prog-win.exe
3787            (gdb) tar rem :9999     # remote Windows gdbserver.
3788         */
3789
3790       case bp_step_resume:
3791
3792         /* Also remove step-resume breakpoints.  */
3793
3794         delete_breakpoint (b);
3795         break;
3796
3797       case bp_watchpoint:
3798       case bp_hardware_watchpoint:
3799       case bp_read_watchpoint:
3800       case bp_access_watchpoint:
3801         {
3802           struct watchpoint *w = (struct watchpoint *) b;
3803
3804           /* Likewise for watchpoints on local expressions.  */
3805           if (w->exp_valid_block != NULL)
3806             delete_breakpoint (b);
3807           else if (context == inf_starting)
3808             {
3809               /* Reset val field to force reread of starting value in
3810                  insert_breakpoints.  */
3811               if (w->val)
3812                 value_free (w->val);
3813               w->val = NULL;
3814               w->val_valid = 0;
3815           }
3816         }
3817         break;
3818       default:
3819         break;
3820       }
3821   }
3822
3823   /* Get rid of the moribund locations.  */
3824   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3825     decref_bp_location (&bl);
3826   VEC_free (bp_location_p, moribund_locations);
3827 }
3828
3829 /* These functions concern about actual breakpoints inserted in the
3830    target --- to e.g. check if we need to do decr_pc adjustment or if
3831    we need to hop over the bkpt --- so we check for address space
3832    match, not program space.  */
3833
3834 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3835    exists at PC.  It returns ordinary_breakpoint_here if it's an
3836    ordinary breakpoint, or permanent_breakpoint_here if it's a
3837    permanent breakpoint.
3838    - When continuing from a location with an ordinary breakpoint, we
3839      actually single step once before calling insert_breakpoints.
3840    - When continuing from a location with a permanent breakpoint, we
3841      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3842      the target, to advance the PC past the breakpoint.  */
3843
3844 enum breakpoint_here
3845 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3846 {
3847   struct bp_location *bl, **blp_tmp;
3848   int any_breakpoint_here = 0;
3849
3850   ALL_BP_LOCATIONS (bl, blp_tmp)
3851     {
3852       if (bl->loc_type != bp_loc_software_breakpoint
3853           && bl->loc_type != bp_loc_hardware_breakpoint)
3854         continue;
3855
3856       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3857       if ((breakpoint_enabled (bl->owner)
3858            || bl->owner->enable_state == bp_permanent)
3859           && breakpoint_location_address_match (bl, aspace, pc))
3860         {
3861           if (overlay_debugging 
3862               && section_is_overlay (bl->section)
3863               && !section_is_mapped (bl->section))
3864             continue;           /* unmapped overlay -- can't be a match */
3865           else if (bl->owner->enable_state == bp_permanent)
3866             return permanent_breakpoint_here;
3867           else
3868             any_breakpoint_here = 1;
3869         }
3870     }
3871
3872   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3873 }
3874
3875 /* Return true if there's a moribund breakpoint at PC.  */
3876
3877 int
3878 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3879 {
3880   struct bp_location *loc;
3881   int ix;
3882
3883   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3884     if (breakpoint_location_address_match (loc, aspace, pc))
3885       return 1;
3886
3887   return 0;
3888 }
3889
3890 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3891    inserted using regular breakpoint_chain / bp_location array
3892    mechanism.  This does not check for single-step breakpoints, which
3893    are inserted and removed using direct target manipulation.  */
3894
3895 int
3896 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3897                                     CORE_ADDR pc)
3898 {
3899   struct bp_location *bl, **blp_tmp;
3900
3901   ALL_BP_LOCATIONS (bl, blp_tmp)
3902     {
3903       if (bl->loc_type != bp_loc_software_breakpoint
3904           && bl->loc_type != bp_loc_hardware_breakpoint)
3905         continue;
3906
3907       if (bl->inserted
3908           && breakpoint_location_address_match (bl, aspace, pc))
3909         {
3910           if (overlay_debugging 
3911               && section_is_overlay (bl->section)
3912               && !section_is_mapped (bl->section))
3913             continue;           /* unmapped overlay -- can't be a match */
3914           else
3915             return 1;
3916         }
3917     }
3918   return 0;
3919 }
3920
3921 /* Returns non-zero iff there's either regular breakpoint
3922    or a single step breakpoint inserted at PC.  */
3923
3924 int
3925 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3926 {
3927   if (regular_breakpoint_inserted_here_p (aspace, pc))
3928     return 1;
3929
3930   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3931     return 1;
3932
3933   return 0;
3934 }
3935
3936 /* This function returns non-zero iff there is a software breakpoint
3937    inserted at PC.  */
3938
3939 int
3940 software_breakpoint_inserted_here_p (struct address_space *aspace,
3941                                      CORE_ADDR pc)
3942 {
3943   struct bp_location *bl, **blp_tmp;
3944
3945   ALL_BP_LOCATIONS (bl, blp_tmp)
3946     {
3947       if (bl->loc_type != bp_loc_software_breakpoint)
3948         continue;
3949
3950       if (bl->inserted
3951           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3952                                        aspace, pc))
3953         {
3954           if (overlay_debugging 
3955               && section_is_overlay (bl->section)
3956               && !section_is_mapped (bl->section))
3957             continue;           /* unmapped overlay -- can't be a match */
3958           else
3959             return 1;
3960         }
3961     }
3962
3963   /* Also check for software single-step breakpoints.  */
3964   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3965     return 1;
3966
3967   return 0;
3968 }
3969
3970 int
3971 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3972                                        CORE_ADDR addr, ULONGEST len)
3973 {
3974   struct breakpoint *bpt;
3975
3976   ALL_BREAKPOINTS (bpt)
3977     {
3978       struct bp_location *loc;
3979
3980       if (bpt->type != bp_hardware_watchpoint
3981           && bpt->type != bp_access_watchpoint)
3982         continue;
3983
3984       if (!breakpoint_enabled (bpt))
3985         continue;
3986
3987       for (loc = bpt->loc; loc; loc = loc->next)
3988         if (loc->pspace->aspace == aspace && loc->inserted)
3989           {
3990             CORE_ADDR l, h;
3991
3992             /* Check for intersection.  */
3993             l = max (loc->address, addr);
3994             h = min (loc->address + loc->length, addr + len);
3995             if (l < h)
3996               return 1;
3997           }
3998     }
3999   return 0;
4000 }
4001
4002 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
4003    PC is valid for process/thread PTID.  */
4004
4005 int
4006 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4007                          ptid_t ptid)
4008 {
4009   struct bp_location *bl, **blp_tmp;
4010   /* The thread and task IDs associated to PTID, computed lazily.  */
4011   int thread = -1;
4012   int task = 0;
4013   
4014   ALL_BP_LOCATIONS (bl, blp_tmp)
4015     {
4016       if (bl->loc_type != bp_loc_software_breakpoint
4017           && bl->loc_type != bp_loc_hardware_breakpoint)
4018         continue;
4019
4020       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4021       if (!breakpoint_enabled (bl->owner)
4022           && bl->owner->enable_state != bp_permanent)
4023         continue;
4024
4025       if (!breakpoint_location_address_match (bl, aspace, pc))
4026         continue;
4027
4028       if (bl->owner->thread != -1)
4029         {
4030           /* This is a thread-specific breakpoint.  Check that ptid
4031              matches that thread.  If thread hasn't been computed yet,
4032              it is now time to do so.  */
4033           if (thread == -1)
4034             thread = pid_to_thread_id (ptid);
4035           if (bl->owner->thread != thread)
4036             continue;
4037         }
4038
4039       if (bl->owner->task != 0)
4040         {
4041           /* This is a task-specific breakpoint.  Check that ptid
4042              matches that task.  If task hasn't been computed yet,
4043              it is now time to do so.  */
4044           if (task == 0)
4045             task = ada_get_task_number (ptid);
4046           if (bl->owner->task != task)
4047             continue;
4048         }
4049
4050       if (overlay_debugging 
4051           && section_is_overlay (bl->section)
4052           && !section_is_mapped (bl->section))
4053         continue;           /* unmapped overlay -- can't be a match */
4054
4055       return 1;
4056     }
4057
4058   return 0;
4059 }
4060 \f
4061
4062 /* bpstat stuff.  External routines' interfaces are documented
4063    in breakpoint.h.  */
4064
4065 int
4066 is_catchpoint (struct breakpoint *ep)
4067 {
4068   return (ep->type == bp_catchpoint);
4069 }
4070
4071 /* Frees any storage that is part of a bpstat.  Does not walk the
4072    'next' chain.  */
4073
4074 static void
4075 bpstat_free (bpstat bs)
4076 {
4077   if (bs->old_val != NULL)
4078     value_free (bs->old_val);
4079   decref_counted_command_line (&bs->commands);
4080   decref_bp_location (&bs->bp_location_at);
4081   xfree (bs);
4082 }
4083
4084 /* Clear a bpstat so that it says we are not at any breakpoint.
4085    Also free any storage that is part of a bpstat.  */
4086
4087 void
4088 bpstat_clear (bpstat *bsp)
4089 {
4090   bpstat p;
4091   bpstat q;
4092
4093   if (bsp == 0)
4094     return;
4095   p = *bsp;
4096   while (p != NULL)
4097     {
4098       q = p->next;
4099       bpstat_free (p);
4100       p = q;
4101     }
4102   *bsp = NULL;
4103 }
4104
4105 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4106    is part of the bpstat is copied as well.  */
4107
4108 bpstat
4109 bpstat_copy (bpstat bs)
4110 {
4111   bpstat p = NULL;
4112   bpstat tmp;
4113   bpstat retval = NULL;
4114
4115   if (bs == NULL)
4116     return bs;
4117
4118   for (; bs != NULL; bs = bs->next)
4119     {
4120       tmp = (bpstat) xmalloc (sizeof (*tmp));
4121       memcpy (tmp, bs, sizeof (*tmp));
4122       incref_counted_command_line (tmp->commands);
4123       incref_bp_location (tmp->bp_location_at);
4124       if (bs->old_val != NULL)
4125         {
4126           tmp->old_val = value_copy (bs->old_val);
4127           release_value (tmp->old_val);
4128         }
4129
4130       if (p == NULL)
4131         /* This is the first thing in the chain.  */
4132         retval = tmp;
4133       else
4134         p->next = tmp;
4135       p = tmp;
4136     }
4137   p->next = NULL;
4138   return retval;
4139 }
4140
4141 /* Find the bpstat associated with this breakpoint.  */
4142
4143 bpstat
4144 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4145 {
4146   if (bsp == NULL)
4147     return NULL;
4148
4149   for (; bsp != NULL; bsp = bsp->next)
4150     {
4151       if (bsp->breakpoint_at == breakpoint)
4152         return bsp;
4153     }
4154   return NULL;
4155 }
4156
4157 /* See breakpoint.h.  */
4158
4159 enum bpstat_signal_value
4160 bpstat_explains_signal (bpstat bsp)
4161 {
4162   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4163
4164   for (; bsp != NULL; bsp = bsp->next)
4165     {
4166       /* Ensure that, if we ever entered this loop, then we at least
4167          return BPSTAT_SIGNAL_HIDE.  */
4168       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4169
4170       if (bsp->breakpoint_at != NULL)
4171         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4172
4173       if (newval > result)
4174         result = newval;
4175     }
4176
4177   return result;
4178 }
4179
4180 /* Put in *NUM the breakpoint number of the first breakpoint we are
4181    stopped at.  *BSP upon return is a bpstat which points to the
4182    remaining breakpoints stopped at (but which is not guaranteed to be
4183    good for anything but further calls to bpstat_num).
4184
4185    Return 0 if passed a bpstat which does not indicate any breakpoints.
4186    Return -1 if stopped at a breakpoint that has been deleted since
4187    we set it.
4188    Return 1 otherwise.  */
4189
4190 int
4191 bpstat_num (bpstat *bsp, int *num)
4192 {
4193   struct breakpoint *b;
4194
4195   if ((*bsp) == NULL)
4196     return 0;                   /* No more breakpoint values */
4197
4198   /* We assume we'll never have several bpstats that correspond to a
4199      single breakpoint -- otherwise, this function might return the
4200      same number more than once and this will look ugly.  */
4201   b = (*bsp)->breakpoint_at;
4202   *bsp = (*bsp)->next;
4203   if (b == NULL)
4204     return -1;                  /* breakpoint that's been deleted since */
4205
4206   *num = b->number;             /* We have its number */
4207   return 1;
4208 }
4209
4210 /* See breakpoint.h.  */
4211
4212 void
4213 bpstat_clear_actions (void)
4214 {
4215   struct thread_info *tp;
4216   bpstat bs;
4217
4218   if (ptid_equal (inferior_ptid, null_ptid))
4219     return;
4220
4221   tp = find_thread_ptid (inferior_ptid);
4222   if (tp == NULL)
4223     return;
4224
4225   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4226     {
4227       decref_counted_command_line (&bs->commands);
4228
4229       if (bs->old_val != NULL)
4230         {
4231           value_free (bs->old_val);
4232           bs->old_val = NULL;
4233         }
4234     }
4235 }
4236
4237 /* Called when a command is about to proceed the inferior.  */
4238
4239 static void
4240 breakpoint_about_to_proceed (void)
4241 {
4242   if (!ptid_equal (inferior_ptid, null_ptid))
4243     {
4244       struct thread_info *tp = inferior_thread ();
4245
4246       /* Allow inferior function calls in breakpoint commands to not
4247          interrupt the command list.  When the call finishes
4248          successfully, the inferior will be standing at the same
4249          breakpoint as if nothing happened.  */
4250       if (tp->control.in_infcall)
4251         return;
4252     }
4253
4254   breakpoint_proceeded = 1;
4255 }
4256
4257 /* Stub for cleaning up our state if we error-out of a breakpoint
4258    command.  */
4259 static void
4260 cleanup_executing_breakpoints (void *ignore)
4261 {
4262   executing_breakpoint_commands = 0;
4263 }
4264
4265 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4266    or its equivalent.  */
4267
4268 static int
4269 command_line_is_silent (struct command_line *cmd)
4270 {
4271   return cmd && (strcmp ("silent", cmd->line) == 0
4272                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4273 }
4274
4275 /* Execute all the commands associated with all the breakpoints at
4276    this location.  Any of these commands could cause the process to
4277    proceed beyond this point, etc.  We look out for such changes by
4278    checking the global "breakpoint_proceeded" after each command.
4279
4280    Returns true if a breakpoint command resumed the inferior.  In that
4281    case, it is the caller's responsibility to recall it again with the
4282    bpstat of the current thread.  */
4283
4284 static int
4285 bpstat_do_actions_1 (bpstat *bsp)
4286 {
4287   bpstat bs;
4288   struct cleanup *old_chain;
4289   int again = 0;
4290
4291   /* Avoid endless recursion if a `source' command is contained
4292      in bs->commands.  */
4293   if (executing_breakpoint_commands)
4294     return 0;
4295
4296   executing_breakpoint_commands = 1;
4297   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4298
4299   prevent_dont_repeat ();
4300
4301   /* This pointer will iterate over the list of bpstat's.  */
4302   bs = *bsp;
4303
4304   breakpoint_proceeded = 0;
4305   for (; bs != NULL; bs = bs->next)
4306     {
4307       struct counted_command_line *ccmd;
4308       struct command_line *cmd;
4309       struct cleanup *this_cmd_tree_chain;
4310
4311       /* Take ownership of the BSP's command tree, if it has one.
4312
4313          The command tree could legitimately contain commands like
4314          'step' and 'next', which call clear_proceed_status, which
4315          frees stop_bpstat's command tree.  To make sure this doesn't
4316          free the tree we're executing out from under us, we need to
4317          take ownership of the tree ourselves.  Since a given bpstat's
4318          commands are only executed once, we don't need to copy it; we
4319          can clear the pointer in the bpstat, and make sure we free
4320          the tree when we're done.  */
4321       ccmd = bs->commands;
4322       bs->commands = NULL;
4323       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4324       cmd = ccmd ? ccmd->commands : NULL;
4325       if (command_line_is_silent (cmd))
4326         {
4327           /* The action has been already done by bpstat_stop_status.  */
4328           cmd = cmd->next;
4329         }
4330
4331       while (cmd != NULL)
4332         {
4333           execute_control_command (cmd);
4334
4335           if (breakpoint_proceeded)
4336             break;
4337           else
4338             cmd = cmd->next;
4339         }
4340
4341       /* We can free this command tree now.  */
4342       do_cleanups (this_cmd_tree_chain);
4343
4344       if (breakpoint_proceeded)
4345         {
4346           if (target_can_async_p ())
4347             /* If we are in async mode, then the target might be still
4348                running, not stopped at any breakpoint, so nothing for
4349                us to do here -- just return to the event loop.  */
4350             ;
4351           else
4352             /* In sync mode, when execute_control_command returns
4353                we're already standing on the next breakpoint.
4354                Breakpoint commands for that stop were not run, since
4355                execute_command does not run breakpoint commands --
4356                only command_line_handler does, but that one is not
4357                involved in execution of breakpoint commands.  So, we
4358                can now execute breakpoint commands.  It should be
4359                noted that making execute_command do bpstat actions is
4360                not an option -- in this case we'll have recursive
4361                invocation of bpstat for each breakpoint with a
4362                command, and can easily blow up GDB stack.  Instead, we
4363                return true, which will trigger the caller to recall us
4364                with the new stop_bpstat.  */
4365             again = 1;
4366           break;
4367         }
4368     }
4369   do_cleanups (old_chain);
4370   return again;
4371 }
4372
4373 void
4374 bpstat_do_actions (void)
4375 {
4376   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4377
4378   /* Do any commands attached to breakpoint we are stopped at.  */
4379   while (!ptid_equal (inferior_ptid, null_ptid)
4380          && target_has_execution
4381          && !is_exited (inferior_ptid)
4382          && !is_executing (inferior_ptid))
4383     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4384        and only return when it is stopped at the next breakpoint, we
4385        keep doing breakpoint actions until it returns false to
4386        indicate the inferior was not resumed.  */
4387     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4388       break;
4389
4390   discard_cleanups (cleanup_if_error);
4391 }
4392
4393 /* Print out the (old or new) value associated with a watchpoint.  */
4394
4395 static void
4396 watchpoint_value_print (struct value *val, struct ui_file *stream)
4397 {
4398   if (val == NULL)
4399     fprintf_unfiltered (stream, _("<unreadable>"));
4400   else
4401     {
4402       struct value_print_options opts;
4403       get_user_print_options (&opts);
4404       value_print (val, stream, &opts);
4405     }
4406 }
4407
4408 /* Generic routine for printing messages indicating why we
4409    stopped.  The behavior of this function depends on the value
4410    'print_it' in the bpstat structure.  Under some circumstances we
4411    may decide not to print anything here and delegate the task to
4412    normal_stop().  */
4413
4414 static enum print_stop_action
4415 print_bp_stop_message (bpstat bs)
4416 {
4417   switch (bs->print_it)
4418     {
4419     case print_it_noop:
4420       /* Nothing should be printed for this bpstat entry.  */
4421       return PRINT_UNKNOWN;
4422       break;
4423
4424     case print_it_done:
4425       /* We still want to print the frame, but we already printed the
4426          relevant messages.  */
4427       return PRINT_SRC_AND_LOC;
4428       break;
4429
4430     case print_it_normal:
4431       {
4432         struct breakpoint *b = bs->breakpoint_at;
4433
4434         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4435            which has since been deleted.  */
4436         if (b == NULL)
4437           return PRINT_UNKNOWN;
4438
4439         /* Normal case.  Call the breakpoint's print_it method.  */
4440         return b->ops->print_it (bs);
4441       }
4442       break;
4443
4444     default:
4445       internal_error (__FILE__, __LINE__,
4446                       _("print_bp_stop_message: unrecognized enum value"));
4447       break;
4448     }
4449 }
4450
4451 /* A helper function that prints a shared library stopped event.  */
4452
4453 static void
4454 print_solib_event (int is_catchpoint)
4455 {
4456   int any_deleted
4457     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4458   int any_added
4459     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4460
4461   if (!is_catchpoint)
4462     {
4463       if (any_added || any_deleted)
4464         ui_out_text (current_uiout,
4465                      _("Stopped due to shared library event:\n"));
4466       else
4467         ui_out_text (current_uiout,
4468                      _("Stopped due to shared library event (no "
4469                        "libraries added or removed)\n"));
4470     }
4471
4472   if (ui_out_is_mi_like_p (current_uiout))
4473     ui_out_field_string (current_uiout, "reason",
4474                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4475
4476   if (any_deleted)
4477     {
4478       struct cleanup *cleanup;
4479       char *name;
4480       int ix;
4481
4482       ui_out_text (current_uiout, _("  Inferior unloaded "));
4483       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4484                                                     "removed");
4485       for (ix = 0;
4486            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4487                         ix, name);
4488            ++ix)
4489         {
4490           if (ix > 0)
4491             ui_out_text (current_uiout, "    ");
4492           ui_out_field_string (current_uiout, "library", name);
4493           ui_out_text (current_uiout, "\n");
4494         }
4495
4496       do_cleanups (cleanup);
4497     }
4498
4499   if (any_added)
4500     {
4501       struct so_list *iter;
4502       int ix;
4503       struct cleanup *cleanup;
4504
4505       ui_out_text (current_uiout, _("  Inferior loaded "));
4506       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4507                                                     "added");
4508       for (ix = 0;
4509            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4510                         ix, iter);
4511            ++ix)
4512         {
4513           if (ix > 0)
4514             ui_out_text (current_uiout, "    ");
4515           ui_out_field_string (current_uiout, "library", iter->so_name);
4516           ui_out_text (current_uiout, "\n");
4517         }
4518
4519       do_cleanups (cleanup);
4520     }
4521 }
4522
4523 /* Print a message indicating what happened.  This is called from
4524    normal_stop().  The input to this routine is the head of the bpstat
4525    list - a list of the eventpoints that caused this stop.  KIND is
4526    the target_waitkind for the stopping event.  This
4527    routine calls the generic print routine for printing a message
4528    about reasons for stopping.  This will print (for example) the
4529    "Breakpoint n," part of the output.  The return value of this
4530    routine is one of:
4531
4532    PRINT_UNKNOWN: Means we printed nothing.
4533    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4534    code to print the location.  An example is 
4535    "Breakpoint 1, " which should be followed by
4536    the location.
4537    PRINT_SRC_ONLY: Means we printed something, but there is no need
4538    to also print the location part of the message.
4539    An example is the catch/throw messages, which
4540    don't require a location appended to the end.
4541    PRINT_NOTHING: We have done some printing and we don't need any 
4542    further info to be printed.  */
4543
4544 enum print_stop_action
4545 bpstat_print (bpstat bs, int kind)
4546 {
4547   int val;
4548
4549   /* Maybe another breakpoint in the chain caused us to stop.
4550      (Currently all watchpoints go on the bpstat whether hit or not.
4551      That probably could (should) be changed, provided care is taken
4552      with respect to bpstat_explains_signal).  */
4553   for (; bs; bs = bs->next)
4554     {
4555       val = print_bp_stop_message (bs);
4556       if (val == PRINT_SRC_ONLY 
4557           || val == PRINT_SRC_AND_LOC 
4558           || val == PRINT_NOTHING)
4559         return val;
4560     }
4561
4562   /* If we had hit a shared library event breakpoint,
4563      print_bp_stop_message would print out this message.  If we hit an
4564      OS-level shared library event, do the same thing.  */
4565   if (kind == TARGET_WAITKIND_LOADED)
4566     {
4567       print_solib_event (0);
4568       return PRINT_NOTHING;
4569     }
4570
4571   /* We reached the end of the chain, or we got a null BS to start
4572      with and nothing was printed.  */
4573   return PRINT_UNKNOWN;
4574 }
4575
4576 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4577    used inside a catch_errors to evaluate the breakpoint condition.
4578    The argument is a "struct expression *" that has been cast to a
4579    "char *" to make it pass through catch_errors.  */
4580
4581 static int
4582 breakpoint_cond_eval (void *exp)
4583 {
4584   struct value *mark = value_mark ();
4585   int i = !value_true (evaluate_expression ((struct expression *) exp));
4586
4587   value_free_to_mark (mark);
4588   return i;
4589 }
4590
4591 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4592
4593 static bpstat
4594 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4595 {
4596   bpstat bs;
4597
4598   bs = (bpstat) xmalloc (sizeof (*bs));
4599   bs->next = NULL;
4600   **bs_link_pointer = bs;
4601   *bs_link_pointer = &bs->next;
4602   bs->breakpoint_at = bl->owner;
4603   bs->bp_location_at = bl;
4604   incref_bp_location (bl);
4605   /* If the condition is false, etc., don't do the commands.  */
4606   bs->commands = NULL;
4607   bs->old_val = NULL;
4608   bs->print_it = print_it_normal;
4609   return bs;
4610 }
4611 \f
4612 /* The target has stopped with waitstatus WS.  Check if any hardware
4613    watchpoints have triggered, according to the target.  */
4614
4615 int
4616 watchpoints_triggered (struct target_waitstatus *ws)
4617 {
4618   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4619   CORE_ADDR addr;
4620   struct breakpoint *b;
4621
4622   if (!stopped_by_watchpoint)
4623     {
4624       /* We were not stopped by a watchpoint.  Mark all watchpoints
4625          as not triggered.  */
4626       ALL_BREAKPOINTS (b)
4627         if (is_hardware_watchpoint (b))
4628           {
4629             struct watchpoint *w = (struct watchpoint *) b;
4630
4631             w->watchpoint_triggered = watch_triggered_no;
4632           }
4633
4634       return 0;
4635     }
4636
4637   if (!target_stopped_data_address (&current_target, &addr))
4638     {
4639       /* We were stopped by a watchpoint, but we don't know where.
4640          Mark all watchpoints as unknown.  */
4641       ALL_BREAKPOINTS (b)
4642         if (is_hardware_watchpoint (b))
4643           {
4644             struct watchpoint *w = (struct watchpoint *) b;
4645
4646             w->watchpoint_triggered = watch_triggered_unknown;
4647           }
4648
4649       return stopped_by_watchpoint;
4650     }
4651
4652   /* The target could report the data address.  Mark watchpoints
4653      affected by this data address as triggered, and all others as not
4654      triggered.  */
4655
4656   ALL_BREAKPOINTS (b)
4657     if (is_hardware_watchpoint (b))
4658       {
4659         struct watchpoint *w = (struct watchpoint *) b;
4660         struct bp_location *loc;
4661
4662         w->watchpoint_triggered = watch_triggered_no;
4663         for (loc = b->loc; loc; loc = loc->next)
4664           {
4665             if (is_masked_watchpoint (b))
4666               {
4667                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4668                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4669
4670                 if (newaddr == start)
4671                   {
4672                     w->watchpoint_triggered = watch_triggered_yes;
4673                     break;
4674                   }
4675               }
4676             /* Exact match not required.  Within range is sufficient.  */
4677             else if (target_watchpoint_addr_within_range (&current_target,
4678                                                          addr, loc->address,
4679                                                          loc->length))
4680               {
4681                 w->watchpoint_triggered = watch_triggered_yes;
4682                 break;
4683               }
4684           }
4685       }
4686
4687   return 1;
4688 }
4689
4690 /* Possible return values for watchpoint_check (this can't be an enum
4691    because of check_errors).  */
4692 /* The watchpoint has been deleted.  */
4693 #define WP_DELETED 1
4694 /* The value has changed.  */
4695 #define WP_VALUE_CHANGED 2
4696 /* The value has not changed.  */
4697 #define WP_VALUE_NOT_CHANGED 3
4698 /* Ignore this watchpoint, no matter if the value changed or not.  */
4699 #define WP_IGNORE 4
4700
4701 #define BP_TEMPFLAG 1
4702 #define BP_HARDWAREFLAG 2
4703
4704 /* Evaluate watchpoint condition expression and check if its value
4705    changed.
4706
4707    P should be a pointer to struct bpstat, but is defined as a void *
4708    in order for this function to be usable with catch_errors.  */
4709
4710 static int
4711 watchpoint_check (void *p)
4712 {
4713   bpstat bs = (bpstat) p;
4714   struct watchpoint *b;
4715   struct frame_info *fr;
4716   int within_current_scope;
4717
4718   /* BS is built from an existing struct breakpoint.  */
4719   gdb_assert (bs->breakpoint_at != NULL);
4720   b = (struct watchpoint *) bs->breakpoint_at;
4721
4722   /* If this is a local watchpoint, we only want to check if the
4723      watchpoint frame is in scope if the current thread is the thread
4724      that was used to create the watchpoint.  */
4725   if (!watchpoint_in_thread_scope (b))
4726     return WP_IGNORE;
4727
4728   if (b->exp_valid_block == NULL)
4729     within_current_scope = 1;
4730   else
4731     {
4732       struct frame_info *frame = get_current_frame ();
4733       struct gdbarch *frame_arch = get_frame_arch (frame);
4734       CORE_ADDR frame_pc = get_frame_pc (frame);
4735
4736       /* in_function_epilogue_p() returns a non-zero value if we're
4737          still in the function but the stack frame has already been
4738          invalidated.  Since we can't rely on the values of local
4739          variables after the stack has been destroyed, we are treating
4740          the watchpoint in that state as `not changed' without further
4741          checking.  Don't mark watchpoints as changed if the current
4742          frame is in an epilogue - even if they are in some other
4743          frame, our view of the stack is likely to be wrong and
4744          frame_find_by_id could error out.  */
4745       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4746         return WP_IGNORE;
4747
4748       fr = frame_find_by_id (b->watchpoint_frame);
4749       within_current_scope = (fr != NULL);
4750
4751       /* If we've gotten confused in the unwinder, we might have
4752          returned a frame that can't describe this variable.  */
4753       if (within_current_scope)
4754         {
4755           struct symbol *function;
4756
4757           function = get_frame_function (fr);
4758           if (function == NULL
4759               || !contained_in (b->exp_valid_block,
4760                                 SYMBOL_BLOCK_VALUE (function)))
4761             within_current_scope = 0;
4762         }
4763
4764       if (within_current_scope)
4765         /* If we end up stopping, the current frame will get selected
4766            in normal_stop.  So this call to select_frame won't affect
4767            the user.  */
4768         select_frame (fr);
4769     }
4770
4771   if (within_current_scope)
4772     {
4773       /* We use value_{,free_to_}mark because it could be a *long*
4774          time before we return to the command level and call
4775          free_all_values.  We can't call free_all_values because we
4776          might be in the middle of evaluating a function call.  */
4777
4778       int pc = 0;
4779       struct value *mark;
4780       struct value *new_val;
4781
4782       if (is_masked_watchpoint (&b->base))
4783         /* Since we don't know the exact trigger address (from
4784            stopped_data_address), just tell the user we've triggered
4785            a mask watchpoint.  */
4786         return WP_VALUE_CHANGED;
4787
4788       mark = value_mark ();
4789       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4790
4791       /* We use value_equal_contents instead of value_equal because
4792          the latter coerces an array to a pointer, thus comparing just
4793          the address of the array instead of its contents.  This is
4794          not what we want.  */
4795       if ((b->val != NULL) != (new_val != NULL)
4796           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4797         {
4798           if (new_val != NULL)
4799             {
4800               release_value (new_val);
4801               value_free_to_mark (mark);
4802             }
4803           bs->old_val = b->val;
4804           b->val = new_val;
4805           b->val_valid = 1;
4806           return WP_VALUE_CHANGED;
4807         }
4808       else
4809         {
4810           /* Nothing changed.  */
4811           value_free_to_mark (mark);
4812           return WP_VALUE_NOT_CHANGED;
4813         }
4814     }
4815   else
4816     {
4817       struct ui_out *uiout = current_uiout;
4818
4819       /* This seems like the only logical thing to do because
4820          if we temporarily ignored the watchpoint, then when
4821          we reenter the block in which it is valid it contains
4822          garbage (in the case of a function, it may have two
4823          garbage values, one before and one after the prologue).
4824          So we can't even detect the first assignment to it and
4825          watch after that (since the garbage may or may not equal
4826          the first value assigned).  */
4827       /* We print all the stop information in
4828          breakpoint_ops->print_it, but in this case, by the time we
4829          call breakpoint_ops->print_it this bp will be deleted
4830          already.  So we have no choice but print the information
4831          here.  */
4832       if (ui_out_is_mi_like_p (uiout))
4833         ui_out_field_string
4834           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4835       ui_out_text (uiout, "\nWatchpoint ");
4836       ui_out_field_int (uiout, "wpnum", b->base.number);
4837       ui_out_text (uiout,
4838                    " deleted because the program has left the block in\n\
4839 which its expression is valid.\n");     
4840
4841       /* Make sure the watchpoint's commands aren't executed.  */
4842       decref_counted_command_line (&b->base.commands);
4843       watchpoint_del_at_next_stop (b);
4844
4845       return WP_DELETED;
4846     }
4847 }
4848
4849 /* Return true if it looks like target has stopped due to hitting
4850    breakpoint location BL.  This function does not check if we should
4851    stop, only if BL explains the stop.  */
4852
4853 static int
4854 bpstat_check_location (const struct bp_location *bl,
4855                        struct address_space *aspace, CORE_ADDR bp_addr,
4856                        const struct target_waitstatus *ws)
4857 {
4858   struct breakpoint *b = bl->owner;
4859
4860   /* BL is from an existing breakpoint.  */
4861   gdb_assert (b != NULL);
4862
4863   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4864 }
4865
4866 /* Determine if the watched values have actually changed, and we
4867    should stop.  If not, set BS->stop to 0.  */
4868
4869 static void
4870 bpstat_check_watchpoint (bpstat bs)
4871 {
4872   const struct bp_location *bl;
4873   struct watchpoint *b;
4874
4875   /* BS is built for existing struct breakpoint.  */
4876   bl = bs->bp_location_at;
4877   gdb_assert (bl != NULL);
4878   b = (struct watchpoint *) bs->breakpoint_at;
4879   gdb_assert (b != NULL);
4880
4881     {
4882       int must_check_value = 0;
4883       
4884       if (b->base.type == bp_watchpoint)
4885         /* For a software watchpoint, we must always check the
4886            watched value.  */
4887         must_check_value = 1;
4888       else if (b->watchpoint_triggered == watch_triggered_yes)
4889         /* We have a hardware watchpoint (read, write, or access)
4890            and the target earlier reported an address watched by
4891            this watchpoint.  */
4892         must_check_value = 1;
4893       else if (b->watchpoint_triggered == watch_triggered_unknown
4894                && b->base.type == bp_hardware_watchpoint)
4895         /* We were stopped by a hardware watchpoint, but the target could
4896            not report the data address.  We must check the watchpoint's
4897            value.  Access and read watchpoints are out of luck; without
4898            a data address, we can't figure it out.  */
4899         must_check_value = 1;
4900
4901       if (must_check_value)
4902         {
4903           char *message
4904             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4905                           b->base.number);
4906           struct cleanup *cleanups = make_cleanup (xfree, message);
4907           int e = catch_errors (watchpoint_check, bs, message,
4908                                 RETURN_MASK_ALL);
4909           do_cleanups (cleanups);
4910           switch (e)
4911             {
4912             case WP_DELETED:
4913               /* We've already printed what needs to be printed.  */
4914               bs->print_it = print_it_done;
4915               /* Stop.  */
4916               break;
4917             case WP_IGNORE:
4918               bs->print_it = print_it_noop;
4919               bs->stop = 0;
4920               break;
4921             case WP_VALUE_CHANGED:
4922               if (b->base.type == bp_read_watchpoint)
4923                 {
4924                   /* There are two cases to consider here:
4925
4926                      1. We're watching the triggered memory for reads.
4927                      In that case, trust the target, and always report
4928                      the watchpoint hit to the user.  Even though
4929                      reads don't cause value changes, the value may
4930                      have changed since the last time it was read, and
4931                      since we're not trapping writes, we will not see
4932                      those, and as such we should ignore our notion of
4933                      old value.
4934
4935                      2. We're watching the triggered memory for both
4936                      reads and writes.  There are two ways this may
4937                      happen:
4938
4939                      2.1. This is a target that can't break on data
4940                      reads only, but can break on accesses (reads or
4941                      writes), such as e.g., x86.  We detect this case
4942                      at the time we try to insert read watchpoints.
4943
4944                      2.2. Otherwise, the target supports read
4945                      watchpoints, but, the user set an access or write
4946                      watchpoint watching the same memory as this read
4947                      watchpoint.
4948
4949                      If we're watching memory writes as well as reads,
4950                      ignore watchpoint hits when we find that the
4951                      value hasn't changed, as reads don't cause
4952                      changes.  This still gives false positives when
4953                      the program writes the same value to memory as
4954                      what there was already in memory (we will confuse
4955                      it for a read), but it's much better than
4956                      nothing.  */
4957
4958                   int other_write_watchpoint = 0;
4959
4960                   if (bl->watchpoint_type == hw_read)
4961                     {
4962                       struct breakpoint *other_b;
4963
4964                       ALL_BREAKPOINTS (other_b)
4965                         if (other_b->type == bp_hardware_watchpoint
4966                             || other_b->type == bp_access_watchpoint)
4967                           {
4968                             struct watchpoint *other_w =
4969                               (struct watchpoint *) other_b;
4970
4971                             if (other_w->watchpoint_triggered
4972                                 == watch_triggered_yes)
4973                               {
4974                                 other_write_watchpoint = 1;
4975                                 break;
4976                               }
4977                           }
4978                     }
4979
4980                   if (other_write_watchpoint
4981                       || bl->watchpoint_type == hw_access)
4982                     {
4983                       /* We're watching the same memory for writes,
4984                          and the value changed since the last time we
4985                          updated it, so this trap must be for a write.
4986                          Ignore it.  */
4987                       bs->print_it = print_it_noop;
4988                       bs->stop = 0;
4989                     }
4990                 }
4991               break;
4992             case WP_VALUE_NOT_CHANGED:
4993               if (b->base.type == bp_hardware_watchpoint
4994                   || b->base.type == bp_watchpoint)
4995                 {
4996                   /* Don't stop: write watchpoints shouldn't fire if
4997                      the value hasn't changed.  */
4998                   bs->print_it = print_it_noop;
4999                   bs->stop = 0;
5000                 }
5001               /* Stop.  */
5002               break;
5003             default:
5004               /* Can't happen.  */
5005             case 0:
5006               /* Error from catch_errors.  */
5007               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5008               watchpoint_del_at_next_stop (b);
5009               /* We've already printed what needs to be printed.  */
5010               bs->print_it = print_it_done;
5011               break;
5012             }
5013         }
5014       else      /* must_check_value == 0 */
5015         {
5016           /* This is a case where some watchpoint(s) triggered, but
5017              not at the address of this watchpoint, or else no
5018              watchpoint triggered after all.  So don't print
5019              anything for this watchpoint.  */
5020           bs->print_it = print_it_noop;
5021           bs->stop = 0;
5022         }
5023     }
5024 }
5025
5026
5027 /* Check conditions (condition proper, frame, thread and ignore count)
5028    of breakpoint referred to by BS.  If we should not stop for this
5029    breakpoint, set BS->stop to 0.  */
5030
5031 static void
5032 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5033 {
5034   int thread_id = pid_to_thread_id (ptid);
5035   const struct bp_location *bl;
5036   struct breakpoint *b;
5037
5038   /* BS is built for existing struct breakpoint.  */
5039   bl = bs->bp_location_at;
5040   gdb_assert (bl != NULL);
5041   b = bs->breakpoint_at;
5042   gdb_assert (b != NULL);
5043
5044   /* Even if the target evaluated the condition on its end and notified GDB, we
5045      need to do so again since GDB does not know if we stopped due to a
5046      breakpoint or a single step breakpoint.  */
5047
5048   if (frame_id_p (b->frame_id)
5049       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5050     bs->stop = 0;
5051   else if (bs->stop)
5052     {
5053       int value_is_zero = 0;
5054       struct expression *cond;
5055
5056       /* Evaluate Python breakpoints that have a "stop"
5057          method implemented.  */
5058       if (b->py_bp_object)
5059         bs->stop = gdbpy_should_stop (b->py_bp_object);
5060
5061       if (is_watchpoint (b))
5062         {
5063           struct watchpoint *w = (struct watchpoint *) b;
5064
5065           cond = w->cond_exp;
5066         }
5067       else
5068         cond = bl->cond;
5069
5070       if (cond && b->disposition != disp_del_at_next_stop)
5071         {
5072           int within_current_scope = 1;
5073           struct watchpoint * w;
5074
5075           /* We use value_mark and value_free_to_mark because it could
5076              be a long time before we return to the command level and
5077              call free_all_values.  We can't call free_all_values
5078              because we might be in the middle of evaluating a
5079              function call.  */
5080           struct value *mark = value_mark ();
5081
5082           if (is_watchpoint (b))
5083             w = (struct watchpoint *) b;
5084           else
5085             w = NULL;
5086
5087           /* Need to select the frame, with all that implies so that
5088              the conditions will have the right context.  Because we
5089              use the frame, we will not see an inlined function's
5090              variables when we arrive at a breakpoint at the start
5091              of the inlined function; the current frame will be the
5092              call site.  */
5093           if (w == NULL || w->cond_exp_valid_block == NULL)
5094             select_frame (get_current_frame ());
5095           else
5096             {
5097               struct frame_info *frame;
5098
5099               /* For local watchpoint expressions, which particular
5100                  instance of a local is being watched matters, so we
5101                  keep track of the frame to evaluate the expression
5102                  in.  To evaluate the condition however, it doesn't
5103                  really matter which instantiation of the function
5104                  where the condition makes sense triggers the
5105                  watchpoint.  This allows an expression like "watch
5106                  global if q > 10" set in `func', catch writes to
5107                  global on all threads that call `func', or catch
5108                  writes on all recursive calls of `func' by a single
5109                  thread.  We simply always evaluate the condition in
5110                  the innermost frame that's executing where it makes
5111                  sense to evaluate the condition.  It seems
5112                  intuitive.  */
5113               frame = block_innermost_frame (w->cond_exp_valid_block);
5114               if (frame != NULL)
5115                 select_frame (frame);
5116               else
5117                 within_current_scope = 0;
5118             }
5119           if (within_current_scope)
5120             value_is_zero
5121               = catch_errors (breakpoint_cond_eval, cond,
5122                               "Error in testing breakpoint condition:\n",
5123                               RETURN_MASK_ALL);
5124           else
5125             {
5126               warning (_("Watchpoint condition cannot be tested "
5127                          "in the current scope"));
5128               /* If we failed to set the right context for this
5129                  watchpoint, unconditionally report it.  */
5130               value_is_zero = 0;
5131             }
5132           /* FIXME-someday, should give breakpoint #.  */
5133           value_free_to_mark (mark);
5134         }
5135
5136       if (cond && value_is_zero)
5137         {
5138           bs->stop = 0;
5139         }
5140       else if (b->thread != -1 && b->thread != thread_id)
5141         {
5142           bs->stop = 0;
5143         }
5144       else if (b->ignore_count > 0)
5145         {
5146           b->ignore_count--;
5147           bs->stop = 0;
5148           /* Increase the hit count even though we don't stop.  */
5149           ++(b->hit_count);
5150           observer_notify_breakpoint_modified (b);
5151         }       
5152     }
5153 }
5154
5155
5156 /* Get a bpstat associated with having just stopped at address
5157    BP_ADDR in thread PTID.
5158
5159    Determine whether we stopped at a breakpoint, etc, or whether we
5160    don't understand this stop.  Result is a chain of bpstat's such
5161    that:
5162
5163    if we don't understand the stop, the result is a null pointer.
5164
5165    if we understand why we stopped, the result is not null.
5166
5167    Each element of the chain refers to a particular breakpoint or
5168    watchpoint at which we have stopped.  (We may have stopped for
5169    several reasons concurrently.)
5170
5171    Each element of the chain has valid next, breakpoint_at,
5172    commands, FIXME??? fields.  */
5173
5174 bpstat
5175 bpstat_stop_status (struct address_space *aspace,
5176                     CORE_ADDR bp_addr, ptid_t ptid,
5177                     const struct target_waitstatus *ws)
5178 {
5179   struct breakpoint *b = NULL;
5180   struct bp_location *bl;
5181   struct bp_location *loc;
5182   /* First item of allocated bpstat's.  */
5183   bpstat bs_head = NULL, *bs_link = &bs_head;
5184   /* Pointer to the last thing in the chain currently.  */
5185   bpstat bs;
5186   int ix;
5187   int need_remove_insert;
5188   int removed_any;
5189
5190   /* First, build the bpstat chain with locations that explain a
5191      target stop, while being careful to not set the target running,
5192      as that may invalidate locations (in particular watchpoint
5193      locations are recreated).  Resuming will happen here with
5194      breakpoint conditions or watchpoint expressions that include
5195      inferior function calls.  */
5196
5197   ALL_BREAKPOINTS (b)
5198     {
5199       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5200         continue;
5201
5202       for (bl = b->loc; bl != NULL; bl = bl->next)
5203         {
5204           /* For hardware watchpoints, we look only at the first
5205              location.  The watchpoint_check function will work on the
5206              entire expression, not the individual locations.  For
5207              read watchpoints, the watchpoints_triggered function has
5208              checked all locations already.  */
5209           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5210             break;
5211
5212           if (!bl->enabled || bl->shlib_disabled)
5213             continue;
5214
5215           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5216             continue;
5217
5218           /* Come here if it's a watchpoint, or if the break address
5219              matches.  */
5220
5221           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5222                                                    explain stop.  */
5223
5224           /* Assume we stop.  Should we find a watchpoint that is not
5225              actually triggered, or if the condition of the breakpoint
5226              evaluates as false, we'll reset 'stop' to 0.  */
5227           bs->stop = 1;
5228           bs->print = 1;
5229
5230           /* If this is a scope breakpoint, mark the associated
5231              watchpoint as triggered so that we will handle the
5232              out-of-scope event.  We'll get to the watchpoint next
5233              iteration.  */
5234           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5235             {
5236               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5237
5238               w->watchpoint_triggered = watch_triggered_yes;
5239             }
5240         }
5241     }
5242
5243   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5244     {
5245       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5246         {
5247           bs = bpstat_alloc (loc, &bs_link);
5248           /* For hits of moribund locations, we should just proceed.  */
5249           bs->stop = 0;
5250           bs->print = 0;
5251           bs->print_it = print_it_noop;
5252         }
5253     }
5254
5255   /* A bit of special processing for shlib breakpoints.  We need to
5256      process solib loading here, so that the lists of loaded and
5257      unloaded libraries are correct before we handle "catch load" and
5258      "catch unload".  */
5259   for (bs = bs_head; bs != NULL; bs = bs->next)
5260     {
5261       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5262         {
5263           handle_solib_event ();
5264           break;
5265         }
5266     }
5267
5268   /* Now go through the locations that caused the target to stop, and
5269      check whether we're interested in reporting this stop to higher
5270      layers, or whether we should resume the target transparently.  */
5271
5272   removed_any = 0;
5273
5274   for (bs = bs_head; bs != NULL; bs = bs->next)
5275     {
5276       if (!bs->stop)
5277         continue;
5278
5279       b = bs->breakpoint_at;
5280       b->ops->check_status (bs);
5281       if (bs->stop)
5282         {
5283           bpstat_check_breakpoint_conditions (bs, ptid);
5284
5285           if (bs->stop)
5286             {
5287               ++(b->hit_count);
5288               observer_notify_breakpoint_modified (b);
5289
5290               /* We will stop here.  */
5291               if (b->disposition == disp_disable)
5292                 {
5293                   --(b->enable_count);
5294                   if (b->enable_count <= 0
5295                       && b->enable_state != bp_permanent)
5296                     b->enable_state = bp_disabled;
5297                   removed_any = 1;
5298                 }
5299               if (b->silent)
5300                 bs->print = 0;
5301               bs->commands = b->commands;
5302               incref_counted_command_line (bs->commands);
5303               if (command_line_is_silent (bs->commands
5304                                           ? bs->commands->commands : NULL))
5305                 bs->print = 0;
5306             }
5307
5308         }
5309
5310       /* Print nothing for this entry if we don't stop or don't
5311          print.  */
5312       if (!bs->stop || !bs->print)
5313         bs->print_it = print_it_noop;
5314     }
5315
5316   /* If we aren't stopping, the value of some hardware watchpoint may
5317      not have changed, but the intermediate memory locations we are
5318      watching may have.  Don't bother if we're stopping; this will get
5319      done later.  */
5320   need_remove_insert = 0;
5321   if (! bpstat_causes_stop (bs_head))
5322     for (bs = bs_head; bs != NULL; bs = bs->next)
5323       if (!bs->stop
5324           && bs->breakpoint_at
5325           && is_hardware_watchpoint (bs->breakpoint_at))
5326         {
5327           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5328
5329           update_watchpoint (w, 0 /* don't reparse.  */);
5330           need_remove_insert = 1;
5331         }
5332
5333   if (need_remove_insert)
5334     update_global_location_list (1);
5335   else if (removed_any)
5336     update_global_location_list (0);
5337
5338   return bs_head;
5339 }
5340
5341 static void
5342 handle_jit_event (void)
5343 {
5344   struct frame_info *frame;
5345   struct gdbarch *gdbarch;
5346
5347   /* Switch terminal for any messages produced by
5348      breakpoint_re_set.  */
5349   target_terminal_ours_for_output ();
5350
5351   frame = get_current_frame ();
5352   gdbarch = get_frame_arch (frame);
5353
5354   jit_event_handler (gdbarch);
5355
5356   target_terminal_inferior ();
5357 }
5358
5359 /* Handle an solib event by calling solib_add.  */
5360
5361 void
5362 handle_solib_event (void)
5363 {
5364   clear_program_space_solib_cache (current_inferior ()->pspace);
5365
5366   /* Check for any newly added shared libraries if we're supposed to
5367      be adding them automatically.  Switch terminal for any messages
5368      produced by breakpoint_re_set.  */
5369   target_terminal_ours_for_output ();
5370 #ifdef SOLIB_ADD
5371   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5372 #else
5373   solib_add (NULL, 0, &current_target, auto_solib_add);
5374 #endif
5375   target_terminal_inferior ();
5376 }
5377
5378 /* Prepare WHAT final decision for infrun.  */
5379
5380 /* Decide what infrun needs to do with this bpstat.  */
5381
5382 struct bpstat_what
5383 bpstat_what (bpstat bs_head)
5384 {
5385   struct bpstat_what retval;
5386   int jit_event = 0;
5387   bpstat bs;
5388
5389   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5390   retval.call_dummy = STOP_NONE;
5391   retval.is_longjmp = 0;
5392
5393   for (bs = bs_head; bs != NULL; bs = bs->next)
5394     {
5395       /* Extract this BS's action.  After processing each BS, we check
5396          if its action overrides all we've seem so far.  */
5397       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5398       enum bptype bptype;
5399
5400       if (bs->breakpoint_at == NULL)
5401         {
5402           /* I suspect this can happen if it was a momentary
5403              breakpoint which has since been deleted.  */
5404           bptype = bp_none;
5405         }
5406       else
5407         bptype = bs->breakpoint_at->type;
5408
5409       switch (bptype)
5410         {
5411         case bp_none:
5412           break;
5413         case bp_breakpoint:
5414         case bp_hardware_breakpoint:
5415         case bp_until:
5416         case bp_finish:
5417         case bp_shlib_event:
5418           if (bs->stop)
5419             {
5420               if (bs->print)
5421                 this_action = BPSTAT_WHAT_STOP_NOISY;
5422               else
5423                 this_action = BPSTAT_WHAT_STOP_SILENT;
5424             }
5425           else
5426             this_action = BPSTAT_WHAT_SINGLE;
5427           break;
5428         case bp_watchpoint:
5429         case bp_hardware_watchpoint:
5430         case bp_read_watchpoint:
5431         case bp_access_watchpoint:
5432           if (bs->stop)
5433             {
5434               if (bs->print)
5435                 this_action = BPSTAT_WHAT_STOP_NOISY;
5436               else
5437                 this_action = BPSTAT_WHAT_STOP_SILENT;
5438             }
5439           else
5440             {
5441               /* There was a watchpoint, but we're not stopping.
5442                  This requires no further action.  */
5443             }
5444           break;
5445         case bp_longjmp:
5446         case bp_longjmp_call_dummy:
5447         case bp_exception:
5448           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5449           retval.is_longjmp = bptype != bp_exception;
5450           break;
5451         case bp_longjmp_resume:
5452         case bp_exception_resume:
5453           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5454           retval.is_longjmp = bptype == bp_longjmp_resume;
5455           break;
5456         case bp_step_resume:
5457           if (bs->stop)
5458             this_action = BPSTAT_WHAT_STEP_RESUME;
5459           else
5460             {
5461               /* It is for the wrong frame.  */
5462               this_action = BPSTAT_WHAT_SINGLE;
5463             }
5464           break;
5465         case bp_hp_step_resume:
5466           if (bs->stop)
5467             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5468           else
5469             {
5470               /* It is for the wrong frame.  */
5471               this_action = BPSTAT_WHAT_SINGLE;
5472             }
5473           break;
5474         case bp_watchpoint_scope:
5475         case bp_thread_event:
5476         case bp_overlay_event:
5477         case bp_longjmp_master:
5478         case bp_std_terminate_master:
5479         case bp_exception_master:
5480           this_action = BPSTAT_WHAT_SINGLE;
5481           break;
5482         case bp_catchpoint:
5483           if (bs->stop)
5484             {
5485               if (bs->print)
5486                 this_action = BPSTAT_WHAT_STOP_NOISY;
5487               else
5488                 this_action = BPSTAT_WHAT_STOP_SILENT;
5489             }
5490           else
5491             {
5492               /* There was a catchpoint, but we're not stopping.
5493                  This requires no further action.  */
5494             }
5495           break;
5496         case bp_jit_event:
5497           jit_event = 1;
5498           this_action = BPSTAT_WHAT_SINGLE;
5499           break;
5500         case bp_call_dummy:
5501           /* Make sure the action is stop (silent or noisy),
5502              so infrun.c pops the dummy frame.  */
5503           retval.call_dummy = STOP_STACK_DUMMY;
5504           this_action = BPSTAT_WHAT_STOP_SILENT;
5505           break;
5506         case bp_std_terminate:
5507           /* Make sure the action is stop (silent or noisy),
5508              so infrun.c pops the dummy frame.  */
5509           retval.call_dummy = STOP_STD_TERMINATE;
5510           this_action = BPSTAT_WHAT_STOP_SILENT;
5511           break;
5512         case bp_tracepoint:
5513         case bp_fast_tracepoint:
5514         case bp_static_tracepoint:
5515           /* Tracepoint hits should not be reported back to GDB, and
5516              if one got through somehow, it should have been filtered
5517              out already.  */
5518           internal_error (__FILE__, __LINE__,
5519                           _("bpstat_what: tracepoint encountered"));
5520           break;
5521         case bp_gnu_ifunc_resolver:
5522           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5523           this_action = BPSTAT_WHAT_SINGLE;
5524           break;
5525         case bp_gnu_ifunc_resolver_return:
5526           /* The breakpoint will be removed, execution will restart from the
5527              PC of the former breakpoint.  */
5528           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5529           break;
5530
5531         case bp_dprintf:
5532           this_action = BPSTAT_WHAT_STOP_SILENT;
5533           break;
5534
5535         default:
5536           internal_error (__FILE__, __LINE__,
5537                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5538         }
5539
5540       retval.main_action = max (retval.main_action, this_action);
5541     }
5542
5543   /* These operations may affect the bs->breakpoint_at state so they are
5544      delayed after MAIN_ACTION is decided above.  */
5545
5546   if (jit_event)
5547     {
5548       if (debug_infrun)
5549         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5550
5551       handle_jit_event ();
5552     }
5553
5554   for (bs = bs_head; bs != NULL; bs = bs->next)
5555     {
5556       struct breakpoint *b = bs->breakpoint_at;
5557
5558       if (b == NULL)
5559         continue;
5560       switch (b->type)
5561         {
5562         case bp_gnu_ifunc_resolver:
5563           gnu_ifunc_resolver_stop (b);
5564           break;
5565         case bp_gnu_ifunc_resolver_return:
5566           gnu_ifunc_resolver_return_stop (b);
5567           break;
5568         }
5569     }
5570
5571   return retval;
5572 }
5573
5574 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5575    without hardware support).  This isn't related to a specific bpstat,
5576    just to things like whether watchpoints are set.  */
5577
5578 int
5579 bpstat_should_step (void)
5580 {
5581   struct breakpoint *b;
5582
5583   ALL_BREAKPOINTS (b)
5584     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5585       return 1;
5586   return 0;
5587 }
5588
5589 int
5590 bpstat_causes_stop (bpstat bs)
5591 {
5592   for (; bs != NULL; bs = bs->next)
5593     if (bs->stop)
5594       return 1;
5595
5596   return 0;
5597 }
5598
5599 \f
5600
5601 /* Compute a string of spaces suitable to indent the next line
5602    so it starts at the position corresponding to the table column
5603    named COL_NAME in the currently active table of UIOUT.  */
5604
5605 static char *
5606 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5607 {
5608   static char wrap_indent[80];
5609   int i, total_width, width, align;
5610   char *text;
5611
5612   total_width = 0;
5613   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5614     {
5615       if (strcmp (text, col_name) == 0)
5616         {
5617           gdb_assert (total_width < sizeof wrap_indent);
5618           memset (wrap_indent, ' ', total_width);
5619           wrap_indent[total_width] = 0;
5620
5621           return wrap_indent;
5622         }
5623
5624       total_width += width + 1;
5625     }
5626
5627   return NULL;
5628 }
5629
5630 /* Determine if the locations of this breakpoint will have their conditions
5631    evaluated by the target, host or a mix of both.  Returns the following:
5632
5633     "host": Host evals condition.
5634     "host or target": Host or Target evals condition.
5635     "target": Target evals condition.
5636 */
5637
5638 static const char *
5639 bp_condition_evaluator (struct breakpoint *b)
5640 {
5641   struct bp_location *bl;
5642   char host_evals = 0;
5643   char target_evals = 0;
5644
5645   if (!b)
5646     return NULL;
5647
5648   if (!is_breakpoint (b))
5649     return NULL;
5650
5651   if (gdb_evaluates_breakpoint_condition_p ()
5652       || !target_supports_evaluation_of_breakpoint_conditions ())
5653     return condition_evaluation_host;
5654
5655   for (bl = b->loc; bl; bl = bl->next)
5656     {
5657       if (bl->cond_bytecode)
5658         target_evals++;
5659       else
5660         host_evals++;
5661     }
5662
5663   if (host_evals && target_evals)
5664     return condition_evaluation_both;
5665   else if (target_evals)
5666     return condition_evaluation_target;
5667   else
5668     return condition_evaluation_host;
5669 }
5670
5671 /* Determine the breakpoint location's condition evaluator.  This is
5672    similar to bp_condition_evaluator, but for locations.  */
5673
5674 static const char *
5675 bp_location_condition_evaluator (struct bp_location *bl)
5676 {
5677   if (bl && !is_breakpoint (bl->owner))
5678     return NULL;
5679
5680   if (gdb_evaluates_breakpoint_condition_p ()
5681       || !target_supports_evaluation_of_breakpoint_conditions ())
5682     return condition_evaluation_host;
5683
5684   if (bl && bl->cond_bytecode)
5685     return condition_evaluation_target;
5686   else
5687     return condition_evaluation_host;
5688 }
5689
5690 /* Print the LOC location out of the list of B->LOC locations.  */
5691
5692 static void
5693 print_breakpoint_location (struct breakpoint *b,
5694                            struct bp_location *loc)
5695 {
5696   struct ui_out *uiout = current_uiout;
5697   struct cleanup *old_chain = save_current_program_space ();
5698
5699   if (loc != NULL && loc->shlib_disabled)
5700     loc = NULL;
5701
5702   if (loc != NULL)
5703     set_current_program_space (loc->pspace);
5704
5705   if (b->display_canonical)
5706     ui_out_field_string (uiout, "what", b->addr_string);
5707   else if (loc && loc->symtab)
5708     {
5709       struct symbol *sym 
5710         = find_pc_sect_function (loc->address, loc->section);
5711       if (sym)
5712         {
5713           ui_out_text (uiout, "in ");
5714           ui_out_field_string (uiout, "func",
5715                                SYMBOL_PRINT_NAME (sym));
5716           ui_out_text (uiout, " ");
5717           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5718           ui_out_text (uiout, "at ");
5719         }
5720       ui_out_field_string (uiout, "file",
5721                            symtab_to_filename_for_display (loc->symtab));
5722       ui_out_text (uiout, ":");
5723
5724       if (ui_out_is_mi_like_p (uiout))
5725         ui_out_field_string (uiout, "fullname",
5726                              symtab_to_fullname (loc->symtab));
5727       
5728       ui_out_field_int (uiout, "line", loc->line_number);
5729     }
5730   else if (loc)
5731     {
5732       struct ui_file *stb = mem_fileopen ();
5733       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5734
5735       print_address_symbolic (loc->gdbarch, loc->address, stb,
5736                               demangle, "");
5737       ui_out_field_stream (uiout, "at", stb);
5738
5739       do_cleanups (stb_chain);
5740     }
5741   else
5742     ui_out_field_string (uiout, "pending", b->addr_string);
5743
5744   if (loc && is_breakpoint (b)
5745       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5746       && bp_condition_evaluator (b) == condition_evaluation_both)
5747     {
5748       ui_out_text (uiout, " (");
5749       ui_out_field_string (uiout, "evaluated-by",
5750                            bp_location_condition_evaluator (loc));
5751       ui_out_text (uiout, ")");
5752     }
5753
5754   do_cleanups (old_chain);
5755 }
5756
5757 static const char *
5758 bptype_string (enum bptype type)
5759 {
5760   struct ep_type_description
5761     {
5762       enum bptype type;
5763       char *description;
5764     };
5765   static struct ep_type_description bptypes[] =
5766   {
5767     {bp_none, "?deleted?"},
5768     {bp_breakpoint, "breakpoint"},
5769     {bp_hardware_breakpoint, "hw breakpoint"},
5770     {bp_until, "until"},
5771     {bp_finish, "finish"},
5772     {bp_watchpoint, "watchpoint"},
5773     {bp_hardware_watchpoint, "hw watchpoint"},
5774     {bp_read_watchpoint, "read watchpoint"},
5775     {bp_access_watchpoint, "acc watchpoint"},
5776     {bp_longjmp, "longjmp"},
5777     {bp_longjmp_resume, "longjmp resume"},
5778     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5779     {bp_exception, "exception"},
5780     {bp_exception_resume, "exception resume"},
5781     {bp_step_resume, "step resume"},
5782     {bp_hp_step_resume, "high-priority step resume"},
5783     {bp_watchpoint_scope, "watchpoint scope"},
5784     {bp_call_dummy, "call dummy"},
5785     {bp_std_terminate, "std::terminate"},
5786     {bp_shlib_event, "shlib events"},
5787     {bp_thread_event, "thread events"},
5788     {bp_overlay_event, "overlay events"},
5789     {bp_longjmp_master, "longjmp master"},
5790     {bp_std_terminate_master, "std::terminate master"},
5791     {bp_exception_master, "exception master"},
5792     {bp_catchpoint, "catchpoint"},
5793     {bp_tracepoint, "tracepoint"},
5794     {bp_fast_tracepoint, "fast tracepoint"},
5795     {bp_static_tracepoint, "static tracepoint"},
5796     {bp_dprintf, "dprintf"},
5797     {bp_jit_event, "jit events"},
5798     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5799     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5800   };
5801
5802   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5803       || ((int) type != bptypes[(int) type].type))
5804     internal_error (__FILE__, __LINE__,
5805                     _("bptypes table does not describe type #%d."),
5806                     (int) type);
5807
5808   return bptypes[(int) type].description;
5809 }
5810
5811 DEF_VEC_I(int);
5812
5813 /* For MI, output a field named 'thread-groups' with a list as the value.
5814    For CLI, prefix the list with the string 'inf'. */
5815
5816 static void
5817 output_thread_groups (struct ui_out *uiout,
5818                       const char *field_name,
5819                       VEC(int) *inf_num,
5820                       int mi_only)
5821 {
5822   struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
5823                                                                 field_name);
5824   int is_mi = ui_out_is_mi_like_p (uiout);
5825   int inf;
5826   int i;
5827
5828   /* For backward compatibility, don't display inferiors in CLI unless
5829      there are several.  Always display them for MI. */
5830   if (!is_mi && mi_only)
5831     return;
5832
5833   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5834     {
5835       if (is_mi)
5836         {
5837           char mi_group[10];
5838
5839           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5840           ui_out_field_string (uiout, NULL, mi_group);
5841         }
5842       else
5843         {
5844           if (i == 0)
5845             ui_out_text (uiout, " inf ");
5846           else
5847             ui_out_text (uiout, ", ");
5848         
5849           ui_out_text (uiout, plongest (inf));
5850         }
5851     }
5852
5853   do_cleanups (back_to);
5854 }
5855
5856 /* Print B to gdb_stdout.  */
5857
5858 static void
5859 print_one_breakpoint_location (struct breakpoint *b,
5860                                struct bp_location *loc,
5861                                int loc_number,
5862                                struct bp_location **last_loc,
5863                                int allflag)
5864 {
5865   struct command_line *l;
5866   static char bpenables[] = "nynny";
5867
5868   struct ui_out *uiout = current_uiout;
5869   int header_of_multiple = 0;
5870   int part_of_multiple = (loc != NULL);
5871   struct value_print_options opts;
5872
5873   get_user_print_options (&opts);
5874
5875   gdb_assert (!loc || loc_number != 0);
5876   /* See comment in print_one_breakpoint concerning treatment of
5877      breakpoints with single disabled location.  */
5878   if (loc == NULL 
5879       && (b->loc != NULL 
5880           && (b->loc->next != NULL || !b->loc->enabled)))
5881     header_of_multiple = 1;
5882   if (loc == NULL)
5883     loc = b->loc;
5884
5885   annotate_record ();
5886
5887   /* 1 */
5888   annotate_field (0);
5889   if (part_of_multiple)
5890     {
5891       char *formatted;
5892       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5893       ui_out_field_string (uiout, "number", formatted);
5894       xfree (formatted);
5895     }
5896   else
5897     {
5898       ui_out_field_int (uiout, "number", b->number);
5899     }
5900
5901   /* 2 */
5902   annotate_field (1);
5903   if (part_of_multiple)
5904     ui_out_field_skip (uiout, "type");
5905   else
5906     ui_out_field_string (uiout, "type", bptype_string (b->type));
5907
5908   /* 3 */
5909   annotate_field (2);
5910   if (part_of_multiple)
5911     ui_out_field_skip (uiout, "disp");
5912   else
5913     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5914
5915
5916   /* 4 */
5917   annotate_field (3);
5918   if (part_of_multiple)
5919     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5920   else
5921     ui_out_field_fmt (uiout, "enabled", "%c", 
5922                       bpenables[(int) b->enable_state]);
5923   ui_out_spaces (uiout, 2);
5924
5925   
5926   /* 5 and 6 */
5927   if (b->ops != NULL && b->ops->print_one != NULL)
5928     {
5929       /* Although the print_one can possibly print all locations,
5930          calling it here is not likely to get any nice result.  So,
5931          make sure there's just one location.  */
5932       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5933       b->ops->print_one (b, last_loc);
5934     }
5935   else
5936     switch (b->type)
5937       {
5938       case bp_none:
5939         internal_error (__FILE__, __LINE__,
5940                         _("print_one_breakpoint: bp_none encountered\n"));
5941         break;
5942
5943       case bp_watchpoint:
5944       case bp_hardware_watchpoint:
5945       case bp_read_watchpoint:
5946       case bp_access_watchpoint:
5947         {
5948           struct watchpoint *w = (struct watchpoint *) b;
5949
5950           /* Field 4, the address, is omitted (which makes the columns
5951              not line up too nicely with the headers, but the effect
5952              is relatively readable).  */
5953           if (opts.addressprint)
5954             ui_out_field_skip (uiout, "addr");
5955           annotate_field (5);
5956           ui_out_field_string (uiout, "what", w->exp_string);
5957         }
5958         break;
5959
5960       case bp_breakpoint:
5961       case bp_hardware_breakpoint:
5962       case bp_until:
5963       case bp_finish:
5964       case bp_longjmp:
5965       case bp_longjmp_resume:
5966       case bp_longjmp_call_dummy:
5967       case bp_exception:
5968       case bp_exception_resume:
5969       case bp_step_resume:
5970       case bp_hp_step_resume:
5971       case bp_watchpoint_scope:
5972       case bp_call_dummy:
5973       case bp_std_terminate:
5974       case bp_shlib_event:
5975       case bp_thread_event:
5976       case bp_overlay_event:
5977       case bp_longjmp_master:
5978       case bp_std_terminate_master:
5979       case bp_exception_master:
5980       case bp_tracepoint:
5981       case bp_fast_tracepoint:
5982       case bp_static_tracepoint:
5983       case bp_dprintf:
5984       case bp_jit_event:
5985       case bp_gnu_ifunc_resolver:
5986       case bp_gnu_ifunc_resolver_return:
5987         if (opts.addressprint)
5988           {
5989             annotate_field (4);
5990             if (header_of_multiple)
5991               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5992             else if (b->loc == NULL || loc->shlib_disabled)
5993               ui_out_field_string (uiout, "addr", "<PENDING>");
5994             else
5995               ui_out_field_core_addr (uiout, "addr",
5996                                       loc->gdbarch, loc->address);
5997           }
5998         annotate_field (5);
5999         if (!header_of_multiple)
6000           print_breakpoint_location (b, loc);
6001         if (b->loc)
6002           *last_loc = b->loc;
6003         break;
6004       }
6005
6006
6007   if (loc != NULL && !header_of_multiple)
6008     {
6009       struct inferior *inf;
6010       VEC(int) *inf_num = NULL;
6011       int mi_only = 1;
6012
6013       ALL_INFERIORS (inf)
6014         {
6015           if (inf->pspace == loc->pspace)
6016             VEC_safe_push (int, inf_num, inf->num);
6017         }
6018
6019         /* For backward compatibility, don't display inferiors in CLI unless
6020            there are several.  Always display for MI. */
6021         if (allflag
6022             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6023                 && (number_of_program_spaces () > 1
6024                     || number_of_inferiors () > 1)
6025                 /* LOC is for existing B, it cannot be in
6026                    moribund_locations and thus having NULL OWNER.  */
6027                 && loc->owner->type != bp_catchpoint))
6028         mi_only = 0;
6029       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6030       VEC_free (int, inf_num);
6031     }
6032
6033   if (!part_of_multiple)
6034     {
6035       if (b->thread != -1)
6036         {
6037           /* FIXME: This seems to be redundant and lost here; see the
6038              "stop only in" line a little further down.  */
6039           ui_out_text (uiout, " thread ");
6040           ui_out_field_int (uiout, "thread", b->thread);
6041         }
6042       else if (b->task != 0)
6043         {
6044           ui_out_text (uiout, " task ");
6045           ui_out_field_int (uiout, "task", b->task);
6046         }
6047     }
6048
6049   ui_out_text (uiout, "\n");
6050
6051   if (!part_of_multiple)
6052     b->ops->print_one_detail (b, uiout);
6053
6054   if (part_of_multiple && frame_id_p (b->frame_id))
6055     {
6056       annotate_field (6);
6057       ui_out_text (uiout, "\tstop only in stack frame at ");
6058       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6059          the frame ID.  */
6060       ui_out_field_core_addr (uiout, "frame",
6061                               b->gdbarch, b->frame_id.stack_addr);
6062       ui_out_text (uiout, "\n");
6063     }
6064   
6065   if (!part_of_multiple && b->cond_string)
6066     {
6067       annotate_field (7);
6068       if (is_tracepoint (b))
6069         ui_out_text (uiout, "\ttrace only if ");
6070       else
6071         ui_out_text (uiout, "\tstop only if ");
6072       ui_out_field_string (uiout, "cond", b->cond_string);
6073
6074       /* Print whether the target is doing the breakpoint's condition
6075          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6076       if (is_breakpoint (b)
6077           && breakpoint_condition_evaluation_mode ()
6078           == condition_evaluation_target)
6079         {
6080           ui_out_text (uiout, " (");
6081           ui_out_field_string (uiout, "evaluated-by",
6082                                bp_condition_evaluator (b));
6083           ui_out_text (uiout, " evals)");
6084         }
6085       ui_out_text (uiout, "\n");
6086     }
6087
6088   if (!part_of_multiple && b->thread != -1)
6089     {
6090       /* FIXME should make an annotation for this.  */
6091       ui_out_text (uiout, "\tstop only in thread ");
6092       ui_out_field_int (uiout, "thread", b->thread);
6093       ui_out_text (uiout, "\n");
6094     }
6095   
6096   if (!part_of_multiple)
6097     {
6098       if (b->hit_count)
6099         {
6100           /* FIXME should make an annotation for this.  */
6101           if (is_catchpoint (b))
6102             ui_out_text (uiout, "\tcatchpoint");
6103           else if (is_tracepoint (b))
6104             ui_out_text (uiout, "\ttracepoint");
6105           else
6106             ui_out_text (uiout, "\tbreakpoint");
6107           ui_out_text (uiout, " already hit ");
6108           ui_out_field_int (uiout, "times", b->hit_count);
6109           if (b->hit_count == 1)
6110             ui_out_text (uiout, " time\n");
6111           else
6112             ui_out_text (uiout, " times\n");
6113         }
6114       else
6115         {
6116           /* Output the count also if it is zero, but only if this is mi.  */
6117           if (ui_out_is_mi_like_p (uiout))
6118             ui_out_field_int (uiout, "times", b->hit_count);
6119         }
6120     }
6121
6122   if (!part_of_multiple && b->ignore_count)
6123     {
6124       annotate_field (8);
6125       ui_out_text (uiout, "\tignore next ");
6126       ui_out_field_int (uiout, "ignore", b->ignore_count);
6127       ui_out_text (uiout, " hits\n");
6128     }
6129
6130   /* Note that an enable count of 1 corresponds to "enable once"
6131      behavior, which is reported by the combination of enablement and
6132      disposition, so we don't need to mention it here.  */
6133   if (!part_of_multiple && b->enable_count > 1)
6134     {
6135       annotate_field (8);
6136       ui_out_text (uiout, "\tdisable after ");
6137       /* Tweak the wording to clarify that ignore and enable counts
6138          are distinct, and have additive effect.  */
6139       if (b->ignore_count)
6140         ui_out_text (uiout, "additional ");
6141       else
6142         ui_out_text (uiout, "next ");
6143       ui_out_field_int (uiout, "enable", b->enable_count);
6144       ui_out_text (uiout, " hits\n");
6145     }
6146
6147   if (!part_of_multiple && is_tracepoint (b))
6148     {
6149       struct tracepoint *tp = (struct tracepoint *) b;
6150
6151       if (tp->traceframe_usage)
6152         {
6153           ui_out_text (uiout, "\ttrace buffer usage ");
6154           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6155           ui_out_text (uiout, " bytes\n");
6156         }
6157     }
6158
6159   l = b->commands ? b->commands->commands : NULL;
6160   if (!part_of_multiple && l)
6161     {
6162       struct cleanup *script_chain;
6163
6164       annotate_field (9);
6165       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6166       print_command_lines (uiout, l, 4);
6167       do_cleanups (script_chain);
6168     }
6169
6170   if (is_tracepoint (b))
6171     {
6172       struct tracepoint *t = (struct tracepoint *) b;
6173
6174       if (!part_of_multiple && t->pass_count)
6175         {
6176           annotate_field (10);
6177           ui_out_text (uiout, "\tpass count ");
6178           ui_out_field_int (uiout, "pass", t->pass_count);
6179           ui_out_text (uiout, " \n");
6180         }
6181
6182       /* Don't display it when tracepoint or tracepoint location is
6183          pending.   */
6184       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6185         {
6186           annotate_field (11);
6187
6188           if (ui_out_is_mi_like_p (uiout))
6189             ui_out_field_string (uiout, "installed",
6190                                  loc->inserted ? "y" : "n");
6191           else
6192             {
6193               if (loc->inserted)
6194                 ui_out_text (uiout, "\t");
6195               else
6196                 ui_out_text (uiout, "\tnot ");
6197               ui_out_text (uiout, "installed on target\n");
6198             }
6199         }
6200     }
6201
6202   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6203     {
6204       if (is_watchpoint (b))
6205         {
6206           struct watchpoint *w = (struct watchpoint *) b;
6207
6208           ui_out_field_string (uiout, "original-location", w->exp_string);
6209         }
6210       else if (b->addr_string)
6211         ui_out_field_string (uiout, "original-location", b->addr_string);
6212     }
6213 }
6214
6215 static void
6216 print_one_breakpoint (struct breakpoint *b,
6217                       struct bp_location **last_loc, 
6218                       int allflag)
6219 {
6220   struct cleanup *bkpt_chain;
6221   struct ui_out *uiout = current_uiout;
6222
6223   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6224
6225   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6226   do_cleanups (bkpt_chain);
6227
6228   /* If this breakpoint has custom print function,
6229      it's already printed.  Otherwise, print individual
6230      locations, if any.  */
6231   if (b->ops == NULL || b->ops->print_one == NULL)
6232     {
6233       /* If breakpoint has a single location that is disabled, we
6234          print it as if it had several locations, since otherwise it's
6235          hard to represent "breakpoint enabled, location disabled"
6236          situation.
6237
6238          Note that while hardware watchpoints have several locations
6239          internally, that's not a property exposed to user.  */
6240       if (b->loc 
6241           && !is_hardware_watchpoint (b)
6242           && (b->loc->next || !b->loc->enabled))
6243         {
6244           struct bp_location *loc;
6245           int n = 1;
6246
6247           for (loc = b->loc; loc; loc = loc->next, ++n)
6248             {
6249               struct cleanup *inner2 =
6250                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6251               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6252               do_cleanups (inner2);
6253             }
6254         }
6255     }
6256 }
6257
6258 static int
6259 breakpoint_address_bits (struct breakpoint *b)
6260 {
6261   int print_address_bits = 0;
6262   struct bp_location *loc;
6263
6264   for (loc = b->loc; loc; loc = loc->next)
6265     {
6266       int addr_bit;
6267
6268       /* Software watchpoints that aren't watching memory don't have
6269          an address to print.  */
6270       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6271         continue;
6272
6273       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6274       if (addr_bit > print_address_bits)
6275         print_address_bits = addr_bit;
6276     }
6277
6278   return print_address_bits;
6279 }
6280
6281 struct captured_breakpoint_query_args
6282   {
6283     int bnum;
6284   };
6285
6286 static int
6287 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6288 {
6289   struct captured_breakpoint_query_args *args = data;
6290   struct breakpoint *b;
6291   struct bp_location *dummy_loc = NULL;
6292
6293   ALL_BREAKPOINTS (b)
6294     {
6295       if (args->bnum == b->number)
6296         {
6297           print_one_breakpoint (b, &dummy_loc, 0);
6298           return GDB_RC_OK;
6299         }
6300     }
6301   return GDB_RC_NONE;
6302 }
6303
6304 enum gdb_rc
6305 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6306                       char **error_message)
6307 {
6308   struct captured_breakpoint_query_args args;
6309
6310   args.bnum = bnum;
6311   /* For the moment we don't trust print_one_breakpoint() to not throw
6312      an error.  */
6313   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6314                                  error_message, RETURN_MASK_ALL) < 0)
6315     return GDB_RC_FAIL;
6316   else
6317     return GDB_RC_OK;
6318 }
6319
6320 /* Return true if this breakpoint was set by the user, false if it is
6321    internal or momentary.  */
6322
6323 int
6324 user_breakpoint_p (struct breakpoint *b)
6325 {
6326   return b->number > 0;
6327 }
6328
6329 /* Print information on user settable breakpoint (watchpoint, etc)
6330    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6331    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6332    FILTER is non-NULL, call it on each breakpoint and only include the
6333    ones for which it returns non-zero.  Return the total number of
6334    breakpoints listed.  */
6335
6336 static int
6337 breakpoint_1 (char *args, int allflag, 
6338               int (*filter) (const struct breakpoint *))
6339 {
6340   struct breakpoint *b;
6341   struct bp_location *last_loc = NULL;
6342   int nr_printable_breakpoints;
6343   struct cleanup *bkpttbl_chain;
6344   struct value_print_options opts;
6345   int print_address_bits = 0;
6346   int print_type_col_width = 14;
6347   struct ui_out *uiout = current_uiout;
6348
6349   get_user_print_options (&opts);
6350
6351   /* Compute the number of rows in the table, as well as the size
6352      required for address fields.  */
6353   nr_printable_breakpoints = 0;
6354   ALL_BREAKPOINTS (b)
6355     {
6356       /* If we have a filter, only list the breakpoints it accepts.  */
6357       if (filter && !filter (b))
6358         continue;
6359
6360       /* If we have an "args" string, it is a list of breakpoints to 
6361          accept.  Skip the others.  */
6362       if (args != NULL && *args != '\0')
6363         {
6364           if (allflag && parse_and_eval_long (args) != b->number)
6365             continue;
6366           if (!allflag && !number_is_in_list (args, b->number))
6367             continue;
6368         }
6369
6370       if (allflag || user_breakpoint_p (b))
6371         {
6372           int addr_bit, type_len;
6373
6374           addr_bit = breakpoint_address_bits (b);
6375           if (addr_bit > print_address_bits)
6376             print_address_bits = addr_bit;
6377
6378           type_len = strlen (bptype_string (b->type));
6379           if (type_len > print_type_col_width)
6380             print_type_col_width = type_len;
6381
6382           nr_printable_breakpoints++;
6383         }
6384     }
6385
6386   if (opts.addressprint)
6387     bkpttbl_chain 
6388       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6389                                              nr_printable_breakpoints,
6390                                              "BreakpointTable");
6391   else
6392     bkpttbl_chain 
6393       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6394                                              nr_printable_breakpoints,
6395                                              "BreakpointTable");
6396
6397   if (nr_printable_breakpoints > 0)
6398     annotate_breakpoints_headers ();
6399   if (nr_printable_breakpoints > 0)
6400     annotate_field (0);
6401   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6402   if (nr_printable_breakpoints > 0)
6403     annotate_field (1);
6404   ui_out_table_header (uiout, print_type_col_width, ui_left,
6405                        "type", "Type");                         /* 2 */
6406   if (nr_printable_breakpoints > 0)
6407     annotate_field (2);
6408   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6409   if (nr_printable_breakpoints > 0)
6410     annotate_field (3);
6411   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6412   if (opts.addressprint)
6413     {
6414       if (nr_printable_breakpoints > 0)
6415         annotate_field (4);
6416       if (print_address_bits <= 32)
6417         ui_out_table_header (uiout, 10, ui_left, 
6418                              "addr", "Address");                /* 5 */
6419       else
6420         ui_out_table_header (uiout, 18, ui_left, 
6421                              "addr", "Address");                /* 5 */
6422     }
6423   if (nr_printable_breakpoints > 0)
6424     annotate_field (5);
6425   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6426   ui_out_table_body (uiout);
6427   if (nr_printable_breakpoints > 0)
6428     annotate_breakpoints_table ();
6429
6430   ALL_BREAKPOINTS (b)
6431     {
6432       QUIT;
6433       /* If we have a filter, only list the breakpoints it accepts.  */
6434       if (filter && !filter (b))
6435         continue;
6436
6437       /* If we have an "args" string, it is a list of breakpoints to 
6438          accept.  Skip the others.  */
6439
6440       if (args != NULL && *args != '\0')
6441         {
6442           if (allflag)  /* maintenance info breakpoint */
6443             {
6444               if (parse_and_eval_long (args) != b->number)
6445                 continue;
6446             }
6447           else          /* all others */
6448             {
6449               if (!number_is_in_list (args, b->number))
6450                 continue;
6451             }
6452         }
6453       /* We only print out user settable breakpoints unless the
6454          allflag is set.  */
6455       if (allflag || user_breakpoint_p (b))
6456         print_one_breakpoint (b, &last_loc, allflag);
6457     }
6458
6459   do_cleanups (bkpttbl_chain);
6460
6461   if (nr_printable_breakpoints == 0)
6462     {
6463       /* If there's a filter, let the caller decide how to report
6464          empty list.  */
6465       if (!filter)
6466         {
6467           if (args == NULL || *args == '\0')
6468             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6469           else
6470             ui_out_message (uiout, 0, 
6471                             "No breakpoint or watchpoint matching '%s'.\n",
6472                             args);
6473         }
6474     }
6475   else
6476     {
6477       if (last_loc && !server_command)
6478         set_next_address (last_loc->gdbarch, last_loc->address);
6479     }
6480
6481   /* FIXME?  Should this be moved up so that it is only called when
6482      there have been breakpoints? */
6483   annotate_breakpoints_table_end ();
6484
6485   return nr_printable_breakpoints;
6486 }
6487
6488 /* Display the value of default-collect in a way that is generally
6489    compatible with the breakpoint list.  */
6490
6491 static void
6492 default_collect_info (void)
6493 {
6494   struct ui_out *uiout = current_uiout;
6495
6496   /* If it has no value (which is frequently the case), say nothing; a
6497      message like "No default-collect." gets in user's face when it's
6498      not wanted.  */
6499   if (!*default_collect)
6500     return;
6501
6502   /* The following phrase lines up nicely with per-tracepoint collect
6503      actions.  */
6504   ui_out_text (uiout, "default collect ");
6505   ui_out_field_string (uiout, "default-collect", default_collect);
6506   ui_out_text (uiout, " \n");
6507 }
6508   
6509 static void
6510 breakpoints_info (char *args, int from_tty)
6511 {
6512   breakpoint_1 (args, 0, NULL);
6513
6514   default_collect_info ();
6515 }
6516
6517 static void
6518 watchpoints_info (char *args, int from_tty)
6519 {
6520   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6521   struct ui_out *uiout = current_uiout;
6522
6523   if (num_printed == 0)
6524     {
6525       if (args == NULL || *args == '\0')
6526         ui_out_message (uiout, 0, "No watchpoints.\n");
6527       else
6528         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6529     }
6530 }
6531
6532 static void
6533 maintenance_info_breakpoints (char *args, int from_tty)
6534 {
6535   breakpoint_1 (args, 1, NULL);
6536
6537   default_collect_info ();
6538 }
6539
6540 static int
6541 breakpoint_has_pc (struct breakpoint *b,
6542                    struct program_space *pspace,
6543                    CORE_ADDR pc, struct obj_section *section)
6544 {
6545   struct bp_location *bl = b->loc;
6546
6547   for (; bl; bl = bl->next)
6548     {
6549       if (bl->pspace == pspace
6550           && bl->address == pc
6551           && (!overlay_debugging || bl->section == section))
6552         return 1;         
6553     }
6554   return 0;
6555 }
6556
6557 /* Print a message describing any user-breakpoints set at PC.  This
6558    concerns with logical breakpoints, so we match program spaces, not
6559    address spaces.  */
6560
6561 static void
6562 describe_other_breakpoints (struct gdbarch *gdbarch,
6563                             struct program_space *pspace, CORE_ADDR pc,
6564                             struct obj_section *section, int thread)
6565 {
6566   int others = 0;
6567   struct breakpoint *b;
6568
6569   ALL_BREAKPOINTS (b)
6570     others += (user_breakpoint_p (b)
6571                && breakpoint_has_pc (b, pspace, pc, section));
6572   if (others > 0)
6573     {
6574       if (others == 1)
6575         printf_filtered (_("Note: breakpoint "));
6576       else /* if (others == ???) */
6577         printf_filtered (_("Note: breakpoints "));
6578       ALL_BREAKPOINTS (b)
6579         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6580           {
6581             others--;
6582             printf_filtered ("%d", b->number);
6583             if (b->thread == -1 && thread != -1)
6584               printf_filtered (" (all threads)");
6585             else if (b->thread != -1)
6586               printf_filtered (" (thread %d)", b->thread);
6587             printf_filtered ("%s%s ",
6588                              ((b->enable_state == bp_disabled
6589                                || b->enable_state == bp_call_disabled)
6590                               ? " (disabled)"
6591                               : b->enable_state == bp_permanent 
6592                               ? " (permanent)"
6593                               : ""),
6594                              (others > 1) ? "," 
6595                              : ((others == 1) ? " and" : ""));
6596           }
6597       printf_filtered (_("also set at pc "));
6598       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6599       printf_filtered (".\n");
6600     }
6601 }
6602 \f
6603
6604 /* Return true iff it is meaningful to use the address member of
6605    BPT.  For some breakpoint types, the address member is irrelevant
6606    and it makes no sense to attempt to compare it to other addresses
6607    (or use it for any other purpose either).
6608
6609    More specifically, each of the following breakpoint types will
6610    always have a zero valued address and we don't want to mark
6611    breakpoints of any of these types to be a duplicate of an actual
6612    breakpoint at address zero:
6613
6614       bp_watchpoint
6615       bp_catchpoint
6616
6617 */
6618
6619 static int
6620 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6621 {
6622   enum bptype type = bpt->type;
6623
6624   return (type != bp_watchpoint && type != bp_catchpoint);
6625 }
6626
6627 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6628    true if LOC1 and LOC2 represent the same watchpoint location.  */
6629
6630 static int
6631 watchpoint_locations_match (struct bp_location *loc1, 
6632                             struct bp_location *loc2)
6633 {
6634   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6635   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6636
6637   /* Both of them must exist.  */
6638   gdb_assert (w1 != NULL);
6639   gdb_assert (w2 != NULL);
6640
6641   /* If the target can evaluate the condition expression in hardware,
6642      then we we need to insert both watchpoints even if they are at
6643      the same place.  Otherwise the watchpoint will only trigger when
6644      the condition of whichever watchpoint was inserted evaluates to
6645      true, not giving a chance for GDB to check the condition of the
6646      other watchpoint.  */
6647   if ((w1->cond_exp
6648        && target_can_accel_watchpoint_condition (loc1->address, 
6649                                                  loc1->length,
6650                                                  loc1->watchpoint_type,
6651                                                  w1->cond_exp))
6652       || (w2->cond_exp
6653           && target_can_accel_watchpoint_condition (loc2->address, 
6654                                                     loc2->length,
6655                                                     loc2->watchpoint_type,
6656                                                     w2->cond_exp)))
6657     return 0;
6658
6659   /* Note that this checks the owner's type, not the location's.  In
6660      case the target does not support read watchpoints, but does
6661      support access watchpoints, we'll have bp_read_watchpoint
6662      watchpoints with hw_access locations.  Those should be considered
6663      duplicates of hw_read locations.  The hw_read locations will
6664      become hw_access locations later.  */
6665   return (loc1->owner->type == loc2->owner->type
6666           && loc1->pspace->aspace == loc2->pspace->aspace
6667           && loc1->address == loc2->address
6668           && loc1->length == loc2->length);
6669 }
6670
6671 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6672    same breakpoint location.  In most targets, this can only be true
6673    if ASPACE1 matches ASPACE2.  On targets that have global
6674    breakpoints, the address space doesn't really matter.  */
6675
6676 static int
6677 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6678                           struct address_space *aspace2, CORE_ADDR addr2)
6679 {
6680   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6681            || aspace1 == aspace2)
6682           && addr1 == addr2);
6683 }
6684
6685 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6686    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6687    matches ASPACE2.  On targets that have global breakpoints, the address
6688    space doesn't really matter.  */
6689
6690 static int
6691 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6692                                 int len1, struct address_space *aspace2,
6693                                 CORE_ADDR addr2)
6694 {
6695   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6696            || aspace1 == aspace2)
6697           && addr2 >= addr1 && addr2 < addr1 + len1);
6698 }
6699
6700 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6701    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6702    matches the breakpoint's address space.  On targets that have global
6703    breakpoints, the address space doesn't really matter.  */
6704
6705 static int
6706 breakpoint_location_address_match (struct bp_location *bl,
6707                                    struct address_space *aspace,
6708                                    CORE_ADDR addr)
6709 {
6710   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6711                                     aspace, addr)
6712           || (bl->length
6713               && breakpoint_address_match_range (bl->pspace->aspace,
6714                                                  bl->address, bl->length,
6715                                                  aspace, addr)));
6716 }
6717
6718 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6719    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6720    true, otherwise returns false.  */
6721
6722 static int
6723 tracepoint_locations_match (struct bp_location *loc1,
6724                             struct bp_location *loc2)
6725 {
6726   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6727     /* Since tracepoint locations are never duplicated with others', tracepoint
6728        locations at the same address of different tracepoints are regarded as
6729        different locations.  */
6730     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6731   else
6732     return 0;
6733 }
6734
6735 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6736    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6737    represent the same location.  */
6738
6739 static int
6740 breakpoint_locations_match (struct bp_location *loc1, 
6741                             struct bp_location *loc2)
6742 {
6743   int hw_point1, hw_point2;
6744
6745   /* Both of them must not be in moribund_locations.  */
6746   gdb_assert (loc1->owner != NULL);
6747   gdb_assert (loc2->owner != NULL);
6748
6749   hw_point1 = is_hardware_watchpoint (loc1->owner);
6750   hw_point2 = is_hardware_watchpoint (loc2->owner);
6751
6752   if (hw_point1 != hw_point2)
6753     return 0;
6754   else if (hw_point1)
6755     return watchpoint_locations_match (loc1, loc2);
6756   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6757     return tracepoint_locations_match (loc1, loc2);
6758   else
6759     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6760     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6761                                      loc2->pspace->aspace, loc2->address)
6762             && loc1->length == loc2->length);
6763 }
6764
6765 static void
6766 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6767                                int bnum, int have_bnum)
6768 {
6769   /* The longest string possibly returned by hex_string_custom
6770      is 50 chars.  These must be at least that big for safety.  */
6771   char astr1[64];
6772   char astr2[64];
6773
6774   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6775   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6776   if (have_bnum)
6777     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6778              bnum, astr1, astr2);
6779   else
6780     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6781 }
6782
6783 /* Adjust a breakpoint's address to account for architectural
6784    constraints on breakpoint placement.  Return the adjusted address.
6785    Note: Very few targets require this kind of adjustment.  For most
6786    targets, this function is simply the identity function.  */
6787
6788 static CORE_ADDR
6789 adjust_breakpoint_address (struct gdbarch *gdbarch,
6790                            CORE_ADDR bpaddr, enum bptype bptype)
6791 {
6792   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6793     {
6794       /* Very few targets need any kind of breakpoint adjustment.  */
6795       return bpaddr;
6796     }
6797   else if (bptype == bp_watchpoint
6798            || bptype == bp_hardware_watchpoint
6799            || bptype == bp_read_watchpoint
6800            || bptype == bp_access_watchpoint
6801            || bptype == bp_catchpoint)
6802     {
6803       /* Watchpoints and the various bp_catch_* eventpoints should not
6804          have their addresses modified.  */
6805       return bpaddr;
6806     }
6807   else
6808     {
6809       CORE_ADDR adjusted_bpaddr;
6810
6811       /* Some targets have architectural constraints on the placement
6812          of breakpoint instructions.  Obtain the adjusted address.  */
6813       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6814
6815       /* An adjusted breakpoint address can significantly alter
6816          a user's expectations.  Print a warning if an adjustment
6817          is required.  */
6818       if (adjusted_bpaddr != bpaddr)
6819         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6820
6821       return adjusted_bpaddr;
6822     }
6823 }
6824
6825 void
6826 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6827                   struct breakpoint *owner)
6828 {
6829   memset (loc, 0, sizeof (*loc));
6830
6831   gdb_assert (ops != NULL);
6832
6833   loc->ops = ops;
6834   loc->owner = owner;
6835   loc->cond = NULL;
6836   loc->cond_bytecode = NULL;
6837   loc->shlib_disabled = 0;
6838   loc->enabled = 1;
6839
6840   switch (owner->type)
6841     {
6842     case bp_breakpoint:
6843     case bp_until:
6844     case bp_finish:
6845     case bp_longjmp:
6846     case bp_longjmp_resume:
6847     case bp_longjmp_call_dummy:
6848     case bp_exception:
6849     case bp_exception_resume:
6850     case bp_step_resume:
6851     case bp_hp_step_resume:
6852     case bp_watchpoint_scope:
6853     case bp_call_dummy:
6854     case bp_std_terminate:
6855     case bp_shlib_event:
6856     case bp_thread_event:
6857     case bp_overlay_event:
6858     case bp_jit_event:
6859     case bp_longjmp_master:
6860     case bp_std_terminate_master:
6861     case bp_exception_master:
6862     case bp_gnu_ifunc_resolver:
6863     case bp_gnu_ifunc_resolver_return:
6864     case bp_dprintf:
6865       loc->loc_type = bp_loc_software_breakpoint;
6866       mark_breakpoint_location_modified (loc);
6867       break;
6868     case bp_hardware_breakpoint:
6869       loc->loc_type = bp_loc_hardware_breakpoint;
6870       mark_breakpoint_location_modified (loc);
6871       break;
6872     case bp_hardware_watchpoint:
6873     case bp_read_watchpoint:
6874     case bp_access_watchpoint:
6875       loc->loc_type = bp_loc_hardware_watchpoint;
6876       break;
6877     case bp_watchpoint:
6878     case bp_catchpoint:
6879     case bp_tracepoint:
6880     case bp_fast_tracepoint:
6881     case bp_static_tracepoint:
6882       loc->loc_type = bp_loc_other;
6883       break;
6884     default:
6885       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6886     }
6887
6888   loc->refc = 1;
6889 }
6890
6891 /* Allocate a struct bp_location.  */
6892
6893 static struct bp_location *
6894 allocate_bp_location (struct breakpoint *bpt)
6895 {
6896   return bpt->ops->allocate_location (bpt);
6897 }
6898
6899 static void
6900 free_bp_location (struct bp_location *loc)
6901 {
6902   loc->ops->dtor (loc);
6903   xfree (loc);
6904 }
6905
6906 /* Increment reference count.  */
6907
6908 static void
6909 incref_bp_location (struct bp_location *bl)
6910 {
6911   ++bl->refc;
6912 }
6913
6914 /* Decrement reference count.  If the reference count reaches 0,
6915    destroy the bp_location.  Sets *BLP to NULL.  */
6916
6917 static void
6918 decref_bp_location (struct bp_location **blp)
6919 {
6920   gdb_assert ((*blp)->refc > 0);
6921
6922   if (--(*blp)->refc == 0)
6923     free_bp_location (*blp);
6924   *blp = NULL;
6925 }
6926
6927 /* Add breakpoint B at the end of the global breakpoint chain.  */
6928
6929 static void
6930 add_to_breakpoint_chain (struct breakpoint *b)
6931 {
6932   struct breakpoint *b1;
6933
6934   /* Add this breakpoint to the end of the chain so that a list of
6935      breakpoints will come out in order of increasing numbers.  */
6936
6937   b1 = breakpoint_chain;
6938   if (b1 == 0)
6939     breakpoint_chain = b;
6940   else
6941     {
6942       while (b1->next)
6943         b1 = b1->next;
6944       b1->next = b;
6945     }
6946 }
6947
6948 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6949
6950 static void
6951 init_raw_breakpoint_without_location (struct breakpoint *b,
6952                                       struct gdbarch *gdbarch,
6953                                       enum bptype bptype,
6954                                       const struct breakpoint_ops *ops)
6955 {
6956   memset (b, 0, sizeof (*b));
6957
6958   gdb_assert (ops != NULL);
6959
6960   b->ops = ops;
6961   b->type = bptype;
6962   b->gdbarch = gdbarch;
6963   b->language = current_language->la_language;
6964   b->input_radix = input_radix;
6965   b->thread = -1;
6966   b->enable_state = bp_enabled;
6967   b->next = 0;
6968   b->silent = 0;
6969   b->ignore_count = 0;
6970   b->commands = NULL;
6971   b->frame_id = null_frame_id;
6972   b->condition_not_parsed = 0;
6973   b->py_bp_object = NULL;
6974   b->related_breakpoint = b;
6975 }
6976
6977 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6978    that has type BPTYPE and has no locations as yet.  */
6979
6980 static struct breakpoint *
6981 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6982                                      enum bptype bptype,
6983                                      const struct breakpoint_ops *ops)
6984 {
6985   struct breakpoint *b = XNEW (struct breakpoint);
6986
6987   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6988   add_to_breakpoint_chain (b);
6989   return b;
6990 }
6991
6992 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6993    resolutions should be made as the user specified the location explicitly
6994    enough.  */
6995
6996 static void
6997 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6998 {
6999   gdb_assert (loc->owner != NULL);
7000
7001   if (loc->owner->type == bp_breakpoint
7002       || loc->owner->type == bp_hardware_breakpoint
7003       || is_tracepoint (loc->owner))
7004     {
7005       int is_gnu_ifunc;
7006       const char *function_name;
7007       CORE_ADDR func_addr;
7008
7009       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7010                                           &func_addr, NULL, &is_gnu_ifunc);
7011
7012       if (is_gnu_ifunc && !explicit_loc)
7013         {
7014           struct breakpoint *b = loc->owner;
7015
7016           gdb_assert (loc->pspace == current_program_space);
7017           if (gnu_ifunc_resolve_name (function_name,
7018                                       &loc->requested_address))
7019             {
7020               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7021               loc->address = adjust_breakpoint_address (loc->gdbarch,
7022                                                         loc->requested_address,
7023                                                         b->type);
7024             }
7025           else if (b->type == bp_breakpoint && b->loc == loc
7026                    && loc->next == NULL && b->related_breakpoint == b)
7027             {
7028               /* Create only the whole new breakpoint of this type but do not
7029                  mess more complicated breakpoints with multiple locations.  */
7030               b->type = bp_gnu_ifunc_resolver;
7031               /* Remember the resolver's address for use by the return
7032                  breakpoint.  */
7033               loc->related_address = func_addr;
7034             }
7035         }
7036
7037       if (function_name)
7038         loc->function_name = xstrdup (function_name);
7039     }
7040 }
7041
7042 /* Attempt to determine architecture of location identified by SAL.  */
7043 struct gdbarch *
7044 get_sal_arch (struct symtab_and_line sal)
7045 {
7046   if (sal.section)
7047     return get_objfile_arch (sal.section->objfile);
7048   if (sal.symtab)
7049     return get_objfile_arch (sal.symtab->objfile);
7050
7051   return NULL;
7052 }
7053
7054 /* Low level routine for partially initializing a breakpoint of type
7055    BPTYPE.  The newly created breakpoint's address, section, source
7056    file name, and line number are provided by SAL.
7057
7058    It is expected that the caller will complete the initialization of
7059    the newly created breakpoint struct as well as output any status
7060    information regarding the creation of a new breakpoint.  */
7061
7062 static void
7063 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7064                      struct symtab_and_line sal, enum bptype bptype,
7065                      const struct breakpoint_ops *ops)
7066 {
7067   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7068
7069   add_location_to_breakpoint (b, &sal);
7070
7071   if (bptype != bp_catchpoint)
7072     gdb_assert (sal.pspace != NULL);
7073
7074   /* Store the program space that was used to set the breakpoint,
7075      except for ordinary breakpoints, which are independent of the
7076      program space.  */
7077   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7078     b->pspace = sal.pspace;
7079 }
7080
7081 /* set_raw_breakpoint is a low level routine for allocating and
7082    partially initializing a breakpoint of type BPTYPE.  The newly
7083    created breakpoint's address, section, source file name, and line
7084    number are provided by SAL.  The newly created and partially
7085    initialized breakpoint is added to the breakpoint chain and
7086    is also returned as the value of this function.
7087
7088    It is expected that the caller will complete the initialization of
7089    the newly created breakpoint struct as well as output any status
7090    information regarding the creation of a new breakpoint.  In
7091    particular, set_raw_breakpoint does NOT set the breakpoint
7092    number!  Care should be taken to not allow an error to occur
7093    prior to completing the initialization of the breakpoint.  If this
7094    should happen, a bogus breakpoint will be left on the chain.  */
7095
7096 struct breakpoint *
7097 set_raw_breakpoint (struct gdbarch *gdbarch,
7098                     struct symtab_and_line sal, enum bptype bptype,
7099                     const struct breakpoint_ops *ops)
7100 {
7101   struct breakpoint *b = XNEW (struct breakpoint);
7102
7103   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7104   add_to_breakpoint_chain (b);
7105   return b;
7106 }
7107
7108
7109 /* Note that the breakpoint object B describes a permanent breakpoint
7110    instruction, hard-wired into the inferior's code.  */
7111 void
7112 make_breakpoint_permanent (struct breakpoint *b)
7113 {
7114   struct bp_location *bl;
7115
7116   b->enable_state = bp_permanent;
7117
7118   /* By definition, permanent breakpoints are already present in the
7119      code.  Mark all locations as inserted.  For now,
7120      make_breakpoint_permanent is called in just one place, so it's
7121      hard to say if it's reasonable to have permanent breakpoint with
7122      multiple locations or not, but it's easy to implement.  */
7123   for (bl = b->loc; bl; bl = bl->next)
7124     bl->inserted = 1;
7125 }
7126
7127 /* Call this routine when stepping and nexting to enable a breakpoint
7128    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7129    initiated the operation.  */
7130
7131 void
7132 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7133 {
7134   struct breakpoint *b, *b_tmp;
7135   int thread = tp->num;
7136
7137   /* To avoid having to rescan all objfile symbols at every step,
7138      we maintain a list of continually-inserted but always disabled
7139      longjmp "master" breakpoints.  Here, we simply create momentary
7140      clones of those and enable them for the requested thread.  */
7141   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7142     if (b->pspace == current_program_space
7143         && (b->type == bp_longjmp_master
7144             || b->type == bp_exception_master))
7145       {
7146         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7147         struct breakpoint *clone;
7148
7149         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7150            after their removal.  */
7151         clone = momentary_breakpoint_from_master (b, type,
7152                                                   &longjmp_breakpoint_ops);
7153         clone->thread = thread;
7154       }
7155
7156   tp->initiating_frame = frame;
7157 }
7158
7159 /* Delete all longjmp breakpoints from THREAD.  */
7160 void
7161 delete_longjmp_breakpoint (int thread)
7162 {
7163   struct breakpoint *b, *b_tmp;
7164
7165   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7166     if (b->type == bp_longjmp || b->type == bp_exception)
7167       {
7168         if (b->thread == thread)
7169           delete_breakpoint (b);
7170       }
7171 }
7172
7173 void
7174 delete_longjmp_breakpoint_at_next_stop (int thread)
7175 {
7176   struct breakpoint *b, *b_tmp;
7177
7178   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7179     if (b->type == bp_longjmp || b->type == bp_exception)
7180       {
7181         if (b->thread == thread)
7182           b->disposition = disp_del_at_next_stop;
7183       }
7184 }
7185
7186 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7187    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7188    pointer to any of them.  Return NULL if this system cannot place longjmp
7189    breakpoints.  */
7190
7191 struct breakpoint *
7192 set_longjmp_breakpoint_for_call_dummy (void)
7193 {
7194   struct breakpoint *b, *retval = NULL;
7195
7196   ALL_BREAKPOINTS (b)
7197     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7198       {
7199         struct breakpoint *new_b;
7200
7201         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7202                                                   &momentary_breakpoint_ops);
7203         new_b->thread = pid_to_thread_id (inferior_ptid);
7204
7205         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7206
7207         gdb_assert (new_b->related_breakpoint == new_b);
7208         if (retval == NULL)
7209           retval = new_b;
7210         new_b->related_breakpoint = retval;
7211         while (retval->related_breakpoint != new_b->related_breakpoint)
7212           retval = retval->related_breakpoint;
7213         retval->related_breakpoint = new_b;
7214       }
7215
7216   return retval;
7217 }
7218
7219 /* Verify all existing dummy frames and their associated breakpoints for
7220    THREAD.  Remove those which can no longer be found in the current frame
7221    stack.
7222
7223    You should call this function only at places where it is safe to currently
7224    unwind the whole stack.  Failed stack unwind would discard live dummy
7225    frames.  */
7226
7227 void
7228 check_longjmp_breakpoint_for_call_dummy (int thread)
7229 {
7230   struct breakpoint *b, *b_tmp;
7231
7232   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7233     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7234       {
7235         struct breakpoint *dummy_b = b->related_breakpoint;
7236
7237         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7238           dummy_b = dummy_b->related_breakpoint;
7239         if (dummy_b->type != bp_call_dummy
7240             || frame_find_by_id (dummy_b->frame_id) != NULL)
7241           continue;
7242         
7243         dummy_frame_discard (dummy_b->frame_id);
7244
7245         while (b->related_breakpoint != b)
7246           {
7247             if (b_tmp == b->related_breakpoint)
7248               b_tmp = b->related_breakpoint->next;
7249             delete_breakpoint (b->related_breakpoint);
7250           }
7251         delete_breakpoint (b);
7252       }
7253 }
7254
7255 void
7256 enable_overlay_breakpoints (void)
7257 {
7258   struct breakpoint *b;
7259
7260   ALL_BREAKPOINTS (b)
7261     if (b->type == bp_overlay_event)
7262     {
7263       b->enable_state = bp_enabled;
7264       update_global_location_list (1);
7265       overlay_events_enabled = 1;
7266     }
7267 }
7268
7269 void
7270 disable_overlay_breakpoints (void)
7271 {
7272   struct breakpoint *b;
7273
7274   ALL_BREAKPOINTS (b)
7275     if (b->type == bp_overlay_event)
7276     {
7277       b->enable_state = bp_disabled;
7278       update_global_location_list (0);
7279       overlay_events_enabled = 0;
7280     }
7281 }
7282
7283 /* Set an active std::terminate breakpoint for each std::terminate
7284    master breakpoint.  */
7285 void
7286 set_std_terminate_breakpoint (void)
7287 {
7288   struct breakpoint *b, *b_tmp;
7289
7290   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7291     if (b->pspace == current_program_space
7292         && b->type == bp_std_terminate_master)
7293       {
7294         momentary_breakpoint_from_master (b, bp_std_terminate,
7295                                           &momentary_breakpoint_ops);
7296       }
7297 }
7298
7299 /* Delete all the std::terminate breakpoints.  */
7300 void
7301 delete_std_terminate_breakpoint (void)
7302 {
7303   struct breakpoint *b, *b_tmp;
7304
7305   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7306     if (b->type == bp_std_terminate)
7307       delete_breakpoint (b);
7308 }
7309
7310 struct breakpoint *
7311 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7312 {
7313   struct breakpoint *b;
7314
7315   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7316                                   &internal_breakpoint_ops);
7317
7318   b->enable_state = bp_enabled;
7319   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7320   b->addr_string
7321     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7322
7323   update_global_location_list_nothrow (1);
7324
7325   return b;
7326 }
7327
7328 void
7329 remove_thread_event_breakpoints (void)
7330 {
7331   struct breakpoint *b, *b_tmp;
7332
7333   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7334     if (b->type == bp_thread_event
7335         && b->loc->pspace == current_program_space)
7336       delete_breakpoint (b);
7337 }
7338
7339 struct lang_and_radix
7340   {
7341     enum language lang;
7342     int radix;
7343   };
7344
7345 /* Create a breakpoint for JIT code registration and unregistration.  */
7346
7347 struct breakpoint *
7348 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7349 {
7350   struct breakpoint *b;
7351
7352   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7353                                   &internal_breakpoint_ops);
7354   update_global_location_list_nothrow (1);
7355   return b;
7356 }
7357
7358 /* Remove JIT code registration and unregistration breakpoint(s).  */
7359
7360 void
7361 remove_jit_event_breakpoints (void)
7362 {
7363   struct breakpoint *b, *b_tmp;
7364
7365   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7366     if (b->type == bp_jit_event
7367         && b->loc->pspace == current_program_space)
7368       delete_breakpoint (b);
7369 }
7370
7371 void
7372 remove_solib_event_breakpoints (void)
7373 {
7374   struct breakpoint *b, *b_tmp;
7375
7376   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7377     if (b->type == bp_shlib_event
7378         && b->loc->pspace == current_program_space)
7379       delete_breakpoint (b);
7380 }
7381
7382 struct breakpoint *
7383 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7384 {
7385   struct breakpoint *b;
7386
7387   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7388                                   &internal_breakpoint_ops);
7389   update_global_location_list_nothrow (1);
7390   return b;
7391 }
7392
7393 /* Disable any breakpoints that are on code in shared libraries.  Only
7394    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7395
7396 void
7397 disable_breakpoints_in_shlibs (void)
7398 {
7399   struct bp_location *loc, **locp_tmp;
7400
7401   ALL_BP_LOCATIONS (loc, locp_tmp)
7402   {
7403     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7404     struct breakpoint *b = loc->owner;
7405
7406     /* We apply the check to all breakpoints, including disabled for
7407        those with loc->duplicate set.  This is so that when breakpoint
7408        becomes enabled, or the duplicate is removed, gdb will try to
7409        insert all breakpoints.  If we don't set shlib_disabled here,
7410        we'll try to insert those breakpoints and fail.  */
7411     if (((b->type == bp_breakpoint)
7412          || (b->type == bp_jit_event)
7413          || (b->type == bp_hardware_breakpoint)
7414          || (is_tracepoint (b)))
7415         && loc->pspace == current_program_space
7416         && !loc->shlib_disabled
7417 #ifdef PC_SOLIB
7418         && PC_SOLIB (loc->address)
7419 #else
7420         && solib_name_from_address (loc->pspace, loc->address)
7421 #endif
7422         )
7423       {
7424         loc->shlib_disabled = 1;
7425       }
7426   }
7427 }
7428
7429 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7430    library.  Only apply to enabled breakpoints, disabled ones can just stay
7431    disabled.  */
7432
7433 static void
7434 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7435 {
7436   struct bp_location *loc, **locp_tmp;
7437   int disabled_shlib_breaks = 0;
7438
7439   /* SunOS a.out shared libraries are always mapped, so do not
7440      disable breakpoints; they will only be reported as unloaded
7441      through clear_solib when GDB discards its shared library
7442      list.  See clear_solib for more information.  */
7443   if (exec_bfd != NULL
7444       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7445     return;
7446
7447   ALL_BP_LOCATIONS (loc, locp_tmp)
7448   {
7449     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7450     struct breakpoint *b = loc->owner;
7451
7452     if (solib->pspace == loc->pspace
7453         && !loc->shlib_disabled
7454         && (((b->type == bp_breakpoint
7455               || b->type == bp_jit_event
7456               || b->type == bp_hardware_breakpoint)
7457              && (loc->loc_type == bp_loc_hardware_breakpoint
7458                  || loc->loc_type == bp_loc_software_breakpoint))
7459             || is_tracepoint (b))
7460         && solib_contains_address_p (solib, loc->address))
7461       {
7462         loc->shlib_disabled = 1;
7463         /* At this point, we cannot rely on remove_breakpoint
7464            succeeding so we must mark the breakpoint as not inserted
7465            to prevent future errors occurring in remove_breakpoints.  */
7466         loc->inserted = 0;
7467
7468         /* This may cause duplicate notifications for the same breakpoint.  */
7469         observer_notify_breakpoint_modified (b);
7470
7471         if (!disabled_shlib_breaks)
7472           {
7473             target_terminal_ours_for_output ();
7474             warning (_("Temporarily disabling breakpoints "
7475                        "for unloaded shared library \"%s\""),
7476                      solib->so_name);
7477           }
7478         disabled_shlib_breaks = 1;
7479       }
7480   }
7481 }
7482
7483 /* FORK & VFORK catchpoints.  */
7484
7485 /* An instance of this type is used to represent a fork or vfork
7486    catchpoint.  It includes a "struct breakpoint" as a kind of base
7487    class; users downcast to "struct breakpoint *" when needed.  A
7488    breakpoint is really of this type iff its ops pointer points to
7489    CATCH_FORK_BREAKPOINT_OPS.  */
7490
7491 struct fork_catchpoint
7492 {
7493   /* The base class.  */
7494   struct breakpoint base;
7495
7496   /* Process id of a child process whose forking triggered this
7497      catchpoint.  This field is only valid immediately after this
7498      catchpoint has triggered.  */
7499   ptid_t forked_inferior_pid;
7500 };
7501
7502 /* Implement the "insert" breakpoint_ops method for fork
7503    catchpoints.  */
7504
7505 static int
7506 insert_catch_fork (struct bp_location *bl)
7507 {
7508   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7509 }
7510
7511 /* Implement the "remove" breakpoint_ops method for fork
7512    catchpoints.  */
7513
7514 static int
7515 remove_catch_fork (struct bp_location *bl)
7516 {
7517   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7518 }
7519
7520 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7521    catchpoints.  */
7522
7523 static int
7524 breakpoint_hit_catch_fork (const struct bp_location *bl,
7525                            struct address_space *aspace, CORE_ADDR bp_addr,
7526                            const struct target_waitstatus *ws)
7527 {
7528   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7529
7530   if (ws->kind != TARGET_WAITKIND_FORKED)
7531     return 0;
7532
7533   c->forked_inferior_pid = ws->value.related_pid;
7534   return 1;
7535 }
7536
7537 /* Implement the "print_it" breakpoint_ops method for fork
7538    catchpoints.  */
7539
7540 static enum print_stop_action
7541 print_it_catch_fork (bpstat bs)
7542 {
7543   struct ui_out *uiout = current_uiout;
7544   struct breakpoint *b = bs->breakpoint_at;
7545   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7546
7547   annotate_catchpoint (b->number);
7548   if (b->disposition == disp_del)
7549     ui_out_text (uiout, "\nTemporary catchpoint ");
7550   else
7551     ui_out_text (uiout, "\nCatchpoint ");
7552   if (ui_out_is_mi_like_p (uiout))
7553     {
7554       ui_out_field_string (uiout, "reason",
7555                            async_reason_lookup (EXEC_ASYNC_FORK));
7556       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7557     }
7558   ui_out_field_int (uiout, "bkptno", b->number);
7559   ui_out_text (uiout, " (forked process ");
7560   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7561   ui_out_text (uiout, "), ");
7562   return PRINT_SRC_AND_LOC;
7563 }
7564
7565 /* Implement the "print_one" breakpoint_ops method for fork
7566    catchpoints.  */
7567
7568 static void
7569 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7570 {
7571   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7572   struct value_print_options opts;
7573   struct ui_out *uiout = current_uiout;
7574
7575   get_user_print_options (&opts);
7576
7577   /* Field 4, the address, is omitted (which makes the columns not
7578      line up too nicely with the headers, but the effect is relatively
7579      readable).  */
7580   if (opts.addressprint)
7581     ui_out_field_skip (uiout, "addr");
7582   annotate_field (5);
7583   ui_out_text (uiout, "fork");
7584   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7585     {
7586       ui_out_text (uiout, ", process ");
7587       ui_out_field_int (uiout, "what",
7588                         ptid_get_pid (c->forked_inferior_pid));
7589       ui_out_spaces (uiout, 1);
7590     }
7591
7592   if (ui_out_is_mi_like_p (uiout))
7593     ui_out_field_string (uiout, "catch-type", "fork");
7594 }
7595
7596 /* Implement the "print_mention" breakpoint_ops method for fork
7597    catchpoints.  */
7598
7599 static void
7600 print_mention_catch_fork (struct breakpoint *b)
7601 {
7602   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7603 }
7604
7605 /* Implement the "print_recreate" breakpoint_ops method for fork
7606    catchpoints.  */
7607
7608 static void
7609 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7610 {
7611   fprintf_unfiltered (fp, "catch fork");
7612   print_recreate_thread (b, fp);
7613 }
7614
7615 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7616
7617 static struct breakpoint_ops catch_fork_breakpoint_ops;
7618
7619 /* Implement the "insert" breakpoint_ops method for vfork
7620    catchpoints.  */
7621
7622 static int
7623 insert_catch_vfork (struct bp_location *bl)
7624 {
7625   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7626 }
7627
7628 /* Implement the "remove" breakpoint_ops method for vfork
7629    catchpoints.  */
7630
7631 static int
7632 remove_catch_vfork (struct bp_location *bl)
7633 {
7634   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7635 }
7636
7637 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7638    catchpoints.  */
7639
7640 static int
7641 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7642                             struct address_space *aspace, CORE_ADDR bp_addr,
7643                             const struct target_waitstatus *ws)
7644 {
7645   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7646
7647   if (ws->kind != TARGET_WAITKIND_VFORKED)
7648     return 0;
7649
7650   c->forked_inferior_pid = ws->value.related_pid;
7651   return 1;
7652 }
7653
7654 /* Implement the "print_it" breakpoint_ops method for vfork
7655    catchpoints.  */
7656
7657 static enum print_stop_action
7658 print_it_catch_vfork (bpstat bs)
7659 {
7660   struct ui_out *uiout = current_uiout;
7661   struct breakpoint *b = bs->breakpoint_at;
7662   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7663
7664   annotate_catchpoint (b->number);
7665   if (b->disposition == disp_del)
7666     ui_out_text (uiout, "\nTemporary catchpoint ");
7667   else
7668     ui_out_text (uiout, "\nCatchpoint ");
7669   if (ui_out_is_mi_like_p (uiout))
7670     {
7671       ui_out_field_string (uiout, "reason",
7672                            async_reason_lookup (EXEC_ASYNC_VFORK));
7673       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7674     }
7675   ui_out_field_int (uiout, "bkptno", b->number);
7676   ui_out_text (uiout, " (vforked process ");
7677   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7678   ui_out_text (uiout, "), ");
7679   return PRINT_SRC_AND_LOC;
7680 }
7681
7682 /* Implement the "print_one" breakpoint_ops method for vfork
7683    catchpoints.  */
7684
7685 static void
7686 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7687 {
7688   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7689   struct value_print_options opts;
7690   struct ui_out *uiout = current_uiout;
7691
7692   get_user_print_options (&opts);
7693   /* Field 4, the address, is omitted (which makes the columns not
7694      line up too nicely with the headers, but the effect is relatively
7695      readable).  */
7696   if (opts.addressprint)
7697     ui_out_field_skip (uiout, "addr");
7698   annotate_field (5);
7699   ui_out_text (uiout, "vfork");
7700   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7701     {
7702       ui_out_text (uiout, ", process ");
7703       ui_out_field_int (uiout, "what",
7704                         ptid_get_pid (c->forked_inferior_pid));
7705       ui_out_spaces (uiout, 1);
7706     }
7707
7708   if (ui_out_is_mi_like_p (uiout))
7709     ui_out_field_string (uiout, "catch-type", "vfork");
7710 }
7711
7712 /* Implement the "print_mention" breakpoint_ops method for vfork
7713    catchpoints.  */
7714
7715 static void
7716 print_mention_catch_vfork (struct breakpoint *b)
7717 {
7718   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7719 }
7720
7721 /* Implement the "print_recreate" breakpoint_ops method for vfork
7722    catchpoints.  */
7723
7724 static void
7725 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7726 {
7727   fprintf_unfiltered (fp, "catch vfork");
7728   print_recreate_thread (b, fp);
7729 }
7730
7731 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7732
7733 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7734
7735 /* An instance of this type is used to represent an solib catchpoint.
7736    It includes a "struct breakpoint" as a kind of base class; users
7737    downcast to "struct breakpoint *" when needed.  A breakpoint is
7738    really of this type iff its ops pointer points to
7739    CATCH_SOLIB_BREAKPOINT_OPS.  */
7740
7741 struct solib_catchpoint
7742 {
7743   /* The base class.  */
7744   struct breakpoint base;
7745
7746   /* True for "catch load", false for "catch unload".  */
7747   unsigned char is_load;
7748
7749   /* Regular expression to match, if any.  COMPILED is only valid when
7750      REGEX is non-NULL.  */
7751   char *regex;
7752   regex_t compiled;
7753 };
7754
7755 static void
7756 dtor_catch_solib (struct breakpoint *b)
7757 {
7758   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7759
7760   if (self->regex)
7761     regfree (&self->compiled);
7762   xfree (self->regex);
7763
7764   base_breakpoint_ops.dtor (b);
7765 }
7766
7767 static int
7768 insert_catch_solib (struct bp_location *ignore)
7769 {
7770   return 0;
7771 }
7772
7773 static int
7774 remove_catch_solib (struct bp_location *ignore)
7775 {
7776   return 0;
7777 }
7778
7779 static int
7780 breakpoint_hit_catch_solib (const struct bp_location *bl,
7781                             struct address_space *aspace,
7782                             CORE_ADDR bp_addr,
7783                             const struct target_waitstatus *ws)
7784 {
7785   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7786   struct breakpoint *other;
7787
7788   if (ws->kind == TARGET_WAITKIND_LOADED)
7789     return 1;
7790
7791   ALL_BREAKPOINTS (other)
7792   {
7793     struct bp_location *other_bl;
7794
7795     if (other == bl->owner)
7796       continue;
7797
7798     if (other->type != bp_shlib_event)
7799       continue;
7800
7801     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7802       continue;
7803
7804     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7805       {
7806         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7807           return 1;
7808       }
7809   }
7810
7811   return 0;
7812 }
7813
7814 static void
7815 check_status_catch_solib (struct bpstats *bs)
7816 {
7817   struct solib_catchpoint *self
7818     = (struct solib_catchpoint *) bs->breakpoint_at;
7819   int ix;
7820
7821   if (self->is_load)
7822     {
7823       struct so_list *iter;
7824
7825       for (ix = 0;
7826            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7827                         ix, iter);
7828            ++ix)
7829         {
7830           if (!self->regex
7831               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7832             return;
7833         }
7834     }
7835   else
7836     {
7837       char *iter;
7838
7839       for (ix = 0;
7840            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7841                         ix, iter);
7842            ++ix)
7843         {
7844           if (!self->regex
7845               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7846             return;
7847         }
7848     }
7849
7850   bs->stop = 0;
7851   bs->print_it = print_it_noop;
7852 }
7853
7854 static enum print_stop_action
7855 print_it_catch_solib (bpstat bs)
7856 {
7857   struct breakpoint *b = bs->breakpoint_at;
7858   struct ui_out *uiout = current_uiout;
7859
7860   annotate_catchpoint (b->number);
7861   if (b->disposition == disp_del)
7862     ui_out_text (uiout, "\nTemporary catchpoint ");
7863   else
7864     ui_out_text (uiout, "\nCatchpoint ");
7865   ui_out_field_int (uiout, "bkptno", b->number);
7866   ui_out_text (uiout, "\n");
7867   if (ui_out_is_mi_like_p (uiout))
7868     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7869   print_solib_event (1);
7870   return PRINT_SRC_AND_LOC;
7871 }
7872
7873 static void
7874 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7875 {
7876   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7877   struct value_print_options opts;
7878   struct ui_out *uiout = current_uiout;
7879   char *msg;
7880
7881   get_user_print_options (&opts);
7882   /* Field 4, the address, is omitted (which makes the columns not
7883      line up too nicely with the headers, but the effect is relatively
7884      readable).  */
7885   if (opts.addressprint)
7886     {
7887       annotate_field (4);
7888       ui_out_field_skip (uiout, "addr");
7889     }
7890
7891   annotate_field (5);
7892   if (self->is_load)
7893     {
7894       if (self->regex)
7895         msg = xstrprintf (_("load of library matching %s"), self->regex);
7896       else
7897         msg = xstrdup (_("load of library"));
7898     }
7899   else
7900     {
7901       if (self->regex)
7902         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7903       else
7904         msg = xstrdup (_("unload of library"));
7905     }
7906   ui_out_field_string (uiout, "what", msg);
7907   xfree (msg);
7908
7909   if (ui_out_is_mi_like_p (uiout))
7910     ui_out_field_string (uiout, "catch-type",
7911                          self->is_load ? "load" : "unload");
7912 }
7913
7914 static void
7915 print_mention_catch_solib (struct breakpoint *b)
7916 {
7917   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7918
7919   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7920                    self->is_load ? "load" : "unload");
7921 }
7922
7923 static void
7924 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7925 {
7926   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7927
7928   fprintf_unfiltered (fp, "%s %s",
7929                       b->disposition == disp_del ? "tcatch" : "catch",
7930                       self->is_load ? "load" : "unload");
7931   if (self->regex)
7932     fprintf_unfiltered (fp, " %s", self->regex);
7933   fprintf_unfiltered (fp, "\n");
7934 }
7935
7936 static struct breakpoint_ops catch_solib_breakpoint_ops;
7937
7938 /* Shared helper function (MI and CLI) for creating and installing
7939    a shared object event catchpoint.  If IS_LOAD is non-zero then
7940    the events to be caught are load events, otherwise they are
7941    unload events.  If IS_TEMP is non-zero the catchpoint is a
7942    temporary one.  If ENABLED is non-zero the catchpoint is
7943    created in an enabled state.  */
7944
7945 void
7946 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7947 {
7948   struct solib_catchpoint *c;
7949   struct gdbarch *gdbarch = get_current_arch ();
7950   struct cleanup *cleanup;
7951
7952   if (!arg)
7953     arg = "";
7954   arg = skip_spaces (arg);
7955
7956   c = XCNEW (struct solib_catchpoint);
7957   cleanup = make_cleanup (xfree, c);
7958
7959   if (*arg != '\0')
7960     {
7961       int errcode;
7962
7963       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7964       if (errcode != 0)
7965         {
7966           char *err = get_regcomp_error (errcode, &c->compiled);
7967
7968           make_cleanup (xfree, err);
7969           error (_("Invalid regexp (%s): %s"), err, arg);
7970         }
7971       c->regex = xstrdup (arg);
7972     }
7973
7974   c->is_load = is_load;
7975   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7976                    &catch_solib_breakpoint_ops);
7977
7978   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7979
7980   discard_cleanups (cleanup);
7981   install_breakpoint (0, &c->base, 1);
7982 }
7983
7984 /* A helper function that does all the work for "catch load" and
7985    "catch unload".  */
7986
7987 static void
7988 catch_load_or_unload (char *arg, int from_tty, int is_load,
7989                       struct cmd_list_element *command)
7990 {
7991   int tempflag;
7992   const int enabled = 1;
7993
7994   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7995
7996   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7997 }
7998
7999 static void
8000 catch_load_command_1 (char *arg, int from_tty,
8001                       struct cmd_list_element *command)
8002 {
8003   catch_load_or_unload (arg, from_tty, 1, command);
8004 }
8005
8006 static void
8007 catch_unload_command_1 (char *arg, int from_tty,
8008                         struct cmd_list_element *command)
8009 {
8010   catch_load_or_unload (arg, from_tty, 0, command);
8011 }
8012
8013 /* An instance of this type is used to represent a syscall catchpoint.
8014    It includes a "struct breakpoint" as a kind of base class; users
8015    downcast to "struct breakpoint *" when needed.  A breakpoint is
8016    really of this type iff its ops pointer points to
8017    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8018
8019 struct syscall_catchpoint
8020 {
8021   /* The base class.  */
8022   struct breakpoint base;
8023
8024   /* Syscall numbers used for the 'catch syscall' feature.  If no
8025      syscall has been specified for filtering, its value is NULL.
8026      Otherwise, it holds a list of all syscalls to be caught.  The
8027      list elements are allocated with xmalloc.  */
8028   VEC(int) *syscalls_to_be_caught;
8029 };
8030
8031 /* Implement the "dtor" breakpoint_ops method for syscall
8032    catchpoints.  */
8033
8034 static void
8035 dtor_catch_syscall (struct breakpoint *b)
8036 {
8037   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8038
8039   VEC_free (int, c->syscalls_to_be_caught);
8040
8041   base_breakpoint_ops.dtor (b);
8042 }
8043
8044 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8045
8046 struct catch_syscall_inferior_data
8047 {
8048   /* We keep a count of the number of times the user has requested a
8049      particular syscall to be tracked, and pass this information to the
8050      target.  This lets capable targets implement filtering directly.  */
8051
8052   /* Number of times that "any" syscall is requested.  */
8053   int any_syscall_count;
8054
8055   /* Count of each system call.  */
8056   VEC(int) *syscalls_counts;
8057
8058   /* This counts all syscall catch requests, so we can readily determine
8059      if any catching is necessary.  */
8060   int total_syscalls_count;
8061 };
8062
8063 static struct catch_syscall_inferior_data*
8064 get_catch_syscall_inferior_data (struct inferior *inf)
8065 {
8066   struct catch_syscall_inferior_data *inf_data;
8067
8068   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8069   if (inf_data == NULL)
8070     {
8071       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8072       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8073     }
8074
8075   return inf_data;
8076 }
8077
8078 static void
8079 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8080 {
8081   xfree (arg);
8082 }
8083
8084
8085 /* Implement the "insert" breakpoint_ops method for syscall
8086    catchpoints.  */
8087
8088 static int
8089 insert_catch_syscall (struct bp_location *bl)
8090 {
8091   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8092   struct inferior *inf = current_inferior ();
8093   struct catch_syscall_inferior_data *inf_data
8094     = get_catch_syscall_inferior_data (inf);
8095
8096   ++inf_data->total_syscalls_count;
8097   if (!c->syscalls_to_be_caught)
8098     ++inf_data->any_syscall_count;
8099   else
8100     {
8101       int i, iter;
8102
8103       for (i = 0;
8104            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8105            i++)
8106         {
8107           int elem;
8108
8109           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8110             {
8111               int old_size = VEC_length (int, inf_data->syscalls_counts);
8112               uintptr_t vec_addr_offset
8113                 = old_size * ((uintptr_t) sizeof (int));
8114               uintptr_t vec_addr;
8115               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8116               vec_addr = ((uintptr_t) VEC_address (int,
8117                                                   inf_data->syscalls_counts)
8118                           + vec_addr_offset);
8119               memset ((void *) vec_addr, 0,
8120                       (iter + 1 - old_size) * sizeof (int));
8121             }
8122           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8123           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8124         }
8125     }
8126
8127   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8128                                         inf_data->total_syscalls_count != 0,
8129                                         inf_data->any_syscall_count,
8130                                         VEC_length (int,
8131                                                     inf_data->syscalls_counts),
8132                                         VEC_address (int,
8133                                                      inf_data->syscalls_counts));
8134 }
8135
8136 /* Implement the "remove" breakpoint_ops method for syscall
8137    catchpoints.  */
8138
8139 static int
8140 remove_catch_syscall (struct bp_location *bl)
8141 {
8142   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8143   struct inferior *inf = current_inferior ();
8144   struct catch_syscall_inferior_data *inf_data
8145     = get_catch_syscall_inferior_data (inf);
8146
8147   --inf_data->total_syscalls_count;
8148   if (!c->syscalls_to_be_caught)
8149     --inf_data->any_syscall_count;
8150   else
8151     {
8152       int i, iter;
8153
8154       for (i = 0;
8155            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8156            i++)
8157         {
8158           int elem;
8159           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8160             /* Shouldn't happen.  */
8161             continue;
8162           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8163           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8164         }
8165     }
8166
8167   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8168                                         inf_data->total_syscalls_count != 0,
8169                                         inf_data->any_syscall_count,
8170                                         VEC_length (int,
8171                                                     inf_data->syscalls_counts),
8172                                         VEC_address (int,
8173                                                      inf_data->syscalls_counts));
8174 }
8175
8176 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8177    catchpoints.  */
8178
8179 static int
8180 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8181                               struct address_space *aspace, CORE_ADDR bp_addr,
8182                               const struct target_waitstatus *ws)
8183 {
8184   /* We must check if we are catching specific syscalls in this
8185      breakpoint.  If we are, then we must guarantee that the called
8186      syscall is the same syscall we are catching.  */
8187   int syscall_number = 0;
8188   const struct syscall_catchpoint *c
8189     = (const struct syscall_catchpoint *) bl->owner;
8190
8191   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8192       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8193     return 0;
8194
8195   syscall_number = ws->value.syscall_number;
8196
8197   /* Now, checking if the syscall is the same.  */
8198   if (c->syscalls_to_be_caught)
8199     {
8200       int i, iter;
8201
8202       for (i = 0;
8203            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8204            i++)
8205         if (syscall_number == iter)
8206           break;
8207       /* Not the same.  */
8208       if (!iter)
8209         return 0;
8210     }
8211
8212   return 1;
8213 }
8214
8215 /* Implement the "print_it" breakpoint_ops method for syscall
8216    catchpoints.  */
8217
8218 static enum print_stop_action
8219 print_it_catch_syscall (bpstat bs)
8220 {
8221   struct ui_out *uiout = current_uiout;
8222   struct breakpoint *b = bs->breakpoint_at;
8223   /* These are needed because we want to know in which state a
8224      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8225      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8226      must print "called syscall" or "returned from syscall".  */
8227   ptid_t ptid;
8228   struct target_waitstatus last;
8229   struct syscall s;
8230
8231   get_last_target_status (&ptid, &last);
8232
8233   get_syscall_by_number (last.value.syscall_number, &s);
8234
8235   annotate_catchpoint (b->number);
8236
8237   if (b->disposition == disp_del)
8238     ui_out_text (uiout, "\nTemporary catchpoint ");
8239   else
8240     ui_out_text (uiout, "\nCatchpoint ");
8241   if (ui_out_is_mi_like_p (uiout))
8242     {
8243       ui_out_field_string (uiout, "reason",
8244                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8245                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8246                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8247       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8248     }
8249   ui_out_field_int (uiout, "bkptno", b->number);
8250
8251   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8252     ui_out_text (uiout, " (call to syscall ");
8253   else
8254     ui_out_text (uiout, " (returned from syscall ");
8255
8256   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8257     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8258   if (s.name != NULL)
8259     ui_out_field_string (uiout, "syscall-name", s.name);
8260
8261   ui_out_text (uiout, "), ");
8262
8263   return PRINT_SRC_AND_LOC;
8264 }
8265
8266 /* Implement the "print_one" breakpoint_ops method for syscall
8267    catchpoints.  */
8268
8269 static void
8270 print_one_catch_syscall (struct breakpoint *b,
8271                          struct bp_location **last_loc)
8272 {
8273   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8274   struct value_print_options opts;
8275   struct ui_out *uiout = current_uiout;
8276
8277   get_user_print_options (&opts);
8278   /* Field 4, the address, is omitted (which makes the columns not
8279      line up too nicely with the headers, but the effect is relatively
8280      readable).  */
8281   if (opts.addressprint)
8282     ui_out_field_skip (uiout, "addr");
8283   annotate_field (5);
8284
8285   if (c->syscalls_to_be_caught
8286       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8287     ui_out_text (uiout, "syscalls \"");
8288   else
8289     ui_out_text (uiout, "syscall \"");
8290
8291   if (c->syscalls_to_be_caught)
8292     {
8293       int i, iter;
8294       char *text = xstrprintf ("%s", "");
8295
8296       for (i = 0;
8297            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8298            i++)
8299         {
8300           char *x = text;
8301           struct syscall s;
8302           get_syscall_by_number (iter, &s);
8303
8304           if (s.name != NULL)
8305             text = xstrprintf ("%s%s, ", text, s.name);
8306           else
8307             text = xstrprintf ("%s%d, ", text, iter);
8308
8309           /* We have to xfree the last 'text' (now stored at 'x')
8310              because xstrprintf dynamically allocates new space for it
8311              on every call.  */
8312           xfree (x);
8313         }
8314       /* Remove the last comma.  */
8315       text[strlen (text) - 2] = '\0';
8316       ui_out_field_string (uiout, "what", text);
8317     }
8318   else
8319     ui_out_field_string (uiout, "what", "<any syscall>");
8320   ui_out_text (uiout, "\" ");
8321
8322   if (ui_out_is_mi_like_p (uiout))
8323     ui_out_field_string (uiout, "catch-type", "syscall");
8324 }
8325
8326 /* Implement the "print_mention" breakpoint_ops method for syscall
8327    catchpoints.  */
8328
8329 static void
8330 print_mention_catch_syscall (struct breakpoint *b)
8331 {
8332   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8333
8334   if (c->syscalls_to_be_caught)
8335     {
8336       int i, iter;
8337
8338       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8339         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8340       else
8341         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8342
8343       for (i = 0;
8344            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8345            i++)
8346         {
8347           struct syscall s;
8348           get_syscall_by_number (iter, &s);
8349
8350           if (s.name)
8351             printf_filtered (" '%s' [%d]", s.name, s.number);
8352           else
8353             printf_filtered (" %d", s.number);
8354         }
8355       printf_filtered (")");
8356     }
8357   else
8358     printf_filtered (_("Catchpoint %d (any syscall)"),
8359                      b->number);
8360 }
8361
8362 /* Implement the "print_recreate" breakpoint_ops method for syscall
8363    catchpoints.  */
8364
8365 static void
8366 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8367 {
8368   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8369
8370   fprintf_unfiltered (fp, "catch syscall");
8371
8372   if (c->syscalls_to_be_caught)
8373     {
8374       int i, iter;
8375
8376       for (i = 0;
8377            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8378            i++)
8379         {
8380           struct syscall s;
8381
8382           get_syscall_by_number (iter, &s);
8383           if (s.name)
8384             fprintf_unfiltered (fp, " %s", s.name);
8385           else
8386             fprintf_unfiltered (fp, " %d", s.number);
8387         }
8388     }
8389   print_recreate_thread (b, fp);
8390 }
8391
8392 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8393
8394 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8395
8396 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8397
8398 static int
8399 syscall_catchpoint_p (struct breakpoint *b)
8400 {
8401   return (b->ops == &catch_syscall_breakpoint_ops);
8402 }
8403
8404 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8405    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8406    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8407    the breakpoint_ops structure associated to the catchpoint.  */
8408
8409 void
8410 init_catchpoint (struct breakpoint *b,
8411                  struct gdbarch *gdbarch, int tempflag,
8412                  char *cond_string,
8413                  const struct breakpoint_ops *ops)
8414 {
8415   struct symtab_and_line sal;
8416
8417   init_sal (&sal);
8418   sal.pspace = current_program_space;
8419
8420   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8421
8422   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8423   b->disposition = tempflag ? disp_del : disp_donttouch;
8424 }
8425
8426 void
8427 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8428 {
8429   add_to_breakpoint_chain (b);
8430   set_breakpoint_number (internal, b);
8431   if (is_tracepoint (b))
8432     set_tracepoint_count (breakpoint_count);
8433   if (!internal)
8434     mention (b);
8435   observer_notify_breakpoint_created (b);
8436
8437   if (update_gll)
8438     update_global_location_list (1);
8439 }
8440
8441 static void
8442 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8443                                     int tempflag, char *cond_string,
8444                                     const struct breakpoint_ops *ops)
8445 {
8446   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8447
8448   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8449
8450   c->forked_inferior_pid = null_ptid;
8451
8452   install_breakpoint (0, &c->base, 1);
8453 }
8454
8455 /* Exec catchpoints.  */
8456
8457 /* An instance of this type is used to represent an exec catchpoint.
8458    It includes a "struct breakpoint" as a kind of base class; users
8459    downcast to "struct breakpoint *" when needed.  A breakpoint is
8460    really of this type iff its ops pointer points to
8461    CATCH_EXEC_BREAKPOINT_OPS.  */
8462
8463 struct exec_catchpoint
8464 {
8465   /* The base class.  */
8466   struct breakpoint base;
8467
8468   /* Filename of a program whose exec triggered this catchpoint.
8469      This field is only valid immediately after this catchpoint has
8470      triggered.  */
8471   char *exec_pathname;
8472 };
8473
8474 /* Implement the "dtor" breakpoint_ops method for exec
8475    catchpoints.  */
8476
8477 static void
8478 dtor_catch_exec (struct breakpoint *b)
8479 {
8480   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8481
8482   xfree (c->exec_pathname);
8483
8484   base_breakpoint_ops.dtor (b);
8485 }
8486
8487 static int
8488 insert_catch_exec (struct bp_location *bl)
8489 {
8490   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8491 }
8492
8493 static int
8494 remove_catch_exec (struct bp_location *bl)
8495 {
8496   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8497 }
8498
8499 static int
8500 breakpoint_hit_catch_exec (const struct bp_location *bl,
8501                            struct address_space *aspace, CORE_ADDR bp_addr,
8502                            const struct target_waitstatus *ws)
8503 {
8504   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8505
8506   if (ws->kind != TARGET_WAITKIND_EXECD)
8507     return 0;
8508
8509   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8510   return 1;
8511 }
8512
8513 static enum print_stop_action
8514 print_it_catch_exec (bpstat bs)
8515 {
8516   struct ui_out *uiout = current_uiout;
8517   struct breakpoint *b = bs->breakpoint_at;
8518   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8519
8520   annotate_catchpoint (b->number);
8521   if (b->disposition == disp_del)
8522     ui_out_text (uiout, "\nTemporary catchpoint ");
8523   else
8524     ui_out_text (uiout, "\nCatchpoint ");
8525   if (ui_out_is_mi_like_p (uiout))
8526     {
8527       ui_out_field_string (uiout, "reason",
8528                            async_reason_lookup (EXEC_ASYNC_EXEC));
8529       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8530     }
8531   ui_out_field_int (uiout, "bkptno", b->number);
8532   ui_out_text (uiout, " (exec'd ");
8533   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8534   ui_out_text (uiout, "), ");
8535
8536   return PRINT_SRC_AND_LOC;
8537 }
8538
8539 static void
8540 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8541 {
8542   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8543   struct value_print_options opts;
8544   struct ui_out *uiout = current_uiout;
8545
8546   get_user_print_options (&opts);
8547
8548   /* Field 4, the address, is omitted (which makes the columns
8549      not line up too nicely with the headers, but the effect
8550      is relatively readable).  */
8551   if (opts.addressprint)
8552     ui_out_field_skip (uiout, "addr");
8553   annotate_field (5);
8554   ui_out_text (uiout, "exec");
8555   if (c->exec_pathname != NULL)
8556     {
8557       ui_out_text (uiout, ", program \"");
8558       ui_out_field_string (uiout, "what", c->exec_pathname);
8559       ui_out_text (uiout, "\" ");
8560     }
8561
8562   if (ui_out_is_mi_like_p (uiout))
8563     ui_out_field_string (uiout, "catch-type", "exec");
8564 }
8565
8566 static void
8567 print_mention_catch_exec (struct breakpoint *b)
8568 {
8569   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8570 }
8571
8572 /* Implement the "print_recreate" breakpoint_ops method for exec
8573    catchpoints.  */
8574
8575 static void
8576 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8577 {
8578   fprintf_unfiltered (fp, "catch exec");
8579   print_recreate_thread (b, fp);
8580 }
8581
8582 static struct breakpoint_ops catch_exec_breakpoint_ops;
8583
8584 static void
8585 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8586                                  const struct breakpoint_ops *ops)
8587 {
8588   struct syscall_catchpoint *c;
8589   struct gdbarch *gdbarch = get_current_arch ();
8590
8591   c = XNEW (struct syscall_catchpoint);
8592   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8593   c->syscalls_to_be_caught = filter;
8594
8595   install_breakpoint (0, &c->base, 1);
8596 }
8597
8598 static int
8599 hw_breakpoint_used_count (void)
8600 {
8601   int i = 0;
8602   struct breakpoint *b;
8603   struct bp_location *bl;
8604
8605   ALL_BREAKPOINTS (b)
8606   {
8607     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8608       for (bl = b->loc; bl; bl = bl->next)
8609         {
8610           /* Special types of hardware breakpoints may use more than
8611              one register.  */
8612           i += b->ops->resources_needed (bl);
8613         }
8614   }
8615
8616   return i;
8617 }
8618
8619 /* Returns the resources B would use if it were a hardware
8620    watchpoint.  */
8621
8622 static int
8623 hw_watchpoint_use_count (struct breakpoint *b)
8624 {
8625   int i = 0;
8626   struct bp_location *bl;
8627
8628   if (!breakpoint_enabled (b))
8629     return 0;
8630
8631   for (bl = b->loc; bl; bl = bl->next)
8632     {
8633       /* Special types of hardware watchpoints may use more than
8634          one register.  */
8635       i += b->ops->resources_needed (bl);
8636     }
8637
8638   return i;
8639 }
8640
8641 /* Returns the sum the used resources of all hardware watchpoints of
8642    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8643    the sum of the used resources of all hardware watchpoints of other
8644    types _not_ TYPE.  */
8645
8646 static int
8647 hw_watchpoint_used_count_others (struct breakpoint *except,
8648                                  enum bptype type, int *other_type_used)
8649 {
8650   int i = 0;
8651   struct breakpoint *b;
8652
8653   *other_type_used = 0;
8654   ALL_BREAKPOINTS (b)
8655     {
8656       if (b == except)
8657         continue;
8658       if (!breakpoint_enabled (b))
8659         continue;
8660
8661       if (b->type == type)
8662         i += hw_watchpoint_use_count (b);
8663       else if (is_hardware_watchpoint (b))
8664         *other_type_used = 1;
8665     }
8666
8667   return i;
8668 }
8669
8670 void
8671 disable_watchpoints_before_interactive_call_start (void)
8672 {
8673   struct breakpoint *b;
8674
8675   ALL_BREAKPOINTS (b)
8676   {
8677     if (is_watchpoint (b) && breakpoint_enabled (b))
8678       {
8679         b->enable_state = bp_call_disabled;
8680         update_global_location_list (0);
8681       }
8682   }
8683 }
8684
8685 void
8686 enable_watchpoints_after_interactive_call_stop (void)
8687 {
8688   struct breakpoint *b;
8689
8690   ALL_BREAKPOINTS (b)
8691   {
8692     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8693       {
8694         b->enable_state = bp_enabled;
8695         update_global_location_list (1);
8696       }
8697   }
8698 }
8699
8700 void
8701 disable_breakpoints_before_startup (void)
8702 {
8703   current_program_space->executing_startup = 1;
8704   update_global_location_list (0);
8705 }
8706
8707 void
8708 enable_breakpoints_after_startup (void)
8709 {
8710   current_program_space->executing_startup = 0;
8711   breakpoint_re_set ();
8712 }
8713
8714
8715 /* Set a breakpoint that will evaporate an end of command
8716    at address specified by SAL.
8717    Restrict it to frame FRAME if FRAME is nonzero.  */
8718
8719 struct breakpoint *
8720 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8721                           struct frame_id frame_id, enum bptype type)
8722 {
8723   struct breakpoint *b;
8724
8725   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8726      tail-called one.  */
8727   gdb_assert (!frame_id_artificial_p (frame_id));
8728
8729   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8730   b->enable_state = bp_enabled;
8731   b->disposition = disp_donttouch;
8732   b->frame_id = frame_id;
8733
8734   /* If we're debugging a multi-threaded program, then we want
8735      momentary breakpoints to be active in only a single thread of
8736      control.  */
8737   if (in_thread_list (inferior_ptid))
8738     b->thread = pid_to_thread_id (inferior_ptid);
8739
8740   update_global_location_list_nothrow (1);
8741
8742   return b;
8743 }
8744
8745 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8746    The new breakpoint will have type TYPE, and use OPS as it
8747    breakpoint_ops.  */
8748
8749 static struct breakpoint *
8750 momentary_breakpoint_from_master (struct breakpoint *orig,
8751                                   enum bptype type,
8752                                   const struct breakpoint_ops *ops)
8753 {
8754   struct breakpoint *copy;
8755
8756   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8757   copy->loc = allocate_bp_location (copy);
8758   set_breakpoint_location_function (copy->loc, 1);
8759
8760   copy->loc->gdbarch = orig->loc->gdbarch;
8761   copy->loc->requested_address = orig->loc->requested_address;
8762   copy->loc->address = orig->loc->address;
8763   copy->loc->section = orig->loc->section;
8764   copy->loc->pspace = orig->loc->pspace;
8765   copy->loc->probe = orig->loc->probe;
8766   copy->loc->line_number = orig->loc->line_number;
8767   copy->loc->symtab = orig->loc->symtab;
8768   copy->frame_id = orig->frame_id;
8769   copy->thread = orig->thread;
8770   copy->pspace = orig->pspace;
8771
8772   copy->enable_state = bp_enabled;
8773   copy->disposition = disp_donttouch;
8774   copy->number = internal_breakpoint_number--;
8775
8776   update_global_location_list_nothrow (0);
8777   return copy;
8778 }
8779
8780 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8781    ORIG is NULL.  */
8782
8783 struct breakpoint *
8784 clone_momentary_breakpoint (struct breakpoint *orig)
8785 {
8786   /* If there's nothing to clone, then return nothing.  */
8787   if (orig == NULL)
8788     return NULL;
8789
8790   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8791 }
8792
8793 struct breakpoint *
8794 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8795                                 enum bptype type)
8796 {
8797   struct symtab_and_line sal;
8798
8799   sal = find_pc_line (pc, 0);
8800   sal.pc = pc;
8801   sal.section = find_pc_overlay (pc);
8802   sal.explicit_pc = 1;
8803
8804   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8805 }
8806 \f
8807
8808 /* Tell the user we have just set a breakpoint B.  */
8809
8810 static void
8811 mention (struct breakpoint *b)
8812 {
8813   b->ops->print_mention (b);
8814   if (ui_out_is_mi_like_p (current_uiout))
8815     return;
8816   printf_filtered ("\n");
8817 }
8818 \f
8819
8820 static struct bp_location *
8821 add_location_to_breakpoint (struct breakpoint *b,
8822                             const struct symtab_and_line *sal)
8823 {
8824   struct bp_location *loc, **tmp;
8825   CORE_ADDR adjusted_address;
8826   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8827
8828   if (loc_gdbarch == NULL)
8829     loc_gdbarch = b->gdbarch;
8830
8831   /* Adjust the breakpoint's address prior to allocating a location.
8832      Once we call allocate_bp_location(), that mostly uninitialized
8833      location will be placed on the location chain.  Adjustment of the
8834      breakpoint may cause target_read_memory() to be called and we do
8835      not want its scan of the location chain to find a breakpoint and
8836      location that's only been partially initialized.  */
8837   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8838                                                 sal->pc, b->type);
8839
8840   /* Sort the locations by their ADDRESS.  */
8841   loc = allocate_bp_location (b);
8842   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8843        tmp = &((*tmp)->next))
8844     ;
8845   loc->next = *tmp;
8846   *tmp = loc;
8847
8848   loc->requested_address = sal->pc;
8849   loc->address = adjusted_address;
8850   loc->pspace = sal->pspace;
8851   loc->probe = sal->probe;
8852   gdb_assert (loc->pspace != NULL);
8853   loc->section = sal->section;
8854   loc->gdbarch = loc_gdbarch;
8855   loc->line_number = sal->line;
8856   loc->symtab = sal->symtab;
8857
8858   set_breakpoint_location_function (loc,
8859                                     sal->explicit_pc || sal->explicit_line);
8860   return loc;
8861 }
8862 \f
8863
8864 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8865    return 0 otherwise.  */
8866
8867 static int
8868 bp_loc_is_permanent (struct bp_location *loc)
8869 {
8870   int len;
8871   CORE_ADDR addr;
8872   const gdb_byte *bpoint;
8873   gdb_byte *target_mem;
8874   struct cleanup *cleanup;
8875   int retval = 0;
8876
8877   gdb_assert (loc != NULL);
8878
8879   addr = loc->address;
8880   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8881
8882   /* Software breakpoints unsupported?  */
8883   if (bpoint == NULL)
8884     return 0;
8885
8886   target_mem = alloca (len);
8887
8888   /* Enable the automatic memory restoration from breakpoints while
8889      we read the memory.  Otherwise we could say about our temporary
8890      breakpoints they are permanent.  */
8891   cleanup = save_current_space_and_thread ();
8892
8893   switch_to_program_space_and_thread (loc->pspace);
8894   make_show_memory_breakpoints_cleanup (0);
8895
8896   if (target_read_memory (loc->address, target_mem, len) == 0
8897       && memcmp (target_mem, bpoint, len) == 0)
8898     retval = 1;
8899
8900   do_cleanups (cleanup);
8901
8902   return retval;
8903 }
8904
8905 /* Build a command list for the dprintf corresponding to the current
8906    settings of the dprintf style options.  */
8907
8908 static void
8909 update_dprintf_command_list (struct breakpoint *b)
8910 {
8911   char *dprintf_args = b->extra_string;
8912   char *printf_line = NULL;
8913
8914   if (!dprintf_args)
8915     return;
8916
8917   dprintf_args = skip_spaces (dprintf_args);
8918
8919   /* Allow a comma, as it may have terminated a location, but don't
8920      insist on it.  */
8921   if (*dprintf_args == ',')
8922     ++dprintf_args;
8923   dprintf_args = skip_spaces (dprintf_args);
8924
8925   if (*dprintf_args != '"')
8926     error (_("Bad format string, missing '\"'."));
8927
8928   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8929     printf_line = xstrprintf ("printf %s", dprintf_args);
8930   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8931     {
8932       if (!dprintf_function)
8933         error (_("No function supplied for dprintf call"));
8934
8935       if (dprintf_channel && strlen (dprintf_channel) > 0)
8936         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8937                                   dprintf_function,
8938                                   dprintf_channel,
8939                                   dprintf_args);
8940       else
8941         printf_line = xstrprintf ("call (void) %s (%s)",
8942                                   dprintf_function,
8943                                   dprintf_args);
8944     }
8945   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8946     {
8947       if (target_can_run_breakpoint_commands ())
8948         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8949       else
8950         {
8951           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8952           printf_line = xstrprintf ("printf %s", dprintf_args);
8953         }
8954     }
8955   else
8956     internal_error (__FILE__, __LINE__,
8957                     _("Invalid dprintf style."));
8958
8959   gdb_assert (printf_line != NULL);
8960   /* Manufacture a printf/continue sequence.  */
8961   {
8962     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8963
8964     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8965       {
8966         cont_cmd_line = xmalloc (sizeof (struct command_line));
8967         cont_cmd_line->control_type = simple_control;
8968         cont_cmd_line->body_count = 0;
8969         cont_cmd_line->body_list = NULL;
8970         cont_cmd_line->next = NULL;
8971         cont_cmd_line->line = xstrdup ("continue");
8972       }
8973
8974     printf_cmd_line = xmalloc (sizeof (struct command_line));
8975     printf_cmd_line->control_type = simple_control;
8976     printf_cmd_line->body_count = 0;
8977     printf_cmd_line->body_list = NULL;
8978     printf_cmd_line->next = cont_cmd_line;
8979     printf_cmd_line->line = printf_line;
8980
8981     breakpoint_set_commands (b, printf_cmd_line);
8982   }
8983 }
8984
8985 /* Update all dprintf commands, making their command lists reflect
8986    current style settings.  */
8987
8988 static void
8989 update_dprintf_commands (char *args, int from_tty,
8990                          struct cmd_list_element *c)
8991 {
8992   struct breakpoint *b;
8993
8994   ALL_BREAKPOINTS (b)
8995     {
8996       if (b->type == bp_dprintf)
8997         update_dprintf_command_list (b);
8998     }
8999 }
9000
9001 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
9002    as textual description of the location, and COND_STRING
9003    as condition expression.  */
9004
9005 static void
9006 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9007                      struct symtabs_and_lines sals, char *addr_string,
9008                      char *filter, char *cond_string,
9009                      char *extra_string,
9010                      enum bptype type, enum bpdisp disposition,
9011                      int thread, int task, int ignore_count,
9012                      const struct breakpoint_ops *ops, int from_tty,
9013                      int enabled, int internal, unsigned flags,
9014                      int display_canonical)
9015 {
9016   int i;
9017
9018   if (type == bp_hardware_breakpoint)
9019     {
9020       int target_resources_ok;
9021
9022       i = hw_breakpoint_used_count ();
9023       target_resources_ok =
9024         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9025                                             i + 1, 0);
9026       if (target_resources_ok == 0)
9027         error (_("No hardware breakpoint support in the target."));
9028       else if (target_resources_ok < 0)
9029         error (_("Hardware breakpoints used exceeds limit."));
9030     }
9031
9032   gdb_assert (sals.nelts > 0);
9033
9034   for (i = 0; i < sals.nelts; ++i)
9035     {
9036       struct symtab_and_line sal = sals.sals[i];
9037       struct bp_location *loc;
9038
9039       if (from_tty)
9040         {
9041           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9042           if (!loc_gdbarch)
9043             loc_gdbarch = gdbarch;
9044
9045           describe_other_breakpoints (loc_gdbarch,
9046                                       sal.pspace, sal.pc, sal.section, thread);
9047         }
9048
9049       if (i == 0)
9050         {
9051           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9052           b->thread = thread;
9053           b->task = task;
9054
9055           b->cond_string = cond_string;
9056           b->extra_string = extra_string;
9057           b->ignore_count = ignore_count;
9058           b->enable_state = enabled ? bp_enabled : bp_disabled;
9059           b->disposition = disposition;
9060
9061           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9062             b->loc->inserted = 1;
9063
9064           if (type == bp_static_tracepoint)
9065             {
9066               struct tracepoint *t = (struct tracepoint *) b;
9067               struct static_tracepoint_marker marker;
9068
9069               if (strace_marker_p (b))
9070                 {
9071                   /* We already know the marker exists, otherwise, we
9072                      wouldn't see a sal for it.  */
9073                   char *p = &addr_string[3];
9074                   char *endp;
9075                   char *marker_str;
9076
9077                   p = skip_spaces (p);
9078
9079                   endp = skip_to_space (p);
9080
9081                   marker_str = savestring (p, endp - p);
9082                   t->static_trace_marker_id = marker_str;
9083
9084                   printf_filtered (_("Probed static tracepoint "
9085                                      "marker \"%s\"\n"),
9086                                    t->static_trace_marker_id);
9087                 }
9088               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9089                 {
9090                   t->static_trace_marker_id = xstrdup (marker.str_id);
9091                   release_static_tracepoint_marker (&marker);
9092
9093                   printf_filtered (_("Probed static tracepoint "
9094                                      "marker \"%s\"\n"),
9095                                    t->static_trace_marker_id);
9096                 }
9097               else
9098                 warning (_("Couldn't determine the static "
9099                            "tracepoint marker to probe"));
9100             }
9101
9102           loc = b->loc;
9103         }
9104       else
9105         {
9106           loc = add_location_to_breakpoint (b, &sal);
9107           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9108             loc->inserted = 1;
9109         }
9110
9111       if (bp_loc_is_permanent (loc))
9112         make_breakpoint_permanent (b);
9113
9114       if (b->cond_string)
9115         {
9116           const char *arg = b->cond_string;
9117
9118           loc->cond = parse_exp_1 (&arg, loc->address,
9119                                    block_for_pc (loc->address), 0);
9120           if (*arg)
9121               error (_("Garbage '%s' follows condition"), arg);
9122         }
9123
9124       /* Dynamic printf requires and uses additional arguments on the
9125          command line, otherwise it's an error.  */
9126       if (type == bp_dprintf)
9127         {
9128           if (b->extra_string)
9129             update_dprintf_command_list (b);
9130           else
9131             error (_("Format string required"));
9132         }
9133       else if (b->extra_string)
9134         error (_("Garbage '%s' at end of command"), b->extra_string);
9135     }
9136
9137   b->display_canonical = display_canonical;
9138   if (addr_string)
9139     b->addr_string = addr_string;
9140   else
9141     /* addr_string has to be used or breakpoint_re_set will delete
9142        me.  */
9143     b->addr_string
9144       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9145   b->filter = filter;
9146 }
9147
9148 static void
9149 create_breakpoint_sal (struct gdbarch *gdbarch,
9150                        struct symtabs_and_lines sals, char *addr_string,
9151                        char *filter, char *cond_string,
9152                        char *extra_string,
9153                        enum bptype type, enum bpdisp disposition,
9154                        int thread, int task, int ignore_count,
9155                        const struct breakpoint_ops *ops, int from_tty,
9156                        int enabled, int internal, unsigned flags,
9157                        int display_canonical)
9158 {
9159   struct breakpoint *b;
9160   struct cleanup *old_chain;
9161
9162   if (is_tracepoint_type (type))
9163     {
9164       struct tracepoint *t;
9165
9166       t = XCNEW (struct tracepoint);
9167       b = &t->base;
9168     }
9169   else
9170     b = XNEW (struct breakpoint);
9171
9172   old_chain = make_cleanup (xfree, b);
9173
9174   init_breakpoint_sal (b, gdbarch,
9175                        sals, addr_string,
9176                        filter, cond_string, extra_string,
9177                        type, disposition,
9178                        thread, task, ignore_count,
9179                        ops, from_tty,
9180                        enabled, internal, flags,
9181                        display_canonical);
9182   discard_cleanups (old_chain);
9183
9184   install_breakpoint (internal, b, 0);
9185 }
9186
9187 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9188    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9189    value.  COND_STRING, if not NULL, specified the condition to be
9190    used for all breakpoints.  Essentially the only case where
9191    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9192    function.  In that case, it's still not possible to specify
9193    separate conditions for different overloaded functions, so
9194    we take just a single condition string.
9195    
9196    NOTE: If the function succeeds, the caller is expected to cleanup
9197    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9198    array contents).  If the function fails (error() is called), the
9199    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9200    COND and SALS arrays and each of those arrays contents.  */
9201
9202 static void
9203 create_breakpoints_sal (struct gdbarch *gdbarch,
9204                         struct linespec_result *canonical,
9205                         char *cond_string, char *extra_string,
9206                         enum bptype type, enum bpdisp disposition,
9207                         int thread, int task, int ignore_count,
9208                         const struct breakpoint_ops *ops, int from_tty,
9209                         int enabled, int internal, unsigned flags)
9210 {
9211   int i;
9212   struct linespec_sals *lsal;
9213
9214   if (canonical->pre_expanded)
9215     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9216
9217   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9218     {
9219       /* Note that 'addr_string' can be NULL in the case of a plain
9220          'break', without arguments.  */
9221       char *addr_string = (canonical->addr_string
9222                            ? xstrdup (canonical->addr_string)
9223                            : NULL);
9224       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9225       struct cleanup *inner = make_cleanup (xfree, addr_string);
9226
9227       make_cleanup (xfree, filter_string);
9228       create_breakpoint_sal (gdbarch, lsal->sals,
9229                              addr_string,
9230                              filter_string,
9231                              cond_string, extra_string,
9232                              type, disposition,
9233                              thread, task, ignore_count, ops,
9234                              from_tty, enabled, internal, flags,
9235                              canonical->special_display);
9236       discard_cleanups (inner);
9237     }
9238 }
9239
9240 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9241    followed by conditionals.  On return, SALS contains an array of SAL
9242    addresses found.  ADDR_STRING contains a vector of (canonical)
9243    address strings.  ADDRESS points to the end of the SAL.
9244
9245    The array and the line spec strings are allocated on the heap, it is
9246    the caller's responsibility to free them.  */
9247
9248 static void
9249 parse_breakpoint_sals (char **address,
9250                        struct linespec_result *canonical)
9251 {
9252   /* If no arg given, or if first arg is 'if ', use the default
9253      breakpoint.  */
9254   if ((*address) == NULL
9255       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9256     {
9257       /* The last displayed codepoint, if it's valid, is our default breakpoint
9258          address.  */
9259       if (last_displayed_sal_is_valid ())
9260         {
9261           struct linespec_sals lsal;
9262           struct symtab_and_line sal;
9263           CORE_ADDR pc;
9264
9265           init_sal (&sal);              /* Initialize to zeroes.  */
9266           lsal.sals.sals = (struct symtab_and_line *)
9267             xmalloc (sizeof (struct symtab_and_line));
9268
9269           /* Set sal's pspace, pc, symtab, and line to the values
9270              corresponding to the last call to print_frame_info.
9271              Be sure to reinitialize LINE with NOTCURRENT == 0
9272              as the breakpoint line number is inappropriate otherwise.
9273              find_pc_line would adjust PC, re-set it back.  */
9274           get_last_displayed_sal (&sal);
9275           pc = sal.pc;
9276           sal = find_pc_line (pc, 0);
9277
9278           /* "break" without arguments is equivalent to "break *PC"
9279              where PC is the last displayed codepoint's address.  So
9280              make sure to set sal.explicit_pc to prevent GDB from
9281              trying to expand the list of sals to include all other
9282              instances with the same symtab and line.  */
9283           sal.pc = pc;
9284           sal.explicit_pc = 1;
9285
9286           lsal.sals.sals[0] = sal;
9287           lsal.sals.nelts = 1;
9288           lsal.canonical = NULL;
9289
9290           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9291         }
9292       else
9293         error (_("No default breakpoint address now."));
9294     }
9295   else
9296     {
9297       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9298
9299       /* Force almost all breakpoints to be in terms of the
9300          current_source_symtab (which is decode_line_1's default).
9301          This should produce the results we want almost all of the
9302          time while leaving default_breakpoint_* alone.
9303
9304          ObjC: However, don't match an Objective-C method name which
9305          may have a '+' or '-' succeeded by a '['.  */
9306       if (last_displayed_sal_is_valid ()
9307           && (!cursal.symtab
9308               || ((strchr ("+-", (*address)[0]) != NULL)
9309                   && ((*address)[1] != '['))))
9310         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9311                           get_last_displayed_symtab (),
9312                           get_last_displayed_line (),
9313                           canonical, NULL, NULL);
9314       else
9315         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9316                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9317     }
9318 }
9319
9320
9321 /* Convert each SAL into a real PC.  Verify that the PC can be
9322    inserted as a breakpoint.  If it can't throw an error.  */
9323
9324 static void
9325 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9326 {    
9327   int i;
9328
9329   for (i = 0; i < sals->nelts; i++)
9330     resolve_sal_pc (&sals->sals[i]);
9331 }
9332
9333 /* Fast tracepoints may have restrictions on valid locations.  For
9334    instance, a fast tracepoint using a jump instead of a trap will
9335    likely have to overwrite more bytes than a trap would, and so can
9336    only be placed where the instruction is longer than the jump, or a
9337    multi-instruction sequence does not have a jump into the middle of
9338    it, etc.  */
9339
9340 static void
9341 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9342                             struct symtabs_and_lines *sals)
9343 {
9344   int i, rslt;
9345   struct symtab_and_line *sal;
9346   char *msg;
9347   struct cleanup *old_chain;
9348
9349   for (i = 0; i < sals->nelts; i++)
9350     {
9351       struct gdbarch *sarch;
9352
9353       sal = &sals->sals[i];
9354
9355       sarch = get_sal_arch (*sal);
9356       /* We fall back to GDBARCH if there is no architecture
9357          associated with SAL.  */
9358       if (sarch == NULL)
9359         sarch = gdbarch;
9360       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9361                                                NULL, &msg);
9362       old_chain = make_cleanup (xfree, msg);
9363
9364       if (!rslt)
9365         error (_("May not have a fast tracepoint at 0x%s%s"),
9366                paddress (sarch, sal->pc), (msg ? msg : ""));
9367
9368       do_cleanups (old_chain);
9369     }
9370 }
9371
9372 /* Issue an invalid thread ID error.  */
9373
9374 static void ATTRIBUTE_NORETURN
9375 invalid_thread_id_error (int id)
9376 {
9377   error (_("Unknown thread %d."), id);
9378 }
9379
9380 /* Given TOK, a string specification of condition and thread, as
9381    accepted by the 'break' command, extract the condition
9382    string and thread number and set *COND_STRING and *THREAD.
9383    PC identifies the context at which the condition should be parsed.
9384    If no condition is found, *COND_STRING is set to NULL.
9385    If no thread is found, *THREAD is set to -1.  */
9386
9387 static void
9388 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9389                            char **cond_string, int *thread, int *task,
9390                            char **rest)
9391 {
9392   *cond_string = NULL;
9393   *thread = -1;
9394   *task = 0;
9395   *rest = NULL;
9396
9397   while (tok && *tok)
9398     {
9399       const char *end_tok;
9400       int toklen;
9401       const char *cond_start = NULL;
9402       const char *cond_end = NULL;
9403
9404       tok = skip_spaces_const (tok);
9405
9406       if ((*tok == '"' || *tok == ',') && rest)
9407         {
9408           *rest = savestring (tok, strlen (tok));
9409           return;
9410         }
9411
9412       end_tok = skip_to_space_const (tok);
9413
9414       toklen = end_tok - tok;
9415
9416       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9417         {
9418           struct expression *expr;
9419
9420           tok = cond_start = end_tok + 1;
9421           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9422           xfree (expr);
9423           cond_end = tok;
9424           *cond_string = savestring (cond_start, cond_end - cond_start);
9425         }
9426       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9427         {
9428           char *tmptok;
9429
9430           tok = end_tok + 1;
9431           *thread = strtol (tok, &tmptok, 0);
9432           if (tok == tmptok)
9433             error (_("Junk after thread keyword."));
9434           if (!valid_thread_id (*thread))
9435             invalid_thread_id_error (*thread);
9436           tok = tmptok;
9437         }
9438       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9439         {
9440           char *tmptok;
9441
9442           tok = end_tok + 1;
9443           *task = strtol (tok, &tmptok, 0);
9444           if (tok == tmptok)
9445             error (_("Junk after task keyword."));
9446           if (!valid_task_id (*task))
9447             error (_("Unknown task %d."), *task);
9448           tok = tmptok;
9449         }
9450       else if (rest)
9451         {
9452           *rest = savestring (tok, strlen (tok));
9453           return;
9454         }
9455       else
9456         error (_("Junk at end of arguments."));
9457     }
9458 }
9459
9460 /* Decode a static tracepoint marker spec.  */
9461
9462 static struct symtabs_and_lines
9463 decode_static_tracepoint_spec (char **arg_p)
9464 {
9465   VEC(static_tracepoint_marker_p) *markers = NULL;
9466   struct symtabs_and_lines sals;
9467   struct cleanup *old_chain;
9468   char *p = &(*arg_p)[3];
9469   char *endp;
9470   char *marker_str;
9471   int i;
9472
9473   p = skip_spaces (p);
9474
9475   endp = skip_to_space (p);
9476
9477   marker_str = savestring (p, endp - p);
9478   old_chain = make_cleanup (xfree, marker_str);
9479
9480   markers = target_static_tracepoint_markers_by_strid (marker_str);
9481   if (VEC_empty(static_tracepoint_marker_p, markers))
9482     error (_("No known static tracepoint marker named %s"), marker_str);
9483
9484   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9485   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9486
9487   for (i = 0; i < sals.nelts; i++)
9488     {
9489       struct static_tracepoint_marker *marker;
9490
9491       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9492
9493       init_sal (&sals.sals[i]);
9494
9495       sals.sals[i] = find_pc_line (marker->address, 0);
9496       sals.sals[i].pc = marker->address;
9497
9498       release_static_tracepoint_marker (marker);
9499     }
9500
9501   do_cleanups (old_chain);
9502
9503   *arg_p = endp;
9504   return sals;
9505 }
9506
9507 /* Set a breakpoint.  This function is shared between CLI and MI
9508    functions for setting a breakpoint.  This function has two major
9509    modes of operations, selected by the PARSE_ARG parameter.  If
9510    non-zero, the function will parse ARG, extracting location,
9511    condition, thread and extra string.  Otherwise, ARG is just the
9512    breakpoint's location, with condition, thread, and extra string
9513    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9514    If INTERNAL is non-zero, the breakpoint number will be allocated
9515    from the internal breakpoint count.  Returns true if any breakpoint
9516    was created; false otherwise.  */
9517
9518 int
9519 create_breakpoint (struct gdbarch *gdbarch,
9520                    char *arg, char *cond_string,
9521                    int thread, char *extra_string,
9522                    int parse_arg,
9523                    int tempflag, enum bptype type_wanted,
9524                    int ignore_count,
9525                    enum auto_boolean pending_break_support,
9526                    const struct breakpoint_ops *ops,
9527                    int from_tty, int enabled, int internal,
9528                    unsigned flags)
9529 {
9530   volatile struct gdb_exception e;
9531   char *copy_arg = NULL;
9532   char *addr_start = arg;
9533   struct linespec_result canonical;
9534   struct cleanup *old_chain;
9535   struct cleanup *bkpt_chain = NULL;
9536   int pending = 0;
9537   int task = 0;
9538   int prev_bkpt_count = breakpoint_count;
9539
9540   gdb_assert (ops != NULL);
9541
9542   init_linespec_result (&canonical);
9543
9544   TRY_CATCH (e, RETURN_MASK_ALL)
9545     {
9546       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9547                                      addr_start, &copy_arg);
9548     }
9549
9550   /* If caller is interested in rc value from parse, set value.  */
9551   switch (e.reason)
9552     {
9553     case GDB_NO_ERROR:
9554       if (VEC_empty (linespec_sals, canonical.sals))
9555         return 0;
9556       break;
9557     case RETURN_ERROR:
9558       switch (e.error)
9559         {
9560         case NOT_FOUND_ERROR:
9561
9562           /* If pending breakpoint support is turned off, throw
9563              error.  */
9564
9565           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9566             throw_exception (e);
9567
9568           exception_print (gdb_stderr, e);
9569
9570           /* If pending breakpoint support is auto query and the user
9571              selects no, then simply return the error code.  */
9572           if (pending_break_support == AUTO_BOOLEAN_AUTO
9573               && !nquery (_("Make %s pending on future shared library load? "),
9574                           bptype_string (type_wanted)))
9575             return 0;
9576
9577           /* At this point, either the user was queried about setting
9578              a pending breakpoint and selected yes, or pending
9579              breakpoint behavior is on and thus a pending breakpoint
9580              is defaulted on behalf of the user.  */
9581           {
9582             struct linespec_sals lsal;
9583
9584             copy_arg = xstrdup (addr_start);
9585             lsal.canonical = xstrdup (copy_arg);
9586             lsal.sals.nelts = 1;
9587             lsal.sals.sals = XNEW (struct symtab_and_line);
9588             init_sal (&lsal.sals.sals[0]);
9589             pending = 1;
9590             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9591           }
9592           break;
9593         default:
9594           throw_exception (e);
9595         }
9596       break;
9597     default:
9598       throw_exception (e);
9599     }
9600
9601   /* Create a chain of things that always need to be cleaned up.  */
9602   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9603
9604   /* ----------------------------- SNIP -----------------------------
9605      Anything added to the cleanup chain beyond this point is assumed
9606      to be part of a breakpoint.  If the breakpoint create succeeds
9607      then the memory is not reclaimed.  */
9608   bkpt_chain = make_cleanup (null_cleanup, 0);
9609
9610   /* Resolve all line numbers to PC's and verify that the addresses
9611      are ok for the target.  */
9612   if (!pending)
9613     {
9614       int ix;
9615       struct linespec_sals *iter;
9616
9617       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9618         breakpoint_sals_to_pc (&iter->sals);
9619     }
9620
9621   /* Fast tracepoints may have additional restrictions on location.  */
9622   if (!pending && type_wanted == bp_fast_tracepoint)
9623     {
9624       int ix;
9625       struct linespec_sals *iter;
9626
9627       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9628         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9629     }
9630
9631   /* Verify that condition can be parsed, before setting any
9632      breakpoints.  Allocate a separate condition expression for each
9633      breakpoint.  */
9634   if (!pending)
9635     {
9636       struct linespec_sals *lsal;
9637
9638       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9639
9640       if (parse_arg)
9641         {
9642             char *rest;
9643             /* Here we only parse 'arg' to separate condition
9644                from thread number, so parsing in context of first
9645                sal is OK.  When setting the breakpoint we'll 
9646                re-parse it in context of each sal.  */
9647
9648             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9649                                        &thread, &task, &rest);
9650             if (cond_string)
9651                 make_cleanup (xfree, cond_string);
9652             if (rest)
9653               make_cleanup (xfree, rest);
9654             if (rest)
9655               extra_string = rest;
9656         }
9657       else
9658         {
9659             if (*arg != '\0')
9660               error (_("Garbage '%s' at end of location"), arg);
9661
9662             /* Create a private copy of condition string.  */
9663             if (cond_string)
9664             {
9665                 cond_string = xstrdup (cond_string);
9666                 make_cleanup (xfree, cond_string);
9667             }
9668             /* Create a private copy of any extra string.  */
9669             if (extra_string)
9670               {
9671                 extra_string = xstrdup (extra_string);
9672                 make_cleanup (xfree, extra_string);
9673               }
9674         }
9675
9676       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9677                                    cond_string, extra_string, type_wanted,
9678                                    tempflag ? disp_del : disp_donttouch,
9679                                    thread, task, ignore_count, ops,
9680                                    from_tty, enabled, internal, flags);
9681     }
9682   else
9683     {
9684       struct breakpoint *b;
9685
9686       make_cleanup (xfree, copy_arg);
9687
9688       if (is_tracepoint_type (type_wanted))
9689         {
9690           struct tracepoint *t;
9691
9692           t = XCNEW (struct tracepoint);
9693           b = &t->base;
9694         }
9695       else
9696         b = XNEW (struct breakpoint);
9697
9698       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9699
9700       b->addr_string = copy_arg;
9701       if (parse_arg)
9702         b->cond_string = NULL;
9703       else
9704         {
9705           /* Create a private copy of condition string.  */
9706           if (cond_string)
9707             {
9708               cond_string = xstrdup (cond_string);
9709               make_cleanup (xfree, cond_string);
9710             }
9711           b->cond_string = cond_string;
9712         }
9713       b->extra_string = NULL;
9714       b->ignore_count = ignore_count;
9715       b->disposition = tempflag ? disp_del : disp_donttouch;
9716       b->condition_not_parsed = 1;
9717       b->enable_state = enabled ? bp_enabled : bp_disabled;
9718       if ((type_wanted != bp_breakpoint
9719            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9720         b->pspace = current_program_space;
9721
9722       install_breakpoint (internal, b, 0);
9723     }
9724   
9725   if (VEC_length (linespec_sals, canonical.sals) > 1)
9726     {
9727       warning (_("Multiple breakpoints were set.\nUse the "
9728                  "\"delete\" command to delete unwanted breakpoints."));
9729       prev_breakpoint_count = prev_bkpt_count;
9730     }
9731
9732   /* That's it.  Discard the cleanups for data inserted into the
9733      breakpoint.  */
9734   discard_cleanups (bkpt_chain);
9735   /* But cleanup everything else.  */
9736   do_cleanups (old_chain);
9737
9738   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9739   update_global_location_list (1);
9740
9741   return 1;
9742 }
9743
9744 /* Set a breakpoint.
9745    ARG is a string describing breakpoint address,
9746    condition, and thread.
9747    FLAG specifies if a breakpoint is hardware on,
9748    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9749    and BP_TEMPFLAG.  */
9750
9751 static void
9752 break_command_1 (char *arg, int flag, int from_tty)
9753 {
9754   int tempflag = flag & BP_TEMPFLAG;
9755   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9756                              ? bp_hardware_breakpoint
9757                              : bp_breakpoint);
9758   struct breakpoint_ops *ops;
9759   const char *arg_cp = arg;
9760
9761   /* Matching breakpoints on probes.  */
9762   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9763     ops = &bkpt_probe_breakpoint_ops;
9764   else
9765     ops = &bkpt_breakpoint_ops;
9766
9767   create_breakpoint (get_current_arch (),
9768                      arg,
9769                      NULL, 0, NULL, 1 /* parse arg */,
9770                      tempflag, type_wanted,
9771                      0 /* Ignore count */,
9772                      pending_break_support,
9773                      ops,
9774                      from_tty,
9775                      1 /* enabled */,
9776                      0 /* internal */,
9777                      0);
9778 }
9779
9780 /* Helper function for break_command_1 and disassemble_command.  */
9781
9782 void
9783 resolve_sal_pc (struct symtab_and_line *sal)
9784 {
9785   CORE_ADDR pc;
9786
9787   if (sal->pc == 0 && sal->symtab != NULL)
9788     {
9789       if (!find_line_pc (sal->symtab, sal->line, &pc))
9790         error (_("No line %d in file \"%s\"."),
9791                sal->line, symtab_to_filename_for_display (sal->symtab));
9792       sal->pc = pc;
9793
9794       /* If this SAL corresponds to a breakpoint inserted using a line
9795          number, then skip the function prologue if necessary.  */
9796       if (sal->explicit_line)
9797         skip_prologue_sal (sal);
9798     }
9799
9800   if (sal->section == 0 && sal->symtab != NULL)
9801     {
9802       struct blockvector *bv;
9803       struct block *b;
9804       struct symbol *sym;
9805
9806       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9807       if (bv != NULL)
9808         {
9809           sym = block_linkage_function (b);
9810           if (sym != NULL)
9811             {
9812               fixup_symbol_section (sym, sal->symtab->objfile);
9813               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
9814             }
9815           else
9816             {
9817               /* It really is worthwhile to have the section, so we'll
9818                  just have to look harder. This case can be executed
9819                  if we have line numbers but no functions (as can
9820                  happen in assembly source).  */
9821
9822               struct bound_minimal_symbol msym;
9823               struct cleanup *old_chain = save_current_space_and_thread ();
9824
9825               switch_to_program_space_and_thread (sal->pspace);
9826
9827               msym = lookup_minimal_symbol_by_pc (sal->pc);
9828               if (msym.minsym)
9829                 sal->section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9830
9831               do_cleanups (old_chain);
9832             }
9833         }
9834     }
9835 }
9836
9837 void
9838 break_command (char *arg, int from_tty)
9839 {
9840   break_command_1 (arg, 0, from_tty);
9841 }
9842
9843 void
9844 tbreak_command (char *arg, int from_tty)
9845 {
9846   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9847 }
9848
9849 static void
9850 hbreak_command (char *arg, int from_tty)
9851 {
9852   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9853 }
9854
9855 static void
9856 thbreak_command (char *arg, int from_tty)
9857 {
9858   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9859 }
9860
9861 static void
9862 stop_command (char *arg, int from_tty)
9863 {
9864   printf_filtered (_("Specify the type of breakpoint to set.\n\
9865 Usage: stop in <function | address>\n\
9866        stop at <line>\n"));
9867 }
9868
9869 static void
9870 stopin_command (char *arg, int from_tty)
9871 {
9872   int badInput = 0;
9873
9874   if (arg == (char *) NULL)
9875     badInput = 1;
9876   else if (*arg != '*')
9877     {
9878       char *argptr = arg;
9879       int hasColon = 0;
9880
9881       /* Look for a ':'.  If this is a line number specification, then
9882          say it is bad, otherwise, it should be an address or
9883          function/method name.  */
9884       while (*argptr && !hasColon)
9885         {
9886           hasColon = (*argptr == ':');
9887           argptr++;
9888         }
9889
9890       if (hasColon)
9891         badInput = (*argptr != ':');    /* Not a class::method */
9892       else
9893         badInput = isdigit (*arg);      /* a simple line number */
9894     }
9895
9896   if (badInput)
9897     printf_filtered (_("Usage: stop in <function | address>\n"));
9898   else
9899     break_command_1 (arg, 0, from_tty);
9900 }
9901
9902 static void
9903 stopat_command (char *arg, int from_tty)
9904 {
9905   int badInput = 0;
9906
9907   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9908     badInput = 1;
9909   else
9910     {
9911       char *argptr = arg;
9912       int hasColon = 0;
9913
9914       /* Look for a ':'.  If there is a '::' then get out, otherwise
9915          it is probably a line number.  */
9916       while (*argptr && !hasColon)
9917         {
9918           hasColon = (*argptr == ':');
9919           argptr++;
9920         }
9921
9922       if (hasColon)
9923         badInput = (*argptr == ':');    /* we have class::method */
9924       else
9925         badInput = !isdigit (*arg);     /* not a line number */
9926     }
9927
9928   if (badInput)
9929     printf_filtered (_("Usage: stop at <line>\n"));
9930   else
9931     break_command_1 (arg, 0, from_tty);
9932 }
9933
9934 /* The dynamic printf command is mostly like a regular breakpoint, but
9935    with a prewired command list consisting of a single output command,
9936    built from extra arguments supplied on the dprintf command
9937    line.  */
9938
9939 static void
9940 dprintf_command (char *arg, int from_tty)
9941 {
9942   create_breakpoint (get_current_arch (),
9943                      arg,
9944                      NULL, 0, NULL, 1 /* parse arg */,
9945                      0, bp_dprintf,
9946                      0 /* Ignore count */,
9947                      pending_break_support,
9948                      &dprintf_breakpoint_ops,
9949                      from_tty,
9950                      1 /* enabled */,
9951                      0 /* internal */,
9952                      0);
9953 }
9954
9955 static void
9956 agent_printf_command (char *arg, int from_tty)
9957 {
9958   error (_("May only run agent-printf on the target"));
9959 }
9960
9961 /* Implement the "breakpoint_hit" breakpoint_ops method for
9962    ranged breakpoints.  */
9963
9964 static int
9965 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9966                                   struct address_space *aspace,
9967                                   CORE_ADDR bp_addr,
9968                                   const struct target_waitstatus *ws)
9969 {
9970   if (ws->kind != TARGET_WAITKIND_STOPPED
9971       || ws->value.sig != GDB_SIGNAL_TRAP)
9972     return 0;
9973
9974   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9975                                          bl->length, aspace, bp_addr);
9976 }
9977
9978 /* Implement the "resources_needed" breakpoint_ops method for
9979    ranged breakpoints.  */
9980
9981 static int
9982 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9983 {
9984   return target_ranged_break_num_registers ();
9985 }
9986
9987 /* Implement the "print_it" breakpoint_ops method for
9988    ranged breakpoints.  */
9989
9990 static enum print_stop_action
9991 print_it_ranged_breakpoint (bpstat bs)
9992 {
9993   struct breakpoint *b = bs->breakpoint_at;
9994   struct bp_location *bl = b->loc;
9995   struct ui_out *uiout = current_uiout;
9996
9997   gdb_assert (b->type == bp_hardware_breakpoint);
9998
9999   /* Ranged breakpoints have only one location.  */
10000   gdb_assert (bl && bl->next == NULL);
10001
10002   annotate_breakpoint (b->number);
10003   if (b->disposition == disp_del)
10004     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10005   else
10006     ui_out_text (uiout, "\nRanged breakpoint ");
10007   if (ui_out_is_mi_like_p (uiout))
10008     {
10009       ui_out_field_string (uiout, "reason",
10010                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10011       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10012     }
10013   ui_out_field_int (uiout, "bkptno", b->number);
10014   ui_out_text (uiout, ", ");
10015
10016   return PRINT_SRC_AND_LOC;
10017 }
10018
10019 /* Implement the "print_one" breakpoint_ops method for
10020    ranged breakpoints.  */
10021
10022 static void
10023 print_one_ranged_breakpoint (struct breakpoint *b,
10024                              struct bp_location **last_loc)
10025 {
10026   struct bp_location *bl = b->loc;
10027   struct value_print_options opts;
10028   struct ui_out *uiout = current_uiout;
10029
10030   /* Ranged breakpoints have only one location.  */
10031   gdb_assert (bl && bl->next == NULL);
10032
10033   get_user_print_options (&opts);
10034
10035   if (opts.addressprint)
10036     /* We don't print the address range here, it will be printed later
10037        by print_one_detail_ranged_breakpoint.  */
10038     ui_out_field_skip (uiout, "addr");
10039   annotate_field (5);
10040   print_breakpoint_location (b, bl);
10041   *last_loc = bl;
10042 }
10043
10044 /* Implement the "print_one_detail" breakpoint_ops method for
10045    ranged breakpoints.  */
10046
10047 static void
10048 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10049                                     struct ui_out *uiout)
10050 {
10051   CORE_ADDR address_start, address_end;
10052   struct bp_location *bl = b->loc;
10053   struct ui_file *stb = mem_fileopen ();
10054   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10055
10056   gdb_assert (bl);
10057
10058   address_start = bl->address;
10059   address_end = address_start + bl->length - 1;
10060
10061   ui_out_text (uiout, "\taddress range: ");
10062   fprintf_unfiltered (stb, "[%s, %s]",
10063                       print_core_address (bl->gdbarch, address_start),
10064                       print_core_address (bl->gdbarch, address_end));
10065   ui_out_field_stream (uiout, "addr", stb);
10066   ui_out_text (uiout, "\n");
10067
10068   do_cleanups (cleanup);
10069 }
10070
10071 /* Implement the "print_mention" breakpoint_ops method for
10072    ranged breakpoints.  */
10073
10074 static void
10075 print_mention_ranged_breakpoint (struct breakpoint *b)
10076 {
10077   struct bp_location *bl = b->loc;
10078   struct ui_out *uiout = current_uiout;
10079
10080   gdb_assert (bl);
10081   gdb_assert (b->type == bp_hardware_breakpoint);
10082
10083   if (ui_out_is_mi_like_p (uiout))
10084     return;
10085
10086   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10087                    b->number, paddress (bl->gdbarch, bl->address),
10088                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10089 }
10090
10091 /* Implement the "print_recreate" breakpoint_ops method for
10092    ranged breakpoints.  */
10093
10094 static void
10095 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10096 {
10097   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10098                       b->addr_string_range_end);
10099   print_recreate_thread (b, fp);
10100 }
10101
10102 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10103
10104 static struct breakpoint_ops ranged_breakpoint_ops;
10105
10106 /* Find the address where the end of the breakpoint range should be
10107    placed, given the SAL of the end of the range.  This is so that if
10108    the user provides a line number, the end of the range is set to the
10109    last instruction of the given line.  */
10110
10111 static CORE_ADDR
10112 find_breakpoint_range_end (struct symtab_and_line sal)
10113 {
10114   CORE_ADDR end;
10115
10116   /* If the user provided a PC value, use it.  Otherwise,
10117      find the address of the end of the given location.  */
10118   if (sal.explicit_pc)
10119     end = sal.pc;
10120   else
10121     {
10122       int ret;
10123       CORE_ADDR start;
10124
10125       ret = find_line_pc_range (sal, &start, &end);
10126       if (!ret)
10127         error (_("Could not find location of the end of the range."));
10128
10129       /* find_line_pc_range returns the start of the next line.  */
10130       end--;
10131     }
10132
10133   return end;
10134 }
10135
10136 /* Implement the "break-range" CLI command.  */
10137
10138 static void
10139 break_range_command (char *arg, int from_tty)
10140 {
10141   char *arg_start, *addr_string_start, *addr_string_end;
10142   struct linespec_result canonical_start, canonical_end;
10143   int bp_count, can_use_bp, length;
10144   CORE_ADDR end;
10145   struct breakpoint *b;
10146   struct symtab_and_line sal_start, sal_end;
10147   struct cleanup *cleanup_bkpt;
10148   struct linespec_sals *lsal_start, *lsal_end;
10149
10150   /* We don't support software ranged breakpoints.  */
10151   if (target_ranged_break_num_registers () < 0)
10152     error (_("This target does not support hardware ranged breakpoints."));
10153
10154   bp_count = hw_breakpoint_used_count ();
10155   bp_count += target_ranged_break_num_registers ();
10156   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10157                                                    bp_count, 0);
10158   if (can_use_bp < 0)
10159     error (_("Hardware breakpoints used exceeds limit."));
10160
10161   arg = skip_spaces (arg);
10162   if (arg == NULL || arg[0] == '\0')
10163     error(_("No address range specified."));
10164
10165   init_linespec_result (&canonical_start);
10166
10167   arg_start = arg;
10168   parse_breakpoint_sals (&arg, &canonical_start);
10169
10170   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10171
10172   if (arg[0] != ',')
10173     error (_("Too few arguments."));
10174   else if (VEC_empty (linespec_sals, canonical_start.sals))
10175     error (_("Could not find location of the beginning of the range."));
10176
10177   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10178
10179   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10180       || lsal_start->sals.nelts != 1)
10181     error (_("Cannot create a ranged breakpoint with multiple locations."));
10182
10183   sal_start = lsal_start->sals.sals[0];
10184   addr_string_start = savestring (arg_start, arg - arg_start);
10185   make_cleanup (xfree, addr_string_start);
10186
10187   arg++;        /* Skip the comma.  */
10188   arg = skip_spaces (arg);
10189
10190   /* Parse the end location.  */
10191
10192   init_linespec_result (&canonical_end);
10193   arg_start = arg;
10194
10195   /* We call decode_line_full directly here instead of using
10196      parse_breakpoint_sals because we need to specify the start location's
10197      symtab and line as the default symtab and line for the end of the
10198      range.  This makes it possible to have ranges like "foo.c:27, +14",
10199      where +14 means 14 lines from the start location.  */
10200   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10201                     sal_start.symtab, sal_start.line,
10202                     &canonical_end, NULL, NULL);
10203
10204   make_cleanup_destroy_linespec_result (&canonical_end);
10205
10206   if (VEC_empty (linespec_sals, canonical_end.sals))
10207     error (_("Could not find location of the end of the range."));
10208
10209   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10210   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10211       || lsal_end->sals.nelts != 1)
10212     error (_("Cannot create a ranged breakpoint with multiple locations."));
10213
10214   sal_end = lsal_end->sals.sals[0];
10215   addr_string_end = savestring (arg_start, arg - arg_start);
10216   make_cleanup (xfree, addr_string_end);
10217
10218   end = find_breakpoint_range_end (sal_end);
10219   if (sal_start.pc > end)
10220     error (_("Invalid address range, end precedes start."));
10221
10222   length = end - sal_start.pc + 1;
10223   if (length < 0)
10224     /* Length overflowed.  */
10225     error (_("Address range too large."));
10226   else if (length == 1)
10227     {
10228       /* This range is simple enough to be handled by
10229          the `hbreak' command.  */
10230       hbreak_command (addr_string_start, 1);
10231
10232       do_cleanups (cleanup_bkpt);
10233
10234       return;
10235     }
10236
10237   /* Now set up the breakpoint.  */
10238   b = set_raw_breakpoint (get_current_arch (), sal_start,
10239                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10240   set_breakpoint_count (breakpoint_count + 1);
10241   b->number = breakpoint_count;
10242   b->disposition = disp_donttouch;
10243   b->addr_string = xstrdup (addr_string_start);
10244   b->addr_string_range_end = xstrdup (addr_string_end);
10245   b->loc->length = length;
10246
10247   do_cleanups (cleanup_bkpt);
10248
10249   mention (b);
10250   observer_notify_breakpoint_created (b);
10251   update_global_location_list (1);
10252 }
10253
10254 /*  Return non-zero if EXP is verified as constant.  Returned zero
10255     means EXP is variable.  Also the constant detection may fail for
10256     some constant expressions and in such case still falsely return
10257     zero.  */
10258
10259 static int
10260 watchpoint_exp_is_const (const struct expression *exp)
10261 {
10262   int i = exp->nelts;
10263
10264   while (i > 0)
10265     {
10266       int oplenp, argsp;
10267
10268       /* We are only interested in the descriptor of each element.  */
10269       operator_length (exp, i, &oplenp, &argsp);
10270       i -= oplenp;
10271
10272       switch (exp->elts[i].opcode)
10273         {
10274         case BINOP_ADD:
10275         case BINOP_SUB:
10276         case BINOP_MUL:
10277         case BINOP_DIV:
10278         case BINOP_REM:
10279         case BINOP_MOD:
10280         case BINOP_LSH:
10281         case BINOP_RSH:
10282         case BINOP_LOGICAL_AND:
10283         case BINOP_LOGICAL_OR:
10284         case BINOP_BITWISE_AND:
10285         case BINOP_BITWISE_IOR:
10286         case BINOP_BITWISE_XOR:
10287         case BINOP_EQUAL:
10288         case BINOP_NOTEQUAL:
10289         case BINOP_LESS:
10290         case BINOP_GTR:
10291         case BINOP_LEQ:
10292         case BINOP_GEQ:
10293         case BINOP_REPEAT:
10294         case BINOP_COMMA:
10295         case BINOP_EXP:
10296         case BINOP_MIN:
10297         case BINOP_MAX:
10298         case BINOP_INTDIV:
10299         case BINOP_CONCAT:
10300         case BINOP_IN:
10301         case BINOP_RANGE:
10302         case TERNOP_COND:
10303         case TERNOP_SLICE:
10304
10305         case OP_LONG:
10306         case OP_DOUBLE:
10307         case OP_DECFLOAT:
10308         case OP_LAST:
10309         case OP_COMPLEX:
10310         case OP_STRING:
10311         case OP_ARRAY:
10312         case OP_TYPE:
10313         case OP_TYPEOF:
10314         case OP_DECLTYPE:
10315         case OP_TYPEID:
10316         case OP_NAME:
10317         case OP_OBJC_NSSTRING:
10318
10319         case UNOP_NEG:
10320         case UNOP_LOGICAL_NOT:
10321         case UNOP_COMPLEMENT:
10322         case UNOP_ADDR:
10323         case UNOP_HIGH:
10324         case UNOP_CAST:
10325
10326         case UNOP_CAST_TYPE:
10327         case UNOP_REINTERPRET_CAST:
10328         case UNOP_DYNAMIC_CAST:
10329           /* Unary, binary and ternary operators: We have to check
10330              their operands.  If they are constant, then so is the
10331              result of that operation.  For instance, if A and B are
10332              determined to be constants, then so is "A + B".
10333
10334              UNOP_IND is one exception to the rule above, because the
10335              value of *ADDR is not necessarily a constant, even when
10336              ADDR is.  */
10337           break;
10338
10339         case OP_VAR_VALUE:
10340           /* Check whether the associated symbol is a constant.
10341
10342              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10343              possible that a buggy compiler could mark a variable as
10344              constant even when it is not, and TYPE_CONST would return
10345              true in this case, while SYMBOL_CLASS wouldn't.
10346
10347              We also have to check for function symbols because they
10348              are always constant.  */
10349           {
10350             struct symbol *s = exp->elts[i + 2].symbol;
10351
10352             if (SYMBOL_CLASS (s) != LOC_BLOCK
10353                 && SYMBOL_CLASS (s) != LOC_CONST
10354                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10355               return 0;
10356             break;
10357           }
10358
10359         /* The default action is to return 0 because we are using
10360            the optimistic approach here: If we don't know something,
10361            then it is not a constant.  */
10362         default:
10363           return 0;
10364         }
10365     }
10366
10367   return 1;
10368 }
10369
10370 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10371
10372 static void
10373 dtor_watchpoint (struct breakpoint *self)
10374 {
10375   struct watchpoint *w = (struct watchpoint *) self;
10376
10377   xfree (w->cond_exp);
10378   xfree (w->exp);
10379   xfree (w->exp_string);
10380   xfree (w->exp_string_reparse);
10381   value_free (w->val);
10382
10383   base_breakpoint_ops.dtor (self);
10384 }
10385
10386 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10387
10388 static void
10389 re_set_watchpoint (struct breakpoint *b)
10390 {
10391   struct watchpoint *w = (struct watchpoint *) b;
10392
10393   /* Watchpoint can be either on expression using entirely global
10394      variables, or it can be on local variables.
10395
10396      Watchpoints of the first kind are never auto-deleted, and even
10397      persist across program restarts.  Since they can use variables
10398      from shared libraries, we need to reparse expression as libraries
10399      are loaded and unloaded.
10400
10401      Watchpoints on local variables can also change meaning as result
10402      of solib event.  For example, if a watchpoint uses both a local
10403      and a global variables in expression, it's a local watchpoint,
10404      but unloading of a shared library will make the expression
10405      invalid.  This is not a very common use case, but we still
10406      re-evaluate expression, to avoid surprises to the user.
10407
10408      Note that for local watchpoints, we re-evaluate it only if
10409      watchpoints frame id is still valid.  If it's not, it means the
10410      watchpoint is out of scope and will be deleted soon.  In fact,
10411      I'm not sure we'll ever be called in this case.
10412
10413      If a local watchpoint's frame id is still valid, then
10414      w->exp_valid_block is likewise valid, and we can safely use it.
10415
10416      Don't do anything about disabled watchpoints, since they will be
10417      reevaluated again when enabled.  */
10418   update_watchpoint (w, 1 /* reparse */);
10419 }
10420
10421 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10422
10423 static int
10424 insert_watchpoint (struct bp_location *bl)
10425 {
10426   struct watchpoint *w = (struct watchpoint *) bl->owner;
10427   int length = w->exact ? 1 : bl->length;
10428
10429   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10430                                    w->cond_exp);
10431 }
10432
10433 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10434
10435 static int
10436 remove_watchpoint (struct bp_location *bl)
10437 {
10438   struct watchpoint *w = (struct watchpoint *) bl->owner;
10439   int length = w->exact ? 1 : bl->length;
10440
10441   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10442                                    w->cond_exp);
10443 }
10444
10445 static int
10446 breakpoint_hit_watchpoint (const struct bp_location *bl,
10447                            struct address_space *aspace, CORE_ADDR bp_addr,
10448                            const struct target_waitstatus *ws)
10449 {
10450   struct breakpoint *b = bl->owner;
10451   struct watchpoint *w = (struct watchpoint *) b;
10452
10453   /* Continuable hardware watchpoints are treated as non-existent if the
10454      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10455      some data address).  Otherwise gdb won't stop on a break instruction
10456      in the code (not from a breakpoint) when a hardware watchpoint has
10457      been defined.  Also skip watchpoints which we know did not trigger
10458      (did not match the data address).  */
10459   if (is_hardware_watchpoint (b)
10460       && w->watchpoint_triggered == watch_triggered_no)
10461     return 0;
10462
10463   return 1;
10464 }
10465
10466 static void
10467 check_status_watchpoint (bpstat bs)
10468 {
10469   gdb_assert (is_watchpoint (bs->breakpoint_at));
10470
10471   bpstat_check_watchpoint (bs);
10472 }
10473
10474 /* Implement the "resources_needed" breakpoint_ops method for
10475    hardware watchpoints.  */
10476
10477 static int
10478 resources_needed_watchpoint (const struct bp_location *bl)
10479 {
10480   struct watchpoint *w = (struct watchpoint *) bl->owner;
10481   int length = w->exact? 1 : bl->length;
10482
10483   return target_region_ok_for_hw_watchpoint (bl->address, length);
10484 }
10485
10486 /* Implement the "works_in_software_mode" breakpoint_ops method for
10487    hardware watchpoints.  */
10488
10489 static int
10490 works_in_software_mode_watchpoint (const struct breakpoint *b)
10491 {
10492   /* Read and access watchpoints only work with hardware support.  */
10493   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10494 }
10495
10496 static enum print_stop_action
10497 print_it_watchpoint (bpstat bs)
10498 {
10499   struct cleanup *old_chain;
10500   struct breakpoint *b;
10501   struct ui_file *stb;
10502   enum print_stop_action result;
10503   struct watchpoint *w;
10504   struct ui_out *uiout = current_uiout;
10505
10506   gdb_assert (bs->bp_location_at != NULL);
10507
10508   b = bs->breakpoint_at;
10509   w = (struct watchpoint *) b;
10510
10511   stb = mem_fileopen ();
10512   old_chain = make_cleanup_ui_file_delete (stb);
10513
10514   switch (b->type)
10515     {
10516     case bp_watchpoint:
10517     case bp_hardware_watchpoint:
10518       annotate_watchpoint (b->number);
10519       if (ui_out_is_mi_like_p (uiout))
10520         ui_out_field_string
10521           (uiout, "reason",
10522            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10523       mention (b);
10524       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10525       ui_out_text (uiout, "\nOld value = ");
10526       watchpoint_value_print (bs->old_val, stb);
10527       ui_out_field_stream (uiout, "old", stb);
10528       ui_out_text (uiout, "\nNew value = ");
10529       watchpoint_value_print (w->val, stb);
10530       ui_out_field_stream (uiout, "new", stb);
10531       ui_out_text (uiout, "\n");
10532       /* More than one watchpoint may have been triggered.  */
10533       result = PRINT_UNKNOWN;
10534       break;
10535
10536     case bp_read_watchpoint:
10537       if (ui_out_is_mi_like_p (uiout))
10538         ui_out_field_string
10539           (uiout, "reason",
10540            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10541       mention (b);
10542       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10543       ui_out_text (uiout, "\nValue = ");
10544       watchpoint_value_print (w->val, stb);
10545       ui_out_field_stream (uiout, "value", stb);
10546       ui_out_text (uiout, "\n");
10547       result = PRINT_UNKNOWN;
10548       break;
10549
10550     case bp_access_watchpoint:
10551       if (bs->old_val != NULL)
10552         {
10553           annotate_watchpoint (b->number);
10554           if (ui_out_is_mi_like_p (uiout))
10555             ui_out_field_string
10556               (uiout, "reason",
10557                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10558           mention (b);
10559           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10560           ui_out_text (uiout, "\nOld value = ");
10561           watchpoint_value_print (bs->old_val, stb);
10562           ui_out_field_stream (uiout, "old", stb);
10563           ui_out_text (uiout, "\nNew value = ");
10564         }
10565       else
10566         {
10567           mention (b);
10568           if (ui_out_is_mi_like_p (uiout))
10569             ui_out_field_string
10570               (uiout, "reason",
10571                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10572           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10573           ui_out_text (uiout, "\nValue = ");
10574         }
10575       watchpoint_value_print (w->val, stb);
10576       ui_out_field_stream (uiout, "new", stb);
10577       ui_out_text (uiout, "\n");
10578       result = PRINT_UNKNOWN;
10579       break;
10580     default:
10581       result = PRINT_UNKNOWN;
10582     }
10583
10584   do_cleanups (old_chain);
10585   return result;
10586 }
10587
10588 /* Implement the "print_mention" breakpoint_ops method for hardware
10589    watchpoints.  */
10590
10591 static void
10592 print_mention_watchpoint (struct breakpoint *b)
10593 {
10594   struct cleanup *ui_out_chain;
10595   struct watchpoint *w = (struct watchpoint *) b;
10596   struct ui_out *uiout = current_uiout;
10597
10598   switch (b->type)
10599     {
10600     case bp_watchpoint:
10601       ui_out_text (uiout, "Watchpoint ");
10602       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10603       break;
10604     case bp_hardware_watchpoint:
10605       ui_out_text (uiout, "Hardware watchpoint ");
10606       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10607       break;
10608     case bp_read_watchpoint:
10609       ui_out_text (uiout, "Hardware read watchpoint ");
10610       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10611       break;
10612     case bp_access_watchpoint:
10613       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10614       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10615       break;
10616     default:
10617       internal_error (__FILE__, __LINE__,
10618                       _("Invalid hardware watchpoint type."));
10619     }
10620
10621   ui_out_field_int (uiout, "number", b->number);
10622   ui_out_text (uiout, ": ");
10623   ui_out_field_string (uiout, "exp", w->exp_string);
10624   do_cleanups (ui_out_chain);
10625 }
10626
10627 /* Implement the "print_recreate" breakpoint_ops method for
10628    watchpoints.  */
10629
10630 static void
10631 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10632 {
10633   struct watchpoint *w = (struct watchpoint *) b;
10634
10635   switch (b->type)
10636     {
10637     case bp_watchpoint:
10638     case bp_hardware_watchpoint:
10639       fprintf_unfiltered (fp, "watch");
10640       break;
10641     case bp_read_watchpoint:
10642       fprintf_unfiltered (fp, "rwatch");
10643       break;
10644     case bp_access_watchpoint:
10645       fprintf_unfiltered (fp, "awatch");
10646       break;
10647     default:
10648       internal_error (__FILE__, __LINE__,
10649                       _("Invalid watchpoint type."));
10650     }
10651
10652   fprintf_unfiltered (fp, " %s", w->exp_string);
10653   print_recreate_thread (b, fp);
10654 }
10655
10656 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10657
10658 static struct breakpoint_ops watchpoint_breakpoint_ops;
10659
10660 /* Implement the "insert" breakpoint_ops method for
10661    masked hardware watchpoints.  */
10662
10663 static int
10664 insert_masked_watchpoint (struct bp_location *bl)
10665 {
10666   struct watchpoint *w = (struct watchpoint *) bl->owner;
10667
10668   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10669                                         bl->watchpoint_type);
10670 }
10671
10672 /* Implement the "remove" breakpoint_ops method for
10673    masked hardware watchpoints.  */
10674
10675 static int
10676 remove_masked_watchpoint (struct bp_location *bl)
10677 {
10678   struct watchpoint *w = (struct watchpoint *) bl->owner;
10679
10680   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10681                                         bl->watchpoint_type);
10682 }
10683
10684 /* Implement the "resources_needed" breakpoint_ops method for
10685    masked hardware watchpoints.  */
10686
10687 static int
10688 resources_needed_masked_watchpoint (const struct bp_location *bl)
10689 {
10690   struct watchpoint *w = (struct watchpoint *) bl->owner;
10691
10692   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10693 }
10694
10695 /* Implement the "works_in_software_mode" breakpoint_ops method for
10696    masked hardware watchpoints.  */
10697
10698 static int
10699 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10700 {
10701   return 0;
10702 }
10703
10704 /* Implement the "print_it" breakpoint_ops method for
10705    masked hardware watchpoints.  */
10706
10707 static enum print_stop_action
10708 print_it_masked_watchpoint (bpstat bs)
10709 {
10710   struct breakpoint *b = bs->breakpoint_at;
10711   struct ui_out *uiout = current_uiout;
10712
10713   /* Masked watchpoints have only one location.  */
10714   gdb_assert (b->loc && b->loc->next == NULL);
10715
10716   switch (b->type)
10717     {
10718     case bp_hardware_watchpoint:
10719       annotate_watchpoint (b->number);
10720       if (ui_out_is_mi_like_p (uiout))
10721         ui_out_field_string
10722           (uiout, "reason",
10723            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10724       break;
10725
10726     case bp_read_watchpoint:
10727       if (ui_out_is_mi_like_p (uiout))
10728         ui_out_field_string
10729           (uiout, "reason",
10730            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10731       break;
10732
10733     case bp_access_watchpoint:
10734       if (ui_out_is_mi_like_p (uiout))
10735         ui_out_field_string
10736           (uiout, "reason",
10737            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10738       break;
10739     default:
10740       internal_error (__FILE__, __LINE__,
10741                       _("Invalid hardware watchpoint type."));
10742     }
10743
10744   mention (b);
10745   ui_out_text (uiout, _("\n\
10746 Check the underlying instruction at PC for the memory\n\
10747 address and value which triggered this watchpoint.\n"));
10748   ui_out_text (uiout, "\n");
10749
10750   /* More than one watchpoint may have been triggered.  */
10751   return PRINT_UNKNOWN;
10752 }
10753
10754 /* Implement the "print_one_detail" breakpoint_ops method for
10755    masked hardware watchpoints.  */
10756
10757 static void
10758 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10759                                     struct ui_out *uiout)
10760 {
10761   struct watchpoint *w = (struct watchpoint *) b;
10762
10763   /* Masked watchpoints have only one location.  */
10764   gdb_assert (b->loc && b->loc->next == NULL);
10765
10766   ui_out_text (uiout, "\tmask ");
10767   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10768   ui_out_text (uiout, "\n");
10769 }
10770
10771 /* Implement the "print_mention" breakpoint_ops method for
10772    masked hardware watchpoints.  */
10773
10774 static void
10775 print_mention_masked_watchpoint (struct breakpoint *b)
10776 {
10777   struct watchpoint *w = (struct watchpoint *) b;
10778   struct ui_out *uiout = current_uiout;
10779   struct cleanup *ui_out_chain;
10780
10781   switch (b->type)
10782     {
10783     case bp_hardware_watchpoint:
10784       ui_out_text (uiout, "Masked hardware watchpoint ");
10785       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10786       break;
10787     case bp_read_watchpoint:
10788       ui_out_text (uiout, "Masked hardware read watchpoint ");
10789       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10790       break;
10791     case bp_access_watchpoint:
10792       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10793       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10794       break;
10795     default:
10796       internal_error (__FILE__, __LINE__,
10797                       _("Invalid hardware watchpoint type."));
10798     }
10799
10800   ui_out_field_int (uiout, "number", b->number);
10801   ui_out_text (uiout, ": ");
10802   ui_out_field_string (uiout, "exp", w->exp_string);
10803   do_cleanups (ui_out_chain);
10804 }
10805
10806 /* Implement the "print_recreate" breakpoint_ops method for
10807    masked hardware watchpoints.  */
10808
10809 static void
10810 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10811 {
10812   struct watchpoint *w = (struct watchpoint *) b;
10813   char tmp[40];
10814
10815   switch (b->type)
10816     {
10817     case bp_hardware_watchpoint:
10818       fprintf_unfiltered (fp, "watch");
10819       break;
10820     case bp_read_watchpoint:
10821       fprintf_unfiltered (fp, "rwatch");
10822       break;
10823     case bp_access_watchpoint:
10824       fprintf_unfiltered (fp, "awatch");
10825       break;
10826     default:
10827       internal_error (__FILE__, __LINE__,
10828                       _("Invalid hardware watchpoint type."));
10829     }
10830
10831   sprintf_vma (tmp, w->hw_wp_mask);
10832   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10833   print_recreate_thread (b, fp);
10834 }
10835
10836 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10837
10838 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10839
10840 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10841
10842 static int
10843 is_masked_watchpoint (const struct breakpoint *b)
10844 {
10845   return b->ops == &masked_watchpoint_breakpoint_ops;
10846 }
10847
10848 /* accessflag:  hw_write:  watch write, 
10849                 hw_read:   watch read, 
10850                 hw_access: watch access (read or write) */
10851 static void
10852 watch_command_1 (const char *arg, int accessflag, int from_tty,
10853                  int just_location, int internal)
10854 {
10855   volatile struct gdb_exception e;
10856   struct breakpoint *b, *scope_breakpoint = NULL;
10857   struct expression *exp;
10858   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10859   struct value *val, *mark, *result;
10860   struct frame_info *frame;
10861   const char *exp_start = NULL;
10862   const char *exp_end = NULL;
10863   const char *tok, *end_tok;
10864   int toklen = -1;
10865   const char *cond_start = NULL;
10866   const char *cond_end = NULL;
10867   enum bptype bp_type;
10868   int thread = -1;
10869   int pc = 0;
10870   /* Flag to indicate whether we are going to use masks for
10871      the hardware watchpoint.  */
10872   int use_mask = 0;
10873   CORE_ADDR mask = 0;
10874   struct watchpoint *w;
10875   char *expression;
10876   struct cleanup *back_to;
10877
10878   /* Make sure that we actually have parameters to parse.  */
10879   if (arg != NULL && arg[0] != '\0')
10880     {
10881       const char *value_start;
10882
10883       exp_end = arg + strlen (arg);
10884
10885       /* Look for "parameter value" pairs at the end
10886          of the arguments string.  */
10887       for (tok = exp_end - 1; tok > arg; tok--)
10888         {
10889           /* Skip whitespace at the end of the argument list.  */
10890           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10891             tok--;
10892
10893           /* Find the beginning of the last token.
10894              This is the value of the parameter.  */
10895           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10896             tok--;
10897           value_start = tok + 1;
10898
10899           /* Skip whitespace.  */
10900           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10901             tok--;
10902
10903           end_tok = tok;
10904
10905           /* Find the beginning of the second to last token.
10906              This is the parameter itself.  */
10907           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10908             tok--;
10909           tok++;
10910           toklen = end_tok - tok + 1;
10911
10912           if (toklen == 6 && !strncmp (tok, "thread", 6))
10913             {
10914               /* At this point we've found a "thread" token, which means
10915                  the user is trying to set a watchpoint that triggers
10916                  only in a specific thread.  */
10917               char *endp;
10918
10919               if (thread != -1)
10920                 error(_("You can specify only one thread."));
10921
10922               /* Extract the thread ID from the next token.  */
10923               thread = strtol (value_start, &endp, 0);
10924
10925               /* Check if the user provided a valid numeric value for the
10926                  thread ID.  */
10927               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10928                 error (_("Invalid thread ID specification %s."), value_start);
10929
10930               /* Check if the thread actually exists.  */
10931               if (!valid_thread_id (thread))
10932                 invalid_thread_id_error (thread);
10933             }
10934           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10935             {
10936               /* We've found a "mask" token, which means the user wants to
10937                  create a hardware watchpoint that is going to have the mask
10938                  facility.  */
10939               struct value *mask_value, *mark;
10940
10941               if (use_mask)
10942                 error(_("You can specify only one mask."));
10943
10944               use_mask = just_location = 1;
10945
10946               mark = value_mark ();
10947               mask_value = parse_to_comma_and_eval (&value_start);
10948               mask = value_as_address (mask_value);
10949               value_free_to_mark (mark);
10950             }
10951           else
10952             /* We didn't recognize what we found.  We should stop here.  */
10953             break;
10954
10955           /* Truncate the string and get rid of the "parameter value" pair before
10956              the arguments string is parsed by the parse_exp_1 function.  */
10957           exp_end = tok;
10958         }
10959     }
10960   else
10961     exp_end = arg;
10962
10963   /* Parse the rest of the arguments.  From here on out, everything
10964      is in terms of a newly allocated string instead of the original
10965      ARG.  */
10966   innermost_block = NULL;
10967   expression = savestring (arg, exp_end - arg);
10968   back_to = make_cleanup (xfree, expression);
10969   exp_start = arg = expression;
10970   exp = parse_exp_1 (&arg, 0, 0, 0);
10971   exp_end = arg;
10972   /* Remove trailing whitespace from the expression before saving it.
10973      This makes the eventual display of the expression string a bit
10974      prettier.  */
10975   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10976     --exp_end;
10977
10978   /* Checking if the expression is not constant.  */
10979   if (watchpoint_exp_is_const (exp))
10980     {
10981       int len;
10982
10983       len = exp_end - exp_start;
10984       while (len > 0 && isspace (exp_start[len - 1]))
10985         len--;
10986       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10987     }
10988
10989   exp_valid_block = innermost_block;
10990   mark = value_mark ();
10991   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10992
10993   if (just_location)
10994     {
10995       int ret;
10996
10997       exp_valid_block = NULL;
10998       val = value_addr (result);
10999       release_value (val);
11000       value_free_to_mark (mark);
11001
11002       if (use_mask)
11003         {
11004           ret = target_masked_watch_num_registers (value_as_address (val),
11005                                                    mask);
11006           if (ret == -1)
11007             error (_("This target does not support masked watchpoints."));
11008           else if (ret == -2)
11009             error (_("Invalid mask or memory region."));
11010         }
11011     }
11012   else if (val != NULL)
11013     release_value (val);
11014
11015   tok = skip_spaces_const (arg);
11016   end_tok = skip_to_space_const (tok);
11017
11018   toklen = end_tok - tok;
11019   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11020     {
11021       struct expression *cond;
11022
11023       innermost_block = NULL;
11024       tok = cond_start = end_tok + 1;
11025       cond = parse_exp_1 (&tok, 0, 0, 0);
11026
11027       /* The watchpoint expression may not be local, but the condition
11028          may still be.  E.g.: `watch global if local > 0'.  */
11029       cond_exp_valid_block = innermost_block;
11030
11031       xfree (cond);
11032       cond_end = tok;
11033     }
11034   if (*tok)
11035     error (_("Junk at end of command."));
11036
11037   if (accessflag == hw_read)
11038     bp_type = bp_read_watchpoint;
11039   else if (accessflag == hw_access)
11040     bp_type = bp_access_watchpoint;
11041   else
11042     bp_type = bp_hardware_watchpoint;
11043
11044   frame = block_innermost_frame (exp_valid_block);
11045
11046   /* If the expression is "local", then set up a "watchpoint scope"
11047      breakpoint at the point where we've left the scope of the watchpoint
11048      expression.  Create the scope breakpoint before the watchpoint, so
11049      that we will encounter it first in bpstat_stop_status.  */
11050   if (exp_valid_block && frame)
11051     {
11052       if (frame_id_p (frame_unwind_caller_id (frame)))
11053         {
11054           scope_breakpoint
11055             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11056                                           frame_unwind_caller_pc (frame),
11057                                           bp_watchpoint_scope,
11058                                           &momentary_breakpoint_ops);
11059
11060           scope_breakpoint->enable_state = bp_enabled;
11061
11062           /* Automatically delete the breakpoint when it hits.  */
11063           scope_breakpoint->disposition = disp_del;
11064
11065           /* Only break in the proper frame (help with recursion).  */
11066           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11067
11068           /* Set the address at which we will stop.  */
11069           scope_breakpoint->loc->gdbarch
11070             = frame_unwind_caller_arch (frame);
11071           scope_breakpoint->loc->requested_address
11072             = frame_unwind_caller_pc (frame);
11073           scope_breakpoint->loc->address
11074             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11075                                          scope_breakpoint->loc->requested_address,
11076                                          scope_breakpoint->type);
11077         }
11078     }
11079
11080   /* Now set up the breakpoint.  */
11081
11082   w = XCNEW (struct watchpoint);
11083   b = &w->base;
11084   if (use_mask)
11085     init_raw_breakpoint_without_location (b, NULL, bp_type,
11086                                           &masked_watchpoint_breakpoint_ops);
11087   else
11088     init_raw_breakpoint_without_location (b, NULL, bp_type,
11089                                           &watchpoint_breakpoint_ops);
11090   b->thread = thread;
11091   b->disposition = disp_donttouch;
11092   b->pspace = current_program_space;
11093   w->exp = exp;
11094   w->exp_valid_block = exp_valid_block;
11095   w->cond_exp_valid_block = cond_exp_valid_block;
11096   if (just_location)
11097     {
11098       struct type *t = value_type (val);
11099       CORE_ADDR addr = value_as_address (val);
11100       char *name;
11101
11102       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11103       name = type_to_string (t);
11104
11105       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11106                                           core_addr_to_string (addr));
11107       xfree (name);
11108
11109       w->exp_string = xstrprintf ("-location %.*s",
11110                                   (int) (exp_end - exp_start), exp_start);
11111
11112       /* The above expression is in C.  */
11113       b->language = language_c;
11114     }
11115   else
11116     w->exp_string = savestring (exp_start, exp_end - exp_start);
11117
11118   if (use_mask)
11119     {
11120       w->hw_wp_mask = mask;
11121     }
11122   else
11123     {
11124       w->val = val;
11125       w->val_valid = 1;
11126     }
11127
11128   if (cond_start)
11129     b->cond_string = savestring (cond_start, cond_end - cond_start);
11130   else
11131     b->cond_string = 0;
11132
11133   if (frame)
11134     {
11135       w->watchpoint_frame = get_frame_id (frame);
11136       w->watchpoint_thread = inferior_ptid;
11137     }
11138   else
11139     {
11140       w->watchpoint_frame = null_frame_id;
11141       w->watchpoint_thread = null_ptid;
11142     }
11143
11144   if (scope_breakpoint != NULL)
11145     {
11146       /* The scope breakpoint is related to the watchpoint.  We will
11147          need to act on them together.  */
11148       b->related_breakpoint = scope_breakpoint;
11149       scope_breakpoint->related_breakpoint = b;
11150     }
11151
11152   if (!just_location)
11153     value_free_to_mark (mark);
11154
11155   TRY_CATCH (e, RETURN_MASK_ALL)
11156     {
11157       /* Finally update the new watchpoint.  This creates the locations
11158          that should be inserted.  */
11159       update_watchpoint (w, 1);
11160     }
11161   if (e.reason < 0)
11162     {
11163       delete_breakpoint (b);
11164       throw_exception (e);
11165     }
11166
11167   install_breakpoint (internal, b, 1);
11168   do_cleanups (back_to);
11169 }
11170
11171 /* Return count of debug registers needed to watch the given expression.
11172    If the watchpoint cannot be handled in hardware return zero.  */
11173
11174 static int
11175 can_use_hardware_watchpoint (struct value *v)
11176 {
11177   int found_memory_cnt = 0;
11178   struct value *head = v;
11179
11180   /* Did the user specifically forbid us to use hardware watchpoints? */
11181   if (!can_use_hw_watchpoints)
11182     return 0;
11183
11184   /* Make sure that the value of the expression depends only upon
11185      memory contents, and values computed from them within GDB.  If we
11186      find any register references or function calls, we can't use a
11187      hardware watchpoint.
11188
11189      The idea here is that evaluating an expression generates a series
11190      of values, one holding the value of every subexpression.  (The
11191      expression a*b+c has five subexpressions: a, b, a*b, c, and
11192      a*b+c.)  GDB's values hold almost enough information to establish
11193      the criteria given above --- they identify memory lvalues,
11194      register lvalues, computed values, etcetera.  So we can evaluate
11195      the expression, and then scan the chain of values that leaves
11196      behind to decide whether we can detect any possible change to the
11197      expression's final value using only hardware watchpoints.
11198
11199      However, I don't think that the values returned by inferior
11200      function calls are special in any way.  So this function may not
11201      notice that an expression involving an inferior function call
11202      can't be watched with hardware watchpoints.  FIXME.  */
11203   for (; v; v = value_next (v))
11204     {
11205       if (VALUE_LVAL (v) == lval_memory)
11206         {
11207           if (v != head && value_lazy (v))
11208             /* A lazy memory lvalue in the chain is one that GDB never
11209                needed to fetch; we either just used its address (e.g.,
11210                `a' in `a.b') or we never needed it at all (e.g., `a'
11211                in `a,b').  This doesn't apply to HEAD; if that is
11212                lazy then it was not readable, but watch it anyway.  */
11213             ;
11214           else
11215             {
11216               /* Ahh, memory we actually used!  Check if we can cover
11217                  it with hardware watchpoints.  */
11218               struct type *vtype = check_typedef (value_type (v));
11219
11220               /* We only watch structs and arrays if user asked for it
11221                  explicitly, never if they just happen to appear in a
11222                  middle of some value chain.  */
11223               if (v == head
11224                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11225                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11226                 {
11227                   CORE_ADDR vaddr = value_address (v);
11228                   int len;
11229                   int num_regs;
11230
11231                   len = (target_exact_watchpoints
11232                          && is_scalar_type_recursive (vtype))?
11233                     1 : TYPE_LENGTH (value_type (v));
11234
11235                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11236                   if (!num_regs)
11237                     return 0;
11238                   else
11239                     found_memory_cnt += num_regs;
11240                 }
11241             }
11242         }
11243       else if (VALUE_LVAL (v) != not_lval
11244                && deprecated_value_modifiable (v) == 0)
11245         return 0;       /* These are values from the history (e.g., $1).  */
11246       else if (VALUE_LVAL (v) == lval_register)
11247         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11248     }
11249
11250   /* The expression itself looks suitable for using a hardware
11251      watchpoint, but give the target machine a chance to reject it.  */
11252   return found_memory_cnt;
11253 }
11254
11255 void
11256 watch_command_wrapper (char *arg, int from_tty, int internal)
11257 {
11258   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11259 }
11260
11261 /* A helper function that looks for the "-location" argument and then
11262    calls watch_command_1.  */
11263
11264 static void
11265 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11266 {
11267   int just_location = 0;
11268
11269   if (arg
11270       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11271           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11272     {
11273       arg = skip_spaces (arg);
11274       just_location = 1;
11275     }
11276
11277   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11278 }
11279
11280 static void
11281 watch_command (char *arg, int from_tty)
11282 {
11283   watch_maybe_just_location (arg, hw_write, from_tty);
11284 }
11285
11286 void
11287 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11288 {
11289   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11290 }
11291
11292 static void
11293 rwatch_command (char *arg, int from_tty)
11294 {
11295   watch_maybe_just_location (arg, hw_read, from_tty);
11296 }
11297
11298 void
11299 awatch_command_wrapper (char *arg, int from_tty, int internal)
11300 {
11301   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11302 }
11303
11304 static void
11305 awatch_command (char *arg, int from_tty)
11306 {
11307   watch_maybe_just_location (arg, hw_access, from_tty);
11308 }
11309 \f
11310
11311 /* Helper routines for the until_command routine in infcmd.c.  Here
11312    because it uses the mechanisms of breakpoints.  */
11313
11314 struct until_break_command_continuation_args
11315 {
11316   struct breakpoint *breakpoint;
11317   struct breakpoint *breakpoint2;
11318   int thread_num;
11319 };
11320
11321 /* This function is called by fetch_inferior_event via the
11322    cmd_continuation pointer, to complete the until command.  It takes
11323    care of cleaning up the temporary breakpoints set up by the until
11324    command.  */
11325 static void
11326 until_break_command_continuation (void *arg, int err)
11327 {
11328   struct until_break_command_continuation_args *a = arg;
11329
11330   delete_breakpoint (a->breakpoint);
11331   if (a->breakpoint2)
11332     delete_breakpoint (a->breakpoint2);
11333   delete_longjmp_breakpoint (a->thread_num);
11334 }
11335
11336 void
11337 until_break_command (char *arg, int from_tty, int anywhere)
11338 {
11339   struct symtabs_and_lines sals;
11340   struct symtab_and_line sal;
11341   struct frame_info *frame;
11342   struct gdbarch *frame_gdbarch;
11343   struct frame_id stack_frame_id;
11344   struct frame_id caller_frame_id;
11345   struct breakpoint *breakpoint;
11346   struct breakpoint *breakpoint2 = NULL;
11347   struct cleanup *old_chain;
11348   int thread;
11349   struct thread_info *tp;
11350
11351   clear_proceed_status ();
11352
11353   /* Set a breakpoint where the user wants it and at return from
11354      this function.  */
11355
11356   if (last_displayed_sal_is_valid ())
11357     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11358                           get_last_displayed_symtab (),
11359                           get_last_displayed_line ());
11360   else
11361     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11362                           (struct symtab *) NULL, 0);
11363
11364   if (sals.nelts != 1)
11365     error (_("Couldn't get information on specified line."));
11366
11367   sal = sals.sals[0];
11368   xfree (sals.sals);    /* malloc'd, so freed.  */
11369
11370   if (*arg)
11371     error (_("Junk at end of arguments."));
11372
11373   resolve_sal_pc (&sal);
11374
11375   tp = inferior_thread ();
11376   thread = tp->num;
11377
11378   old_chain = make_cleanup (null_cleanup, NULL);
11379
11380   /* Note linespec handling above invalidates the frame chain.
11381      Installing a breakpoint also invalidates the frame chain (as it
11382      may need to switch threads), so do any frame handling before
11383      that.  */
11384
11385   frame = get_selected_frame (NULL);
11386   frame_gdbarch = get_frame_arch (frame);
11387   stack_frame_id = get_stack_frame_id (frame);
11388   caller_frame_id = frame_unwind_caller_id (frame);
11389
11390   /* Keep within the current frame, or in frames called by the current
11391      one.  */
11392
11393   if (frame_id_p (caller_frame_id))
11394     {
11395       struct symtab_and_line sal2;
11396
11397       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11398       sal2.pc = frame_unwind_caller_pc (frame);
11399       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11400                                               sal2,
11401                                               caller_frame_id,
11402                                               bp_until);
11403       make_cleanup_delete_breakpoint (breakpoint2);
11404
11405       set_longjmp_breakpoint (tp, caller_frame_id);
11406       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11407     }
11408
11409   /* set_momentary_breakpoint could invalidate FRAME.  */
11410   frame = NULL;
11411
11412   if (anywhere)
11413     /* If the user told us to continue until a specified location,
11414        we don't specify a frame at which we need to stop.  */
11415     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11416                                            null_frame_id, bp_until);
11417   else
11418     /* Otherwise, specify the selected frame, because we want to stop
11419        only at the very same frame.  */
11420     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11421                                            stack_frame_id, bp_until);
11422   make_cleanup_delete_breakpoint (breakpoint);
11423
11424   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11425
11426   /* If we are running asynchronously, and proceed call above has
11427      actually managed to start the target, arrange for breakpoints to
11428      be deleted when the target stops.  Otherwise, we're already
11429      stopped and delete breakpoints via cleanup chain.  */
11430
11431   if (target_can_async_p () && is_running (inferior_ptid))
11432     {
11433       struct until_break_command_continuation_args *args;
11434       args = xmalloc (sizeof (*args));
11435
11436       args->breakpoint = breakpoint;
11437       args->breakpoint2 = breakpoint2;
11438       args->thread_num = thread;
11439
11440       discard_cleanups (old_chain);
11441       add_continuation (inferior_thread (),
11442                         until_break_command_continuation, args,
11443                         xfree);
11444     }
11445   else
11446     do_cleanups (old_chain);
11447 }
11448
11449 /* This function attempts to parse an optional "if <cond>" clause
11450    from the arg string.  If one is not found, it returns NULL.
11451
11452    Else, it returns a pointer to the condition string.  (It does not
11453    attempt to evaluate the string against a particular block.)  And,
11454    it updates arg to point to the first character following the parsed
11455    if clause in the arg string.  */
11456
11457 char *
11458 ep_parse_optional_if_clause (char **arg)
11459 {
11460   char *cond_string;
11461
11462   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11463     return NULL;
11464
11465   /* Skip the "if" keyword.  */
11466   (*arg) += 2;
11467
11468   /* Skip any extra leading whitespace, and record the start of the
11469      condition string.  */
11470   *arg = skip_spaces (*arg);
11471   cond_string = *arg;
11472
11473   /* Assume that the condition occupies the remainder of the arg
11474      string.  */
11475   (*arg) += strlen (cond_string);
11476
11477   return cond_string;
11478 }
11479
11480 /* Commands to deal with catching events, such as signals, exceptions,
11481    process start/exit, etc.  */
11482
11483 typedef enum
11484 {
11485   catch_fork_temporary, catch_vfork_temporary,
11486   catch_fork_permanent, catch_vfork_permanent
11487 }
11488 catch_fork_kind;
11489
11490 static void
11491 catch_fork_command_1 (char *arg, int from_tty, 
11492                       struct cmd_list_element *command)
11493 {
11494   struct gdbarch *gdbarch = get_current_arch ();
11495   char *cond_string = NULL;
11496   catch_fork_kind fork_kind;
11497   int tempflag;
11498
11499   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11500   tempflag = (fork_kind == catch_fork_temporary
11501               || fork_kind == catch_vfork_temporary);
11502
11503   if (!arg)
11504     arg = "";
11505   arg = skip_spaces (arg);
11506
11507   /* The allowed syntax is:
11508      catch [v]fork
11509      catch [v]fork if <cond>
11510
11511      First, check if there's an if clause.  */
11512   cond_string = ep_parse_optional_if_clause (&arg);
11513
11514   if ((*arg != '\0') && !isspace (*arg))
11515     error (_("Junk at end of arguments."));
11516
11517   /* If this target supports it, create a fork or vfork catchpoint
11518      and enable reporting of such events.  */
11519   switch (fork_kind)
11520     {
11521     case catch_fork_temporary:
11522     case catch_fork_permanent:
11523       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11524                                           &catch_fork_breakpoint_ops);
11525       break;
11526     case catch_vfork_temporary:
11527     case catch_vfork_permanent:
11528       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11529                                           &catch_vfork_breakpoint_ops);
11530       break;
11531     default:
11532       error (_("unsupported or unknown fork kind; cannot catch it"));
11533       break;
11534     }
11535 }
11536
11537 static void
11538 catch_exec_command_1 (char *arg, int from_tty, 
11539                       struct cmd_list_element *command)
11540 {
11541   struct exec_catchpoint *c;
11542   struct gdbarch *gdbarch = get_current_arch ();
11543   int tempflag;
11544   char *cond_string = NULL;
11545
11546   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11547
11548   if (!arg)
11549     arg = "";
11550   arg = skip_spaces (arg);
11551
11552   /* The allowed syntax is:
11553      catch exec
11554      catch exec if <cond>
11555
11556      First, check if there's an if clause.  */
11557   cond_string = ep_parse_optional_if_clause (&arg);
11558
11559   if ((*arg != '\0') && !isspace (*arg))
11560     error (_("Junk at end of arguments."));
11561
11562   c = XNEW (struct exec_catchpoint);
11563   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11564                    &catch_exec_breakpoint_ops);
11565   c->exec_pathname = NULL;
11566
11567   install_breakpoint (0, &c->base, 1);
11568 }
11569
11570 void
11571 init_ada_exception_breakpoint (struct breakpoint *b,
11572                                struct gdbarch *gdbarch,
11573                                struct symtab_and_line sal,
11574                                char *addr_string,
11575                                const struct breakpoint_ops *ops,
11576                                int tempflag,
11577                                int from_tty)
11578 {
11579   if (from_tty)
11580     {
11581       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11582       if (!loc_gdbarch)
11583         loc_gdbarch = gdbarch;
11584
11585       describe_other_breakpoints (loc_gdbarch,
11586                                   sal.pspace, sal.pc, sal.section, -1);
11587       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11588          version for exception catchpoints, because two catchpoints
11589          used for different exception names will use the same address.
11590          In this case, a "breakpoint ... also set at..." warning is
11591          unproductive.  Besides, the warning phrasing is also a bit
11592          inappropriate, we should use the word catchpoint, and tell
11593          the user what type of catchpoint it is.  The above is good
11594          enough for now, though.  */
11595     }
11596
11597   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11598
11599   b->enable_state = bp_enabled;
11600   b->disposition = tempflag ? disp_del : disp_donttouch;
11601   b->addr_string = addr_string;
11602   b->language = language_ada;
11603 }
11604
11605 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11606    filter list, or NULL if no filtering is required.  */
11607 static VEC(int) *
11608 catch_syscall_split_args (char *arg)
11609 {
11610   VEC(int) *result = NULL;
11611   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11612
11613   while (*arg != '\0')
11614     {
11615       int i, syscall_number;
11616       char *endptr;
11617       char cur_name[128];
11618       struct syscall s;
11619
11620       /* Skip whitespace.  */
11621       arg = skip_spaces (arg);
11622
11623       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11624         cur_name[i] = arg[i];
11625       cur_name[i] = '\0';
11626       arg += i;
11627
11628       /* Check if the user provided a syscall name or a number.  */
11629       syscall_number = (int) strtol (cur_name, &endptr, 0);
11630       if (*endptr == '\0')
11631         get_syscall_by_number (syscall_number, &s);
11632       else
11633         {
11634           /* We have a name.  Let's check if it's valid and convert it
11635              to a number.  */
11636           get_syscall_by_name (cur_name, &s);
11637
11638           if (s.number == UNKNOWN_SYSCALL)
11639             /* Here we have to issue an error instead of a warning,
11640                because GDB cannot do anything useful if there's no
11641                syscall number to be caught.  */
11642             error (_("Unknown syscall name '%s'."), cur_name);
11643         }
11644
11645       /* Ok, it's valid.  */
11646       VEC_safe_push (int, result, s.number);
11647     }
11648
11649   discard_cleanups (cleanup);
11650   return result;
11651 }
11652
11653 /* Implement the "catch syscall" command.  */
11654
11655 static void
11656 catch_syscall_command_1 (char *arg, int from_tty, 
11657                          struct cmd_list_element *command)
11658 {
11659   int tempflag;
11660   VEC(int) *filter;
11661   struct syscall s;
11662   struct gdbarch *gdbarch = get_current_arch ();
11663
11664   /* Checking if the feature if supported.  */
11665   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11666     error (_("The feature 'catch syscall' is not supported on \
11667 this architecture yet."));
11668
11669   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11670
11671   arg = skip_spaces (arg);
11672
11673   /* We need to do this first "dummy" translation in order
11674      to get the syscall XML file loaded or, most important,
11675      to display a warning to the user if there's no XML file
11676      for his/her architecture.  */
11677   get_syscall_by_number (0, &s);
11678
11679   /* The allowed syntax is:
11680      catch syscall
11681      catch syscall <name | number> [<name | number> ... <name | number>]
11682
11683      Let's check if there's a syscall name.  */
11684
11685   if (arg != NULL)
11686     filter = catch_syscall_split_args (arg);
11687   else
11688     filter = NULL;
11689
11690   create_syscall_event_catchpoint (tempflag, filter,
11691                                    &catch_syscall_breakpoint_ops);
11692 }
11693
11694 static void
11695 catch_command (char *arg, int from_tty)
11696 {
11697   error (_("Catch requires an event name."));
11698 }
11699 \f
11700
11701 static void
11702 tcatch_command (char *arg, int from_tty)
11703 {
11704   error (_("Catch requires an event name."));
11705 }
11706
11707 /* A qsort comparison function that sorts breakpoints in order.  */
11708
11709 static int
11710 compare_breakpoints (const void *a, const void *b)
11711 {
11712   const breakpoint_p *ba = a;
11713   uintptr_t ua = (uintptr_t) *ba;
11714   const breakpoint_p *bb = b;
11715   uintptr_t ub = (uintptr_t) *bb;
11716
11717   if ((*ba)->number < (*bb)->number)
11718     return -1;
11719   else if ((*ba)->number > (*bb)->number)
11720     return 1;
11721
11722   /* Now sort by address, in case we see, e..g, two breakpoints with
11723      the number 0.  */
11724   if (ua < ub)
11725     return -1;
11726   return ua > ub ? 1 : 0;
11727 }
11728
11729 /* Delete breakpoints by address or line.  */
11730
11731 static void
11732 clear_command (char *arg, int from_tty)
11733 {
11734   struct breakpoint *b, *prev;
11735   VEC(breakpoint_p) *found = 0;
11736   int ix;
11737   int default_match;
11738   struct symtabs_and_lines sals;
11739   struct symtab_and_line sal;
11740   int i;
11741   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11742
11743   if (arg)
11744     {
11745       sals = decode_line_with_current_source (arg,
11746                                               (DECODE_LINE_FUNFIRSTLINE
11747                                                | DECODE_LINE_LIST_MODE));
11748       make_cleanup (xfree, sals.sals);
11749       default_match = 0;
11750     }
11751   else
11752     {
11753       sals.sals = (struct symtab_and_line *)
11754         xmalloc (sizeof (struct symtab_and_line));
11755       make_cleanup (xfree, sals.sals);
11756       init_sal (&sal);          /* Initialize to zeroes.  */
11757
11758       /* Set sal's line, symtab, pc, and pspace to the values
11759          corresponding to the last call to print_frame_info.  If the
11760          codepoint is not valid, this will set all the fields to 0.  */
11761       get_last_displayed_sal (&sal);
11762       if (sal.symtab == 0)
11763         error (_("No source file specified."));
11764
11765       sals.sals[0] = sal;
11766       sals.nelts = 1;
11767
11768       default_match = 1;
11769     }
11770
11771   /* We don't call resolve_sal_pc here.  That's not as bad as it
11772      seems, because all existing breakpoints typically have both
11773      file/line and pc set.  So, if clear is given file/line, we can
11774      match this to existing breakpoint without obtaining pc at all.
11775
11776      We only support clearing given the address explicitly 
11777      present in breakpoint table.  Say, we've set breakpoint 
11778      at file:line.  There were several PC values for that file:line,
11779      due to optimization, all in one block.
11780
11781      We've picked one PC value.  If "clear" is issued with another
11782      PC corresponding to the same file:line, the breakpoint won't
11783      be cleared.  We probably can still clear the breakpoint, but 
11784      since the other PC value is never presented to user, user
11785      can only find it by guessing, and it does not seem important
11786      to support that.  */
11787
11788   /* For each line spec given, delete bps which correspond to it.  Do
11789      it in two passes, solely to preserve the current behavior that
11790      from_tty is forced true if we delete more than one
11791      breakpoint.  */
11792
11793   found = NULL;
11794   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11795   for (i = 0; i < sals.nelts; i++)
11796     {
11797       const char *sal_fullname;
11798
11799       /* If exact pc given, clear bpts at that pc.
11800          If line given (pc == 0), clear all bpts on specified line.
11801          If defaulting, clear all bpts on default line
11802          or at default pc.
11803
11804          defaulting    sal.pc != 0    tests to do
11805
11806          0              1             pc
11807          1              1             pc _and_ line
11808          0              0             line
11809          1              0             <can't happen> */
11810
11811       sal = sals.sals[i];
11812       sal_fullname = (sal.symtab == NULL
11813                       ? NULL : symtab_to_fullname (sal.symtab));
11814
11815       /* Find all matching breakpoints and add them to 'found'.  */
11816       ALL_BREAKPOINTS (b)
11817         {
11818           int match = 0;
11819           /* Are we going to delete b?  */
11820           if (b->type != bp_none && !is_watchpoint (b))
11821             {
11822               struct bp_location *loc = b->loc;
11823               for (; loc; loc = loc->next)
11824                 {
11825                   /* If the user specified file:line, don't allow a PC
11826                      match.  This matches historical gdb behavior.  */
11827                   int pc_match = (!sal.explicit_line
11828                                   && sal.pc
11829                                   && (loc->pspace == sal.pspace)
11830                                   && (loc->address == sal.pc)
11831                                   && (!section_is_overlay (loc->section)
11832                                       || loc->section == sal.section));
11833                   int line_match = 0;
11834
11835                   if ((default_match || sal.explicit_line)
11836                       && loc->symtab != NULL
11837                       && sal_fullname != NULL
11838                       && sal.pspace == loc->pspace
11839                       && loc->line_number == sal.line
11840                       && filename_cmp (symtab_to_fullname (loc->symtab),
11841                                        sal_fullname) == 0)
11842                     line_match = 1;
11843
11844                   if (pc_match || line_match)
11845                     {
11846                       match = 1;
11847                       break;
11848                     }
11849                 }
11850             }
11851
11852           if (match)
11853             VEC_safe_push(breakpoint_p, found, b);
11854         }
11855     }
11856
11857   /* Now go thru the 'found' chain and delete them.  */
11858   if (VEC_empty(breakpoint_p, found))
11859     {
11860       if (arg)
11861         error (_("No breakpoint at %s."), arg);
11862       else
11863         error (_("No breakpoint at this line."));
11864     }
11865
11866   /* Remove duplicates from the vec.  */
11867   qsort (VEC_address (breakpoint_p, found),
11868          VEC_length (breakpoint_p, found),
11869          sizeof (breakpoint_p),
11870          compare_breakpoints);
11871   prev = VEC_index (breakpoint_p, found, 0);
11872   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11873     {
11874       if (b == prev)
11875         {
11876           VEC_ordered_remove (breakpoint_p, found, ix);
11877           --ix;
11878         }
11879     }
11880
11881   if (VEC_length(breakpoint_p, found) > 1)
11882     from_tty = 1;       /* Always report if deleted more than one.  */
11883   if (from_tty)
11884     {
11885       if (VEC_length(breakpoint_p, found) == 1)
11886         printf_unfiltered (_("Deleted breakpoint "));
11887       else
11888         printf_unfiltered (_("Deleted breakpoints "));
11889     }
11890
11891   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11892     {
11893       if (from_tty)
11894         printf_unfiltered ("%d ", b->number);
11895       delete_breakpoint (b);
11896     }
11897   if (from_tty)
11898     putchar_unfiltered ('\n');
11899
11900   do_cleanups (cleanups);
11901 }
11902 \f
11903 /* Delete breakpoint in BS if they are `delete' breakpoints and
11904    all breakpoints that are marked for deletion, whether hit or not.
11905    This is called after any breakpoint is hit, or after errors.  */
11906
11907 void
11908 breakpoint_auto_delete (bpstat bs)
11909 {
11910   struct breakpoint *b, *b_tmp;
11911
11912   for (; bs; bs = bs->next)
11913     if (bs->breakpoint_at
11914         && bs->breakpoint_at->disposition == disp_del
11915         && bs->stop)
11916       delete_breakpoint (bs->breakpoint_at);
11917
11918   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11919   {
11920     if (b->disposition == disp_del_at_next_stop)
11921       delete_breakpoint (b);
11922   }
11923 }
11924
11925 /* A comparison function for bp_location AP and BP being interfaced to
11926    qsort.  Sort elements primarily by their ADDRESS (no matter what
11927    does breakpoint_address_is_meaningful say for its OWNER),
11928    secondarily by ordering first bp_permanent OWNERed elements and
11929    terciarily just ensuring the array is sorted stable way despite
11930    qsort being an unstable algorithm.  */
11931
11932 static int
11933 bp_location_compare (const void *ap, const void *bp)
11934 {
11935   struct bp_location *a = *(void **) ap;
11936   struct bp_location *b = *(void **) bp;
11937   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11938   int a_perm = a->owner->enable_state == bp_permanent;
11939   int b_perm = b->owner->enable_state == bp_permanent;
11940
11941   if (a->address != b->address)
11942     return (a->address > b->address) - (a->address < b->address);
11943
11944   /* Sort locations at the same address by their pspace number, keeping
11945      locations of the same inferior (in a multi-inferior environment)
11946      grouped.  */
11947
11948   if (a->pspace->num != b->pspace->num)
11949     return ((a->pspace->num > b->pspace->num)
11950             - (a->pspace->num < b->pspace->num));
11951
11952   /* Sort permanent breakpoints first.  */
11953   if (a_perm != b_perm)
11954     return (a_perm < b_perm) - (a_perm > b_perm);
11955
11956   /* Make the internal GDB representation stable across GDB runs
11957      where A and B memory inside GDB can differ.  Breakpoint locations of
11958      the same type at the same address can be sorted in arbitrary order.  */
11959
11960   if (a->owner->number != b->owner->number)
11961     return ((a->owner->number > b->owner->number)
11962             - (a->owner->number < b->owner->number));
11963
11964   return (a > b) - (a < b);
11965 }
11966
11967 /* Set bp_location_placed_address_before_address_max and
11968    bp_location_shadow_len_after_address_max according to the current
11969    content of the bp_location array.  */
11970
11971 static void
11972 bp_location_target_extensions_update (void)
11973 {
11974   struct bp_location *bl, **blp_tmp;
11975
11976   bp_location_placed_address_before_address_max = 0;
11977   bp_location_shadow_len_after_address_max = 0;
11978
11979   ALL_BP_LOCATIONS (bl, blp_tmp)
11980     {
11981       CORE_ADDR start, end, addr;
11982
11983       if (!bp_location_has_shadow (bl))
11984         continue;
11985
11986       start = bl->target_info.placed_address;
11987       end = start + bl->target_info.shadow_len;
11988
11989       gdb_assert (bl->address >= start);
11990       addr = bl->address - start;
11991       if (addr > bp_location_placed_address_before_address_max)
11992         bp_location_placed_address_before_address_max = addr;
11993
11994       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11995
11996       gdb_assert (bl->address < end);
11997       addr = end - bl->address;
11998       if (addr > bp_location_shadow_len_after_address_max)
11999         bp_location_shadow_len_after_address_max = addr;
12000     }
12001 }
12002
12003 /* Download tracepoint locations if they haven't been.  */
12004
12005 static void
12006 download_tracepoint_locations (void)
12007 {
12008   struct breakpoint *b;
12009   struct cleanup *old_chain;
12010
12011   if (!target_can_download_tracepoint ())
12012     return;
12013
12014   old_chain = save_current_space_and_thread ();
12015
12016   ALL_TRACEPOINTS (b)
12017     {
12018       struct bp_location *bl;
12019       struct tracepoint *t;
12020       int bp_location_downloaded = 0;
12021
12022       if ((b->type == bp_fast_tracepoint
12023            ? !may_insert_fast_tracepoints
12024            : !may_insert_tracepoints))
12025         continue;
12026
12027       for (bl = b->loc; bl; bl = bl->next)
12028         {
12029           /* In tracepoint, locations are _never_ duplicated, so
12030              should_be_inserted is equivalent to
12031              unduplicated_should_be_inserted.  */
12032           if (!should_be_inserted (bl) || bl->inserted)
12033             continue;
12034
12035           switch_to_program_space_and_thread (bl->pspace);
12036
12037           target_download_tracepoint (bl);
12038
12039           bl->inserted = 1;
12040           bp_location_downloaded = 1;
12041         }
12042       t = (struct tracepoint *) b;
12043       t->number_on_target = b->number;
12044       if (bp_location_downloaded)
12045         observer_notify_breakpoint_modified (b);
12046     }
12047
12048   do_cleanups (old_chain);
12049 }
12050
12051 /* Swap the insertion/duplication state between two locations.  */
12052
12053 static void
12054 swap_insertion (struct bp_location *left, struct bp_location *right)
12055 {
12056   const int left_inserted = left->inserted;
12057   const int left_duplicate = left->duplicate;
12058   const int left_needs_update = left->needs_update;
12059   const struct bp_target_info left_target_info = left->target_info;
12060
12061   /* Locations of tracepoints can never be duplicated.  */
12062   if (is_tracepoint (left->owner))
12063     gdb_assert (!left->duplicate);
12064   if (is_tracepoint (right->owner))
12065     gdb_assert (!right->duplicate);
12066
12067   left->inserted = right->inserted;
12068   left->duplicate = right->duplicate;
12069   left->needs_update = right->needs_update;
12070   left->target_info = right->target_info;
12071   right->inserted = left_inserted;
12072   right->duplicate = left_duplicate;
12073   right->needs_update = left_needs_update;
12074   right->target_info = left_target_info;
12075 }
12076
12077 /* Force the re-insertion of the locations at ADDRESS.  This is called
12078    once a new/deleted/modified duplicate location is found and we are evaluating
12079    conditions on the target's side.  Such conditions need to be updated on
12080    the target.  */
12081
12082 static void
12083 force_breakpoint_reinsertion (struct bp_location *bl)
12084 {
12085   struct bp_location **locp = NULL, **loc2p;
12086   struct bp_location *loc;
12087   CORE_ADDR address = 0;
12088   int pspace_num;
12089
12090   address = bl->address;
12091   pspace_num = bl->pspace->num;
12092
12093   /* This is only meaningful if the target is
12094      evaluating conditions and if the user has
12095      opted for condition evaluation on the target's
12096      side.  */
12097   if (gdb_evaluates_breakpoint_condition_p ()
12098       || !target_supports_evaluation_of_breakpoint_conditions ())
12099     return;
12100
12101   /* Flag all breakpoint locations with this address and
12102      the same program space as the location
12103      as "its condition has changed".  We need to
12104      update the conditions on the target's side.  */
12105   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12106     {
12107       loc = *loc2p;
12108
12109       if (!is_breakpoint (loc->owner)
12110           || pspace_num != loc->pspace->num)
12111         continue;
12112
12113       /* Flag the location appropriately.  We use a different state to
12114          let everyone know that we already updated the set of locations
12115          with addr bl->address and program space bl->pspace.  This is so
12116          we don't have to keep calling these functions just to mark locations
12117          that have already been marked.  */
12118       loc->condition_changed = condition_updated;
12119
12120       /* Free the agent expression bytecode as well.  We will compute
12121          it later on.  */
12122       if (loc->cond_bytecode)
12123         {
12124           free_agent_expr (loc->cond_bytecode);
12125           loc->cond_bytecode = NULL;
12126         }
12127     }
12128 }
12129
12130 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12131    into the inferior, only remove already-inserted locations that no
12132    longer should be inserted.  Functions that delete a breakpoint or
12133    breakpoints should pass false, so that deleting a breakpoint
12134    doesn't have the side effect of inserting the locations of other
12135    breakpoints that are marked not-inserted, but should_be_inserted
12136    returns true on them.
12137
12138    This behaviour is useful is situations close to tear-down -- e.g.,
12139    after an exec, while the target still has execution, but breakpoint
12140    shadows of the previous executable image should *NOT* be restored
12141    to the new image; or before detaching, where the target still has
12142    execution and wants to delete breakpoints from GDB's lists, and all
12143    breakpoints had already been removed from the inferior.  */
12144
12145 static void
12146 update_global_location_list (int should_insert)
12147 {
12148   struct breakpoint *b;
12149   struct bp_location **locp, *loc;
12150   struct cleanup *cleanups;
12151   /* Last breakpoint location address that was marked for update.  */
12152   CORE_ADDR last_addr = 0;
12153   /* Last breakpoint location program space that was marked for update.  */
12154   int last_pspace_num = -1;
12155
12156   /* Used in the duplicates detection below.  When iterating over all
12157      bp_locations, points to the first bp_location of a given address.
12158      Breakpoints and watchpoints of different types are never
12159      duplicates of each other.  Keep one pointer for each type of
12160      breakpoint/watchpoint, so we only need to loop over all locations
12161      once.  */
12162   struct bp_location *bp_loc_first;  /* breakpoint */
12163   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12164   struct bp_location *awp_loc_first; /* access watchpoint */
12165   struct bp_location *rwp_loc_first; /* read watchpoint */
12166
12167   /* Saved former bp_location array which we compare against the newly
12168      built bp_location from the current state of ALL_BREAKPOINTS.  */
12169   struct bp_location **old_location, **old_locp;
12170   unsigned old_location_count;
12171
12172   old_location = bp_location;
12173   old_location_count = bp_location_count;
12174   bp_location = NULL;
12175   bp_location_count = 0;
12176   cleanups = make_cleanup (xfree, old_location);
12177
12178   ALL_BREAKPOINTS (b)
12179     for (loc = b->loc; loc; loc = loc->next)
12180       bp_location_count++;
12181
12182   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12183   locp = bp_location;
12184   ALL_BREAKPOINTS (b)
12185     for (loc = b->loc; loc; loc = loc->next)
12186       *locp++ = loc;
12187   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12188          bp_location_compare);
12189
12190   bp_location_target_extensions_update ();
12191
12192   /* Identify bp_location instances that are no longer present in the
12193      new list, and therefore should be freed.  Note that it's not
12194      necessary that those locations should be removed from inferior --
12195      if there's another location at the same address (previously
12196      marked as duplicate), we don't need to remove/insert the
12197      location.
12198      
12199      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12200      and former bp_location array state respectively.  */
12201
12202   locp = bp_location;
12203   for (old_locp = old_location; old_locp < old_location + old_location_count;
12204        old_locp++)
12205     {
12206       struct bp_location *old_loc = *old_locp;
12207       struct bp_location **loc2p;
12208
12209       /* Tells if 'old_loc' is found among the new locations.  If
12210          not, we have to free it.  */
12211       int found_object = 0;
12212       /* Tells if the location should remain inserted in the target.  */
12213       int keep_in_target = 0;
12214       int removed = 0;
12215
12216       /* Skip LOCP entries which will definitely never be needed.
12217          Stop either at or being the one matching OLD_LOC.  */
12218       while (locp < bp_location + bp_location_count
12219              && (*locp)->address < old_loc->address)
12220         locp++;
12221
12222       for (loc2p = locp;
12223            (loc2p < bp_location + bp_location_count
12224             && (*loc2p)->address == old_loc->address);
12225            loc2p++)
12226         {
12227           /* Check if this is a new/duplicated location or a duplicated
12228              location that had its condition modified.  If so, we want to send
12229              its condition to the target if evaluation of conditions is taking
12230              place there.  */
12231           if ((*loc2p)->condition_changed == condition_modified
12232               && (last_addr != old_loc->address
12233                   || last_pspace_num != old_loc->pspace->num))
12234             {
12235               force_breakpoint_reinsertion (*loc2p);
12236               last_pspace_num = old_loc->pspace->num;
12237             }
12238
12239           if (*loc2p == old_loc)
12240             found_object = 1;
12241         }
12242
12243       /* We have already handled this address, update it so that we don't
12244          have to go through updates again.  */
12245       last_addr = old_loc->address;
12246
12247       /* Target-side condition evaluation: Handle deleted locations.  */
12248       if (!found_object)
12249         force_breakpoint_reinsertion (old_loc);
12250
12251       /* If this location is no longer present, and inserted, look if
12252          there's maybe a new location at the same address.  If so,
12253          mark that one inserted, and don't remove this one.  This is
12254          needed so that we don't have a time window where a breakpoint
12255          at certain location is not inserted.  */
12256
12257       if (old_loc->inserted)
12258         {
12259           /* If the location is inserted now, we might have to remove
12260              it.  */
12261
12262           if (found_object && should_be_inserted (old_loc))
12263             {
12264               /* The location is still present in the location list,
12265                  and still should be inserted.  Don't do anything.  */
12266               keep_in_target = 1;
12267             }
12268           else
12269             {
12270               /* This location still exists, but it won't be kept in the
12271                  target since it may have been disabled.  We proceed to
12272                  remove its target-side condition.  */
12273
12274               /* The location is either no longer present, or got
12275                  disabled.  See if there's another location at the
12276                  same address, in which case we don't need to remove
12277                  this one from the target.  */
12278
12279               /* OLD_LOC comes from existing struct breakpoint.  */
12280               if (breakpoint_address_is_meaningful (old_loc->owner))
12281                 {
12282                   for (loc2p = locp;
12283                        (loc2p < bp_location + bp_location_count
12284                         && (*loc2p)->address == old_loc->address);
12285                        loc2p++)
12286                     {
12287                       struct bp_location *loc2 = *loc2p;
12288
12289                       if (breakpoint_locations_match (loc2, old_loc))
12290                         {
12291                           /* Read watchpoint locations are switched to
12292                              access watchpoints, if the former are not
12293                              supported, but the latter are.  */
12294                           if (is_hardware_watchpoint (old_loc->owner))
12295                             {
12296                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12297                               loc2->watchpoint_type = old_loc->watchpoint_type;
12298                             }
12299
12300                           /* loc2 is a duplicated location. We need to check
12301                              if it should be inserted in case it will be
12302                              unduplicated.  */
12303                           if (loc2 != old_loc
12304                               && unduplicated_should_be_inserted (loc2))
12305                             {
12306                               swap_insertion (old_loc, loc2);
12307                               keep_in_target = 1;
12308                               break;
12309                             }
12310                         }
12311                     }
12312                 }
12313             }
12314
12315           if (!keep_in_target)
12316             {
12317               if (remove_breakpoint (old_loc, mark_uninserted))
12318                 {
12319                   /* This is just about all we can do.  We could keep
12320                      this location on the global list, and try to
12321                      remove it next time, but there's no particular
12322                      reason why we will succeed next time.
12323                      
12324                      Note that at this point, old_loc->owner is still
12325                      valid, as delete_breakpoint frees the breakpoint
12326                      only after calling us.  */
12327                   printf_filtered (_("warning: Error removing "
12328                                      "breakpoint %d\n"), 
12329                                    old_loc->owner->number);
12330                 }
12331               removed = 1;
12332             }
12333         }
12334
12335       if (!found_object)
12336         {
12337           if (removed && non_stop
12338               && breakpoint_address_is_meaningful (old_loc->owner)
12339               && !is_hardware_watchpoint (old_loc->owner))
12340             {
12341               /* This location was removed from the target.  In
12342                  non-stop mode, a race condition is possible where
12343                  we've removed a breakpoint, but stop events for that
12344                  breakpoint are already queued and will arrive later.
12345                  We apply an heuristic to be able to distinguish such
12346                  SIGTRAPs from other random SIGTRAPs: we keep this
12347                  breakpoint location for a bit, and will retire it
12348                  after we see some number of events.  The theory here
12349                  is that reporting of events should, "on the average",
12350                  be fair, so after a while we'll see events from all
12351                  threads that have anything of interest, and no longer
12352                  need to keep this breakpoint location around.  We
12353                  don't hold locations forever so to reduce chances of
12354                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12355                  SIGTRAP.
12356
12357                  The heuristic failing can be disastrous on
12358                  decr_pc_after_break targets.
12359
12360                  On decr_pc_after_break targets, like e.g., x86-linux,
12361                  if we fail to recognize a late breakpoint SIGTRAP,
12362                  because events_till_retirement has reached 0 too
12363                  soon, we'll fail to do the PC adjustment, and report
12364                  a random SIGTRAP to the user.  When the user resumes
12365                  the inferior, it will most likely immediately crash
12366                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12367                  corrupted, because of being resumed e.g., in the
12368                  middle of a multi-byte instruction, or skipped a
12369                  one-byte instruction.  This was actually seen happen
12370                  on native x86-linux, and should be less rare on
12371                  targets that do not support new thread events, like
12372                  remote, due to the heuristic depending on
12373                  thread_count.
12374
12375                  Mistaking a random SIGTRAP for a breakpoint trap
12376                  causes similar symptoms (PC adjustment applied when
12377                  it shouldn't), but then again, playing with SIGTRAPs
12378                  behind the debugger's back is asking for trouble.
12379
12380                  Since hardware watchpoint traps are always
12381                  distinguishable from other traps, so we don't need to
12382                  apply keep hardware watchpoint moribund locations
12383                  around.  We simply always ignore hardware watchpoint
12384                  traps we can no longer explain.  */
12385
12386               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12387               old_loc->owner = NULL;
12388
12389               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12390             }
12391           else
12392             {
12393               old_loc->owner = NULL;
12394               decref_bp_location (&old_loc);
12395             }
12396         }
12397     }
12398
12399   /* Rescan breakpoints at the same address and section, marking the
12400      first one as "first" and any others as "duplicates".  This is so
12401      that the bpt instruction is only inserted once.  If we have a
12402      permanent breakpoint at the same place as BPT, make that one the
12403      official one, and the rest as duplicates.  Permanent breakpoints
12404      are sorted first for the same address.
12405
12406      Do the same for hardware watchpoints, but also considering the
12407      watchpoint's type (regular/access/read) and length.  */
12408
12409   bp_loc_first = NULL;
12410   wp_loc_first = NULL;
12411   awp_loc_first = NULL;
12412   rwp_loc_first = NULL;
12413   ALL_BP_LOCATIONS (loc, locp)
12414     {
12415       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12416          non-NULL.  */
12417       struct bp_location **loc_first_p;
12418       b = loc->owner;
12419
12420       if (!unduplicated_should_be_inserted (loc)
12421           || !breakpoint_address_is_meaningful (b)
12422           /* Don't detect duplicate for tracepoint locations because they are
12423            never duplicated.  See the comments in field `duplicate' of
12424            `struct bp_location'.  */
12425           || is_tracepoint (b))
12426         {
12427           /* Clear the condition modification flag.  */
12428           loc->condition_changed = condition_unchanged;
12429           continue;
12430         }
12431
12432       /* Permanent breakpoint should always be inserted.  */
12433       if (b->enable_state == bp_permanent && ! loc->inserted)
12434         internal_error (__FILE__, __LINE__,
12435                         _("allegedly permanent breakpoint is not "
12436                         "actually inserted"));
12437
12438       if (b->type == bp_hardware_watchpoint)
12439         loc_first_p = &wp_loc_first;
12440       else if (b->type == bp_read_watchpoint)
12441         loc_first_p = &rwp_loc_first;
12442       else if (b->type == bp_access_watchpoint)
12443         loc_first_p = &awp_loc_first;
12444       else
12445         loc_first_p = &bp_loc_first;
12446
12447       if (*loc_first_p == NULL
12448           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12449           || !breakpoint_locations_match (loc, *loc_first_p))
12450         {
12451           *loc_first_p = loc;
12452           loc->duplicate = 0;
12453
12454           if (is_breakpoint (loc->owner) && loc->condition_changed)
12455             {
12456               loc->needs_update = 1;
12457               /* Clear the condition modification flag.  */
12458               loc->condition_changed = condition_unchanged;
12459             }
12460           continue;
12461         }
12462
12463
12464       /* This and the above ensure the invariant that the first location
12465          is not duplicated, and is the inserted one.
12466          All following are marked as duplicated, and are not inserted.  */
12467       if (loc->inserted)
12468         swap_insertion (loc, *loc_first_p);
12469       loc->duplicate = 1;
12470
12471       /* Clear the condition modification flag.  */
12472       loc->condition_changed = condition_unchanged;
12473
12474       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12475           && b->enable_state != bp_permanent)
12476         internal_error (__FILE__, __LINE__,
12477                         _("another breakpoint was inserted on top of "
12478                         "a permanent breakpoint"));
12479     }
12480
12481   if (breakpoints_always_inserted_mode ()
12482       && (have_live_inferiors ()
12483           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12484     {
12485       if (should_insert)
12486         insert_breakpoint_locations ();
12487       else
12488         {
12489           /* Though should_insert is false, we may need to update conditions
12490              on the target's side if it is evaluating such conditions.  We
12491              only update conditions for locations that are marked
12492              "needs_update".  */
12493           update_inserted_breakpoint_locations ();
12494         }
12495     }
12496
12497   if (should_insert)
12498     download_tracepoint_locations ();
12499
12500   do_cleanups (cleanups);
12501 }
12502
12503 void
12504 breakpoint_retire_moribund (void)
12505 {
12506   struct bp_location *loc;
12507   int ix;
12508
12509   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12510     if (--(loc->events_till_retirement) == 0)
12511       {
12512         decref_bp_location (&loc);
12513         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12514         --ix;
12515       }
12516 }
12517
12518 static void
12519 update_global_location_list_nothrow (int inserting)
12520 {
12521   volatile struct gdb_exception e;
12522
12523   TRY_CATCH (e, RETURN_MASK_ERROR)
12524     update_global_location_list (inserting);
12525 }
12526
12527 /* Clear BKP from a BPS.  */
12528
12529 static void
12530 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12531 {
12532   bpstat bs;
12533
12534   for (bs = bps; bs; bs = bs->next)
12535     if (bs->breakpoint_at == bpt)
12536       {
12537         bs->breakpoint_at = NULL;
12538         bs->old_val = NULL;
12539         /* bs->commands will be freed later.  */
12540       }
12541 }
12542
12543 /* Callback for iterate_over_threads.  */
12544 static int
12545 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12546 {
12547   struct breakpoint *bpt = data;
12548
12549   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12550   return 0;
12551 }
12552
12553 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12554    callbacks.  */
12555
12556 static void
12557 say_where (struct breakpoint *b)
12558 {
12559   struct value_print_options opts;
12560
12561   get_user_print_options (&opts);
12562
12563   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12564      single string.  */
12565   if (b->loc == NULL)
12566     {
12567       printf_filtered (_(" (%s) pending."), b->addr_string);
12568     }
12569   else
12570     {
12571       if (opts.addressprint || b->loc->symtab == NULL)
12572         {
12573           printf_filtered (" at ");
12574           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12575                           gdb_stdout);
12576         }
12577       if (b->loc->symtab != NULL)
12578         {
12579           /* If there is a single location, we can print the location
12580              more nicely.  */
12581           if (b->loc->next == NULL)
12582             printf_filtered (": file %s, line %d.",
12583                              symtab_to_filename_for_display (b->loc->symtab),
12584                              b->loc->line_number);
12585           else
12586             /* This is not ideal, but each location may have a
12587                different file name, and this at least reflects the
12588                real situation somewhat.  */
12589             printf_filtered (": %s.", b->addr_string);
12590         }
12591
12592       if (b->loc->next)
12593         {
12594           struct bp_location *loc = b->loc;
12595           int n = 0;
12596           for (; loc; loc = loc->next)
12597             ++n;
12598           printf_filtered (" (%d locations)", n);
12599         }
12600     }
12601 }
12602
12603 /* Default bp_location_ops methods.  */
12604
12605 static void
12606 bp_location_dtor (struct bp_location *self)
12607 {
12608   xfree (self->cond);
12609   if (self->cond_bytecode)
12610     free_agent_expr (self->cond_bytecode);
12611   xfree (self->function_name);
12612 }
12613
12614 static const struct bp_location_ops bp_location_ops =
12615 {
12616   bp_location_dtor
12617 };
12618
12619 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12620    inherit from.  */
12621
12622 static void
12623 base_breakpoint_dtor (struct breakpoint *self)
12624 {
12625   decref_counted_command_line (&self->commands);
12626   xfree (self->cond_string);
12627   xfree (self->extra_string);
12628   xfree (self->addr_string);
12629   xfree (self->filter);
12630   xfree (self->addr_string_range_end);
12631 }
12632
12633 static struct bp_location *
12634 base_breakpoint_allocate_location (struct breakpoint *self)
12635 {
12636   struct bp_location *loc;
12637
12638   loc = XNEW (struct bp_location);
12639   init_bp_location (loc, &bp_location_ops, self);
12640   return loc;
12641 }
12642
12643 static void
12644 base_breakpoint_re_set (struct breakpoint *b)
12645 {
12646   /* Nothing to re-set. */
12647 }
12648
12649 #define internal_error_pure_virtual_called() \
12650   gdb_assert_not_reached ("pure virtual function called")
12651
12652 static int
12653 base_breakpoint_insert_location (struct bp_location *bl)
12654 {
12655   internal_error_pure_virtual_called ();
12656 }
12657
12658 static int
12659 base_breakpoint_remove_location (struct bp_location *bl)
12660 {
12661   internal_error_pure_virtual_called ();
12662 }
12663
12664 static int
12665 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12666                                 struct address_space *aspace,
12667                                 CORE_ADDR bp_addr,
12668                                 const struct target_waitstatus *ws)
12669 {
12670   internal_error_pure_virtual_called ();
12671 }
12672
12673 static void
12674 base_breakpoint_check_status (bpstat bs)
12675 {
12676   /* Always stop.   */
12677 }
12678
12679 /* A "works_in_software_mode" breakpoint_ops method that just internal
12680    errors.  */
12681
12682 static int
12683 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12684 {
12685   internal_error_pure_virtual_called ();
12686 }
12687
12688 /* A "resources_needed" breakpoint_ops method that just internal
12689    errors.  */
12690
12691 static int
12692 base_breakpoint_resources_needed (const struct bp_location *bl)
12693 {
12694   internal_error_pure_virtual_called ();
12695 }
12696
12697 static enum print_stop_action
12698 base_breakpoint_print_it (bpstat bs)
12699 {
12700   internal_error_pure_virtual_called ();
12701 }
12702
12703 static void
12704 base_breakpoint_print_one_detail (const struct breakpoint *self,
12705                                   struct ui_out *uiout)
12706 {
12707   /* nothing */
12708 }
12709
12710 static void
12711 base_breakpoint_print_mention (struct breakpoint *b)
12712 {
12713   internal_error_pure_virtual_called ();
12714 }
12715
12716 static void
12717 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12718 {
12719   internal_error_pure_virtual_called ();
12720 }
12721
12722 static void
12723 base_breakpoint_create_sals_from_address (char **arg,
12724                                           struct linespec_result *canonical,
12725                                           enum bptype type_wanted,
12726                                           char *addr_start,
12727                                           char **copy_arg)
12728 {
12729   internal_error_pure_virtual_called ();
12730 }
12731
12732 static void
12733 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12734                                         struct linespec_result *c,
12735                                         struct linespec_sals *lsal,
12736                                         char *cond_string,
12737                                         char *extra_string,
12738                                         enum bptype type_wanted,
12739                                         enum bpdisp disposition,
12740                                         int thread,
12741                                         int task, int ignore_count,
12742                                         const struct breakpoint_ops *o,
12743                                         int from_tty, int enabled,
12744                                         int internal, unsigned flags)
12745 {
12746   internal_error_pure_virtual_called ();
12747 }
12748
12749 static void
12750 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12751                                  struct symtabs_and_lines *sals)
12752 {
12753   internal_error_pure_virtual_called ();
12754 }
12755
12756 /* The default 'explains_signal' method.  */
12757
12758 static enum bpstat_signal_value
12759 base_breakpoint_explains_signal (struct breakpoint *b)
12760 {
12761   return BPSTAT_SIGNAL_HIDE;
12762 }
12763
12764 struct breakpoint_ops base_breakpoint_ops =
12765 {
12766   base_breakpoint_dtor,
12767   base_breakpoint_allocate_location,
12768   base_breakpoint_re_set,
12769   base_breakpoint_insert_location,
12770   base_breakpoint_remove_location,
12771   base_breakpoint_breakpoint_hit,
12772   base_breakpoint_check_status,
12773   base_breakpoint_resources_needed,
12774   base_breakpoint_works_in_software_mode,
12775   base_breakpoint_print_it,
12776   NULL,
12777   base_breakpoint_print_one_detail,
12778   base_breakpoint_print_mention,
12779   base_breakpoint_print_recreate,
12780   base_breakpoint_create_sals_from_address,
12781   base_breakpoint_create_breakpoints_sal,
12782   base_breakpoint_decode_linespec,
12783   base_breakpoint_explains_signal
12784 };
12785
12786 /* Default breakpoint_ops methods.  */
12787
12788 static void
12789 bkpt_re_set (struct breakpoint *b)
12790 {
12791   /* FIXME: is this still reachable?  */
12792   if (b->addr_string == NULL)
12793     {
12794       /* Anything without a string can't be re-set.  */
12795       delete_breakpoint (b);
12796       return;
12797     }
12798
12799   breakpoint_re_set_default (b);
12800 }
12801
12802 static int
12803 bkpt_insert_location (struct bp_location *bl)
12804 {
12805   if (bl->loc_type == bp_loc_hardware_breakpoint)
12806     return target_insert_hw_breakpoint (bl->gdbarch,
12807                                         &bl->target_info);
12808   else
12809     return target_insert_breakpoint (bl->gdbarch,
12810                                      &bl->target_info);
12811 }
12812
12813 static int
12814 bkpt_remove_location (struct bp_location *bl)
12815 {
12816   if (bl->loc_type == bp_loc_hardware_breakpoint)
12817     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12818   else
12819     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12820 }
12821
12822 static int
12823 bkpt_breakpoint_hit (const struct bp_location *bl,
12824                      struct address_space *aspace, CORE_ADDR bp_addr,
12825                      const struct target_waitstatus *ws)
12826 {
12827   if (ws->kind != TARGET_WAITKIND_STOPPED
12828       || ws->value.sig != GDB_SIGNAL_TRAP)
12829     return 0;
12830
12831   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12832                                  aspace, bp_addr))
12833     return 0;
12834
12835   if (overlay_debugging         /* unmapped overlay section */
12836       && section_is_overlay (bl->section)
12837       && !section_is_mapped (bl->section))
12838     return 0;
12839
12840   return 1;
12841 }
12842
12843 static int
12844 bkpt_resources_needed (const struct bp_location *bl)
12845 {
12846   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12847
12848   return 1;
12849 }
12850
12851 static enum print_stop_action
12852 bkpt_print_it (bpstat bs)
12853 {
12854   struct breakpoint *b;
12855   const struct bp_location *bl;
12856   int bp_temp;
12857   struct ui_out *uiout = current_uiout;
12858
12859   gdb_assert (bs->bp_location_at != NULL);
12860
12861   bl = bs->bp_location_at;
12862   b = bs->breakpoint_at;
12863
12864   bp_temp = b->disposition == disp_del;
12865   if (bl->address != bl->requested_address)
12866     breakpoint_adjustment_warning (bl->requested_address,
12867                                    bl->address,
12868                                    b->number, 1);
12869   annotate_breakpoint (b->number);
12870   if (bp_temp)
12871     ui_out_text (uiout, "\nTemporary breakpoint ");
12872   else
12873     ui_out_text (uiout, "\nBreakpoint ");
12874   if (ui_out_is_mi_like_p (uiout))
12875     {
12876       ui_out_field_string (uiout, "reason",
12877                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12878       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12879     }
12880   ui_out_field_int (uiout, "bkptno", b->number);
12881   ui_out_text (uiout, ", ");
12882
12883   return PRINT_SRC_AND_LOC;
12884 }
12885
12886 static void
12887 bkpt_print_mention (struct breakpoint *b)
12888 {
12889   if (ui_out_is_mi_like_p (current_uiout))
12890     return;
12891
12892   switch (b->type)
12893     {
12894     case bp_breakpoint:
12895     case bp_gnu_ifunc_resolver:
12896       if (b->disposition == disp_del)
12897         printf_filtered (_("Temporary breakpoint"));
12898       else
12899         printf_filtered (_("Breakpoint"));
12900       printf_filtered (_(" %d"), b->number);
12901       if (b->type == bp_gnu_ifunc_resolver)
12902         printf_filtered (_(" at gnu-indirect-function resolver"));
12903       break;
12904     case bp_hardware_breakpoint:
12905       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12906       break;
12907     case bp_dprintf:
12908       printf_filtered (_("Dprintf %d"), b->number);
12909       break;
12910     }
12911
12912   say_where (b);
12913 }
12914
12915 static void
12916 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12917 {
12918   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12919     fprintf_unfiltered (fp, "tbreak");
12920   else if (tp->type == bp_breakpoint)
12921     fprintf_unfiltered (fp, "break");
12922   else if (tp->type == bp_hardware_breakpoint
12923            && tp->disposition == disp_del)
12924     fprintf_unfiltered (fp, "thbreak");
12925   else if (tp->type == bp_hardware_breakpoint)
12926     fprintf_unfiltered (fp, "hbreak");
12927   else
12928     internal_error (__FILE__, __LINE__,
12929                     _("unhandled breakpoint type %d"), (int) tp->type);
12930
12931   fprintf_unfiltered (fp, " %s", tp->addr_string);
12932   print_recreate_thread (tp, fp);
12933 }
12934
12935 static void
12936 bkpt_create_sals_from_address (char **arg,
12937                                struct linespec_result *canonical,
12938                                enum bptype type_wanted,
12939                                char *addr_start, char **copy_arg)
12940 {
12941   create_sals_from_address_default (arg, canonical, type_wanted,
12942                                     addr_start, copy_arg);
12943 }
12944
12945 static void
12946 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12947                              struct linespec_result *canonical,
12948                              struct linespec_sals *lsal,
12949                              char *cond_string,
12950                              char *extra_string,
12951                              enum bptype type_wanted,
12952                              enum bpdisp disposition,
12953                              int thread,
12954                              int task, int ignore_count,
12955                              const struct breakpoint_ops *ops,
12956                              int from_tty, int enabled,
12957                              int internal, unsigned flags)
12958 {
12959   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12960                                   cond_string, extra_string,
12961                                   type_wanted,
12962                                   disposition, thread, task,
12963                                   ignore_count, ops, from_tty,
12964                                   enabled, internal, flags);
12965 }
12966
12967 static void
12968 bkpt_decode_linespec (struct breakpoint *b, char **s,
12969                       struct symtabs_and_lines *sals)
12970 {
12971   decode_linespec_default (b, s, sals);
12972 }
12973
12974 /* Virtual table for internal breakpoints.  */
12975
12976 static void
12977 internal_bkpt_re_set (struct breakpoint *b)
12978 {
12979   switch (b->type)
12980     {
12981       /* Delete overlay event and longjmp master breakpoints; they
12982          will be reset later by breakpoint_re_set.  */
12983     case bp_overlay_event:
12984     case bp_longjmp_master:
12985     case bp_std_terminate_master:
12986     case bp_exception_master:
12987       delete_breakpoint (b);
12988       break;
12989
12990       /* This breakpoint is special, it's set up when the inferior
12991          starts and we really don't want to touch it.  */
12992     case bp_shlib_event:
12993
12994       /* Like bp_shlib_event, this breakpoint type is special.  Once
12995          it is set up, we do not want to touch it.  */
12996     case bp_thread_event:
12997       break;
12998     }
12999 }
13000
13001 static void
13002 internal_bkpt_check_status (bpstat bs)
13003 {
13004   if (bs->breakpoint_at->type == bp_shlib_event)
13005     {
13006       /* If requested, stop when the dynamic linker notifies GDB of
13007          events.  This allows the user to get control and place
13008          breakpoints in initializer routines for dynamically loaded
13009          objects (among other things).  */
13010       bs->stop = stop_on_solib_events;
13011       bs->print = stop_on_solib_events;
13012     }
13013   else
13014     bs->stop = 0;
13015 }
13016
13017 static enum print_stop_action
13018 internal_bkpt_print_it (bpstat bs)
13019 {
13020   struct breakpoint *b;
13021
13022   b = bs->breakpoint_at;
13023
13024   switch (b->type)
13025     {
13026     case bp_shlib_event:
13027       /* Did we stop because the user set the stop_on_solib_events
13028          variable?  (If so, we report this as a generic, "Stopped due
13029          to shlib event" message.) */
13030       print_solib_event (0);
13031       break;
13032
13033     case bp_thread_event:
13034       /* Not sure how we will get here.
13035          GDB should not stop for these breakpoints.  */
13036       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13037       break;
13038
13039     case bp_overlay_event:
13040       /* By analogy with the thread event, GDB should not stop for these.  */
13041       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13042       break;
13043
13044     case bp_longjmp_master:
13045       /* These should never be enabled.  */
13046       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13047       break;
13048
13049     case bp_std_terminate_master:
13050       /* These should never be enabled.  */
13051       printf_filtered (_("std::terminate Master Breakpoint: "
13052                          "gdb should not stop!\n"));
13053       break;
13054
13055     case bp_exception_master:
13056       /* These should never be enabled.  */
13057       printf_filtered (_("Exception Master Breakpoint: "
13058                          "gdb should not stop!\n"));
13059       break;
13060     }
13061
13062   return PRINT_NOTHING;
13063 }
13064
13065 static void
13066 internal_bkpt_print_mention (struct breakpoint *b)
13067 {
13068   /* Nothing to mention.  These breakpoints are internal.  */
13069 }
13070
13071 /* Virtual table for momentary breakpoints  */
13072
13073 static void
13074 momentary_bkpt_re_set (struct breakpoint *b)
13075 {
13076   /* Keep temporary breakpoints, which can be encountered when we step
13077      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13078      Otherwise these should have been blown away via the cleanup chain
13079      or by breakpoint_init_inferior when we rerun the executable.  */
13080 }
13081
13082 static void
13083 momentary_bkpt_check_status (bpstat bs)
13084 {
13085   /* Nothing.  The point of these breakpoints is causing a stop.  */
13086 }
13087
13088 static enum print_stop_action
13089 momentary_bkpt_print_it (bpstat bs)
13090 {
13091   struct ui_out *uiout = current_uiout;
13092
13093   if (ui_out_is_mi_like_p (uiout))
13094     {
13095       struct breakpoint *b = bs->breakpoint_at;
13096
13097       switch (b->type)
13098         {
13099         case bp_finish:
13100           ui_out_field_string
13101             (uiout, "reason",
13102              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13103           break;
13104
13105         case bp_until:
13106           ui_out_field_string
13107             (uiout, "reason",
13108              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13109           break;
13110         }
13111     }
13112
13113   return PRINT_UNKNOWN;
13114 }
13115
13116 static void
13117 momentary_bkpt_print_mention (struct breakpoint *b)
13118 {
13119   /* Nothing to mention.  These breakpoints are internal.  */
13120 }
13121
13122 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13123
13124    It gets cleared already on the removal of the first one of such placed
13125    breakpoints.  This is OK as they get all removed altogether.  */
13126
13127 static void
13128 longjmp_bkpt_dtor (struct breakpoint *self)
13129 {
13130   struct thread_info *tp = find_thread_id (self->thread);
13131
13132   if (tp)
13133     tp->initiating_frame = null_frame_id;
13134
13135   momentary_breakpoint_ops.dtor (self);
13136 }
13137
13138 /* Specific methods for probe breakpoints.  */
13139
13140 static int
13141 bkpt_probe_insert_location (struct bp_location *bl)
13142 {
13143   int v = bkpt_insert_location (bl);
13144
13145   if (v == 0)
13146     {
13147       /* The insertion was successful, now let's set the probe's semaphore
13148          if needed.  */
13149       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13150     }
13151
13152   return v;
13153 }
13154
13155 static int
13156 bkpt_probe_remove_location (struct bp_location *bl)
13157 {
13158   /* Let's clear the semaphore before removing the location.  */
13159   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13160
13161   return bkpt_remove_location (bl);
13162 }
13163
13164 static void
13165 bkpt_probe_create_sals_from_address (char **arg,
13166                                      struct linespec_result *canonical,
13167                                      enum bptype type_wanted,
13168                                      char *addr_start, char **copy_arg)
13169 {
13170   struct linespec_sals lsal;
13171
13172   lsal.sals = parse_probes (arg, canonical);
13173
13174   *copy_arg = xstrdup (canonical->addr_string);
13175   lsal.canonical = xstrdup (*copy_arg);
13176
13177   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13178 }
13179
13180 static void
13181 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13182                             struct symtabs_and_lines *sals)
13183 {
13184   *sals = parse_probes (s, NULL);
13185   if (!sals->sals)
13186     error (_("probe not found"));
13187 }
13188
13189 /* The breakpoint_ops structure to be used in tracepoints.  */
13190
13191 static void
13192 tracepoint_re_set (struct breakpoint *b)
13193 {
13194   breakpoint_re_set_default (b);
13195 }
13196
13197 static int
13198 tracepoint_breakpoint_hit (const struct bp_location *bl,
13199                            struct address_space *aspace, CORE_ADDR bp_addr,
13200                            const struct target_waitstatus *ws)
13201 {
13202   /* By definition, the inferior does not report stops at
13203      tracepoints.  */
13204   return 0;
13205 }
13206
13207 static void
13208 tracepoint_print_one_detail (const struct breakpoint *self,
13209                              struct ui_out *uiout)
13210 {
13211   struct tracepoint *tp = (struct tracepoint *) self;
13212   if (tp->static_trace_marker_id)
13213     {
13214       gdb_assert (self->type == bp_static_tracepoint);
13215
13216       ui_out_text (uiout, "\tmarker id is ");
13217       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13218                            tp->static_trace_marker_id);
13219       ui_out_text (uiout, "\n");
13220     }
13221 }
13222
13223 static void
13224 tracepoint_print_mention (struct breakpoint *b)
13225 {
13226   if (ui_out_is_mi_like_p (current_uiout))
13227     return;
13228
13229   switch (b->type)
13230     {
13231     case bp_tracepoint:
13232       printf_filtered (_("Tracepoint"));
13233       printf_filtered (_(" %d"), b->number);
13234       break;
13235     case bp_fast_tracepoint:
13236       printf_filtered (_("Fast tracepoint"));
13237       printf_filtered (_(" %d"), b->number);
13238       break;
13239     case bp_static_tracepoint:
13240       printf_filtered (_("Static tracepoint"));
13241       printf_filtered (_(" %d"), b->number);
13242       break;
13243     default:
13244       internal_error (__FILE__, __LINE__,
13245                       _("unhandled tracepoint type %d"), (int) b->type);
13246     }
13247
13248   say_where (b);
13249 }
13250
13251 static void
13252 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13253 {
13254   struct tracepoint *tp = (struct tracepoint *) self;
13255
13256   if (self->type == bp_fast_tracepoint)
13257     fprintf_unfiltered (fp, "ftrace");
13258   if (self->type == bp_static_tracepoint)
13259     fprintf_unfiltered (fp, "strace");
13260   else if (self->type == bp_tracepoint)
13261     fprintf_unfiltered (fp, "trace");
13262   else
13263     internal_error (__FILE__, __LINE__,
13264                     _("unhandled tracepoint type %d"), (int) self->type);
13265
13266   fprintf_unfiltered (fp, " %s", self->addr_string);
13267   print_recreate_thread (self, fp);
13268
13269   if (tp->pass_count)
13270     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13271 }
13272
13273 static void
13274 tracepoint_create_sals_from_address (char **arg,
13275                                      struct linespec_result *canonical,
13276                                      enum bptype type_wanted,
13277                                      char *addr_start, char **copy_arg)
13278 {
13279   create_sals_from_address_default (arg, canonical, type_wanted,
13280                                     addr_start, copy_arg);
13281 }
13282
13283 static void
13284 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13285                                    struct linespec_result *canonical,
13286                                    struct linespec_sals *lsal,
13287                                    char *cond_string,
13288                                    char *extra_string,
13289                                    enum bptype type_wanted,
13290                                    enum bpdisp disposition,
13291                                    int thread,
13292                                    int task, int ignore_count,
13293                                    const struct breakpoint_ops *ops,
13294                                    int from_tty, int enabled,
13295                                    int internal, unsigned flags)
13296 {
13297   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13298                                   cond_string, extra_string,
13299                                   type_wanted,
13300                                   disposition, thread, task,
13301                                   ignore_count, ops, from_tty,
13302                                   enabled, internal, flags);
13303 }
13304
13305 static void
13306 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13307                             struct symtabs_and_lines *sals)
13308 {
13309   decode_linespec_default (b, s, sals);
13310 }
13311
13312 struct breakpoint_ops tracepoint_breakpoint_ops;
13313
13314 /* The breakpoint_ops structure to be use on tracepoints placed in a
13315    static probe.  */
13316
13317 static void
13318 tracepoint_probe_create_sals_from_address (char **arg,
13319                                            struct linespec_result *canonical,
13320                                            enum bptype type_wanted,
13321                                            char *addr_start, char **copy_arg)
13322 {
13323   /* We use the same method for breakpoint on probes.  */
13324   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13325                                        addr_start, copy_arg);
13326 }
13327
13328 static void
13329 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13330                                   struct symtabs_and_lines *sals)
13331 {
13332   /* We use the same method for breakpoint on probes.  */
13333   bkpt_probe_decode_linespec (b, s, sals);
13334 }
13335
13336 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13337
13338 /* Dprintf breakpoint_ops methods.  */
13339
13340 static void
13341 dprintf_re_set (struct breakpoint *b)
13342 {
13343   breakpoint_re_set_default (b);
13344
13345   /* This breakpoint could have been pending, and be resolved now, and
13346      if so, we should now have the extra string.  If we don't, the
13347      dprintf was malformed when created, but we couldn't tell because
13348      we can't extract the extra string until the location is
13349      resolved.  */
13350   if (b->loc != NULL && b->extra_string == NULL)
13351     error (_("Format string required"));
13352
13353   /* 1 - connect to target 1, that can run breakpoint commands.
13354      2 - create a dprintf, which resolves fine.
13355      3 - disconnect from target 1
13356      4 - connect to target 2, that can NOT run breakpoint commands.
13357
13358      After steps #3/#4, you'll want the dprintf command list to
13359      be updated, because target 1 and 2 may well return different
13360      answers for target_can_run_breakpoint_commands().
13361      Given absence of finer grained resetting, we get to do
13362      it all the time.  */
13363   if (b->extra_string != NULL)
13364     update_dprintf_command_list (b);
13365 }
13366
13367 /* The breakpoint_ops structure to be used on static tracepoints with
13368    markers (`-m').  */
13369
13370 static void
13371 strace_marker_create_sals_from_address (char **arg,
13372                                         struct linespec_result *canonical,
13373                                         enum bptype type_wanted,
13374                                         char *addr_start, char **copy_arg)
13375 {
13376   struct linespec_sals lsal;
13377
13378   lsal.sals = decode_static_tracepoint_spec (arg);
13379
13380   *copy_arg = savestring (addr_start, *arg - addr_start);
13381
13382   canonical->addr_string = xstrdup (*copy_arg);
13383   lsal.canonical = xstrdup (*copy_arg);
13384   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13385 }
13386
13387 static void
13388 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13389                                       struct linespec_result *canonical,
13390                                       struct linespec_sals *lsal,
13391                                       char *cond_string,
13392                                       char *extra_string,
13393                                       enum bptype type_wanted,
13394                                       enum bpdisp disposition,
13395                                       int thread,
13396                                       int task, int ignore_count,
13397                                       const struct breakpoint_ops *ops,
13398                                       int from_tty, int enabled,
13399                                       int internal, unsigned flags)
13400 {
13401   int i;
13402
13403   /* If the user is creating a static tracepoint by marker id
13404      (strace -m MARKER_ID), then store the sals index, so that
13405      breakpoint_re_set can try to match up which of the newly
13406      found markers corresponds to this one, and, don't try to
13407      expand multiple locations for each sal, given than SALS
13408      already should contain all sals for MARKER_ID.  */
13409
13410   for (i = 0; i < lsal->sals.nelts; ++i)
13411     {
13412       struct symtabs_and_lines expanded;
13413       struct tracepoint *tp;
13414       struct cleanup *old_chain;
13415       char *addr_string;
13416
13417       expanded.nelts = 1;
13418       expanded.sals = &lsal->sals.sals[i];
13419
13420       addr_string = xstrdup (canonical->addr_string);
13421       old_chain = make_cleanup (xfree, addr_string);
13422
13423       tp = XCNEW (struct tracepoint);
13424       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13425                            addr_string, NULL,
13426                            cond_string, extra_string,
13427                            type_wanted, disposition,
13428                            thread, task, ignore_count, ops,
13429                            from_tty, enabled, internal, flags,
13430                            canonical->special_display);
13431       /* Given that its possible to have multiple markers with
13432          the same string id, if the user is creating a static
13433          tracepoint by marker id ("strace -m MARKER_ID"), then
13434          store the sals index, so that breakpoint_re_set can
13435          try to match up which of the newly found markers
13436          corresponds to this one  */
13437       tp->static_trace_marker_id_idx = i;
13438
13439       install_breakpoint (internal, &tp->base, 0);
13440
13441       discard_cleanups (old_chain);
13442     }
13443 }
13444
13445 static void
13446 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13447                                struct symtabs_and_lines *sals)
13448 {
13449   struct tracepoint *tp = (struct tracepoint *) b;
13450
13451   *sals = decode_static_tracepoint_spec (s);
13452   if (sals->nelts > tp->static_trace_marker_id_idx)
13453     {
13454       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13455       sals->nelts = 1;
13456     }
13457   else
13458     error (_("marker %s not found"), tp->static_trace_marker_id);
13459 }
13460
13461 static struct breakpoint_ops strace_marker_breakpoint_ops;
13462
13463 static int
13464 strace_marker_p (struct breakpoint *b)
13465 {
13466   return b->ops == &strace_marker_breakpoint_ops;
13467 }
13468
13469 /* Delete a breakpoint and clean up all traces of it in the data
13470    structures.  */
13471
13472 void
13473 delete_breakpoint (struct breakpoint *bpt)
13474 {
13475   struct breakpoint *b;
13476
13477   gdb_assert (bpt != NULL);
13478
13479   /* Has this bp already been deleted?  This can happen because
13480      multiple lists can hold pointers to bp's.  bpstat lists are
13481      especial culprits.
13482
13483      One example of this happening is a watchpoint's scope bp.  When
13484      the scope bp triggers, we notice that the watchpoint is out of
13485      scope, and delete it.  We also delete its scope bp.  But the
13486      scope bp is marked "auto-deleting", and is already on a bpstat.
13487      That bpstat is then checked for auto-deleting bp's, which are
13488      deleted.
13489
13490      A real solution to this problem might involve reference counts in
13491      bp's, and/or giving them pointers back to their referencing
13492      bpstat's, and teaching delete_breakpoint to only free a bp's
13493      storage when no more references were extent.  A cheaper bandaid
13494      was chosen.  */
13495   if (bpt->type == bp_none)
13496     return;
13497
13498   /* At least avoid this stale reference until the reference counting
13499      of breakpoints gets resolved.  */
13500   if (bpt->related_breakpoint != bpt)
13501     {
13502       struct breakpoint *related;
13503       struct watchpoint *w;
13504
13505       if (bpt->type == bp_watchpoint_scope)
13506         w = (struct watchpoint *) bpt->related_breakpoint;
13507       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13508         w = (struct watchpoint *) bpt;
13509       else
13510         w = NULL;
13511       if (w != NULL)
13512         watchpoint_del_at_next_stop (w);
13513
13514       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13515       for (related = bpt; related->related_breakpoint != bpt;
13516            related = related->related_breakpoint);
13517       related->related_breakpoint = bpt->related_breakpoint;
13518       bpt->related_breakpoint = bpt;
13519     }
13520
13521   /* watch_command_1 creates a watchpoint but only sets its number if
13522      update_watchpoint succeeds in creating its bp_locations.  If there's
13523      a problem in that process, we'll be asked to delete the half-created
13524      watchpoint.  In that case, don't announce the deletion.  */
13525   if (bpt->number)
13526     observer_notify_breakpoint_deleted (bpt);
13527
13528   if (breakpoint_chain == bpt)
13529     breakpoint_chain = bpt->next;
13530
13531   ALL_BREAKPOINTS (b)
13532     if (b->next == bpt)
13533     {
13534       b->next = bpt->next;
13535       break;
13536     }
13537
13538   /* Be sure no bpstat's are pointing at the breakpoint after it's
13539      been freed.  */
13540   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13541      in all threads for now.  Note that we cannot just remove bpstats
13542      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13543      commands are associated with the bpstat; if we remove it here,
13544      then the later call to bpstat_do_actions (&stop_bpstat); in
13545      event-top.c won't do anything, and temporary breakpoints with
13546      commands won't work.  */
13547
13548   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13549
13550   /* Now that breakpoint is removed from breakpoint list, update the
13551      global location list.  This will remove locations that used to
13552      belong to this breakpoint.  Do this before freeing the breakpoint
13553      itself, since remove_breakpoint looks at location's owner.  It
13554      might be better design to have location completely
13555      self-contained, but it's not the case now.  */
13556   update_global_location_list (0);
13557
13558   bpt->ops->dtor (bpt);
13559   /* On the chance that someone will soon try again to delete this
13560      same bp, we mark it as deleted before freeing its storage.  */
13561   bpt->type = bp_none;
13562   xfree (bpt);
13563 }
13564
13565 static void
13566 do_delete_breakpoint_cleanup (void *b)
13567 {
13568   delete_breakpoint (b);
13569 }
13570
13571 struct cleanup *
13572 make_cleanup_delete_breakpoint (struct breakpoint *b)
13573 {
13574   return make_cleanup (do_delete_breakpoint_cleanup, b);
13575 }
13576
13577 /* Iterator function to call a user-provided callback function once
13578    for each of B and its related breakpoints.  */
13579
13580 static void
13581 iterate_over_related_breakpoints (struct breakpoint *b,
13582                                   void (*function) (struct breakpoint *,
13583                                                     void *),
13584                                   void *data)
13585 {
13586   struct breakpoint *related;
13587
13588   related = b;
13589   do
13590     {
13591       struct breakpoint *next;
13592
13593       /* FUNCTION may delete RELATED.  */
13594       next = related->related_breakpoint;
13595
13596       if (next == related)
13597         {
13598           /* RELATED is the last ring entry.  */
13599           function (related, data);
13600
13601           /* FUNCTION may have deleted it, so we'd never reach back to
13602              B.  There's nothing left to do anyway, so just break
13603              out.  */
13604           break;
13605         }
13606       else
13607         function (related, data);
13608
13609       related = next;
13610     }
13611   while (related != b);
13612 }
13613
13614 static void
13615 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13616 {
13617   delete_breakpoint (b);
13618 }
13619
13620 /* A callback for map_breakpoint_numbers that calls
13621    delete_breakpoint.  */
13622
13623 static void
13624 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13625 {
13626   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13627 }
13628
13629 void
13630 delete_command (char *arg, int from_tty)
13631 {
13632   struct breakpoint *b, *b_tmp;
13633
13634   dont_repeat ();
13635
13636   if (arg == 0)
13637     {
13638       int breaks_to_delete = 0;
13639
13640       /* Delete all breakpoints if no argument.  Do not delete
13641          internal breakpoints, these have to be deleted with an
13642          explicit breakpoint number argument.  */
13643       ALL_BREAKPOINTS (b)
13644         if (user_breakpoint_p (b))
13645           {
13646             breaks_to_delete = 1;
13647             break;
13648           }
13649
13650       /* Ask user only if there are some breakpoints to delete.  */
13651       if (!from_tty
13652           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13653         {
13654           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13655             if (user_breakpoint_p (b))
13656               delete_breakpoint (b);
13657         }
13658     }
13659   else
13660     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13661 }
13662
13663 static int
13664 all_locations_are_pending (struct bp_location *loc)
13665 {
13666   for (; loc; loc = loc->next)
13667     if (!loc->shlib_disabled
13668         && !loc->pspace->executing_startup)
13669       return 0;
13670   return 1;
13671 }
13672
13673 /* Subroutine of update_breakpoint_locations to simplify it.
13674    Return non-zero if multiple fns in list LOC have the same name.
13675    Null names are ignored.  */
13676
13677 static int
13678 ambiguous_names_p (struct bp_location *loc)
13679 {
13680   struct bp_location *l;
13681   htab_t htab = htab_create_alloc (13, htab_hash_string,
13682                                    (int (*) (const void *, 
13683                                              const void *)) streq,
13684                                    NULL, xcalloc, xfree);
13685
13686   for (l = loc; l != NULL; l = l->next)
13687     {
13688       const char **slot;
13689       const char *name = l->function_name;
13690
13691       /* Allow for some names to be NULL, ignore them.  */
13692       if (name == NULL)
13693         continue;
13694
13695       slot = (const char **) htab_find_slot (htab, (const void *) name,
13696                                              INSERT);
13697       /* NOTE: We can assume slot != NULL here because xcalloc never
13698          returns NULL.  */
13699       if (*slot != NULL)
13700         {
13701           htab_delete (htab);
13702           return 1;
13703         }
13704       *slot = name;
13705     }
13706
13707   htab_delete (htab);
13708   return 0;
13709 }
13710
13711 /* When symbols change, it probably means the sources changed as well,
13712    and it might mean the static tracepoint markers are no longer at
13713    the same address or line numbers they used to be at last we
13714    checked.  Losing your static tracepoints whenever you rebuild is
13715    undesirable.  This function tries to resync/rematch gdb static
13716    tracepoints with the markers on the target, for static tracepoints
13717    that have not been set by marker id.  Static tracepoint that have
13718    been set by marker id are reset by marker id in breakpoint_re_set.
13719    The heuristic is:
13720
13721    1) For a tracepoint set at a specific address, look for a marker at
13722    the old PC.  If one is found there, assume to be the same marker.
13723    If the name / string id of the marker found is different from the
13724    previous known name, assume that means the user renamed the marker
13725    in the sources, and output a warning.
13726
13727    2) For a tracepoint set at a given line number, look for a marker
13728    at the new address of the old line number.  If one is found there,
13729    assume to be the same marker.  If the name / string id of the
13730    marker found is different from the previous known name, assume that
13731    means the user renamed the marker in the sources, and output a
13732    warning.
13733
13734    3) If a marker is no longer found at the same address or line, it
13735    may mean the marker no longer exists.  But it may also just mean
13736    the code changed a bit.  Maybe the user added a few lines of code
13737    that made the marker move up or down (in line number terms).  Ask
13738    the target for info about the marker with the string id as we knew
13739    it.  If found, update line number and address in the matching
13740    static tracepoint.  This will get confused if there's more than one
13741    marker with the same ID (possible in UST, although unadvised
13742    precisely because it confuses tools).  */
13743
13744 static struct symtab_and_line
13745 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13746 {
13747   struct tracepoint *tp = (struct tracepoint *) b;
13748   struct static_tracepoint_marker marker;
13749   CORE_ADDR pc;
13750
13751   pc = sal.pc;
13752   if (sal.line)
13753     find_line_pc (sal.symtab, sal.line, &pc);
13754
13755   if (target_static_tracepoint_marker_at (pc, &marker))
13756     {
13757       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13758         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13759                  b->number,
13760                  tp->static_trace_marker_id, marker.str_id);
13761
13762       xfree (tp->static_trace_marker_id);
13763       tp->static_trace_marker_id = xstrdup (marker.str_id);
13764       release_static_tracepoint_marker (&marker);
13765
13766       return sal;
13767     }
13768
13769   /* Old marker wasn't found on target at lineno.  Try looking it up
13770      by string ID.  */
13771   if (!sal.explicit_pc
13772       && sal.line != 0
13773       && sal.symtab != NULL
13774       && tp->static_trace_marker_id != NULL)
13775     {
13776       VEC(static_tracepoint_marker_p) *markers;
13777
13778       markers
13779         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13780
13781       if (!VEC_empty(static_tracepoint_marker_p, markers))
13782         {
13783           struct symtab_and_line sal2;
13784           struct symbol *sym;
13785           struct static_tracepoint_marker *tpmarker;
13786           struct ui_out *uiout = current_uiout;
13787
13788           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13789
13790           xfree (tp->static_trace_marker_id);
13791           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13792
13793           warning (_("marker for static tracepoint %d (%s) not "
13794                      "found at previous line number"),
13795                    b->number, tp->static_trace_marker_id);
13796
13797           init_sal (&sal2);
13798
13799           sal2.pc = tpmarker->address;
13800
13801           sal2 = find_pc_line (tpmarker->address, 0);
13802           sym = find_pc_sect_function (tpmarker->address, NULL);
13803           ui_out_text (uiout, "Now in ");
13804           if (sym)
13805             {
13806               ui_out_field_string (uiout, "func",
13807                                    SYMBOL_PRINT_NAME (sym));
13808               ui_out_text (uiout, " at ");
13809             }
13810           ui_out_field_string (uiout, "file",
13811                                symtab_to_filename_for_display (sal2.symtab));
13812           ui_out_text (uiout, ":");
13813
13814           if (ui_out_is_mi_like_p (uiout))
13815             {
13816               const char *fullname = symtab_to_fullname (sal2.symtab);
13817
13818               ui_out_field_string (uiout, "fullname", fullname);
13819             }
13820
13821           ui_out_field_int (uiout, "line", sal2.line);
13822           ui_out_text (uiout, "\n");
13823
13824           b->loc->line_number = sal2.line;
13825           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13826
13827           xfree (b->addr_string);
13828           b->addr_string = xstrprintf ("%s:%d",
13829                                    symtab_to_filename_for_display (sal2.symtab),
13830                                        b->loc->line_number);
13831
13832           /* Might be nice to check if function changed, and warn if
13833              so.  */
13834
13835           release_static_tracepoint_marker (tpmarker);
13836         }
13837     }
13838   return sal;
13839 }
13840
13841 /* Returns 1 iff locations A and B are sufficiently same that
13842    we don't need to report breakpoint as changed.  */
13843
13844 static int
13845 locations_are_equal (struct bp_location *a, struct bp_location *b)
13846 {
13847   while (a && b)
13848     {
13849       if (a->address != b->address)
13850         return 0;
13851
13852       if (a->shlib_disabled != b->shlib_disabled)
13853         return 0;
13854
13855       if (a->enabled != b->enabled)
13856         return 0;
13857
13858       a = a->next;
13859       b = b->next;
13860     }
13861
13862   if ((a == NULL) != (b == NULL))
13863     return 0;
13864
13865   return 1;
13866 }
13867
13868 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13869    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13870    a ranged breakpoint.  */
13871
13872 void
13873 update_breakpoint_locations (struct breakpoint *b,
13874                              struct symtabs_and_lines sals,
13875                              struct symtabs_and_lines sals_end)
13876 {
13877   int i;
13878   struct bp_location *existing_locations = b->loc;
13879
13880   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13881     {
13882       /* Ranged breakpoints have only one start location and one end
13883          location.  */
13884       b->enable_state = bp_disabled;
13885       update_global_location_list (1);
13886       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13887                            "multiple locations found\n"),
13888                          b->number);
13889       return;
13890     }
13891
13892   /* If there's no new locations, and all existing locations are
13893      pending, don't do anything.  This optimizes the common case where
13894      all locations are in the same shared library, that was unloaded.
13895      We'd like to retain the location, so that when the library is
13896      loaded again, we don't loose the enabled/disabled status of the
13897      individual locations.  */
13898   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13899     return;
13900
13901   b->loc = NULL;
13902
13903   for (i = 0; i < sals.nelts; ++i)
13904     {
13905       struct bp_location *new_loc;
13906
13907       switch_to_program_space_and_thread (sals.sals[i].pspace);
13908
13909       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13910
13911       /* Reparse conditions, they might contain references to the
13912          old symtab.  */
13913       if (b->cond_string != NULL)
13914         {
13915           const char *s;
13916           volatile struct gdb_exception e;
13917
13918           s = b->cond_string;
13919           TRY_CATCH (e, RETURN_MASK_ERROR)
13920             {
13921               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13922                                            block_for_pc (sals.sals[i].pc), 
13923                                            0);
13924             }
13925           if (e.reason < 0)
13926             {
13927               warning (_("failed to reevaluate condition "
13928                          "for breakpoint %d: %s"), 
13929                        b->number, e.message);
13930               new_loc->enabled = 0;
13931             }
13932         }
13933
13934       if (sals_end.nelts)
13935         {
13936           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13937
13938           new_loc->length = end - sals.sals[0].pc + 1;
13939         }
13940     }
13941
13942   /* Update locations of permanent breakpoints.  */
13943   if (b->enable_state == bp_permanent)
13944     make_breakpoint_permanent (b);
13945
13946   /* If possible, carry over 'disable' status from existing
13947      breakpoints.  */
13948   {
13949     struct bp_location *e = existing_locations;
13950     /* If there are multiple breakpoints with the same function name,
13951        e.g. for inline functions, comparing function names won't work.
13952        Instead compare pc addresses; this is just a heuristic as things
13953        may have moved, but in practice it gives the correct answer
13954        often enough until a better solution is found.  */
13955     int have_ambiguous_names = ambiguous_names_p (b->loc);
13956
13957     for (; e; e = e->next)
13958       {
13959         if (!e->enabled && e->function_name)
13960           {
13961             struct bp_location *l = b->loc;
13962             if (have_ambiguous_names)
13963               {
13964                 for (; l; l = l->next)
13965                   if (breakpoint_locations_match (e, l))
13966                     {
13967                       l->enabled = 0;
13968                       break;
13969                     }
13970               }
13971             else
13972               {
13973                 for (; l; l = l->next)
13974                   if (l->function_name
13975                       && strcmp (e->function_name, l->function_name) == 0)
13976                     {
13977                       l->enabled = 0;
13978                       break;
13979                     }
13980               }
13981           }
13982       }
13983   }
13984
13985   if (!locations_are_equal (existing_locations, b->loc))
13986     observer_notify_breakpoint_modified (b);
13987
13988   update_global_location_list (1);
13989 }
13990
13991 /* Find the SaL locations corresponding to the given ADDR_STRING.
13992    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13993
13994 static struct symtabs_and_lines
13995 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13996 {
13997   char *s;
13998   struct symtabs_and_lines sals = {0};
13999   volatile struct gdb_exception e;
14000
14001   gdb_assert (b->ops != NULL);
14002   s = addr_string;
14003
14004   TRY_CATCH (e, RETURN_MASK_ERROR)
14005     {
14006       b->ops->decode_linespec (b, &s, &sals);
14007     }
14008   if (e.reason < 0)
14009     {
14010       int not_found_and_ok = 0;
14011       /* For pending breakpoints, it's expected that parsing will
14012          fail until the right shared library is loaded.  User has
14013          already told to create pending breakpoints and don't need
14014          extra messages.  If breakpoint is in bp_shlib_disabled
14015          state, then user already saw the message about that
14016          breakpoint being disabled, and don't want to see more
14017          errors.  */
14018       if (e.error == NOT_FOUND_ERROR
14019           && (b->condition_not_parsed 
14020               || (b->loc && b->loc->shlib_disabled)
14021               || (b->loc && b->loc->pspace->executing_startup)
14022               || b->enable_state == bp_disabled))
14023         not_found_and_ok = 1;
14024
14025       if (!not_found_and_ok)
14026         {
14027           /* We surely don't want to warn about the same breakpoint
14028              10 times.  One solution, implemented here, is disable
14029              the breakpoint on error.  Another solution would be to
14030              have separate 'warning emitted' flag.  Since this
14031              happens only when a binary has changed, I don't know
14032              which approach is better.  */
14033           b->enable_state = bp_disabled;
14034           throw_exception (e);
14035         }
14036     }
14037
14038   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14039     {
14040       int i;
14041
14042       for (i = 0; i < sals.nelts; ++i)
14043         resolve_sal_pc (&sals.sals[i]);
14044       if (b->condition_not_parsed && s && s[0])
14045         {
14046           char *cond_string, *extra_string;
14047           int thread, task;
14048
14049           find_condition_and_thread (s, sals.sals[0].pc,
14050                                      &cond_string, &thread, &task,
14051                                      &extra_string);
14052           if (cond_string)
14053             b->cond_string = cond_string;
14054           b->thread = thread;
14055           b->task = task;
14056           if (extra_string)
14057             b->extra_string = extra_string;
14058           b->condition_not_parsed = 0;
14059         }
14060
14061       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14062         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14063
14064       *found = 1;
14065     }
14066   else
14067     *found = 0;
14068
14069   return sals;
14070 }
14071
14072 /* The default re_set method, for typical hardware or software
14073    breakpoints.  Reevaluate the breakpoint and recreate its
14074    locations.  */
14075
14076 static void
14077 breakpoint_re_set_default (struct breakpoint *b)
14078 {
14079   int found;
14080   struct symtabs_and_lines sals, sals_end;
14081   struct symtabs_and_lines expanded = {0};
14082   struct symtabs_and_lines expanded_end = {0};
14083
14084   sals = addr_string_to_sals (b, b->addr_string, &found);
14085   if (found)
14086     {
14087       make_cleanup (xfree, sals.sals);
14088       expanded = sals;
14089     }
14090
14091   if (b->addr_string_range_end)
14092     {
14093       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14094       if (found)
14095         {
14096           make_cleanup (xfree, sals_end.sals);
14097           expanded_end = sals_end;
14098         }
14099     }
14100
14101   update_breakpoint_locations (b, expanded, expanded_end);
14102 }
14103
14104 /* Default method for creating SALs from an address string.  It basically
14105    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14106
14107 static void
14108 create_sals_from_address_default (char **arg,
14109                                   struct linespec_result *canonical,
14110                                   enum bptype type_wanted,
14111                                   char *addr_start, char **copy_arg)
14112 {
14113   parse_breakpoint_sals (arg, canonical);
14114 }
14115
14116 /* Call create_breakpoints_sal for the given arguments.  This is the default
14117    function for the `create_breakpoints_sal' method of
14118    breakpoint_ops.  */
14119
14120 static void
14121 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14122                                 struct linespec_result *canonical,
14123                                 struct linespec_sals *lsal,
14124                                 char *cond_string,
14125                                 char *extra_string,
14126                                 enum bptype type_wanted,
14127                                 enum bpdisp disposition,
14128                                 int thread,
14129                                 int task, int ignore_count,
14130                                 const struct breakpoint_ops *ops,
14131                                 int from_tty, int enabled,
14132                                 int internal, unsigned flags)
14133 {
14134   create_breakpoints_sal (gdbarch, canonical, cond_string,
14135                           extra_string,
14136                           type_wanted, disposition,
14137                           thread, task, ignore_count, ops, from_tty,
14138                           enabled, internal, flags);
14139 }
14140
14141 /* Decode the line represented by S by calling decode_line_full.  This is the
14142    default function for the `decode_linespec' method of breakpoint_ops.  */
14143
14144 static void
14145 decode_linespec_default (struct breakpoint *b, char **s,
14146                          struct symtabs_and_lines *sals)
14147 {
14148   struct linespec_result canonical;
14149
14150   init_linespec_result (&canonical);
14151   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14152                     (struct symtab *) NULL, 0,
14153                     &canonical, multiple_symbols_all,
14154                     b->filter);
14155
14156   /* We should get 0 or 1 resulting SALs.  */
14157   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14158
14159   if (VEC_length (linespec_sals, canonical.sals) > 0)
14160     {
14161       struct linespec_sals *lsal;
14162
14163       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14164       *sals = lsal->sals;
14165       /* Arrange it so the destructor does not free the
14166          contents.  */
14167       lsal->sals.sals = NULL;
14168     }
14169
14170   destroy_linespec_result (&canonical);
14171 }
14172
14173 /* Prepare the global context for a re-set of breakpoint B.  */
14174
14175 static struct cleanup *
14176 prepare_re_set_context (struct breakpoint *b)
14177 {
14178   struct cleanup *cleanups;
14179
14180   input_radix = b->input_radix;
14181   cleanups = save_current_space_and_thread ();
14182   if (b->pspace != NULL)
14183     switch_to_program_space_and_thread (b->pspace);
14184   set_language (b->language);
14185
14186   return cleanups;
14187 }
14188
14189 /* Reset a breakpoint given it's struct breakpoint * BINT.
14190    The value we return ends up being the return value from catch_errors.
14191    Unused in this case.  */
14192
14193 static int
14194 breakpoint_re_set_one (void *bint)
14195 {
14196   /* Get past catch_errs.  */
14197   struct breakpoint *b = (struct breakpoint *) bint;
14198   struct cleanup *cleanups;
14199
14200   cleanups = prepare_re_set_context (b);
14201   b->ops->re_set (b);
14202   do_cleanups (cleanups);
14203   return 0;
14204 }
14205
14206 /* Re-set all breakpoints after symbols have been re-loaded.  */
14207 void
14208 breakpoint_re_set (void)
14209 {
14210   struct breakpoint *b, *b_tmp;
14211   enum language save_language;
14212   int save_input_radix;
14213   struct cleanup *old_chain;
14214
14215   save_language = current_language->la_language;
14216   save_input_radix = input_radix;
14217   old_chain = save_current_program_space ();
14218
14219   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14220   {
14221     /* Format possible error msg.  */
14222     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14223                                 b->number);
14224     struct cleanup *cleanups = make_cleanup (xfree, message);
14225     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14226     do_cleanups (cleanups);
14227   }
14228   set_language (save_language);
14229   input_radix = save_input_radix;
14230
14231   jit_breakpoint_re_set ();
14232
14233   do_cleanups (old_chain);
14234
14235   create_overlay_event_breakpoint ();
14236   create_longjmp_master_breakpoint ();
14237   create_std_terminate_master_breakpoint ();
14238   create_exception_master_breakpoint ();
14239 }
14240 \f
14241 /* Reset the thread number of this breakpoint:
14242
14243    - If the breakpoint is for all threads, leave it as-is.
14244    - Else, reset it to the current thread for inferior_ptid.  */
14245 void
14246 breakpoint_re_set_thread (struct breakpoint *b)
14247 {
14248   if (b->thread != -1)
14249     {
14250       if (in_thread_list (inferior_ptid))
14251         b->thread = pid_to_thread_id (inferior_ptid);
14252
14253       /* We're being called after following a fork.  The new fork is
14254          selected as current, and unless this was a vfork will have a
14255          different program space from the original thread.  Reset that
14256          as well.  */
14257       b->loc->pspace = current_program_space;
14258     }
14259 }
14260
14261 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14262    If from_tty is nonzero, it prints a message to that effect,
14263    which ends with a period (no newline).  */
14264
14265 void
14266 set_ignore_count (int bptnum, int count, int from_tty)
14267 {
14268   struct breakpoint *b;
14269
14270   if (count < 0)
14271     count = 0;
14272
14273   ALL_BREAKPOINTS (b)
14274     if (b->number == bptnum)
14275     {
14276       if (is_tracepoint (b))
14277         {
14278           if (from_tty && count != 0)
14279             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14280                              bptnum);
14281           return;
14282         }
14283       
14284       b->ignore_count = count;
14285       if (from_tty)
14286         {
14287           if (count == 0)
14288             printf_filtered (_("Will stop next time "
14289                                "breakpoint %d is reached."),
14290                              bptnum);
14291           else if (count == 1)
14292             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14293                              bptnum);
14294           else
14295             printf_filtered (_("Will ignore next %d "
14296                                "crossings of breakpoint %d."),
14297                              count, bptnum);
14298         }
14299       observer_notify_breakpoint_modified (b);
14300       return;
14301     }
14302
14303   error (_("No breakpoint number %d."), bptnum);
14304 }
14305
14306 /* Command to set ignore-count of breakpoint N to COUNT.  */
14307
14308 static void
14309 ignore_command (char *args, int from_tty)
14310 {
14311   char *p = args;
14312   int num;
14313
14314   if (p == 0)
14315     error_no_arg (_("a breakpoint number"));
14316
14317   num = get_number (&p);
14318   if (num == 0)
14319     error (_("bad breakpoint number: '%s'"), args);
14320   if (*p == 0)
14321     error (_("Second argument (specified ignore-count) is missing."));
14322
14323   set_ignore_count (num,
14324                     longest_to_int (value_as_long (parse_and_eval (p))),
14325                     from_tty);
14326   if (from_tty)
14327     printf_filtered ("\n");
14328 }
14329 \f
14330 /* Call FUNCTION on each of the breakpoints
14331    whose numbers are given in ARGS.  */
14332
14333 static void
14334 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14335                                                       void *),
14336                         void *data)
14337 {
14338   int num;
14339   struct breakpoint *b, *tmp;
14340   int match;
14341   struct get_number_or_range_state state;
14342
14343   if (args == 0)
14344     error_no_arg (_("one or more breakpoint numbers"));
14345
14346   init_number_or_range (&state, args);
14347
14348   while (!state.finished)
14349     {
14350       char *p = state.string;
14351
14352       match = 0;
14353
14354       num = get_number_or_range (&state);
14355       if (num == 0)
14356         {
14357           warning (_("bad breakpoint number at or near '%s'"), p);
14358         }
14359       else
14360         {
14361           ALL_BREAKPOINTS_SAFE (b, tmp)
14362             if (b->number == num)
14363               {
14364                 match = 1;
14365                 function (b, data);
14366                 break;
14367               }
14368           if (match == 0)
14369             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14370         }
14371     }
14372 }
14373
14374 static struct bp_location *
14375 find_location_by_number (char *number)
14376 {
14377   char *dot = strchr (number, '.');
14378   char *p1;
14379   int bp_num;
14380   int loc_num;
14381   struct breakpoint *b;
14382   struct bp_location *loc;  
14383
14384   *dot = '\0';
14385
14386   p1 = number;
14387   bp_num = get_number (&p1);
14388   if (bp_num == 0)
14389     error (_("Bad breakpoint number '%s'"), number);
14390
14391   ALL_BREAKPOINTS (b)
14392     if (b->number == bp_num)
14393       {
14394         break;
14395       }
14396
14397   if (!b || b->number != bp_num)
14398     error (_("Bad breakpoint number '%s'"), number);
14399   
14400   p1 = dot+1;
14401   loc_num = get_number (&p1);
14402   if (loc_num == 0)
14403     error (_("Bad breakpoint location number '%s'"), number);
14404
14405   --loc_num;
14406   loc = b->loc;
14407   for (;loc_num && loc; --loc_num, loc = loc->next)
14408     ;
14409   if (!loc)
14410     error (_("Bad breakpoint location number '%s'"), dot+1);
14411     
14412   return loc;  
14413 }
14414
14415
14416 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14417    If from_tty is nonzero, it prints a message to that effect,
14418    which ends with a period (no newline).  */
14419
14420 void
14421 disable_breakpoint (struct breakpoint *bpt)
14422 {
14423   /* Never disable a watchpoint scope breakpoint; we want to
14424      hit them when we leave scope so we can delete both the
14425      watchpoint and its scope breakpoint at that time.  */
14426   if (bpt->type == bp_watchpoint_scope)
14427     return;
14428
14429   /* You can't disable permanent breakpoints.  */
14430   if (bpt->enable_state == bp_permanent)
14431     return;
14432
14433   bpt->enable_state = bp_disabled;
14434
14435   /* Mark breakpoint locations modified.  */
14436   mark_breakpoint_modified (bpt);
14437
14438   if (target_supports_enable_disable_tracepoint ()
14439       && current_trace_status ()->running && is_tracepoint (bpt))
14440     {
14441       struct bp_location *location;
14442      
14443       for (location = bpt->loc; location; location = location->next)
14444         target_disable_tracepoint (location);
14445     }
14446
14447   update_global_location_list (0);
14448
14449   observer_notify_breakpoint_modified (bpt);
14450 }
14451
14452 /* A callback for iterate_over_related_breakpoints.  */
14453
14454 static void
14455 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14456 {
14457   disable_breakpoint (b);
14458 }
14459
14460 /* A callback for map_breakpoint_numbers that calls
14461    disable_breakpoint.  */
14462
14463 static void
14464 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14465 {
14466   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14467 }
14468
14469 static void
14470 disable_command (char *args, int from_tty)
14471 {
14472   if (args == 0)
14473     {
14474       struct breakpoint *bpt;
14475
14476       ALL_BREAKPOINTS (bpt)
14477         if (user_breakpoint_p (bpt))
14478           disable_breakpoint (bpt);
14479     }
14480   else if (strchr (args, '.'))
14481     {
14482       struct bp_location *loc = find_location_by_number (args);
14483       if (loc)
14484         {
14485           if (loc->enabled)
14486             {
14487               loc->enabled = 0;
14488               mark_breakpoint_location_modified (loc);
14489             }
14490           if (target_supports_enable_disable_tracepoint ()
14491               && current_trace_status ()->running && loc->owner
14492               && is_tracepoint (loc->owner))
14493             target_disable_tracepoint (loc);
14494         }
14495       update_global_location_list (0);
14496     }
14497   else
14498     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14499 }
14500
14501 static void
14502 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14503                         int count)
14504 {
14505   int target_resources_ok;
14506
14507   if (bpt->type == bp_hardware_breakpoint)
14508     {
14509       int i;
14510       i = hw_breakpoint_used_count ();
14511       target_resources_ok = 
14512         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14513                                             i + 1, 0);
14514       if (target_resources_ok == 0)
14515         error (_("No hardware breakpoint support in the target."));
14516       else if (target_resources_ok < 0)
14517         error (_("Hardware breakpoints used exceeds limit."));
14518     }
14519
14520   if (is_watchpoint (bpt))
14521     {
14522       /* Initialize it just to avoid a GCC false warning.  */
14523       enum enable_state orig_enable_state = 0;
14524       volatile struct gdb_exception e;
14525
14526       TRY_CATCH (e, RETURN_MASK_ALL)
14527         {
14528           struct watchpoint *w = (struct watchpoint *) bpt;
14529
14530           orig_enable_state = bpt->enable_state;
14531           bpt->enable_state = bp_enabled;
14532           update_watchpoint (w, 1 /* reparse */);
14533         }
14534       if (e.reason < 0)
14535         {
14536           bpt->enable_state = orig_enable_state;
14537           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14538                              bpt->number);
14539           return;
14540         }
14541     }
14542
14543   if (bpt->enable_state != bp_permanent)
14544     bpt->enable_state = bp_enabled;
14545
14546   bpt->enable_state = bp_enabled;
14547
14548   /* Mark breakpoint locations modified.  */
14549   mark_breakpoint_modified (bpt);
14550
14551   if (target_supports_enable_disable_tracepoint ()
14552       && current_trace_status ()->running && is_tracepoint (bpt))
14553     {
14554       struct bp_location *location;
14555
14556       for (location = bpt->loc; location; location = location->next)
14557         target_enable_tracepoint (location);
14558     }
14559
14560   bpt->disposition = disposition;
14561   bpt->enable_count = count;
14562   update_global_location_list (1);
14563
14564   observer_notify_breakpoint_modified (bpt);
14565 }
14566
14567
14568 void
14569 enable_breakpoint (struct breakpoint *bpt)
14570 {
14571   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14572 }
14573
14574 static void
14575 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14576 {
14577   enable_breakpoint (bpt);
14578 }
14579
14580 /* A callback for map_breakpoint_numbers that calls
14581    enable_breakpoint.  */
14582
14583 static void
14584 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14585 {
14586   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14587 }
14588
14589 /* The enable command enables the specified breakpoints (or all defined
14590    breakpoints) so they once again become (or continue to be) effective
14591    in stopping the inferior.  */
14592
14593 static void
14594 enable_command (char *args, int from_tty)
14595 {
14596   if (args == 0)
14597     {
14598       struct breakpoint *bpt;
14599
14600       ALL_BREAKPOINTS (bpt)
14601         if (user_breakpoint_p (bpt))
14602           enable_breakpoint (bpt);
14603     }
14604   else if (strchr (args, '.'))
14605     {
14606       struct bp_location *loc = find_location_by_number (args);
14607       if (loc)
14608         {
14609           if (!loc->enabled)
14610             {
14611               loc->enabled = 1;
14612               mark_breakpoint_location_modified (loc);
14613             }
14614           if (target_supports_enable_disable_tracepoint ()
14615               && current_trace_status ()->running && loc->owner
14616               && is_tracepoint (loc->owner))
14617             target_enable_tracepoint (loc);
14618         }
14619       update_global_location_list (1);
14620     }
14621   else
14622     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14623 }
14624
14625 /* This struct packages up disposition data for application to multiple
14626    breakpoints.  */
14627
14628 struct disp_data
14629 {
14630   enum bpdisp disp;
14631   int count;
14632 };
14633
14634 static void
14635 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14636 {
14637   struct disp_data disp_data = *(struct disp_data *) arg;
14638
14639   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14640 }
14641
14642 static void
14643 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14644 {
14645   struct disp_data disp = { disp_disable, 1 };
14646
14647   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14648 }
14649
14650 static void
14651 enable_once_command (char *args, int from_tty)
14652 {
14653   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14654 }
14655
14656 static void
14657 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14658 {
14659   struct disp_data disp = { disp_disable, *(int *) countptr };
14660
14661   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14662 }
14663
14664 static void
14665 enable_count_command (char *args, int from_tty)
14666 {
14667   int count = get_number (&args);
14668
14669   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14670 }
14671
14672 static void
14673 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14674 {
14675   struct disp_data disp = { disp_del, 1 };
14676
14677   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14678 }
14679
14680 static void
14681 enable_delete_command (char *args, int from_tty)
14682 {
14683   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14684 }
14685 \f
14686 static void
14687 set_breakpoint_cmd (char *args, int from_tty)
14688 {
14689 }
14690
14691 static void
14692 show_breakpoint_cmd (char *args, int from_tty)
14693 {
14694 }
14695
14696 /* Invalidate last known value of any hardware watchpoint if
14697    the memory which that value represents has been written to by
14698    GDB itself.  */
14699
14700 static void
14701 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14702                                       CORE_ADDR addr, ssize_t len,
14703                                       const bfd_byte *data)
14704 {
14705   struct breakpoint *bp;
14706
14707   ALL_BREAKPOINTS (bp)
14708     if (bp->enable_state == bp_enabled
14709         && bp->type == bp_hardware_watchpoint)
14710       {
14711         struct watchpoint *wp = (struct watchpoint *) bp;
14712
14713         if (wp->val_valid && wp->val)
14714           {
14715             struct bp_location *loc;
14716
14717             for (loc = bp->loc; loc != NULL; loc = loc->next)
14718               if (loc->loc_type == bp_loc_hardware_watchpoint
14719                   && loc->address + loc->length > addr
14720                   && addr + len > loc->address)
14721                 {
14722                   value_free (wp->val);
14723                   wp->val = NULL;
14724                   wp->val_valid = 0;
14725                 }
14726           }
14727       }
14728 }
14729
14730 /* Create and insert a raw software breakpoint at PC.  Return an
14731    identifier, which should be used to remove the breakpoint later.
14732    In general, places which call this should be using something on the
14733    breakpoint chain instead; this function should be eliminated
14734    someday.  */
14735
14736 void *
14737 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14738                                   struct address_space *aspace, CORE_ADDR pc)
14739 {
14740   struct bp_target_info *bp_tgt;
14741
14742   bp_tgt = XZALLOC (struct bp_target_info);
14743
14744   bp_tgt->placed_address_space = aspace;
14745   bp_tgt->placed_address = pc;
14746
14747   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14748     {
14749       /* Could not insert the breakpoint.  */
14750       xfree (bp_tgt);
14751       return NULL;
14752     }
14753
14754   return bp_tgt;
14755 }
14756
14757 /* Remove a breakpoint BP inserted by
14758    deprecated_insert_raw_breakpoint.  */
14759
14760 int
14761 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14762 {
14763   struct bp_target_info *bp_tgt = bp;
14764   int ret;
14765
14766   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14767   xfree (bp_tgt);
14768
14769   return ret;
14770 }
14771
14772 /* One (or perhaps two) breakpoints used for software single
14773    stepping.  */
14774
14775 static void *single_step_breakpoints[2];
14776 static struct gdbarch *single_step_gdbarch[2];
14777
14778 /* Create and insert a breakpoint for software single step.  */
14779
14780 void
14781 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14782                                struct address_space *aspace, 
14783                                CORE_ADDR next_pc)
14784 {
14785   void **bpt_p;
14786
14787   if (single_step_breakpoints[0] == NULL)
14788     {
14789       bpt_p = &single_step_breakpoints[0];
14790       single_step_gdbarch[0] = gdbarch;
14791     }
14792   else
14793     {
14794       gdb_assert (single_step_breakpoints[1] == NULL);
14795       bpt_p = &single_step_breakpoints[1];
14796       single_step_gdbarch[1] = gdbarch;
14797     }
14798
14799   /* NOTE drow/2006-04-11: A future improvement to this function would
14800      be to only create the breakpoints once, and actually put them on
14801      the breakpoint chain.  That would let us use set_raw_breakpoint.
14802      We could adjust the addresses each time they were needed.  Doing
14803      this requires corresponding changes elsewhere where single step
14804      breakpoints are handled, however.  So, for now, we use this.  */
14805
14806   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14807   if (*bpt_p == NULL)
14808     error (_("Could not insert single-step breakpoint at %s"),
14809              paddress (gdbarch, next_pc));
14810 }
14811
14812 /* Check if the breakpoints used for software single stepping
14813    were inserted or not.  */
14814
14815 int
14816 single_step_breakpoints_inserted (void)
14817 {
14818   return (single_step_breakpoints[0] != NULL
14819           || single_step_breakpoints[1] != NULL);
14820 }
14821
14822 /* Remove and delete any breakpoints used for software single step.  */
14823
14824 void
14825 remove_single_step_breakpoints (void)
14826 {
14827   gdb_assert (single_step_breakpoints[0] != NULL);
14828
14829   /* See insert_single_step_breakpoint for more about this deprecated
14830      call.  */
14831   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14832                                     single_step_breakpoints[0]);
14833   single_step_gdbarch[0] = NULL;
14834   single_step_breakpoints[0] = NULL;
14835
14836   if (single_step_breakpoints[1] != NULL)
14837     {
14838       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14839                                         single_step_breakpoints[1]);
14840       single_step_gdbarch[1] = NULL;
14841       single_step_breakpoints[1] = NULL;
14842     }
14843 }
14844
14845 /* Delete software single step breakpoints without removing them from
14846    the inferior.  This is intended to be used if the inferior's address
14847    space where they were inserted is already gone, e.g. after exit or
14848    exec.  */
14849
14850 void
14851 cancel_single_step_breakpoints (void)
14852 {
14853   int i;
14854
14855   for (i = 0; i < 2; i++)
14856     if (single_step_breakpoints[i])
14857       {
14858         xfree (single_step_breakpoints[i]);
14859         single_step_breakpoints[i] = NULL;
14860         single_step_gdbarch[i] = NULL;
14861       }
14862 }
14863
14864 /* Detach software single-step breakpoints from INFERIOR_PTID without
14865    removing them.  */
14866
14867 static void
14868 detach_single_step_breakpoints (void)
14869 {
14870   int i;
14871
14872   for (i = 0; i < 2; i++)
14873     if (single_step_breakpoints[i])
14874       target_remove_breakpoint (single_step_gdbarch[i],
14875                                 single_step_breakpoints[i]);
14876 }
14877
14878 /* Check whether a software single-step breakpoint is inserted at
14879    PC.  */
14880
14881 static int
14882 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14883                                         CORE_ADDR pc)
14884 {
14885   int i;
14886
14887   for (i = 0; i < 2; i++)
14888     {
14889       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14890       if (bp_tgt
14891           && breakpoint_address_match (bp_tgt->placed_address_space,
14892                                        bp_tgt->placed_address,
14893                                        aspace, pc))
14894         return 1;
14895     }
14896
14897   return 0;
14898 }
14899
14900 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14901    non-zero otherwise.  */
14902 static int
14903 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14904 {
14905   if (syscall_catchpoint_p (bp)
14906       && bp->enable_state != bp_disabled
14907       && bp->enable_state != bp_call_disabled)
14908     return 1;
14909   else
14910     return 0;
14911 }
14912
14913 int
14914 catch_syscall_enabled (void)
14915 {
14916   struct catch_syscall_inferior_data *inf_data
14917     = get_catch_syscall_inferior_data (current_inferior ());
14918
14919   return inf_data->total_syscalls_count != 0;
14920 }
14921
14922 int
14923 catching_syscall_number (int syscall_number)
14924 {
14925   struct breakpoint *bp;
14926
14927   ALL_BREAKPOINTS (bp)
14928     if (is_syscall_catchpoint_enabled (bp))
14929       {
14930         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14931
14932         if (c->syscalls_to_be_caught)
14933           {
14934             int i, iter;
14935             for (i = 0;
14936                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14937                  i++)
14938               if (syscall_number == iter)
14939                 return 1;
14940           }
14941         else
14942           return 1;
14943       }
14944
14945   return 0;
14946 }
14947
14948 /* Complete syscall names.  Used by "catch syscall".  */
14949 static VEC (char_ptr) *
14950 catch_syscall_completer (struct cmd_list_element *cmd,
14951                          const char *text, const char *word)
14952 {
14953   const char **list = get_syscall_names ();
14954   VEC (char_ptr) *retlist
14955     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
14956
14957   xfree (list);
14958   return retlist;
14959 }
14960
14961 /* Tracepoint-specific operations.  */
14962
14963 /* Set tracepoint count to NUM.  */
14964 static void
14965 set_tracepoint_count (int num)
14966 {
14967   tracepoint_count = num;
14968   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14969 }
14970
14971 static void
14972 trace_command (char *arg, int from_tty)
14973 {
14974   struct breakpoint_ops *ops;
14975   const char *arg_cp = arg;
14976
14977   if (arg && probe_linespec_to_ops (&arg_cp))
14978     ops = &tracepoint_probe_breakpoint_ops;
14979   else
14980     ops = &tracepoint_breakpoint_ops;
14981
14982   create_breakpoint (get_current_arch (),
14983                      arg,
14984                      NULL, 0, NULL, 1 /* parse arg */,
14985                      0 /* tempflag */,
14986                      bp_tracepoint /* type_wanted */,
14987                      0 /* Ignore count */,
14988                      pending_break_support,
14989                      ops,
14990                      from_tty,
14991                      1 /* enabled */,
14992                      0 /* internal */, 0);
14993 }
14994
14995 static void
14996 ftrace_command (char *arg, int from_tty)
14997 {
14998   create_breakpoint (get_current_arch (),
14999                      arg,
15000                      NULL, 0, NULL, 1 /* parse arg */,
15001                      0 /* tempflag */,
15002                      bp_fast_tracepoint /* type_wanted */,
15003                      0 /* Ignore count */,
15004                      pending_break_support,
15005                      &tracepoint_breakpoint_ops,
15006                      from_tty,
15007                      1 /* enabled */,
15008                      0 /* internal */, 0);
15009 }
15010
15011 /* strace command implementation.  Creates a static tracepoint.  */
15012
15013 static void
15014 strace_command (char *arg, int from_tty)
15015 {
15016   struct breakpoint_ops *ops;
15017
15018   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15019      or with a normal static tracepoint.  */
15020   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15021     ops = &strace_marker_breakpoint_ops;
15022   else
15023     ops = &tracepoint_breakpoint_ops;
15024
15025   create_breakpoint (get_current_arch (),
15026                      arg,
15027                      NULL, 0, NULL, 1 /* parse arg */,
15028                      0 /* tempflag */,
15029                      bp_static_tracepoint /* type_wanted */,
15030                      0 /* Ignore count */,
15031                      pending_break_support,
15032                      ops,
15033                      from_tty,
15034                      1 /* enabled */,
15035                      0 /* internal */, 0);
15036 }
15037
15038 /* Set up a fake reader function that gets command lines from a linked
15039    list that was acquired during tracepoint uploading.  */
15040
15041 static struct uploaded_tp *this_utp;
15042 static int next_cmd;
15043
15044 static char *
15045 read_uploaded_action (void)
15046 {
15047   char *rslt;
15048
15049   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15050
15051   next_cmd++;
15052
15053   return rslt;
15054 }
15055
15056 /* Given information about a tracepoint as recorded on a target (which
15057    can be either a live system or a trace file), attempt to create an
15058    equivalent GDB tracepoint.  This is not a reliable process, since
15059    the target does not necessarily have all the information used when
15060    the tracepoint was originally defined.  */
15061   
15062 struct tracepoint *
15063 create_tracepoint_from_upload (struct uploaded_tp *utp)
15064 {
15065   char *addr_str, small_buf[100];
15066   struct tracepoint *tp;
15067
15068   if (utp->at_string)
15069     addr_str = utp->at_string;
15070   else
15071     {
15072       /* In the absence of a source location, fall back to raw
15073          address.  Since there is no way to confirm that the address
15074          means the same thing as when the trace was started, warn the
15075          user.  */
15076       warning (_("Uploaded tracepoint %d has no "
15077                  "source location, using raw address"),
15078                utp->number);
15079       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15080       addr_str = small_buf;
15081     }
15082
15083   /* There's not much we can do with a sequence of bytecodes.  */
15084   if (utp->cond && !utp->cond_string)
15085     warning (_("Uploaded tracepoint %d condition "
15086                "has no source form, ignoring it"),
15087              utp->number);
15088
15089   if (!create_breakpoint (get_current_arch (),
15090                           addr_str,
15091                           utp->cond_string, -1, NULL,
15092                           0 /* parse cond/thread */,
15093                           0 /* tempflag */,
15094                           utp->type /* type_wanted */,
15095                           0 /* Ignore count */,
15096                           pending_break_support,
15097                           &tracepoint_breakpoint_ops,
15098                           0 /* from_tty */,
15099                           utp->enabled /* enabled */,
15100                           0 /* internal */,
15101                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15102     return NULL;
15103
15104   /* Get the tracepoint we just created.  */
15105   tp = get_tracepoint (tracepoint_count);
15106   gdb_assert (tp != NULL);
15107
15108   if (utp->pass > 0)
15109     {
15110       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15111                  tp->base.number);
15112
15113       trace_pass_command (small_buf, 0);
15114     }
15115
15116   /* If we have uploaded versions of the original commands, set up a
15117      special-purpose "reader" function and call the usual command line
15118      reader, then pass the result to the breakpoint command-setting
15119      function.  */
15120   if (!VEC_empty (char_ptr, utp->cmd_strings))
15121     {
15122       struct command_line *cmd_list;
15123
15124       this_utp = utp;
15125       next_cmd = 0;
15126
15127       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15128
15129       breakpoint_set_commands (&tp->base, cmd_list);
15130     }
15131   else if (!VEC_empty (char_ptr, utp->actions)
15132            || !VEC_empty (char_ptr, utp->step_actions))
15133     warning (_("Uploaded tracepoint %d actions "
15134                "have no source form, ignoring them"),
15135              utp->number);
15136
15137   /* Copy any status information that might be available.  */
15138   tp->base.hit_count = utp->hit_count;
15139   tp->traceframe_usage = utp->traceframe_usage;
15140
15141   return tp;
15142 }
15143   
15144 /* Print information on tracepoint number TPNUM_EXP, or all if
15145    omitted.  */
15146
15147 static void
15148 tracepoints_info (char *args, int from_tty)
15149 {
15150   struct ui_out *uiout = current_uiout;
15151   int num_printed;
15152
15153   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15154
15155   if (num_printed == 0)
15156     {
15157       if (args == NULL || *args == '\0')
15158         ui_out_message (uiout, 0, "No tracepoints.\n");
15159       else
15160         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15161     }
15162
15163   default_collect_info ();
15164 }
15165
15166 /* The 'enable trace' command enables tracepoints.
15167    Not supported by all targets.  */
15168 static void
15169 enable_trace_command (char *args, int from_tty)
15170 {
15171   enable_command (args, from_tty);
15172 }
15173
15174 /* The 'disable trace' command disables tracepoints.
15175    Not supported by all targets.  */
15176 static void
15177 disable_trace_command (char *args, int from_tty)
15178 {
15179   disable_command (args, from_tty);
15180 }
15181
15182 /* Remove a tracepoint (or all if no argument).  */
15183 static void
15184 delete_trace_command (char *arg, int from_tty)
15185 {
15186   struct breakpoint *b, *b_tmp;
15187
15188   dont_repeat ();
15189
15190   if (arg == 0)
15191     {
15192       int breaks_to_delete = 0;
15193
15194       /* Delete all breakpoints if no argument.
15195          Do not delete internal or call-dummy breakpoints, these
15196          have to be deleted with an explicit breakpoint number 
15197          argument.  */
15198       ALL_TRACEPOINTS (b)
15199         if (is_tracepoint (b) && user_breakpoint_p (b))
15200           {
15201             breaks_to_delete = 1;
15202             break;
15203           }
15204
15205       /* Ask user only if there are some breakpoints to delete.  */
15206       if (!from_tty
15207           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15208         {
15209           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15210             if (is_tracepoint (b) && user_breakpoint_p (b))
15211               delete_breakpoint (b);
15212         }
15213     }
15214   else
15215     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15216 }
15217
15218 /* Helper function for trace_pass_command.  */
15219
15220 static void
15221 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15222 {
15223   tp->pass_count = count;
15224   observer_notify_breakpoint_modified (&tp->base);
15225   if (from_tty)
15226     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15227                      tp->base.number, count);
15228 }
15229
15230 /* Set passcount for tracepoint.
15231
15232    First command argument is passcount, second is tracepoint number.
15233    If tracepoint number omitted, apply to most recently defined.
15234    Also accepts special argument "all".  */
15235
15236 static void
15237 trace_pass_command (char *args, int from_tty)
15238 {
15239   struct tracepoint *t1;
15240   unsigned int count;
15241
15242   if (args == 0 || *args == 0)
15243     error (_("passcount command requires an "
15244              "argument (count + optional TP num)"));
15245
15246   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15247
15248   args = skip_spaces (args);
15249   if (*args && strncasecmp (args, "all", 3) == 0)
15250     {
15251       struct breakpoint *b;
15252
15253       args += 3;                        /* Skip special argument "all".  */
15254       if (*args)
15255         error (_("Junk at end of arguments."));
15256
15257       ALL_TRACEPOINTS (b)
15258       {
15259         t1 = (struct tracepoint *) b;
15260         trace_pass_set_count (t1, count, from_tty);
15261       }
15262     }
15263   else if (*args == '\0')
15264     {
15265       t1 = get_tracepoint_by_number (&args, NULL, 1);
15266       if (t1)
15267         trace_pass_set_count (t1, count, from_tty);
15268     }
15269   else
15270     {
15271       struct get_number_or_range_state state;
15272
15273       init_number_or_range (&state, args);
15274       while (!state.finished)
15275         {
15276           t1 = get_tracepoint_by_number (&args, &state, 1);
15277           if (t1)
15278             trace_pass_set_count (t1, count, from_tty);
15279         }
15280     }
15281 }
15282
15283 struct tracepoint *
15284 get_tracepoint (int num)
15285 {
15286   struct breakpoint *t;
15287
15288   ALL_TRACEPOINTS (t)
15289     if (t->number == num)
15290       return (struct tracepoint *) t;
15291
15292   return NULL;
15293 }
15294
15295 /* Find the tracepoint with the given target-side number (which may be
15296    different from the tracepoint number after disconnecting and
15297    reconnecting).  */
15298
15299 struct tracepoint *
15300 get_tracepoint_by_number_on_target (int num)
15301 {
15302   struct breakpoint *b;
15303
15304   ALL_TRACEPOINTS (b)
15305     {
15306       struct tracepoint *t = (struct tracepoint *) b;
15307
15308       if (t->number_on_target == num)
15309         return t;
15310     }
15311
15312   return NULL;
15313 }
15314
15315 /* Utility: parse a tracepoint number and look it up in the list.
15316    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15317    If OPTIONAL_P is true, then if the argument is missing, the most
15318    recent tracepoint (tracepoint_count) is returned.  */
15319 struct tracepoint *
15320 get_tracepoint_by_number (char **arg,
15321                           struct get_number_or_range_state *state,
15322                           int optional_p)
15323 {
15324   struct breakpoint *t;
15325   int tpnum;
15326   char *instring = arg == NULL ? NULL : *arg;
15327
15328   if (state)
15329     {
15330       gdb_assert (!state->finished);
15331       tpnum = get_number_or_range (state);
15332     }
15333   else if (arg == NULL || *arg == NULL || ! **arg)
15334     {
15335       if (optional_p)
15336         tpnum = tracepoint_count;
15337       else
15338         error_no_arg (_("tracepoint number"));
15339     }
15340   else
15341     tpnum = get_number (arg);
15342
15343   if (tpnum <= 0)
15344     {
15345       if (instring && *instring)
15346         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15347                          instring);
15348       else
15349         printf_filtered (_("Tracepoint argument missing "
15350                            "and no previous tracepoint\n"));
15351       return NULL;
15352     }
15353
15354   ALL_TRACEPOINTS (t)
15355     if (t->number == tpnum)
15356     {
15357       return (struct tracepoint *) t;
15358     }
15359
15360   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15361   return NULL;
15362 }
15363
15364 void
15365 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15366 {
15367   if (b->thread != -1)
15368     fprintf_unfiltered (fp, " thread %d", b->thread);
15369
15370   if (b->task != 0)
15371     fprintf_unfiltered (fp, " task %d", b->task);
15372
15373   fprintf_unfiltered (fp, "\n");
15374 }
15375
15376 /* Save information on user settable breakpoints (watchpoints, etc) to
15377    a new script file named FILENAME.  If FILTER is non-NULL, call it
15378    on each breakpoint and only include the ones for which it returns
15379    non-zero.  */
15380
15381 static void
15382 save_breakpoints (char *filename, int from_tty,
15383                   int (*filter) (const struct breakpoint *))
15384 {
15385   struct breakpoint *tp;
15386   int any = 0;
15387   char *pathname;
15388   struct cleanup *cleanup;
15389   struct ui_file *fp;
15390   int extra_trace_bits = 0;
15391
15392   if (filename == 0 || *filename == 0)
15393     error (_("Argument required (file name in which to save)"));
15394
15395   /* See if we have anything to save.  */
15396   ALL_BREAKPOINTS (tp)
15397   {
15398     /* Skip internal and momentary breakpoints.  */
15399     if (!user_breakpoint_p (tp))
15400       continue;
15401
15402     /* If we have a filter, only save the breakpoints it accepts.  */
15403     if (filter && !filter (tp))
15404       continue;
15405
15406     any = 1;
15407
15408     if (is_tracepoint (tp))
15409       {
15410         extra_trace_bits = 1;
15411
15412         /* We can stop searching.  */
15413         break;
15414       }
15415   }
15416
15417   if (!any)
15418     {
15419       warning (_("Nothing to save."));
15420       return;
15421     }
15422
15423   pathname = tilde_expand (filename);
15424   cleanup = make_cleanup (xfree, pathname);
15425   fp = gdb_fopen (pathname, "w");
15426   if (!fp)
15427     error (_("Unable to open file '%s' for saving (%s)"),
15428            filename, safe_strerror (errno));
15429   make_cleanup_ui_file_delete (fp);
15430
15431   if (extra_trace_bits)
15432     save_trace_state_variables (fp);
15433
15434   ALL_BREAKPOINTS (tp)
15435   {
15436     /* Skip internal and momentary breakpoints.  */
15437     if (!user_breakpoint_p (tp))
15438       continue;
15439
15440     /* If we have a filter, only save the breakpoints it accepts.  */
15441     if (filter && !filter (tp))
15442       continue;
15443
15444     tp->ops->print_recreate (tp, fp);
15445
15446     /* Note, we can't rely on tp->number for anything, as we can't
15447        assume the recreated breakpoint numbers will match.  Use $bpnum
15448        instead.  */
15449
15450     if (tp->cond_string)
15451       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15452
15453     if (tp->ignore_count)
15454       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15455
15456     if (tp->commands)
15457       {
15458         volatile struct gdb_exception ex;       
15459
15460         fprintf_unfiltered (fp, "  commands\n");
15461         
15462         ui_out_redirect (current_uiout, fp);
15463         TRY_CATCH (ex, RETURN_MASK_ALL)
15464           {
15465             print_command_lines (current_uiout, tp->commands->commands, 2);
15466           }
15467         ui_out_redirect (current_uiout, NULL);
15468
15469         if (ex.reason < 0)
15470           throw_exception (ex);
15471
15472         fprintf_unfiltered (fp, "  end\n");
15473       }
15474
15475     if (tp->enable_state == bp_disabled)
15476       fprintf_unfiltered (fp, "disable\n");
15477
15478     /* If this is a multi-location breakpoint, check if the locations
15479        should be individually disabled.  Watchpoint locations are
15480        special, and not user visible.  */
15481     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15482       {
15483         struct bp_location *loc;
15484         int n = 1;
15485
15486         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15487           if (!loc->enabled)
15488             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15489       }
15490   }
15491
15492   if (extra_trace_bits && *default_collect)
15493     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15494
15495   do_cleanups (cleanup);
15496   if (from_tty)
15497     printf_filtered (_("Saved to file '%s'.\n"), filename);
15498 }
15499
15500 /* The `save breakpoints' command.  */
15501
15502 static void
15503 save_breakpoints_command (char *args, int from_tty)
15504 {
15505   save_breakpoints (args, from_tty, NULL);
15506 }
15507
15508 /* The `save tracepoints' command.  */
15509
15510 static void
15511 save_tracepoints_command (char *args, int from_tty)
15512 {
15513   save_breakpoints (args, from_tty, is_tracepoint);
15514 }
15515
15516 /* Create a vector of all tracepoints.  */
15517
15518 VEC(breakpoint_p) *
15519 all_tracepoints (void)
15520 {
15521   VEC(breakpoint_p) *tp_vec = 0;
15522   struct breakpoint *tp;
15523
15524   ALL_TRACEPOINTS (tp)
15525   {
15526     VEC_safe_push (breakpoint_p, tp_vec, tp);
15527   }
15528
15529   return tp_vec;
15530 }
15531
15532 \f
15533 /* This help string is used for the break, hbreak, tbreak and thbreak
15534    commands.  It is defined as a macro to prevent duplication.
15535    COMMAND should be a string constant containing the name of the
15536    command.  */
15537 #define BREAK_ARGS_HELP(command) \
15538 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15539 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15540 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15541 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15542 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15543 If a line number is specified, break at start of code for that line.\n\
15544 If a function is specified, break at start of code for that function.\n\
15545 If an address is specified, break at that exact address.\n\
15546 With no LOCATION, uses current execution address of the selected\n\
15547 stack frame.  This is useful for breaking on return to a stack frame.\n\
15548 \n\
15549 THREADNUM is the number from \"info threads\".\n\
15550 CONDITION is a boolean expression.\n\
15551 \n\
15552 Multiple breakpoints at one place are permitted, and useful if their\n\
15553 conditions are different.\n\
15554 \n\
15555 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15556
15557 /* List of subcommands for "catch".  */
15558 static struct cmd_list_element *catch_cmdlist;
15559
15560 /* List of subcommands for "tcatch".  */
15561 static struct cmd_list_element *tcatch_cmdlist;
15562
15563 void
15564 add_catch_command (char *name, char *docstring,
15565                    void (*sfunc) (char *args, int from_tty,
15566                                   struct cmd_list_element *command),
15567                    completer_ftype *completer,
15568                    void *user_data_catch,
15569                    void *user_data_tcatch)
15570 {
15571   struct cmd_list_element *command;
15572
15573   command = add_cmd (name, class_breakpoint, NULL, docstring,
15574                      &catch_cmdlist);
15575   set_cmd_sfunc (command, sfunc);
15576   set_cmd_context (command, user_data_catch);
15577   set_cmd_completer (command, completer);
15578
15579   command = add_cmd (name, class_breakpoint, NULL, docstring,
15580                      &tcatch_cmdlist);
15581   set_cmd_sfunc (command, sfunc);
15582   set_cmd_context (command, user_data_tcatch);
15583   set_cmd_completer (command, completer);
15584 }
15585
15586 static void
15587 clear_syscall_counts (struct inferior *inf)
15588 {
15589   struct catch_syscall_inferior_data *inf_data
15590     = get_catch_syscall_inferior_data (inf);
15591
15592   inf_data->total_syscalls_count = 0;
15593   inf_data->any_syscall_count = 0;
15594   VEC_free (int, inf_data->syscalls_counts);
15595 }
15596
15597 static void
15598 save_command (char *arg, int from_tty)
15599 {
15600   printf_unfiltered (_("\"save\" must be followed by "
15601                        "the name of a save subcommand.\n"));
15602   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15603 }
15604
15605 struct breakpoint *
15606 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15607                           void *data)
15608 {
15609   struct breakpoint *b, *b_tmp;
15610
15611   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15612     {
15613       if ((*callback) (b, data))
15614         return b;
15615     }
15616
15617   return NULL;
15618 }
15619
15620 /* Zero if any of the breakpoint's locations could be a location where
15621    functions have been inlined, nonzero otherwise.  */
15622
15623 static int
15624 is_non_inline_function (struct breakpoint *b)
15625 {
15626   /* The shared library event breakpoint is set on the address of a
15627      non-inline function.  */
15628   if (b->type == bp_shlib_event)
15629     return 1;
15630
15631   return 0;
15632 }
15633
15634 /* Nonzero if the specified PC cannot be a location where functions
15635    have been inlined.  */
15636
15637 int
15638 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15639                            const struct target_waitstatus *ws)
15640 {
15641   struct breakpoint *b;
15642   struct bp_location *bl;
15643
15644   ALL_BREAKPOINTS (b)
15645     {
15646       if (!is_non_inline_function (b))
15647         continue;
15648
15649       for (bl = b->loc; bl != NULL; bl = bl->next)
15650         {
15651           if (!bl->shlib_disabled
15652               && bpstat_check_location (bl, aspace, pc, ws))
15653             return 1;
15654         }
15655     }
15656
15657   return 0;
15658 }
15659
15660 /* Remove any references to OBJFILE which is going to be freed.  */
15661
15662 void
15663 breakpoint_free_objfile (struct objfile *objfile)
15664 {
15665   struct bp_location **locp, *loc;
15666
15667   ALL_BP_LOCATIONS (loc, locp)
15668     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15669       loc->symtab = NULL;
15670 }
15671
15672 void
15673 initialize_breakpoint_ops (void)
15674 {
15675   static int initialized = 0;
15676
15677   struct breakpoint_ops *ops;
15678
15679   if (initialized)
15680     return;
15681   initialized = 1;
15682
15683   /* The breakpoint_ops structure to be inherit by all kinds of
15684      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15685      internal and momentary breakpoints, etc.).  */
15686   ops = &bkpt_base_breakpoint_ops;
15687   *ops = base_breakpoint_ops;
15688   ops->re_set = bkpt_re_set;
15689   ops->insert_location = bkpt_insert_location;
15690   ops->remove_location = bkpt_remove_location;
15691   ops->breakpoint_hit = bkpt_breakpoint_hit;
15692   ops->create_sals_from_address = bkpt_create_sals_from_address;
15693   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15694   ops->decode_linespec = bkpt_decode_linespec;
15695
15696   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15697   ops = &bkpt_breakpoint_ops;
15698   *ops = bkpt_base_breakpoint_ops;
15699   ops->re_set = bkpt_re_set;
15700   ops->resources_needed = bkpt_resources_needed;
15701   ops->print_it = bkpt_print_it;
15702   ops->print_mention = bkpt_print_mention;
15703   ops->print_recreate = bkpt_print_recreate;
15704
15705   /* Ranged breakpoints.  */
15706   ops = &ranged_breakpoint_ops;
15707   *ops = bkpt_breakpoint_ops;
15708   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15709   ops->resources_needed = resources_needed_ranged_breakpoint;
15710   ops->print_it = print_it_ranged_breakpoint;
15711   ops->print_one = print_one_ranged_breakpoint;
15712   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15713   ops->print_mention = print_mention_ranged_breakpoint;
15714   ops->print_recreate = print_recreate_ranged_breakpoint;
15715
15716   /* Internal breakpoints.  */
15717   ops = &internal_breakpoint_ops;
15718   *ops = bkpt_base_breakpoint_ops;
15719   ops->re_set = internal_bkpt_re_set;
15720   ops->check_status = internal_bkpt_check_status;
15721   ops->print_it = internal_bkpt_print_it;
15722   ops->print_mention = internal_bkpt_print_mention;
15723
15724   /* Momentary breakpoints.  */
15725   ops = &momentary_breakpoint_ops;
15726   *ops = bkpt_base_breakpoint_ops;
15727   ops->re_set = momentary_bkpt_re_set;
15728   ops->check_status = momentary_bkpt_check_status;
15729   ops->print_it = momentary_bkpt_print_it;
15730   ops->print_mention = momentary_bkpt_print_mention;
15731
15732   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15733   ops = &longjmp_breakpoint_ops;
15734   *ops = momentary_breakpoint_ops;
15735   ops->dtor = longjmp_bkpt_dtor;
15736
15737   /* Probe breakpoints.  */
15738   ops = &bkpt_probe_breakpoint_ops;
15739   *ops = bkpt_breakpoint_ops;
15740   ops->insert_location = bkpt_probe_insert_location;
15741   ops->remove_location = bkpt_probe_remove_location;
15742   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15743   ops->decode_linespec = bkpt_probe_decode_linespec;
15744
15745   /* Watchpoints.  */
15746   ops = &watchpoint_breakpoint_ops;
15747   *ops = base_breakpoint_ops;
15748   ops->dtor = dtor_watchpoint;
15749   ops->re_set = re_set_watchpoint;
15750   ops->insert_location = insert_watchpoint;
15751   ops->remove_location = remove_watchpoint;
15752   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15753   ops->check_status = check_status_watchpoint;
15754   ops->resources_needed = resources_needed_watchpoint;
15755   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15756   ops->print_it = print_it_watchpoint;
15757   ops->print_mention = print_mention_watchpoint;
15758   ops->print_recreate = print_recreate_watchpoint;
15759
15760   /* Masked watchpoints.  */
15761   ops = &masked_watchpoint_breakpoint_ops;
15762   *ops = watchpoint_breakpoint_ops;
15763   ops->insert_location = insert_masked_watchpoint;
15764   ops->remove_location = remove_masked_watchpoint;
15765   ops->resources_needed = resources_needed_masked_watchpoint;
15766   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15767   ops->print_it = print_it_masked_watchpoint;
15768   ops->print_one_detail = print_one_detail_masked_watchpoint;
15769   ops->print_mention = print_mention_masked_watchpoint;
15770   ops->print_recreate = print_recreate_masked_watchpoint;
15771
15772   /* Tracepoints.  */
15773   ops = &tracepoint_breakpoint_ops;
15774   *ops = base_breakpoint_ops;
15775   ops->re_set = tracepoint_re_set;
15776   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15777   ops->print_one_detail = tracepoint_print_one_detail;
15778   ops->print_mention = tracepoint_print_mention;
15779   ops->print_recreate = tracepoint_print_recreate;
15780   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15781   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15782   ops->decode_linespec = tracepoint_decode_linespec;
15783
15784   /* Probe tracepoints.  */
15785   ops = &tracepoint_probe_breakpoint_ops;
15786   *ops = tracepoint_breakpoint_ops;
15787   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15788   ops->decode_linespec = tracepoint_probe_decode_linespec;
15789
15790   /* Static tracepoints with marker (`-m').  */
15791   ops = &strace_marker_breakpoint_ops;
15792   *ops = tracepoint_breakpoint_ops;
15793   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15794   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15795   ops->decode_linespec = strace_marker_decode_linespec;
15796
15797   /* Fork catchpoints.  */
15798   ops = &catch_fork_breakpoint_ops;
15799   *ops = base_breakpoint_ops;
15800   ops->insert_location = insert_catch_fork;
15801   ops->remove_location = remove_catch_fork;
15802   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15803   ops->print_it = print_it_catch_fork;
15804   ops->print_one = print_one_catch_fork;
15805   ops->print_mention = print_mention_catch_fork;
15806   ops->print_recreate = print_recreate_catch_fork;
15807
15808   /* Vfork catchpoints.  */
15809   ops = &catch_vfork_breakpoint_ops;
15810   *ops = base_breakpoint_ops;
15811   ops->insert_location = insert_catch_vfork;
15812   ops->remove_location = remove_catch_vfork;
15813   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15814   ops->print_it = print_it_catch_vfork;
15815   ops->print_one = print_one_catch_vfork;
15816   ops->print_mention = print_mention_catch_vfork;
15817   ops->print_recreate = print_recreate_catch_vfork;
15818
15819   /* Exec catchpoints.  */
15820   ops = &catch_exec_breakpoint_ops;
15821   *ops = base_breakpoint_ops;
15822   ops->dtor = dtor_catch_exec;
15823   ops->insert_location = insert_catch_exec;
15824   ops->remove_location = remove_catch_exec;
15825   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15826   ops->print_it = print_it_catch_exec;
15827   ops->print_one = print_one_catch_exec;
15828   ops->print_mention = print_mention_catch_exec;
15829   ops->print_recreate = print_recreate_catch_exec;
15830
15831   /* Syscall catchpoints.  */
15832   ops = &catch_syscall_breakpoint_ops;
15833   *ops = base_breakpoint_ops;
15834   ops->dtor = dtor_catch_syscall;
15835   ops->insert_location = insert_catch_syscall;
15836   ops->remove_location = remove_catch_syscall;
15837   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15838   ops->print_it = print_it_catch_syscall;
15839   ops->print_one = print_one_catch_syscall;
15840   ops->print_mention = print_mention_catch_syscall;
15841   ops->print_recreate = print_recreate_catch_syscall;
15842
15843   /* Solib-related catchpoints.  */
15844   ops = &catch_solib_breakpoint_ops;
15845   *ops = base_breakpoint_ops;
15846   ops->dtor = dtor_catch_solib;
15847   ops->insert_location = insert_catch_solib;
15848   ops->remove_location = remove_catch_solib;
15849   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15850   ops->check_status = check_status_catch_solib;
15851   ops->print_it = print_it_catch_solib;
15852   ops->print_one = print_one_catch_solib;
15853   ops->print_mention = print_mention_catch_solib;
15854   ops->print_recreate = print_recreate_catch_solib;
15855
15856   ops = &dprintf_breakpoint_ops;
15857   *ops = bkpt_base_breakpoint_ops;
15858   ops->re_set = dprintf_re_set;
15859   ops->resources_needed = bkpt_resources_needed;
15860   ops->print_it = bkpt_print_it;
15861   ops->print_mention = bkpt_print_mention;
15862   ops->print_recreate = bkpt_print_recreate;
15863 }
15864
15865 /* Chain containing all defined "enable breakpoint" subcommands.  */
15866
15867 static struct cmd_list_element *enablebreaklist = NULL;
15868
15869 void
15870 _initialize_breakpoint (void)
15871 {
15872   struct cmd_list_element *c;
15873
15874   initialize_breakpoint_ops ();
15875
15876   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15877   observer_attach_inferior_exit (clear_syscall_counts);
15878   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15879
15880   breakpoint_objfile_key
15881     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15882
15883   catch_syscall_inferior_data
15884     = register_inferior_data_with_cleanup (NULL,
15885                                            catch_syscall_inferior_data_cleanup);
15886
15887   breakpoint_chain = 0;
15888   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15889      before a breakpoint is set.  */
15890   breakpoint_count = 0;
15891
15892   tracepoint_count = 0;
15893
15894   add_com ("ignore", class_breakpoint, ignore_command, _("\
15895 Set ignore-count of breakpoint number N to COUNT.\n\
15896 Usage is `ignore N COUNT'."));
15897   if (xdb_commands)
15898     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15899
15900   add_com ("commands", class_breakpoint, commands_command, _("\
15901 Set commands to be executed when a breakpoint is hit.\n\
15902 Give breakpoint number as argument after \"commands\".\n\
15903 With no argument, the targeted breakpoint is the last one set.\n\
15904 The commands themselves follow starting on the next line.\n\
15905 Type a line containing \"end\" to indicate the end of them.\n\
15906 Give \"silent\" as the first line to make the breakpoint silent;\n\
15907 then no output is printed when it is hit, except what the commands print."));
15908
15909   c = add_com ("condition", class_breakpoint, condition_command, _("\
15910 Specify breakpoint number N to break only if COND is true.\n\
15911 Usage is `condition N COND', where N is an integer and COND is an\n\
15912 expression to be evaluated whenever breakpoint N is reached."));
15913   set_cmd_completer (c, condition_completer);
15914
15915   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15916 Set a temporary breakpoint.\n\
15917 Like \"break\" except the breakpoint is only temporary,\n\
15918 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15919 by using \"enable delete\" on the breakpoint number.\n\
15920 \n"
15921 BREAK_ARGS_HELP ("tbreak")));
15922   set_cmd_completer (c, location_completer);
15923
15924   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15925 Set a hardware assisted breakpoint.\n\
15926 Like \"break\" except the breakpoint requires hardware support,\n\
15927 some target hardware may not have this support.\n\
15928 \n"
15929 BREAK_ARGS_HELP ("hbreak")));
15930   set_cmd_completer (c, location_completer);
15931
15932   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15933 Set a temporary hardware assisted breakpoint.\n\
15934 Like \"hbreak\" except the breakpoint is only temporary,\n\
15935 so it will be deleted when hit.\n\
15936 \n"
15937 BREAK_ARGS_HELP ("thbreak")));
15938   set_cmd_completer (c, location_completer);
15939
15940   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15941 Enable some breakpoints.\n\
15942 Give breakpoint numbers (separated by spaces) as arguments.\n\
15943 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15944 This is used to cancel the effect of the \"disable\" command.\n\
15945 With a subcommand you can enable temporarily."),
15946                   &enablelist, "enable ", 1, &cmdlist);
15947   if (xdb_commands)
15948     add_com ("ab", class_breakpoint, enable_command, _("\
15949 Enable some breakpoints.\n\
15950 Give breakpoint numbers (separated by spaces) as arguments.\n\
15951 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15952 This is used to cancel the effect of the \"disable\" command.\n\
15953 With a subcommand you can enable temporarily."));
15954
15955   add_com_alias ("en", "enable", class_breakpoint, 1);
15956
15957   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15958 Enable some breakpoints.\n\
15959 Give breakpoint numbers (separated by spaces) as arguments.\n\
15960 This is used to cancel the effect of the \"disable\" command.\n\
15961 May be abbreviated to simply \"enable\".\n"),
15962                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15963
15964   add_cmd ("once", no_class, enable_once_command, _("\
15965 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15966 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15967            &enablebreaklist);
15968
15969   add_cmd ("delete", no_class, enable_delete_command, _("\
15970 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15971 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15972            &enablebreaklist);
15973
15974   add_cmd ("count", no_class, enable_count_command, _("\
15975 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15976 If a breakpoint is hit while enabled in this fashion,\n\
15977 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15978            &enablebreaklist);
15979
15980   add_cmd ("delete", no_class, enable_delete_command, _("\
15981 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15982 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15983            &enablelist);
15984
15985   add_cmd ("once", no_class, enable_once_command, _("\
15986 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15987 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15988            &enablelist);
15989
15990   add_cmd ("count", no_class, enable_count_command, _("\
15991 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15992 If a breakpoint is hit while enabled in this fashion,\n\
15993 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15994            &enablelist);
15995
15996   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15997 Disable some breakpoints.\n\
15998 Arguments are breakpoint numbers with spaces in between.\n\
15999 To disable all breakpoints, give no argument.\n\
16000 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16001                   &disablelist, "disable ", 1, &cmdlist);
16002   add_com_alias ("dis", "disable", class_breakpoint, 1);
16003   add_com_alias ("disa", "disable", class_breakpoint, 1);
16004   if (xdb_commands)
16005     add_com ("sb", class_breakpoint, disable_command, _("\
16006 Disable some breakpoints.\n\
16007 Arguments are breakpoint numbers with spaces in between.\n\
16008 To disable all breakpoints, give no argument.\n\
16009 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16010
16011   add_cmd ("breakpoints", class_alias, disable_command, _("\
16012 Disable some breakpoints.\n\
16013 Arguments are breakpoint numbers with spaces in between.\n\
16014 To disable all breakpoints, give no argument.\n\
16015 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16016 This command may be abbreviated \"disable\"."),
16017            &disablelist);
16018
16019   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16020 Delete some breakpoints or auto-display expressions.\n\
16021 Arguments are breakpoint numbers with spaces in between.\n\
16022 To delete all breakpoints, give no argument.\n\
16023 \n\
16024 Also a prefix command for deletion of other GDB objects.\n\
16025 The \"unset\" command is also an alias for \"delete\"."),
16026                   &deletelist, "delete ", 1, &cmdlist);
16027   add_com_alias ("d", "delete", class_breakpoint, 1);
16028   add_com_alias ("del", "delete", class_breakpoint, 1);
16029   if (xdb_commands)
16030     add_com ("db", class_breakpoint, delete_command, _("\
16031 Delete some breakpoints.\n\
16032 Arguments are breakpoint numbers with spaces in between.\n\
16033 To delete all breakpoints, give no argument.\n"));
16034
16035   add_cmd ("breakpoints", class_alias, delete_command, _("\
16036 Delete some breakpoints or auto-display expressions.\n\
16037 Arguments are breakpoint numbers with spaces in between.\n\
16038 To delete all breakpoints, give no argument.\n\
16039 This command may be abbreviated \"delete\"."),
16040            &deletelist);
16041
16042   add_com ("clear", class_breakpoint, clear_command, _("\
16043 Clear breakpoint at specified line or function.\n\
16044 Argument may be line number, function name, or \"*\" and an address.\n\
16045 If line number is specified, all breakpoints in that line are cleared.\n\
16046 If function is specified, breakpoints at beginning of function are cleared.\n\
16047 If an address is specified, breakpoints at that address are cleared.\n\
16048 \n\
16049 With no argument, clears all breakpoints in the line that the selected frame\n\
16050 is executing in.\n\
16051 \n\
16052 See also the \"delete\" command which clears breakpoints by number."));
16053   add_com_alias ("cl", "clear", class_breakpoint, 1);
16054
16055   c = add_com ("break", class_breakpoint, break_command, _("\
16056 Set breakpoint at specified line or function.\n"
16057 BREAK_ARGS_HELP ("break")));
16058   set_cmd_completer (c, location_completer);
16059
16060   add_com_alias ("b", "break", class_run, 1);
16061   add_com_alias ("br", "break", class_run, 1);
16062   add_com_alias ("bre", "break", class_run, 1);
16063   add_com_alias ("brea", "break", class_run, 1);
16064
16065   if (xdb_commands)
16066    add_com_alias ("ba", "break", class_breakpoint, 1);
16067
16068   if (dbx_commands)
16069     {
16070       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16071 Break in function/address or break at a line in the current file."),
16072                              &stoplist, "stop ", 1, &cmdlist);
16073       add_cmd ("in", class_breakpoint, stopin_command,
16074                _("Break in function or address."), &stoplist);
16075       add_cmd ("at", class_breakpoint, stopat_command,
16076                _("Break at a line in the current file."), &stoplist);
16077       add_com ("status", class_info, breakpoints_info, _("\
16078 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16079 The \"Type\" column indicates one of:\n\
16080 \tbreakpoint     - normal breakpoint\n\
16081 \twatchpoint     - watchpoint\n\
16082 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16083 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16084 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16085 address and file/line number respectively.\n\
16086 \n\
16087 Convenience variable \"$_\" and default examine address for \"x\"\n\
16088 are set to the address of the last breakpoint listed unless the command\n\
16089 is prefixed with \"server \".\n\n\
16090 Convenience variable \"$bpnum\" contains the number of the last\n\
16091 breakpoint set."));
16092     }
16093
16094   add_info ("breakpoints", breakpoints_info, _("\
16095 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16096 The \"Type\" column indicates one of:\n\
16097 \tbreakpoint     - normal breakpoint\n\
16098 \twatchpoint     - watchpoint\n\
16099 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16100 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16101 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16102 address and file/line number respectively.\n\
16103 \n\
16104 Convenience variable \"$_\" and default examine address for \"x\"\n\
16105 are set to the address of the last breakpoint listed unless the command\n\
16106 is prefixed with \"server \".\n\n\
16107 Convenience variable \"$bpnum\" contains the number of the last\n\
16108 breakpoint set."));
16109
16110   add_info_alias ("b", "breakpoints", 1);
16111
16112   if (xdb_commands)
16113     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16114 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16115 The \"Type\" column indicates one of:\n\
16116 \tbreakpoint     - normal breakpoint\n\
16117 \twatchpoint     - watchpoint\n\
16118 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16119 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16120 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16121 address and file/line number respectively.\n\
16122 \n\
16123 Convenience variable \"$_\" and default examine address for \"x\"\n\
16124 are set to the address of the last breakpoint listed unless the command\n\
16125 is prefixed with \"server \".\n\n\
16126 Convenience variable \"$bpnum\" contains the number of the last\n\
16127 breakpoint set."));
16128
16129   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16130 Status of all breakpoints, or breakpoint number NUMBER.\n\
16131 The \"Type\" column indicates one of:\n\
16132 \tbreakpoint     - normal breakpoint\n\
16133 \twatchpoint     - watchpoint\n\
16134 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16135 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16136 \tuntil          - internal breakpoint used by the \"until\" command\n\
16137 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16138 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16139 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16140 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16141 address and file/line number respectively.\n\
16142 \n\
16143 Convenience variable \"$_\" and default examine address for \"x\"\n\
16144 are set to the address of the last breakpoint listed unless the command\n\
16145 is prefixed with \"server \".\n\n\
16146 Convenience variable \"$bpnum\" contains the number of the last\n\
16147 breakpoint set."),
16148            &maintenanceinfolist);
16149
16150   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16151 Set catchpoints to catch events."),
16152                   &catch_cmdlist, "catch ",
16153                   0/*allow-unknown*/, &cmdlist);
16154
16155   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16156 Set temporary catchpoints to catch events."),
16157                   &tcatch_cmdlist, "tcatch ",
16158                   0/*allow-unknown*/, &cmdlist);
16159
16160   add_catch_command ("fork", _("Catch calls to fork."),
16161                      catch_fork_command_1,
16162                      NULL,
16163                      (void *) (uintptr_t) catch_fork_permanent,
16164                      (void *) (uintptr_t) catch_fork_temporary);
16165   add_catch_command ("vfork", _("Catch calls to vfork."),
16166                      catch_fork_command_1,
16167                      NULL,
16168                      (void *) (uintptr_t) catch_vfork_permanent,
16169                      (void *) (uintptr_t) catch_vfork_temporary);
16170   add_catch_command ("exec", _("Catch calls to exec."),
16171                      catch_exec_command_1,
16172                      NULL,
16173                      CATCH_PERMANENT,
16174                      CATCH_TEMPORARY);
16175   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16176 Usage: catch load [REGEX]\n\
16177 If REGEX is given, only stop for libraries matching the regular expression."),
16178                      catch_load_command_1,
16179                      NULL,
16180                      CATCH_PERMANENT,
16181                      CATCH_TEMPORARY);
16182   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16183 Usage: catch unload [REGEX]\n\
16184 If REGEX is given, only stop for libraries matching the regular expression."),
16185                      catch_unload_command_1,
16186                      NULL,
16187                      CATCH_PERMANENT,
16188                      CATCH_TEMPORARY);
16189   add_catch_command ("syscall", _("\
16190 Catch system calls by their names and/or numbers.\n\
16191 Arguments say which system calls to catch.  If no arguments\n\
16192 are given, every system call will be caught.\n\
16193 Arguments, if given, should be one or more system call names\n\
16194 (if your system supports that), or system call numbers."),
16195                      catch_syscall_command_1,
16196                      catch_syscall_completer,
16197                      CATCH_PERMANENT,
16198                      CATCH_TEMPORARY);
16199
16200   c = add_com ("watch", class_breakpoint, watch_command, _("\
16201 Set a watchpoint for an expression.\n\
16202 Usage: watch [-l|-location] EXPRESSION\n\
16203 A watchpoint stops execution of your program whenever the value of\n\
16204 an expression changes.\n\
16205 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16206 the memory to which it refers."));
16207   set_cmd_completer (c, expression_completer);
16208
16209   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16210 Set a read watchpoint for an expression.\n\
16211 Usage: rwatch [-l|-location] EXPRESSION\n\
16212 A watchpoint stops execution of your program whenever the value of\n\
16213 an expression is read.\n\
16214 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16215 the memory to which it refers."));
16216   set_cmd_completer (c, expression_completer);
16217
16218   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16219 Set a watchpoint for an expression.\n\
16220 Usage: awatch [-l|-location] EXPRESSION\n\
16221 A watchpoint stops execution of your program whenever the value of\n\
16222 an expression is either read or written.\n\
16223 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16224 the memory to which it refers."));
16225   set_cmd_completer (c, expression_completer);
16226
16227   add_info ("watchpoints", watchpoints_info, _("\
16228 Status of specified watchpoints (all watchpoints if no argument)."));
16229
16230   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16231      respond to changes - contrary to the description.  */
16232   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16233                             &can_use_hw_watchpoints, _("\
16234 Set debugger's willingness to use watchpoint hardware."), _("\
16235 Show debugger's willingness to use watchpoint hardware."), _("\
16236 If zero, gdb will not use hardware for new watchpoints, even if\n\
16237 such is available.  (However, any hardware watchpoints that were\n\
16238 created before setting this to nonzero, will continue to use watchpoint\n\
16239 hardware.)"),
16240                             NULL,
16241                             show_can_use_hw_watchpoints,
16242                             &setlist, &showlist);
16243
16244   can_use_hw_watchpoints = 1;
16245
16246   /* Tracepoint manipulation commands.  */
16247
16248   c = add_com ("trace", class_breakpoint, trace_command, _("\
16249 Set a tracepoint at specified line or function.\n\
16250 \n"
16251 BREAK_ARGS_HELP ("trace") "\n\
16252 Do \"help tracepoints\" for info on other tracepoint commands."));
16253   set_cmd_completer (c, location_completer);
16254
16255   add_com_alias ("tp", "trace", class_alias, 0);
16256   add_com_alias ("tr", "trace", class_alias, 1);
16257   add_com_alias ("tra", "trace", class_alias, 1);
16258   add_com_alias ("trac", "trace", class_alias, 1);
16259
16260   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16261 Set a fast tracepoint at specified line or function.\n\
16262 \n"
16263 BREAK_ARGS_HELP ("ftrace") "\n\
16264 Do \"help tracepoints\" for info on other tracepoint commands."));
16265   set_cmd_completer (c, location_completer);
16266
16267   c = add_com ("strace", class_breakpoint, strace_command, _("\
16268 Set a static tracepoint at specified line, function or marker.\n\
16269 \n\
16270 strace [LOCATION] [if CONDITION]\n\
16271 LOCATION may be a line number, function name, \"*\" and an address,\n\
16272 or -m MARKER_ID.\n\
16273 If a line number is specified, probe the marker at start of code\n\
16274 for that line.  If a function is specified, probe the marker at start\n\
16275 of code for that function.  If an address is specified, probe the marker\n\
16276 at that exact address.  If a marker id is specified, probe the marker\n\
16277 with that name.  With no LOCATION, uses current execution address of\n\
16278 the selected stack frame.\n\
16279 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16280 This collects arbitrary user data passed in the probe point call to the\n\
16281 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16282 by printing the $_sdata variable like any other convenience variable.\n\
16283 \n\
16284 CONDITION is a boolean expression.\n\
16285 \n\
16286 Multiple tracepoints at one place are permitted, and useful if their\n\
16287 conditions are different.\n\
16288 \n\
16289 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16290 Do \"help tracepoints\" for info on other tracepoint commands."));
16291   set_cmd_completer (c, location_completer);
16292
16293   add_info ("tracepoints", tracepoints_info, _("\
16294 Status of specified tracepoints (all tracepoints if no argument).\n\
16295 Convenience variable \"$tpnum\" contains the number of the\n\
16296 last tracepoint set."));
16297
16298   add_info_alias ("tp", "tracepoints", 1);
16299
16300   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16301 Delete specified tracepoints.\n\
16302 Arguments are tracepoint numbers, separated by spaces.\n\
16303 No argument means delete all tracepoints."),
16304            &deletelist);
16305   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16306
16307   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16308 Disable specified tracepoints.\n\
16309 Arguments are tracepoint numbers, separated by spaces.\n\
16310 No argument means disable all tracepoints."),
16311            &disablelist);
16312   deprecate_cmd (c, "disable");
16313
16314   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16315 Enable specified tracepoints.\n\
16316 Arguments are tracepoint numbers, separated by spaces.\n\
16317 No argument means enable all tracepoints."),
16318            &enablelist);
16319   deprecate_cmd (c, "enable");
16320
16321   add_com ("passcount", class_trace, trace_pass_command, _("\
16322 Set the passcount for a tracepoint.\n\
16323 The trace will end when the tracepoint has been passed 'count' times.\n\
16324 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16325 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16326
16327   add_prefix_cmd ("save", class_breakpoint, save_command,
16328                   _("Save breakpoint definitions as a script."),
16329                   &save_cmdlist, "save ",
16330                   0/*allow-unknown*/, &cmdlist);
16331
16332   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16333 Save current breakpoint definitions as a script.\n\
16334 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16335 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16336 session to restore them."),
16337                &save_cmdlist);
16338   set_cmd_completer (c, filename_completer);
16339
16340   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16341 Save current tracepoint definitions as a script.\n\
16342 Use the 'source' command in another debug session to restore them."),
16343                &save_cmdlist);
16344   set_cmd_completer (c, filename_completer);
16345
16346   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16347   deprecate_cmd (c, "save tracepoints");
16348
16349   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16350 Breakpoint specific settings\n\
16351 Configure various breakpoint-specific variables such as\n\
16352 pending breakpoint behavior"),
16353                   &breakpoint_set_cmdlist, "set breakpoint ",
16354                   0/*allow-unknown*/, &setlist);
16355   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16356 Breakpoint specific settings\n\
16357 Configure various breakpoint-specific variables such as\n\
16358 pending breakpoint behavior"),
16359                   &breakpoint_show_cmdlist, "show breakpoint ",
16360                   0/*allow-unknown*/, &showlist);
16361
16362   add_setshow_auto_boolean_cmd ("pending", no_class,
16363                                 &pending_break_support, _("\
16364 Set debugger's behavior regarding pending breakpoints."), _("\
16365 Show debugger's behavior regarding pending breakpoints."), _("\
16366 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16367 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16368 an error.  If auto, an unrecognized breakpoint location results in a\n\
16369 user-query to see if a pending breakpoint should be created."),
16370                                 NULL,
16371                                 show_pending_break_support,
16372                                 &breakpoint_set_cmdlist,
16373                                 &breakpoint_show_cmdlist);
16374
16375   pending_break_support = AUTO_BOOLEAN_AUTO;
16376
16377   add_setshow_boolean_cmd ("auto-hw", no_class,
16378                            &automatic_hardware_breakpoints, _("\
16379 Set automatic usage of hardware breakpoints."), _("\
16380 Show automatic usage of hardware breakpoints."), _("\
16381 If set, the debugger will automatically use hardware breakpoints for\n\
16382 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16383 a warning will be emitted for such breakpoints."),
16384                            NULL,
16385                            show_automatic_hardware_breakpoints,
16386                            &breakpoint_set_cmdlist,
16387                            &breakpoint_show_cmdlist);
16388
16389   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16390                                 &always_inserted_mode, _("\
16391 Set mode for inserting breakpoints."), _("\
16392 Show mode for inserting breakpoints."), _("\
16393 When this mode is off, breakpoints are inserted in inferior when it is\n\
16394 resumed, and removed when execution stops.  When this mode is on,\n\
16395 breakpoints are inserted immediately and removed only when the user\n\
16396 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16397 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16398 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16399 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16400 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16401                                 NULL,
16402                                 &show_always_inserted_mode,
16403                                 &breakpoint_set_cmdlist,
16404                                 &breakpoint_show_cmdlist);
16405
16406   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16407                         condition_evaluation_enums,
16408                         &condition_evaluation_mode_1, _("\
16409 Set mode of breakpoint condition evaluation."), _("\
16410 Show mode of breakpoint condition evaluation."), _("\
16411 When this is set to \"host\", breakpoint conditions will be\n\
16412 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16413 breakpoint conditions will be downloaded to the target (if the target\n\
16414 supports such feature) and conditions will be evaluated on the target's side.\n\
16415 If this is set to \"auto\" (default), this will be automatically set to\n\
16416 \"target\" if it supports condition evaluation, otherwise it will\n\
16417 be set to \"gdb\""),
16418                            &set_condition_evaluation_mode,
16419                            &show_condition_evaluation_mode,
16420                            &breakpoint_set_cmdlist,
16421                            &breakpoint_show_cmdlist);
16422
16423   add_com ("break-range", class_breakpoint, break_range_command, _("\
16424 Set a breakpoint for an address range.\n\
16425 break-range START-LOCATION, END-LOCATION\n\
16426 where START-LOCATION and END-LOCATION can be one of the following:\n\
16427   LINENUM, for that line in the current file,\n\
16428   FILE:LINENUM, for that line in that file,\n\
16429   +OFFSET, for that number of lines after the current line\n\
16430            or the start of the range\n\
16431   FUNCTION, for the first line in that function,\n\
16432   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16433   *ADDRESS, for the instruction at that address.\n\
16434 \n\
16435 The breakpoint will stop execution of the inferior whenever it executes\n\
16436 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16437 range (including START-LOCATION and END-LOCATION)."));
16438
16439   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16440 Set a dynamic printf at specified line or function.\n\
16441 dprintf location,format string,arg1,arg2,...\n\
16442 location may be a line number, function name, or \"*\" and an address.\n\
16443 If a line number is specified, break at start of code for that line.\n\
16444 If a function is specified, break at start of code for that function.\n\
16445 "));
16446   set_cmd_completer (c, location_completer);
16447
16448   add_setshow_enum_cmd ("dprintf-style", class_support,
16449                         dprintf_style_enums, &dprintf_style, _("\
16450 Set the style of usage for dynamic printf."), _("\
16451 Show the style of usage for dynamic printf."), _("\
16452 This setting chooses how GDB will do a dynamic printf.\n\
16453 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16454 console, as with the \"printf\" command.\n\
16455 If the value is \"call\", the print is done by calling a function in your\n\
16456 program; by default printf(), but you can choose a different function or\n\
16457 output stream by setting dprintf-function and dprintf-channel."),
16458                         update_dprintf_commands, NULL,
16459                         &setlist, &showlist);
16460
16461   dprintf_function = xstrdup ("printf");
16462   add_setshow_string_cmd ("dprintf-function", class_support,
16463                           &dprintf_function, _("\
16464 Set the function to use for dynamic printf"), _("\
16465 Show the function to use for dynamic printf"), NULL,
16466                           update_dprintf_commands, NULL,
16467                           &setlist, &showlist);
16468
16469   dprintf_channel = xstrdup ("");
16470   add_setshow_string_cmd ("dprintf-channel", class_support,
16471                           &dprintf_channel, _("\
16472 Set the channel to use for dynamic printf"), _("\
16473 Show the channel to use for dynamic printf"), NULL,
16474                           update_dprintf_commands, NULL,
16475                           &setlist, &showlist);
16476
16477   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16478                            &disconnected_dprintf, _("\
16479 Set whether dprintf continues after GDB disconnects."), _("\
16480 Show whether dprintf continues after GDB disconnects."), _("\
16481 Use this to let dprintf commands continue to hit and produce output\n\
16482 even if GDB disconnects or detaches from the target."),
16483                            NULL,
16484                            NULL,
16485                            &setlist, &showlist);
16486
16487   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16488 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16489 (target agent only) This is useful for formatted output in user-defined commands."));
16490
16491   automatic_hardware_breakpoints = 1;
16492
16493   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16494 }