* gdb/remote.c (remote_insert_hw_breakpoint): Throw exception if
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2012 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Prototypes for local functions.  */
86
87 static void enable_delete_command (char *, int);
88
89 static void enable_once_command (char *, int);
90
91 static void enable_count_command (char *, int);
92
93 static void disable_command (char *, int);
94
95 static void enable_command (char *, int);
96
97 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
98                                                       void *),
99                                     void *);
100
101 static void ignore_command (char *, int);
102
103 static int breakpoint_re_set_one (void *);
104
105 static void breakpoint_re_set_default (struct breakpoint *);
106
107 static void create_sals_from_address_default (char **,
108                                               struct linespec_result *,
109                                               enum bptype, char *,
110                                               char **);
111
112 static void create_breakpoints_sal_default (struct gdbarch *,
113                                             struct linespec_result *,
114                                             struct linespec_sals *,
115                                             char *, char *, enum bptype,
116                                             enum bpdisp, int, int,
117                                             int,
118                                             const struct breakpoint_ops *,
119                                             int, int, int, unsigned);
120
121 static void decode_linespec_default (struct breakpoint *, char **,
122                                      struct symtabs_and_lines *);
123
124 static void clear_command (char *, int);
125
126 static void catch_command (char *, int);
127
128 static int can_use_hardware_watchpoint (struct value *);
129
130 static void break_command_1 (char *, int, int);
131
132 static void mention (struct breakpoint *);
133
134 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
135                                                                enum bptype,
136                                                                const struct breakpoint_ops *);
137 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
138                                                        const struct symtab_and_line *);
139
140 /* This function is used in gdbtk sources and thus can not be made
141    static.  */
142 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
143                                        struct symtab_and_line,
144                                        enum bptype,
145                                        const struct breakpoint_ops *);
146
147 static struct breakpoint *
148   momentary_breakpoint_from_master (struct breakpoint *orig,
149                                     enum bptype type,
150                                     const struct breakpoint_ops *ops);
151
152 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
153
154 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
155                                             CORE_ADDR bpaddr,
156                                             enum bptype bptype);
157
158 static void describe_other_breakpoints (struct gdbarch *,
159                                         struct program_space *, CORE_ADDR,
160                                         struct obj_section *, int);
161
162 static int breakpoint_address_match (struct address_space *aspace1,
163                                      CORE_ADDR addr1,
164                                      struct address_space *aspace2,
165                                      CORE_ADDR addr2);
166
167 static int watchpoint_locations_match (struct bp_location *loc1,
168                                        struct bp_location *loc2);
169
170 static int breakpoint_location_address_match (struct bp_location *bl,
171                                               struct address_space *aspace,
172                                               CORE_ADDR addr);
173
174 static void breakpoints_info (char *, int);
175
176 static void watchpoints_info (char *, int);
177
178 static int breakpoint_1 (char *, int, 
179                          int (*) (const struct breakpoint *));
180
181 static int breakpoint_cond_eval (void *);
182
183 static void cleanup_executing_breakpoints (void *);
184
185 static void commands_command (char *, int);
186
187 static void condition_command (char *, int);
188
189 typedef enum
190   {
191     mark_inserted,
192     mark_uninserted
193   }
194 insertion_state_t;
195
196 static int remove_breakpoint (struct bp_location *, insertion_state_t);
197 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
198
199 static enum print_stop_action print_bp_stop_message (bpstat bs);
200
201 static int watchpoint_check (void *);
202
203 static void maintenance_info_breakpoints (char *, int);
204
205 static int hw_breakpoint_used_count (void);
206
207 static int hw_watchpoint_use_count (struct breakpoint *);
208
209 static int hw_watchpoint_used_count_others (struct breakpoint *except,
210                                             enum bptype type,
211                                             int *other_type_used);
212
213 static void hbreak_command (char *, int);
214
215 static void thbreak_command (char *, int);
216
217 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
218                                     int count);
219
220 static void stop_command (char *arg, int from_tty);
221
222 static void stopin_command (char *arg, int from_tty);
223
224 static void stopat_command (char *arg, int from_tty);
225
226 static char *ep_parse_optional_if_clause (char **arg);
227
228 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
229                                        char *arg, int tempflag, int from_tty);
230
231 static void tcatch_command (char *arg, int from_tty);
232
233 static void detach_single_step_breakpoints (void);
234
235 static int single_step_breakpoint_inserted_here_p (struct address_space *,
236                                                    CORE_ADDR pc);
237
238 static void free_bp_location (struct bp_location *loc);
239 static void incref_bp_location (struct bp_location *loc);
240 static void decref_bp_location (struct bp_location **loc);
241
242 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
243
244 static void update_global_location_list (int);
245
246 static void update_global_location_list_nothrow (int);
247
248 static int is_hardware_watchpoint (const struct breakpoint *bpt);
249
250 static void insert_breakpoint_locations (void);
251
252 static int syscall_catchpoint_p (struct breakpoint *b);
253
254 static void tracepoints_info (char *, int);
255
256 static void delete_trace_command (char *, int);
257
258 static void enable_trace_command (char *, int);
259
260 static void disable_trace_command (char *, int);
261
262 static void trace_pass_command (char *, int);
263
264 static int is_masked_watchpoint (const struct breakpoint *b);
265
266 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
267
268 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
269    otherwise.  */
270
271 static int strace_marker_p (struct breakpoint *b);
272
273 static void init_catchpoint (struct breakpoint *b,
274                              struct gdbarch *gdbarch, int tempflag,
275                              char *cond_string,
276                              const struct breakpoint_ops *ops);
277
278 /* The abstract base class all breakpoint_ops structures inherit
279    from.  */
280 static 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       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   breakpoints_changed ();
985   observer_notify_breakpoint_modified (b);
986 }
987
988 /* Completion for the "condition" command.  */
989
990 static VEC (char_ptr) *
991 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
992 {
993   char *space;
994
995   text = skip_spaces (text);
996   space = skip_to_space (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               sprintf (location, "%d", b->number);
1026             else
1027               sprintf (location, "%d.%d", b->number, count);
1028
1029             if (strncmp (location, text, len) == 0)
1030               VEC_safe_push (char_ptr, result, xstrdup (location));
1031
1032             ++count;
1033           }
1034       }
1035
1036       return result;
1037     }
1038
1039   /* We're completing the expression part.  */
1040   text = skip_spaces (space);
1041   return expression_completer (cmd, text, word);
1042 }
1043
1044 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1045
1046 static void
1047 condition_command (char *arg, int from_tty)
1048 {
1049   struct breakpoint *b;
1050   char *p;
1051   int bnum;
1052
1053   if (arg == 0)
1054     error_no_arg (_("breakpoint number"));
1055
1056   p = arg;
1057   bnum = get_number (&p);
1058   if (bnum == 0)
1059     error (_("Bad breakpoint argument: '%s'"), arg);
1060
1061   ALL_BREAKPOINTS (b)
1062     if (b->number == bnum)
1063       {
1064         /* Check if this breakpoint has a Python object assigned to
1065            it, and if it has a definition of the "stop"
1066            method.  This method and conditions entered into GDB from
1067            the CLI are mutually exclusive.  */
1068         if (b->py_bp_object
1069             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1070           error (_("Cannot set a condition where a Python 'stop' "
1071                    "method has been defined in the breakpoint."));
1072         set_breakpoint_condition (b, p, from_tty);
1073
1074         if (is_breakpoint (b))
1075           update_global_location_list (1);
1076
1077         return;
1078       }
1079
1080   error (_("No breakpoint number %d."), bnum);
1081 }
1082
1083 /* Check that COMMAND do not contain commands that are suitable
1084    only for tracepoints and not suitable for ordinary breakpoints.
1085    Throw if any such commands is found.  */
1086
1087 static void
1088 check_no_tracepoint_commands (struct command_line *commands)
1089 {
1090   struct command_line *c;
1091
1092   for (c = commands; c; c = c->next)
1093     {
1094       int i;
1095
1096       if (c->control_type == while_stepping_control)
1097         error (_("The 'while-stepping' command can "
1098                  "only be used for tracepoints"));
1099
1100       for (i = 0; i < c->body_count; ++i)
1101         check_no_tracepoint_commands ((c->body_list)[i]);
1102
1103       /* Not that command parsing removes leading whitespace and comment
1104          lines and also empty lines.  So, we only need to check for
1105          command directly.  */
1106       if (strstr (c->line, "collect ") == c->line)
1107         error (_("The 'collect' command can only be used for tracepoints"));
1108
1109       if (strstr (c->line, "teval ") == c->line)
1110         error (_("The 'teval' command can only be used for tracepoints"));
1111     }
1112 }
1113
1114 /* Encapsulate tests for different types of tracepoints.  */
1115
1116 static int
1117 is_tracepoint_type (enum bptype type)
1118 {
1119   return (type == bp_tracepoint
1120           || type == bp_fast_tracepoint
1121           || type == bp_static_tracepoint);
1122 }
1123
1124 int
1125 is_tracepoint (const struct breakpoint *b)
1126 {
1127   return is_tracepoint_type (b->type);
1128 }
1129
1130 /* A helper function that validates that COMMANDS are valid for a
1131    breakpoint.  This function will throw an exception if a problem is
1132    found.  */
1133
1134 static void
1135 validate_commands_for_breakpoint (struct breakpoint *b,
1136                                   struct command_line *commands)
1137 {
1138   if (is_tracepoint (b))
1139     {
1140       /* We need to verify that each top-level element of commands is
1141          valid for tracepoints, that there's at most one
1142          while-stepping element, and that while-stepping's body has
1143          valid tracing commands excluding nested while-stepping.  */
1144       struct command_line *c;
1145       struct command_line *while_stepping = 0;
1146       for (c = commands; c; c = c->next)
1147         {
1148           if (c->control_type == while_stepping_control)
1149             {
1150               if (b->type == bp_fast_tracepoint)
1151                 error (_("The 'while-stepping' command "
1152                          "cannot be used for fast tracepoint"));
1153               else if (b->type == bp_static_tracepoint)
1154                 error (_("The 'while-stepping' command "
1155                          "cannot be used for static tracepoint"));
1156
1157               if (while_stepping)
1158                 error (_("The 'while-stepping' command "
1159                          "can be used only once"));
1160               else
1161                 while_stepping = c;
1162             }
1163         }
1164       if (while_stepping)
1165         {
1166           struct command_line *c2;
1167
1168           gdb_assert (while_stepping->body_count == 1);
1169           c2 = while_stepping->body_list[0];
1170           for (; c2; c2 = c2->next)
1171             {
1172               if (c2->control_type == while_stepping_control)
1173                 error (_("The 'while-stepping' command cannot be nested"));
1174             }
1175         }
1176     }
1177   else
1178     {
1179       check_no_tracepoint_commands (commands);
1180     }
1181 }
1182
1183 /* Return a vector of all the static tracepoints set at ADDR.  The
1184    caller is responsible for releasing the vector.  */
1185
1186 VEC(breakpoint_p) *
1187 static_tracepoints_here (CORE_ADDR addr)
1188 {
1189   struct breakpoint *b;
1190   VEC(breakpoint_p) *found = 0;
1191   struct bp_location *loc;
1192
1193   ALL_BREAKPOINTS (b)
1194     if (b->type == bp_static_tracepoint)
1195       {
1196         for (loc = b->loc; loc; loc = loc->next)
1197           if (loc->address == addr)
1198             VEC_safe_push(breakpoint_p, found, b);
1199       }
1200
1201   return found;
1202 }
1203
1204 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1205    validate that only allowed commands are included.  */
1206
1207 void
1208 breakpoint_set_commands (struct breakpoint *b, 
1209                          struct command_line *commands)
1210 {
1211   validate_commands_for_breakpoint (b, commands);
1212
1213   decref_counted_command_line (&b->commands);
1214   b->commands = alloc_counted_command_line (commands);
1215   breakpoints_changed ();
1216   observer_notify_breakpoint_modified (b);
1217 }
1218
1219 /* Set the internal `silent' flag on the breakpoint.  Note that this
1220    is not the same as the "silent" that may appear in the breakpoint's
1221    commands.  */
1222
1223 void
1224 breakpoint_set_silent (struct breakpoint *b, int silent)
1225 {
1226   int old_silent = b->silent;
1227
1228   b->silent = silent;
1229   if (old_silent != silent)
1230     observer_notify_breakpoint_modified (b);
1231 }
1232
1233 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1234    breakpoint work for any thread.  */
1235
1236 void
1237 breakpoint_set_thread (struct breakpoint *b, int thread)
1238 {
1239   int old_thread = b->thread;
1240
1241   b->thread = thread;
1242   if (old_thread != thread)
1243     observer_notify_breakpoint_modified (b);
1244 }
1245
1246 /* Set the task for this breakpoint.  If TASK is 0, make the
1247    breakpoint work for any task.  */
1248
1249 void
1250 breakpoint_set_task (struct breakpoint *b, int task)
1251 {
1252   int old_task = b->task;
1253
1254   b->task = task;
1255   if (old_task != task)
1256     observer_notify_breakpoint_modified (b);
1257 }
1258
1259 void
1260 check_tracepoint_command (char *line, void *closure)
1261 {
1262   struct breakpoint *b = closure;
1263
1264   validate_actionline (&line, b);
1265 }
1266
1267 /* A structure used to pass information through
1268    map_breakpoint_numbers.  */
1269
1270 struct commands_info
1271 {
1272   /* True if the command was typed at a tty.  */
1273   int from_tty;
1274
1275   /* The breakpoint range spec.  */
1276   char *arg;
1277
1278   /* Non-NULL if the body of the commands are being read from this
1279      already-parsed command.  */
1280   struct command_line *control;
1281
1282   /* The command lines read from the user, or NULL if they have not
1283      yet been read.  */
1284   struct counted_command_line *cmd;
1285 };
1286
1287 /* A callback for map_breakpoint_numbers that sets the commands for
1288    commands_command.  */
1289
1290 static void
1291 do_map_commands_command (struct breakpoint *b, void *data)
1292 {
1293   struct commands_info *info = data;
1294
1295   if (info->cmd == NULL)
1296     {
1297       struct command_line *l;
1298
1299       if (info->control != NULL)
1300         l = copy_command_lines (info->control->body_list[0]);
1301       else
1302         {
1303           struct cleanup *old_chain;
1304           char *str;
1305
1306           str = xstrprintf (_("Type commands for breakpoint(s) "
1307                               "%s, one per line."),
1308                             info->arg);
1309
1310           old_chain = make_cleanup (xfree, str);
1311
1312           l = read_command_lines (str,
1313                                   info->from_tty, 1,
1314                                   (is_tracepoint (b)
1315                                    ? check_tracepoint_command : 0),
1316                                   b);
1317
1318           do_cleanups (old_chain);
1319         }
1320
1321       info->cmd = alloc_counted_command_line (l);
1322     }
1323
1324   /* If a breakpoint was on the list more than once, we don't need to
1325      do anything.  */
1326   if (b->commands != info->cmd)
1327     {
1328       validate_commands_for_breakpoint (b, info->cmd->commands);
1329       incref_counted_command_line (info->cmd);
1330       decref_counted_command_line (&b->commands);
1331       b->commands = info->cmd;
1332       breakpoints_changed ();
1333       observer_notify_breakpoint_modified (b);
1334     }
1335 }
1336
1337 static void
1338 commands_command_1 (char *arg, int from_tty, 
1339                     struct command_line *control)
1340 {
1341   struct cleanup *cleanups;
1342   struct commands_info info;
1343
1344   info.from_tty = from_tty;
1345   info.control = control;
1346   info.cmd = NULL;
1347   /* If we read command lines from the user, then `info' will hold an
1348      extra reference to the commands that we must clean up.  */
1349   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1350
1351   if (arg == NULL || !*arg)
1352     {
1353       if (breakpoint_count - prev_breakpoint_count > 1)
1354         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1355                           breakpoint_count);
1356       else if (breakpoint_count > 0)
1357         arg = xstrprintf ("%d", breakpoint_count);
1358       else
1359         {
1360           /* So that we don't try to free the incoming non-NULL
1361              argument in the cleanup below.  Mapping breakpoint
1362              numbers will fail in this case.  */
1363           arg = NULL;
1364         }
1365     }
1366   else
1367     /* The command loop has some static state, so we need to preserve
1368        our argument.  */
1369     arg = xstrdup (arg);
1370
1371   if (arg != NULL)
1372     make_cleanup (xfree, arg);
1373
1374   info.arg = arg;
1375
1376   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1377
1378   if (info.cmd == NULL)
1379     error (_("No breakpoints specified."));
1380
1381   do_cleanups (cleanups);
1382 }
1383
1384 static void
1385 commands_command (char *arg, int from_tty)
1386 {
1387   commands_command_1 (arg, from_tty, NULL);
1388 }
1389
1390 /* Like commands_command, but instead of reading the commands from
1391    input stream, takes them from an already parsed command structure.
1392
1393    This is used by cli-script.c to DTRT with breakpoint commands
1394    that are part of if and while bodies.  */
1395 enum command_control_type
1396 commands_from_control_command (char *arg, struct command_line *cmd)
1397 {
1398   commands_command_1 (arg, 0, cmd);
1399   return simple_control;
1400 }
1401
1402 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1403
1404 static int
1405 bp_location_has_shadow (struct bp_location *bl)
1406 {
1407   if (bl->loc_type != bp_loc_software_breakpoint)
1408     return 0;
1409   if (!bl->inserted)
1410     return 0;
1411   if (bl->target_info.shadow_len == 0)
1412     /* BL isn't valid, or doesn't shadow memory.  */
1413     return 0;
1414   return 1;
1415 }
1416
1417 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1418    by replacing any memory breakpoints with their shadowed contents.
1419
1420    If READBUF is not NULL, this buffer must not overlap with any of
1421    the breakpoint location's shadow_contents buffers.  Otherwise,
1422    a failed assertion internal error will be raised.
1423
1424    The range of shadowed area by each bp_location is:
1425      bl->address - bp_location_placed_address_before_address_max
1426      up to bl->address + bp_location_shadow_len_after_address_max
1427    The range we were requested to resolve shadows for is:
1428      memaddr ... memaddr + len
1429    Thus the safe cutoff boundaries for performance optimization are
1430      memaddr + len <= (bl->address
1431                        - bp_location_placed_address_before_address_max)
1432    and:
1433      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1434
1435 void
1436 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1437                         const gdb_byte *writebuf_org,
1438                         ULONGEST memaddr, LONGEST len)
1439 {
1440   /* Left boundary, right boundary and median element of our binary
1441      search.  */
1442   unsigned bc_l, bc_r, bc;
1443
1444   /* Find BC_L which is a leftmost element which may affect BUF
1445      content.  It is safe to report lower value but a failure to
1446      report higher one.  */
1447
1448   bc_l = 0;
1449   bc_r = bp_location_count;
1450   while (bc_l + 1 < bc_r)
1451     {
1452       struct bp_location *bl;
1453
1454       bc = (bc_l + bc_r) / 2;
1455       bl = bp_location[bc];
1456
1457       /* Check first BL->ADDRESS will not overflow due to the added
1458          constant.  Then advance the left boundary only if we are sure
1459          the BC element can in no way affect the BUF content (MEMADDR
1460          to MEMADDR + LEN range).
1461
1462          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1463          offset so that we cannot miss a breakpoint with its shadow
1464          range tail still reaching MEMADDR.  */
1465
1466       if ((bl->address + bp_location_shadow_len_after_address_max
1467            >= bl->address)
1468           && (bl->address + bp_location_shadow_len_after_address_max
1469               <= memaddr))
1470         bc_l = bc;
1471       else
1472         bc_r = bc;
1473     }
1474
1475   /* Due to the binary search above, we need to make sure we pick the
1476      first location that's at BC_L's address.  E.g., if there are
1477      multiple locations at the same address, BC_L may end up pointing
1478      at a duplicate location, and miss the "master"/"inserted"
1479      location.  Say, given locations L1, L2 and L3 at addresses A and
1480      B:
1481
1482       L1@A, L2@A, L3@B, ...
1483
1484      BC_L could end up pointing at location L2, while the "master"
1485      location could be L1.  Since the `loc->inserted' flag is only set
1486      on "master" locations, we'd forget to restore the shadow of L1
1487      and L2.  */
1488   while (bc_l > 0
1489          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1490     bc_l--;
1491
1492   /* Now do full processing of the found relevant range of elements.  */
1493
1494   for (bc = bc_l; bc < bp_location_count; bc++)
1495   {
1496     struct bp_location *bl = bp_location[bc];
1497     CORE_ADDR bp_addr = 0;
1498     int bp_size = 0;
1499     int bptoffset = 0;
1500
1501     /* bp_location array has BL->OWNER always non-NULL.  */
1502     if (bl->owner->type == bp_none)
1503       warning (_("reading through apparently deleted breakpoint #%d?"),
1504                bl->owner->number);
1505
1506     /* Performance optimization: any further element can no longer affect BUF
1507        content.  */
1508
1509     if (bl->address >= bp_location_placed_address_before_address_max
1510         && memaddr + len <= (bl->address
1511                              - bp_location_placed_address_before_address_max))
1512       break;
1513
1514     if (!bp_location_has_shadow (bl))
1515       continue;
1516     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1517                                    current_program_space->aspace, 0))
1518       continue;
1519
1520     /* Addresses and length of the part of the breakpoint that
1521        we need to copy.  */
1522     bp_addr = bl->target_info.placed_address;
1523     bp_size = bl->target_info.shadow_len;
1524
1525     if (bp_addr + bp_size <= memaddr)
1526       /* The breakpoint is entirely before the chunk of memory we
1527          are reading.  */
1528       continue;
1529
1530     if (bp_addr >= memaddr + len)
1531       /* The breakpoint is entirely after the chunk of memory we are
1532          reading.  */
1533       continue;
1534
1535     /* Offset within shadow_contents.  */
1536     if (bp_addr < memaddr)
1537       {
1538         /* Only copy the second part of the breakpoint.  */
1539         bp_size -= memaddr - bp_addr;
1540         bptoffset = memaddr - bp_addr;
1541         bp_addr = memaddr;
1542       }
1543
1544     if (bp_addr + bp_size > memaddr + len)
1545       {
1546         /* Only copy the first part of the breakpoint.  */
1547         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1548       }
1549
1550     if (readbuf != NULL)
1551       {
1552         /* Verify that the readbuf buffer does not overlap with
1553            the shadow_contents buffer.  */
1554         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1555                     || readbuf >= (bl->target_info.shadow_contents
1556                                    + bl->target_info.shadow_len));
1557
1558         /* Update the read buffer with this inserted breakpoint's
1559            shadow.  */
1560         memcpy (readbuf + bp_addr - memaddr,
1561                 bl->target_info.shadow_contents + bptoffset, bp_size);
1562       }
1563     else
1564       {
1565         struct gdbarch *gdbarch = bl->gdbarch;
1566         const unsigned char *bp;
1567         CORE_ADDR placed_address = bl->target_info.placed_address;
1568         unsigned placed_size = bl->target_info.placed_size;
1569
1570         /* Update the shadow with what we want to write to memory.  */
1571         memcpy (bl->target_info.shadow_contents + bptoffset,
1572                 writebuf_org + bp_addr - memaddr, bp_size);
1573
1574         /* Determine appropriate breakpoint contents and size for this
1575            address.  */
1576         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1577
1578         /* Update the final write buffer with this inserted
1579            breakpoint's INSN.  */
1580         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1581       }
1582   }
1583 }
1584 \f
1585
1586 /* Return true if BPT is either a software breakpoint or a hardware
1587    breakpoint.  */
1588
1589 int
1590 is_breakpoint (const struct breakpoint *bpt)
1591 {
1592   return (bpt->type == bp_breakpoint
1593           || bpt->type == bp_hardware_breakpoint
1594           || bpt->type == bp_dprintf);
1595 }
1596
1597 /* Return true if BPT is of any hardware watchpoint kind.  */
1598
1599 static int
1600 is_hardware_watchpoint (const struct breakpoint *bpt)
1601 {
1602   return (bpt->type == bp_hardware_watchpoint
1603           || bpt->type == bp_read_watchpoint
1604           || bpt->type == bp_access_watchpoint);
1605 }
1606
1607 /* Return true if BPT is of any watchpoint kind, hardware or
1608    software.  */
1609
1610 int
1611 is_watchpoint (const struct breakpoint *bpt)
1612 {
1613   return (is_hardware_watchpoint (bpt)
1614           || bpt->type == bp_watchpoint);
1615 }
1616
1617 /* Returns true if the current thread and its running state are safe
1618    to evaluate or update watchpoint B.  Watchpoints on local
1619    expressions need to be evaluated in the context of the thread that
1620    was current when the watchpoint was created, and, that thread needs
1621    to be stopped to be able to select the correct frame context.
1622    Watchpoints on global expressions can be evaluated on any thread,
1623    and in any state.  It is presently left to the target allowing
1624    memory accesses when threads are running.  */
1625
1626 static int
1627 watchpoint_in_thread_scope (struct watchpoint *b)
1628 {
1629   return (b->base.pspace == current_program_space
1630           && (ptid_equal (b->watchpoint_thread, null_ptid)
1631               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1632                   && !is_executing (inferior_ptid))));
1633 }
1634
1635 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1636    associated bp_watchpoint_scope breakpoint.  */
1637
1638 static void
1639 watchpoint_del_at_next_stop (struct watchpoint *w)
1640 {
1641   struct breakpoint *b = &w->base;
1642
1643   if (b->related_breakpoint != b)
1644     {
1645       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1646       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1647       b->related_breakpoint->disposition = disp_del_at_next_stop;
1648       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1649       b->related_breakpoint = b;
1650     }
1651   b->disposition = disp_del_at_next_stop;
1652 }
1653
1654 /* Assuming that B is a watchpoint:
1655    - Reparse watchpoint expression, if REPARSE is non-zero
1656    - Evaluate expression and store the result in B->val
1657    - Evaluate the condition if there is one, and store the result
1658      in b->loc->cond.
1659    - Update the list of values that must be watched in B->loc.
1660
1661    If the watchpoint disposition is disp_del_at_next_stop, then do
1662    nothing.  If this is local watchpoint that is out of scope, delete
1663    it.
1664
1665    Even with `set breakpoint always-inserted on' the watchpoints are
1666    removed + inserted on each stop here.  Normal breakpoints must
1667    never be removed because they might be missed by a running thread
1668    when debugging in non-stop mode.  On the other hand, hardware
1669    watchpoints (is_hardware_watchpoint; processed here) are specific
1670    to each LWP since they are stored in each LWP's hardware debug
1671    registers.  Therefore, such LWP must be stopped first in order to
1672    be able to modify its hardware watchpoints.
1673
1674    Hardware watchpoints must be reset exactly once after being
1675    presented to the user.  It cannot be done sooner, because it would
1676    reset the data used to present the watchpoint hit to the user.  And
1677    it must not be done later because it could display the same single
1678    watchpoint hit during multiple GDB stops.  Note that the latter is
1679    relevant only to the hardware watchpoint types bp_read_watchpoint
1680    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1681    not user-visible - its hit is suppressed if the memory content has
1682    not changed.
1683
1684    The following constraints influence the location where we can reset
1685    hardware watchpoints:
1686
1687    * target_stopped_by_watchpoint and target_stopped_data_address are
1688      called several times when GDB stops.
1689
1690    [linux] 
1691    * Multiple hardware watchpoints can be hit at the same time,
1692      causing GDB to stop.  GDB only presents one hardware watchpoint
1693      hit at a time as the reason for stopping, and all the other hits
1694      are presented later, one after the other, each time the user
1695      requests the execution to be resumed.  Execution is not resumed
1696      for the threads still having pending hit event stored in
1697      LWP_INFO->STATUS.  While the watchpoint is already removed from
1698      the inferior on the first stop the thread hit event is kept being
1699      reported from its cached value by linux_nat_stopped_data_address
1700      until the real thread resume happens after the watchpoint gets
1701      presented and thus its LWP_INFO->STATUS gets reset.
1702
1703    Therefore the hardware watchpoint hit can get safely reset on the
1704    watchpoint removal from inferior.  */
1705
1706 static void
1707 update_watchpoint (struct watchpoint *b, int reparse)
1708 {
1709   int within_current_scope;
1710   struct frame_id saved_frame_id;
1711   int frame_saved;
1712
1713   /* If this is a local watchpoint, we only want to check if the
1714      watchpoint frame is in scope if the current thread is the thread
1715      that was used to create the watchpoint.  */
1716   if (!watchpoint_in_thread_scope (b))
1717     return;
1718
1719   if (b->base.disposition == disp_del_at_next_stop)
1720     return;
1721  
1722   frame_saved = 0;
1723
1724   /* Determine if the watchpoint is within scope.  */
1725   if (b->exp_valid_block == NULL)
1726     within_current_scope = 1;
1727   else
1728     {
1729       struct frame_info *fi = get_current_frame ();
1730       struct gdbarch *frame_arch = get_frame_arch (fi);
1731       CORE_ADDR frame_pc = get_frame_pc (fi);
1732
1733       /* If we're in a function epilogue, unwinding may not work
1734          properly, so do not attempt to recreate locations at this
1735          point.  See similar comments in watchpoint_check.  */
1736       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1737         return;
1738
1739       /* Save the current frame's ID so we can restore it after
1740          evaluating the watchpoint expression on its own frame.  */
1741       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1742          took a frame parameter, so that we didn't have to change the
1743          selected frame.  */
1744       frame_saved = 1;
1745       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1746
1747       fi = frame_find_by_id (b->watchpoint_frame);
1748       within_current_scope = (fi != NULL);
1749       if (within_current_scope)
1750         select_frame (fi);
1751     }
1752
1753   /* We don't free locations.  They are stored in the bp_location array
1754      and update_global_location_list will eventually delete them and
1755      remove breakpoints if needed.  */
1756   b->base.loc = NULL;
1757
1758   if (within_current_scope && reparse)
1759     {
1760       char *s;
1761
1762       if (b->exp)
1763         {
1764           xfree (b->exp);
1765           b->exp = NULL;
1766         }
1767       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1768       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1769       /* If the meaning of expression itself changed, the old value is
1770          no longer relevant.  We don't want to report a watchpoint hit
1771          to the user when the old value and the new value may actually
1772          be completely different objects.  */
1773       value_free (b->val);
1774       b->val = NULL;
1775       b->val_valid = 0;
1776
1777       /* Note that unlike with breakpoints, the watchpoint's condition
1778          expression is stored in the breakpoint object, not in the
1779          locations (re)created below.  */
1780       if (b->base.cond_string != NULL)
1781         {
1782           if (b->cond_exp != NULL)
1783             {
1784               xfree (b->cond_exp);
1785               b->cond_exp = NULL;
1786             }
1787
1788           s = b->base.cond_string;
1789           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1790         }
1791     }
1792
1793   /* If we failed to parse the expression, for example because
1794      it refers to a global variable in a not-yet-loaded shared library,
1795      don't try to insert watchpoint.  We don't automatically delete
1796      such watchpoint, though, since failure to parse expression
1797      is different from out-of-scope watchpoint.  */
1798   if ( !target_has_execution)
1799     {
1800       /* Without execution, memory can't change.  No use to try and
1801          set watchpoint locations.  The watchpoint will be reset when
1802          the target gains execution, through breakpoint_re_set.  */
1803     }
1804   else if (within_current_scope && b->exp)
1805     {
1806       int pc = 0;
1807       struct value *val_chain, *v, *result, *next;
1808       struct program_space *frame_pspace;
1809
1810       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1811
1812       /* Avoid setting b->val if it's already set.  The meaning of
1813          b->val is 'the last value' user saw, and we should update
1814          it only if we reported that last value to user.  As it
1815          happens, the code that reports it updates b->val directly.
1816          We don't keep track of the memory value for masked
1817          watchpoints.  */
1818       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1819         {
1820           b->val = v;
1821           b->val_valid = 1;
1822         }
1823
1824       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1825
1826       /* Look at each value on the value chain.  */
1827       for (v = val_chain; v; v = value_next (v))
1828         {
1829           /* If it's a memory location, and GDB actually needed
1830              its contents to evaluate the expression, then we
1831              must watch it.  If the first value returned is
1832              still lazy, that means an error occurred reading it;
1833              watch it anyway in case it becomes readable.  */
1834           if (VALUE_LVAL (v) == lval_memory
1835               && (v == val_chain || ! value_lazy (v)))
1836             {
1837               struct type *vtype = check_typedef (value_type (v));
1838
1839               /* We only watch structs and arrays if user asked
1840                  for it explicitly, never if they just happen to
1841                  appear in the middle of some value chain.  */
1842               if (v == result
1843                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1844                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1845                 {
1846                   CORE_ADDR addr;
1847                   int len, type;
1848                   struct bp_location *loc, **tmp;
1849
1850                   addr = value_address (v);
1851                   len = TYPE_LENGTH (value_type (v));
1852                   type = hw_write;
1853                   if (b->base.type == bp_read_watchpoint)
1854                     type = hw_read;
1855                   else if (b->base.type == bp_access_watchpoint)
1856                     type = hw_access;
1857
1858                   loc = allocate_bp_location (&b->base);
1859                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1860                     ;
1861                   *tmp = loc;
1862                   loc->gdbarch = get_type_arch (value_type (v));
1863
1864                   loc->pspace = frame_pspace;
1865                   loc->address = addr;
1866                   loc->length = len;
1867                   loc->watchpoint_type = type;
1868                 }
1869             }
1870         }
1871
1872       /* Change the type of breakpoint between hardware assisted or
1873          an ordinary watchpoint depending on the hardware support
1874          and free hardware slots.  REPARSE is set when the inferior
1875          is started.  */
1876       if (reparse)
1877         {
1878           int reg_cnt;
1879           enum bp_loc_type loc_type;
1880           struct bp_location *bl;
1881
1882           reg_cnt = can_use_hardware_watchpoint (val_chain);
1883
1884           if (reg_cnt)
1885             {
1886               int i, target_resources_ok, other_type_used;
1887               enum bptype type;
1888
1889               /* Use an exact watchpoint when there's only one memory region to be
1890                  watched, and only one debug register is needed to watch it.  */
1891               b->exact = target_exact_watchpoints && reg_cnt == 1;
1892
1893               /* We need to determine how many resources are already
1894                  used for all other hardware watchpoints plus this one
1895                  to see if we still have enough resources to also fit
1896                  this watchpoint in as well.  */
1897
1898               /* If this is a software watchpoint, we try to turn it
1899                  to a hardware one -- count resources as if B was of
1900                  hardware watchpoint type.  */
1901               type = b->base.type;
1902               if (type == bp_watchpoint)
1903                 type = bp_hardware_watchpoint;
1904
1905               /* This watchpoint may or may not have been placed on
1906                  the list yet at this point (it won't be in the list
1907                  if we're trying to create it for the first time,
1908                  through watch_command), so always account for it
1909                  manually.  */
1910
1911               /* Count resources used by all watchpoints except B.  */
1912               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1913
1914               /* Add in the resources needed for B.  */
1915               i += hw_watchpoint_use_count (&b->base);
1916
1917               target_resources_ok
1918                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1919               if (target_resources_ok <= 0)
1920                 {
1921                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1922
1923                   if (target_resources_ok == 0 && !sw_mode)
1924                     error (_("Target does not support this type of "
1925                              "hardware watchpoint."));
1926                   else if (target_resources_ok < 0 && !sw_mode)
1927                     error (_("There are not enough available hardware "
1928                              "resources for this watchpoint."));
1929
1930                   /* Downgrade to software watchpoint.  */
1931                   b->base.type = bp_watchpoint;
1932                 }
1933               else
1934                 {
1935                   /* If this was a software watchpoint, we've just
1936                      found we have enough resources to turn it to a
1937                      hardware watchpoint.  Otherwise, this is a
1938                      nop.  */
1939                   b->base.type = type;
1940                 }
1941             }
1942           else if (!b->base.ops->works_in_software_mode (&b->base))
1943             error (_("Expression cannot be implemented with "
1944                      "read/access watchpoint."));
1945           else
1946             b->base.type = bp_watchpoint;
1947
1948           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1949                       : bp_loc_hardware_watchpoint);
1950           for (bl = b->base.loc; bl; bl = bl->next)
1951             bl->loc_type = loc_type;
1952         }
1953
1954       for (v = val_chain; v; v = next)
1955         {
1956           next = value_next (v);
1957           if (v != b->val)
1958             value_free (v);
1959         }
1960
1961       /* If a software watchpoint is not watching any memory, then the
1962          above left it without any location set up.  But,
1963          bpstat_stop_status requires a location to be able to report
1964          stops, so make sure there's at least a dummy one.  */
1965       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1966         {
1967           struct breakpoint *base = &b->base;
1968           base->loc = allocate_bp_location (base);
1969           base->loc->pspace = frame_pspace;
1970           base->loc->address = -1;
1971           base->loc->length = -1;
1972           base->loc->watchpoint_type = -1;
1973         }
1974     }
1975   else if (!within_current_scope)
1976     {
1977       printf_filtered (_("\
1978 Watchpoint %d deleted because the program has left the block\n\
1979 in which its expression is valid.\n"),
1980                        b->base.number);
1981       watchpoint_del_at_next_stop (b);
1982     }
1983
1984   /* Restore the selected frame.  */
1985   if (frame_saved)
1986     select_frame (frame_find_by_id (saved_frame_id));
1987 }
1988
1989
1990 /* Returns 1 iff breakpoint location should be
1991    inserted in the inferior.  We don't differentiate the type of BL's owner
1992    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1993    breakpoint_ops is not defined, because in insert_bp_location,
1994    tracepoint's insert_location will not be called.  */
1995 static int
1996 should_be_inserted (struct bp_location *bl)
1997 {
1998   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1999     return 0;
2000
2001   if (bl->owner->disposition == disp_del_at_next_stop)
2002     return 0;
2003
2004   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2005     return 0;
2006
2007   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2008     return 0;
2009
2010   /* This is set for example, when we're attached to the parent of a
2011      vfork, and have detached from the child.  The child is running
2012      free, and we expect it to do an exec or exit, at which point the
2013      OS makes the parent schedulable again (and the target reports
2014      that the vfork is done).  Until the child is done with the shared
2015      memory region, do not insert breakpoints in the parent, otherwise
2016      the child could still trip on the parent's breakpoints.  Since
2017      the parent is blocked anyway, it won't miss any breakpoint.  */
2018   if (bl->pspace->breakpoints_not_allowed)
2019     return 0;
2020
2021   return 1;
2022 }
2023
2024 /* Same as should_be_inserted but does the check assuming
2025    that the location is not duplicated.  */
2026
2027 static int
2028 unduplicated_should_be_inserted (struct bp_location *bl)
2029 {
2030   int result;
2031   const int save_duplicate = bl->duplicate;
2032
2033   bl->duplicate = 0;
2034   result = should_be_inserted (bl);
2035   bl->duplicate = save_duplicate;
2036   return result;
2037 }
2038
2039 /* Parses a conditional described by an expression COND into an
2040    agent expression bytecode suitable for evaluation
2041    by the bytecode interpreter.  Return NULL if there was
2042    any error during parsing.  */
2043
2044 static struct agent_expr *
2045 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2046 {
2047   struct agent_expr *aexpr = NULL;
2048   struct cleanup *old_chain = NULL;
2049   volatile struct gdb_exception ex;
2050
2051   if (!cond)
2052     return NULL;
2053
2054   /* We don't want to stop processing, so catch any errors
2055      that may show up.  */
2056   TRY_CATCH (ex, RETURN_MASK_ERROR)
2057     {
2058       aexpr = gen_eval_for_expr (scope, cond);
2059     }
2060
2061   if (ex.reason < 0)
2062     {
2063       /* If we got here, it means the condition could not be parsed to a valid
2064          bytecode expression and thus can't be evaluated on the target's side.
2065          It's no use iterating through the conditions.  */
2066       return NULL;
2067     }
2068
2069   /* We have a valid agent expression.  */
2070   return aexpr;
2071 }
2072
2073 /* Based on location BL, create a list of breakpoint conditions to be
2074    passed on to the target.  If we have duplicated locations with different
2075    conditions, we will add such conditions to the list.  The idea is that the
2076    target will evaluate the list of conditions and will only notify GDB when
2077    one of them is true.  */
2078
2079 static void
2080 build_target_condition_list (struct bp_location *bl)
2081 {
2082   struct bp_location **locp = NULL, **loc2p;
2083   int null_condition_or_parse_error = 0;
2084   int modified = bl->needs_update;
2085   struct bp_location *loc;
2086
2087   /* This is only meaningful if the target is
2088      evaluating conditions and if the user has
2089      opted for condition evaluation on the target's
2090      side.  */
2091   if (gdb_evaluates_breakpoint_condition_p ()
2092       || !target_supports_evaluation_of_breakpoint_conditions ())
2093     return;
2094
2095   /* Do a first pass to check for locations with no assigned
2096      conditions or conditions that fail to parse to a valid agent expression
2097      bytecode.  If any of these happen, then it's no use to send conditions
2098      to the target since this location will always trigger and generate a
2099      response back to GDB.  */
2100   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2101     {
2102       loc = (*loc2p);
2103       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2104         {
2105           if (modified)
2106             {
2107               struct agent_expr *aexpr;
2108
2109               /* Re-parse the conditions since something changed.  In that
2110                  case we already freed the condition bytecodes (see
2111                  force_breakpoint_reinsertion).  We just
2112                  need to parse the condition to bytecodes again.  */
2113               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2114               loc->cond_bytecode = aexpr;
2115
2116               /* Check if we managed to parse the conditional expression
2117                  correctly.  If not, we will not send this condition
2118                  to the target.  */
2119               if (aexpr)
2120                 continue;
2121             }
2122
2123           /* If we have a NULL bytecode expression, it means something
2124              went wrong or we have a null condition expression.  */
2125           if (!loc->cond_bytecode)
2126             {
2127               null_condition_or_parse_error = 1;
2128               break;
2129             }
2130         }
2131     }
2132
2133   /* If any of these happened, it means we will have to evaluate the conditions
2134      for the location's address on gdb's side.  It is no use keeping bytecodes
2135      for all the other duplicate locations, thus we free all of them here.
2136
2137      This is so we have a finer control over which locations' conditions are
2138      being evaluated by GDB or the remote stub.  */
2139   if (null_condition_or_parse_error)
2140     {
2141       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2142         {
2143           loc = (*loc2p);
2144           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2145             {
2146               /* Only go as far as the first NULL bytecode is
2147                  located.  */
2148               if (!loc->cond_bytecode)
2149                 return;
2150
2151               free_agent_expr (loc->cond_bytecode);
2152               loc->cond_bytecode = NULL;
2153             }
2154         }
2155     }
2156
2157   /* No NULL conditions or failed bytecode generation.  Build a condition list
2158      for this location's address.  */
2159   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2160     {
2161       loc = (*loc2p);
2162       if (loc->cond
2163           && is_breakpoint (loc->owner)
2164           && loc->pspace->num == bl->pspace->num
2165           && loc->owner->enable_state == bp_enabled
2166           && loc->enabled)
2167         /* Add the condition to the vector.  This will be used later to send the
2168            conditions to the target.  */
2169         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2170                        loc->cond_bytecode);
2171     }
2172
2173   return;
2174 }
2175
2176 /* Parses a command described by string CMD into an agent expression
2177    bytecode suitable for evaluation by the bytecode interpreter.
2178    Return NULL if there was any error during parsing.  */
2179
2180 static struct agent_expr *
2181 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2182 {
2183   struct cleanup *old_cleanups = 0;
2184   struct expression *expr, **argvec;
2185   struct agent_expr *aexpr = NULL;
2186   struct cleanup *old_chain = NULL;
2187   volatile struct gdb_exception ex;
2188   char *cmdrest;
2189   char *format_start, *format_end;
2190   struct format_piece *fpieces;
2191   int nargs;
2192   struct gdbarch *gdbarch = get_current_arch ();
2193
2194   if (!cmd)
2195     return NULL;
2196
2197   cmdrest = cmd;
2198
2199   if (*cmdrest == ',')
2200     ++cmdrest;
2201   cmdrest = skip_spaces (cmdrest);
2202
2203   if (*cmdrest++ != '"')
2204     error (_("No format string following the location"));
2205
2206   format_start = cmdrest;
2207
2208   fpieces = parse_format_string (&cmdrest);
2209
2210   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2211
2212   format_end = cmdrest;
2213
2214   if (*cmdrest++ != '"')
2215     error (_("Bad format string, non-terminated '\"'."));
2216   
2217   cmdrest = skip_spaces (cmdrest);
2218
2219   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2220     error (_("Invalid argument syntax"));
2221
2222   if (*cmdrest == ',')
2223     cmdrest++;
2224   cmdrest = skip_spaces (cmdrest);
2225
2226   /* For each argument, make an expression.  */
2227
2228   argvec = (struct expression **) alloca (strlen (cmd)
2229                                          * sizeof (struct expression *));
2230
2231   nargs = 0;
2232   while (*cmdrest != '\0')
2233     {
2234       char *cmd1;
2235
2236       cmd1 = cmdrest;
2237       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2238       argvec[nargs++] = expr;
2239       cmdrest = cmd1;
2240       if (*cmdrest == ',')
2241         ++cmdrest;
2242     }
2243
2244   /* We don't want to stop processing, so catch any errors
2245      that may show up.  */
2246   TRY_CATCH (ex, RETURN_MASK_ERROR)
2247     {
2248       aexpr = gen_printf (scope, gdbarch, 0, 0,
2249                           format_start, format_end - format_start,
2250                           fpieces, nargs, argvec);
2251     }
2252
2253   if (ex.reason < 0)
2254     {
2255       /* If we got here, it means the command could not be parsed to a valid
2256          bytecode expression and thus can't be evaluated on the target's side.
2257          It's no use iterating through the other commands.  */
2258       return NULL;
2259     }
2260
2261   do_cleanups (old_cleanups);
2262
2263   /* We have a valid agent expression, return it.  */
2264   return aexpr;
2265 }
2266
2267 /* Based on location BL, create a list of breakpoint commands to be
2268    passed on to the target.  If we have duplicated locations with
2269    different commands, we will add any such to the list.  */
2270
2271 static void
2272 build_target_command_list (struct bp_location *bl)
2273 {
2274   struct bp_location **locp = NULL, **loc2p;
2275   int null_command_or_parse_error = 0;
2276   int modified = bl->needs_update;
2277   struct bp_location *loc;
2278
2279   /* For now, limit to agent-style dprintf breakpoints.  */
2280   if (bl->owner->type != bp_dprintf
2281       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2282     return;
2283
2284   if (!target_can_run_breakpoint_commands ())
2285     return;
2286
2287   /* Do a first pass to check for locations with no assigned
2288      conditions or conditions that fail to parse to a valid agent expression
2289      bytecode.  If any of these happen, then it's no use to send conditions
2290      to the target since this location will always trigger and generate a
2291      response back to GDB.  */
2292   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2293     {
2294       loc = (*loc2p);
2295       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2296         {
2297           if (modified)
2298             {
2299               struct agent_expr *aexpr;
2300
2301               /* Re-parse the commands since something changed.  In that
2302                  case we already freed the command bytecodes (see
2303                  force_breakpoint_reinsertion).  We just
2304                  need to parse the command to bytecodes again.  */
2305               aexpr = parse_cmd_to_aexpr (bl->address,
2306                                           loc->owner->extra_string);
2307               loc->cmd_bytecode = aexpr;
2308
2309               if (!aexpr)
2310                 continue;
2311             }
2312
2313           /* If we have a NULL bytecode expression, it means something
2314              went wrong or we have a null command expression.  */
2315           if (!loc->cmd_bytecode)
2316             {
2317               null_command_or_parse_error = 1;
2318               break;
2319             }
2320         }
2321     }
2322
2323   /* If anything failed, then we're not doing target-side commands,
2324      and so clean up.  */
2325   if (null_command_or_parse_error)
2326     {
2327       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2328         {
2329           loc = (*loc2p);
2330           if (is_breakpoint (loc->owner)
2331               && loc->pspace->num == bl->pspace->num)
2332             {
2333               /* Only go as far as the first NULL bytecode is
2334                  located.  */
2335               if (!loc->cond_bytecode)
2336                 return;
2337
2338               free_agent_expr (loc->cond_bytecode);
2339               loc->cond_bytecode = NULL;
2340             }
2341         }
2342     }
2343
2344   /* No NULL commands or failed bytecode generation.  Build a command list
2345      for this location's address.  */
2346   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2347     {
2348       loc = (*loc2p);
2349       if (loc->owner->extra_string
2350           && is_breakpoint (loc->owner)
2351           && loc->pspace->num == bl->pspace->num
2352           && loc->owner->enable_state == bp_enabled
2353           && loc->enabled)
2354         /* Add the command to the vector.  This will be used later
2355            to send the commands to the target.  */
2356         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2357                        loc->cmd_bytecode);
2358     }
2359
2360   bl->target_info.persist = 0;
2361   /* Maybe flag this location as persistent.  */
2362   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2363     bl->target_info.persist = 1;
2364 }
2365
2366 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2367    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2368    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2369    Returns 0 for success, 1 if the bp_location type is not supported or
2370    -1 for failure.
2371
2372    NOTE drow/2003-09-09: This routine could be broken down to an
2373    object-style method for each breakpoint or catchpoint type.  */
2374 static int
2375 insert_bp_location (struct bp_location *bl,
2376                     struct ui_file *tmp_error_stream,
2377                     int *disabled_breaks,
2378                     int *hw_breakpoint_error,
2379                     int *hw_bp_error_explained_already)
2380 {
2381   int val = 0;
2382   char *hw_bp_err_string = NULL;
2383   struct gdb_exception e;
2384
2385   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2386     return 0;
2387
2388   /* Note we don't initialize bl->target_info, as that wipes out
2389      the breakpoint location's shadow_contents if the breakpoint
2390      is still inserted at that location.  This in turn breaks
2391      target_read_memory which depends on these buffers when
2392      a memory read is requested at the breakpoint location:
2393      Once the target_info has been wiped, we fail to see that
2394      we have a breakpoint inserted at that address and thus
2395      read the breakpoint instead of returning the data saved in
2396      the breakpoint location's shadow contents.  */
2397   bl->target_info.placed_address = bl->address;
2398   bl->target_info.placed_address_space = bl->pspace->aspace;
2399   bl->target_info.length = bl->length;
2400
2401   /* When working with target-side conditions, we must pass all the conditions
2402      for the same breakpoint address down to the target since GDB will not
2403      insert those locations.  With a list of breakpoint conditions, the target
2404      can decide when to stop and notify GDB.  */
2405
2406   if (is_breakpoint (bl->owner))
2407     {
2408       build_target_condition_list (bl);
2409       build_target_command_list (bl);
2410       /* Reset the modification marker.  */
2411       bl->needs_update = 0;
2412     }
2413
2414   if (bl->loc_type == bp_loc_software_breakpoint
2415       || bl->loc_type == bp_loc_hardware_breakpoint)
2416     {
2417       if (bl->owner->type != bp_hardware_breakpoint)
2418         {
2419           /* If the explicitly specified breakpoint type
2420              is not hardware breakpoint, check the memory map to see
2421              if the breakpoint address is in read only memory or not.
2422
2423              Two important cases are:
2424              - location type is not hardware breakpoint, memory
2425              is readonly.  We change the type of the location to
2426              hardware breakpoint.
2427              - location type is hardware breakpoint, memory is
2428              read-write.  This means we've previously made the
2429              location hardware one, but then the memory map changed,
2430              so we undo.
2431              
2432              When breakpoints are removed, remove_breakpoints will use
2433              location types we've just set here, the only possible
2434              problem is that memory map has changed during running
2435              program, but it's not going to work anyway with current
2436              gdb.  */
2437           struct mem_region *mr 
2438             = lookup_mem_region (bl->target_info.placed_address);
2439           
2440           if (mr)
2441             {
2442               if (automatic_hardware_breakpoints)
2443                 {
2444                   enum bp_loc_type new_type;
2445                   
2446                   if (mr->attrib.mode != MEM_RW)
2447                     new_type = bp_loc_hardware_breakpoint;
2448                   else 
2449                     new_type = bp_loc_software_breakpoint;
2450                   
2451                   if (new_type != bl->loc_type)
2452                     {
2453                       static int said = 0;
2454
2455                       bl->loc_type = new_type;
2456                       if (!said)
2457                         {
2458                           fprintf_filtered (gdb_stdout,
2459                                             _("Note: automatically using "
2460                                               "hardware breakpoints for "
2461                                               "read-only addresses.\n"));
2462                           said = 1;
2463                         }
2464                     }
2465                 }
2466               else if (bl->loc_type == bp_loc_software_breakpoint
2467                        && mr->attrib.mode != MEM_RW)        
2468                 warning (_("cannot set software breakpoint "
2469                            "at readonly address %s"),
2470                          paddress (bl->gdbarch, bl->address));
2471             }
2472         }
2473         
2474       /* First check to see if we have to handle an overlay.  */
2475       if (overlay_debugging == ovly_off
2476           || bl->section == NULL
2477           || !(section_is_overlay (bl->section)))
2478         {
2479           /* No overlay handling: just set the breakpoint.  */
2480           TRY_CATCH (e, RETURN_MASK_ALL)
2481             {
2482               val = bl->owner->ops->insert_location (bl);
2483             }
2484           if (e.reason < 0)
2485             {
2486               val = 1;
2487               hw_bp_err_string = (char *) e.message;
2488             }
2489         }
2490       else
2491         {
2492           /* This breakpoint is in an overlay section.
2493              Shall we set a breakpoint at the LMA?  */
2494           if (!overlay_events_enabled)
2495             {
2496               /* Yes -- overlay event support is not active, 
2497                  so we must try to set a breakpoint at the LMA.
2498                  This will not work for a hardware breakpoint.  */
2499               if (bl->loc_type == bp_loc_hardware_breakpoint)
2500                 warning (_("hardware breakpoint %d not supported in overlay!"),
2501                          bl->owner->number);
2502               else
2503                 {
2504                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2505                                                              bl->section);
2506                   /* Set a software (trap) breakpoint at the LMA.  */
2507                   bl->overlay_target_info = bl->target_info;
2508                   bl->overlay_target_info.placed_address = addr;
2509                   val = target_insert_breakpoint (bl->gdbarch,
2510                                                   &bl->overlay_target_info);
2511                   if (val != 0)
2512                     fprintf_unfiltered (tmp_error_stream,
2513                                         "Overlay breakpoint %d "
2514                                         "failed: in ROM?\n",
2515                                         bl->owner->number);
2516                 }
2517             }
2518           /* Shall we set a breakpoint at the VMA? */
2519           if (section_is_mapped (bl->section))
2520             {
2521               /* Yes.  This overlay section is mapped into memory.  */
2522               TRY_CATCH (e, RETURN_MASK_ALL)
2523                 {
2524                   val = bl->owner->ops->insert_location (bl);
2525                 }
2526               if (e.reason < 0)
2527                 {
2528                   val = 1;
2529                   hw_bp_err_string = (char *) e.message;
2530                 }
2531             }
2532           else
2533             {
2534               /* No.  This breakpoint will not be inserted.  
2535                  No error, but do not mark the bp as 'inserted'.  */
2536               return 0;
2537             }
2538         }
2539
2540       if (val)
2541         {
2542           /* Can't set the breakpoint.  */
2543           if (solib_name_from_address (bl->pspace, bl->address))
2544             {
2545               /* See also: disable_breakpoints_in_shlibs.  */
2546               val = 0;
2547               bl->shlib_disabled = 1;
2548               observer_notify_breakpoint_modified (bl->owner);
2549               if (!*disabled_breaks)
2550                 {
2551                   fprintf_unfiltered (tmp_error_stream, 
2552                                       "Cannot insert breakpoint %d.\n", 
2553                                       bl->owner->number);
2554                   fprintf_unfiltered (tmp_error_stream, 
2555                                       "Temporarily disabling shared "
2556                                       "library breakpoints:\n");
2557                 }
2558               *disabled_breaks = 1;
2559               fprintf_unfiltered (tmp_error_stream,
2560                                   "breakpoint #%d\n", bl->owner->number);
2561             }
2562           else
2563             {
2564               if (bl->loc_type == bp_loc_hardware_breakpoint)
2565                 {
2566                   *hw_breakpoint_error = 1;
2567                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2568                   fprintf_unfiltered (tmp_error_stream,
2569                                       "Cannot insert hardware breakpoint %d%s",
2570                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2571                   if (hw_bp_err_string)
2572                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2573                 }
2574               else
2575                 {
2576                   fprintf_unfiltered (tmp_error_stream, 
2577                                       "Cannot insert breakpoint %d.\n", 
2578                                       bl->owner->number);
2579                   fprintf_filtered (tmp_error_stream, 
2580                                     "Error accessing memory address ");
2581                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2582                                   tmp_error_stream);
2583                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2584                                     safe_strerror (val));
2585                 }
2586
2587             }
2588         }
2589       else
2590         bl->inserted = 1;
2591
2592       return val;
2593     }
2594
2595   else if (bl->loc_type == bp_loc_hardware_watchpoint
2596            /* NOTE drow/2003-09-08: This state only exists for removing
2597               watchpoints.  It's not clear that it's necessary...  */
2598            && bl->owner->disposition != disp_del_at_next_stop)
2599     {
2600       gdb_assert (bl->owner->ops != NULL
2601                   && bl->owner->ops->insert_location != NULL);
2602
2603       val = bl->owner->ops->insert_location (bl);
2604
2605       /* If trying to set a read-watchpoint, and it turns out it's not
2606          supported, try emulating one with an access watchpoint.  */
2607       if (val == 1 && bl->watchpoint_type == hw_read)
2608         {
2609           struct bp_location *loc, **loc_temp;
2610
2611           /* But don't try to insert it, if there's already another
2612              hw_access location that would be considered a duplicate
2613              of this one.  */
2614           ALL_BP_LOCATIONS (loc, loc_temp)
2615             if (loc != bl
2616                 && loc->watchpoint_type == hw_access
2617                 && watchpoint_locations_match (bl, loc))
2618               {
2619                 bl->duplicate = 1;
2620                 bl->inserted = 1;
2621                 bl->target_info = loc->target_info;
2622                 bl->watchpoint_type = hw_access;
2623                 val = 0;
2624                 break;
2625               }
2626
2627           if (val == 1)
2628             {
2629               bl->watchpoint_type = hw_access;
2630               val = bl->owner->ops->insert_location (bl);
2631
2632               if (val)
2633                 /* Back to the original value.  */
2634                 bl->watchpoint_type = hw_read;
2635             }
2636         }
2637
2638       bl->inserted = (val == 0);
2639     }
2640
2641   else if (bl->owner->type == bp_catchpoint)
2642     {
2643       gdb_assert (bl->owner->ops != NULL
2644                   && bl->owner->ops->insert_location != NULL);
2645
2646       val = bl->owner->ops->insert_location (bl);
2647       if (val)
2648         {
2649           bl->owner->enable_state = bp_disabled;
2650
2651           if (val == 1)
2652             warning (_("\
2653 Error inserting catchpoint %d: Your system does not support this type\n\
2654 of catchpoint."), bl->owner->number);
2655           else
2656             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2657         }
2658
2659       bl->inserted = (val == 0);
2660
2661       /* We've already printed an error message if there was a problem
2662          inserting this catchpoint, and we've disabled the catchpoint,
2663          so just return success.  */
2664       return 0;
2665     }
2666
2667   return 0;
2668 }
2669
2670 /* This function is called when program space PSPACE is about to be
2671    deleted.  It takes care of updating breakpoints to not reference
2672    PSPACE anymore.  */
2673
2674 void
2675 breakpoint_program_space_exit (struct program_space *pspace)
2676 {
2677   struct breakpoint *b, *b_temp;
2678   struct bp_location *loc, **loc_temp;
2679
2680   /* Remove any breakpoint that was set through this program space.  */
2681   ALL_BREAKPOINTS_SAFE (b, b_temp)
2682     {
2683       if (b->pspace == pspace)
2684         delete_breakpoint (b);
2685     }
2686
2687   /* Breakpoints set through other program spaces could have locations
2688      bound to PSPACE as well.  Remove those.  */
2689   ALL_BP_LOCATIONS (loc, loc_temp)
2690     {
2691       struct bp_location *tmp;
2692
2693       if (loc->pspace == pspace)
2694         {
2695           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2696           if (loc->owner->loc == loc)
2697             loc->owner->loc = loc->next;
2698           else
2699             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2700               if (tmp->next == loc)
2701                 {
2702                   tmp->next = loc->next;
2703                   break;
2704                 }
2705         }
2706     }
2707
2708   /* Now update the global location list to permanently delete the
2709      removed locations above.  */
2710   update_global_location_list (0);
2711 }
2712
2713 /* Make sure all breakpoints are inserted in inferior.
2714    Throws exception on any error.
2715    A breakpoint that is already inserted won't be inserted
2716    again, so calling this function twice is safe.  */
2717 void
2718 insert_breakpoints (void)
2719 {
2720   struct breakpoint *bpt;
2721
2722   ALL_BREAKPOINTS (bpt)
2723     if (is_hardware_watchpoint (bpt))
2724       {
2725         struct watchpoint *w = (struct watchpoint *) bpt;
2726
2727         update_watchpoint (w, 0 /* don't reparse.  */);
2728       }
2729
2730   update_global_location_list (1);
2731
2732   /* update_global_location_list does not insert breakpoints when
2733      always_inserted_mode is not enabled.  Explicitly insert them
2734      now.  */
2735   if (!breakpoints_always_inserted_mode ())
2736     insert_breakpoint_locations ();
2737 }
2738
2739 /* Invoke CALLBACK for each of bp_location.  */
2740
2741 void
2742 iterate_over_bp_locations (walk_bp_location_callback callback)
2743 {
2744   struct bp_location *loc, **loc_tmp;
2745
2746   ALL_BP_LOCATIONS (loc, loc_tmp)
2747     {
2748       callback (loc, NULL);
2749     }
2750 }
2751
2752 /* This is used when we need to synch breakpoint conditions between GDB and the
2753    target.  It is the case with deleting and disabling of breakpoints when using
2754    always-inserted mode.  */
2755
2756 static void
2757 update_inserted_breakpoint_locations (void)
2758 {
2759   struct bp_location *bl, **blp_tmp;
2760   int error_flag = 0;
2761   int val = 0;
2762   int disabled_breaks = 0;
2763   int hw_breakpoint_error = 0;
2764   int hw_bp_details_reported = 0;
2765
2766   struct ui_file *tmp_error_stream = mem_fileopen ();
2767   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2768
2769   /* Explicitly mark the warning -- this will only be printed if
2770      there was an error.  */
2771   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2772
2773   save_current_space_and_thread ();
2774
2775   ALL_BP_LOCATIONS (bl, blp_tmp)
2776     {
2777       /* We only want to update software breakpoints and hardware
2778          breakpoints.  */
2779       if (!is_breakpoint (bl->owner))
2780         continue;
2781
2782       /* We only want to update locations that are already inserted
2783          and need updating.  This is to avoid unwanted insertion during
2784          deletion of breakpoints.  */
2785       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2786         continue;
2787
2788       switch_to_program_space_and_thread (bl->pspace);
2789
2790       /* For targets that support global breakpoints, there's no need
2791          to select an inferior to insert breakpoint to.  In fact, even
2792          if we aren't attached to any process yet, we should still
2793          insert breakpoints.  */
2794       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2795           && ptid_equal (inferior_ptid, null_ptid))
2796         continue;
2797
2798       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2799                                     &hw_breakpoint_error, &hw_bp_details_reported);
2800       if (val)
2801         error_flag = val;
2802     }
2803
2804   if (error_flag)
2805     {
2806       target_terminal_ours_for_output ();
2807       error_stream (tmp_error_stream);
2808     }
2809
2810   do_cleanups (cleanups);
2811 }
2812
2813 /* Used when starting or continuing the program.  */
2814
2815 static void
2816 insert_breakpoint_locations (void)
2817 {
2818   struct breakpoint *bpt;
2819   struct bp_location *bl, **blp_tmp;
2820   int error_flag = 0;
2821   int val = 0;
2822   int disabled_breaks = 0;
2823   int hw_breakpoint_error = 0;
2824   int hw_bp_error_explained_already = 0;
2825
2826   struct ui_file *tmp_error_stream = mem_fileopen ();
2827   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2828   
2829   /* Explicitly mark the warning -- this will only be printed if
2830      there was an error.  */
2831   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2832
2833   save_current_space_and_thread ();
2834
2835   ALL_BP_LOCATIONS (bl, blp_tmp)
2836     {
2837       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2838         continue;
2839
2840       /* There is no point inserting thread-specific breakpoints if
2841          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2842          has BL->OWNER always non-NULL.  */
2843       if (bl->owner->thread != -1
2844           && !valid_thread_id (bl->owner->thread))
2845         continue;
2846
2847       switch_to_program_space_and_thread (bl->pspace);
2848
2849       /* For targets that support global breakpoints, there's no need
2850          to select an inferior to insert breakpoint to.  In fact, even
2851          if we aren't attached to any process yet, we should still
2852          insert breakpoints.  */
2853       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2854           && ptid_equal (inferior_ptid, null_ptid))
2855         continue;
2856
2857       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2858                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2859       if (val)
2860         error_flag = val;
2861     }
2862
2863   /* If we failed to insert all locations of a watchpoint, remove
2864      them, as half-inserted watchpoint is of limited use.  */
2865   ALL_BREAKPOINTS (bpt)  
2866     {
2867       int some_failed = 0;
2868       struct bp_location *loc;
2869
2870       if (!is_hardware_watchpoint (bpt))
2871         continue;
2872
2873       if (!breakpoint_enabled (bpt))
2874         continue;
2875
2876       if (bpt->disposition == disp_del_at_next_stop)
2877         continue;
2878       
2879       for (loc = bpt->loc; loc; loc = loc->next)
2880         if (!loc->inserted && should_be_inserted (loc))
2881           {
2882             some_failed = 1;
2883             break;
2884           }
2885       if (some_failed)
2886         {
2887           for (loc = bpt->loc; loc; loc = loc->next)
2888             if (loc->inserted)
2889               remove_breakpoint (loc, mark_uninserted);
2890
2891           hw_breakpoint_error = 1;
2892           fprintf_unfiltered (tmp_error_stream,
2893                               "Could not insert hardware watchpoint %d.\n", 
2894                               bpt->number);
2895           error_flag = -1;
2896         }
2897     }
2898
2899   if (error_flag)
2900     {
2901       /* If a hardware breakpoint or watchpoint was inserted, add a
2902          message about possibly exhausted resources.  */
2903       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2904         {
2905           fprintf_unfiltered (tmp_error_stream, 
2906                               "Could not insert hardware breakpoints:\n\
2907 You may have requested too many hardware breakpoints/watchpoints.\n");
2908         }
2909       target_terminal_ours_for_output ();
2910       error_stream (tmp_error_stream);
2911     }
2912
2913   do_cleanups (cleanups);
2914 }
2915
2916 /* Used when the program stops.
2917    Returns zero if successful, or non-zero if there was a problem
2918    removing a breakpoint location.  */
2919
2920 int
2921 remove_breakpoints (void)
2922 {
2923   struct bp_location *bl, **blp_tmp;
2924   int val = 0;
2925
2926   ALL_BP_LOCATIONS (bl, blp_tmp)
2927   {
2928     if (bl->inserted && !is_tracepoint (bl->owner))
2929       val |= remove_breakpoint (bl, mark_uninserted);
2930   }
2931   return val;
2932 }
2933
2934 /* Remove breakpoints of process PID.  */
2935
2936 int
2937 remove_breakpoints_pid (int pid)
2938 {
2939   struct bp_location *bl, **blp_tmp;
2940   int val;
2941   struct inferior *inf = find_inferior_pid (pid);
2942
2943   ALL_BP_LOCATIONS (bl, blp_tmp)
2944   {
2945     if (bl->pspace != inf->pspace)
2946       continue;
2947
2948     if (bl->owner->type == bp_dprintf)
2949       continue;
2950
2951     if (bl->inserted)
2952       {
2953         val = remove_breakpoint (bl, mark_uninserted);
2954         if (val != 0)
2955           return val;
2956       }
2957   }
2958   return 0;
2959 }
2960
2961 int
2962 reattach_breakpoints (int pid)
2963 {
2964   struct cleanup *old_chain;
2965   struct bp_location *bl, **blp_tmp;
2966   int val;
2967   struct ui_file *tmp_error_stream;
2968   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2969   struct inferior *inf;
2970   struct thread_info *tp;
2971
2972   tp = any_live_thread_of_process (pid);
2973   if (tp == NULL)
2974     return 1;
2975
2976   inf = find_inferior_pid (pid);
2977   old_chain = save_inferior_ptid ();
2978
2979   inferior_ptid = tp->ptid;
2980
2981   tmp_error_stream = mem_fileopen ();
2982   make_cleanup_ui_file_delete (tmp_error_stream);
2983
2984   ALL_BP_LOCATIONS (bl, blp_tmp)
2985   {
2986     if (bl->pspace != inf->pspace)
2987       continue;
2988
2989     if (bl->inserted)
2990       {
2991         bl->inserted = 0;
2992         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2993         if (val != 0)
2994           {
2995             do_cleanups (old_chain);
2996             return val;
2997           }
2998       }
2999   }
3000   do_cleanups (old_chain);
3001   return 0;
3002 }
3003
3004 static int internal_breakpoint_number = -1;
3005
3006 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3007    If INTERNAL is non-zero, the breakpoint number will be populated
3008    from internal_breakpoint_number and that variable decremented.
3009    Otherwise the breakpoint number will be populated from
3010    breakpoint_count and that value incremented.  Internal breakpoints
3011    do not set the internal var bpnum.  */
3012 static void
3013 set_breakpoint_number (int internal, struct breakpoint *b)
3014 {
3015   if (internal)
3016     b->number = internal_breakpoint_number--;
3017   else
3018     {
3019       set_breakpoint_count (breakpoint_count + 1);
3020       b->number = breakpoint_count;
3021     }
3022 }
3023
3024 static struct breakpoint *
3025 create_internal_breakpoint (struct gdbarch *gdbarch,
3026                             CORE_ADDR address, enum bptype type,
3027                             const struct breakpoint_ops *ops)
3028 {
3029   struct symtab_and_line sal;
3030   struct breakpoint *b;
3031
3032   init_sal (&sal);              /* Initialize to zeroes.  */
3033
3034   sal.pc = address;
3035   sal.section = find_pc_overlay (sal.pc);
3036   sal.pspace = current_program_space;
3037
3038   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3039   b->number = internal_breakpoint_number--;
3040   b->disposition = disp_donttouch;
3041
3042   return b;
3043 }
3044
3045 static const char *const longjmp_names[] =
3046   {
3047     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3048   };
3049 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3050
3051 /* Per-objfile data private to breakpoint.c.  */
3052 struct breakpoint_objfile_data
3053 {
3054   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3055   struct minimal_symbol *overlay_msym;
3056
3057   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3058   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3059
3060   /* True if we have looked for longjmp probes.  */
3061   int longjmp_searched;
3062
3063   /* SystemTap probe points for longjmp (if any).  */
3064   VEC (probe_p) *longjmp_probes;
3065
3066   /* Minimal symbol for "std::terminate()" (if any).  */
3067   struct minimal_symbol *terminate_msym;
3068
3069   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3070   struct minimal_symbol *exception_msym;
3071
3072   /* True if we have looked for exception probes.  */
3073   int exception_searched;
3074
3075   /* SystemTap probe points for unwinding (if any).  */
3076   VEC (probe_p) *exception_probes;
3077 };
3078
3079 static const struct objfile_data *breakpoint_objfile_key;
3080
3081 /* Minimal symbol not found sentinel.  */
3082 static struct minimal_symbol msym_not_found;
3083
3084 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3085
3086 static int
3087 msym_not_found_p (const struct minimal_symbol *msym)
3088 {
3089   return msym == &msym_not_found;
3090 }
3091
3092 /* Return per-objfile data needed by breakpoint.c.
3093    Allocate the data if necessary.  */
3094
3095 static struct breakpoint_objfile_data *
3096 get_breakpoint_objfile_data (struct objfile *objfile)
3097 {
3098   struct breakpoint_objfile_data *bp_objfile_data;
3099
3100   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3101   if (bp_objfile_data == NULL)
3102     {
3103       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3104                                        sizeof (*bp_objfile_data));
3105
3106       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3107       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3108     }
3109   return bp_objfile_data;
3110 }
3111
3112 static void
3113 free_breakpoint_probes (struct objfile *obj, void *data)
3114 {
3115   struct breakpoint_objfile_data *bp_objfile_data = data;
3116
3117   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3118   VEC_free (probe_p, bp_objfile_data->exception_probes);
3119 }
3120
3121 static void
3122 create_overlay_event_breakpoint (void)
3123 {
3124   struct objfile *objfile;
3125   const char *const func_name = "_ovly_debug_event";
3126
3127   ALL_OBJFILES (objfile)
3128     {
3129       struct breakpoint *b;
3130       struct breakpoint_objfile_data *bp_objfile_data;
3131       CORE_ADDR addr;
3132
3133       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3134
3135       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3136         continue;
3137
3138       if (bp_objfile_data->overlay_msym == NULL)
3139         {
3140           struct minimal_symbol *m;
3141
3142           m = lookup_minimal_symbol_text (func_name, objfile);
3143           if (m == NULL)
3144             {
3145               /* Avoid future lookups in this objfile.  */
3146               bp_objfile_data->overlay_msym = &msym_not_found;
3147               continue;
3148             }
3149           bp_objfile_data->overlay_msym = m;
3150         }
3151
3152       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3153       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3154                                       bp_overlay_event,
3155                                       &internal_breakpoint_ops);
3156       b->addr_string = xstrdup (func_name);
3157
3158       if (overlay_debugging == ovly_auto)
3159         {
3160           b->enable_state = bp_enabled;
3161           overlay_events_enabled = 1;
3162         }
3163       else
3164        {
3165          b->enable_state = bp_disabled;
3166          overlay_events_enabled = 0;
3167        }
3168     }
3169   update_global_location_list (1);
3170 }
3171
3172 static void
3173 create_longjmp_master_breakpoint (void)
3174 {
3175   struct program_space *pspace;
3176   struct cleanup *old_chain;
3177
3178   old_chain = save_current_program_space ();
3179
3180   ALL_PSPACES (pspace)
3181   {
3182     struct objfile *objfile;
3183
3184     set_current_program_space (pspace);
3185
3186     ALL_OBJFILES (objfile)
3187     {
3188       int i;
3189       struct gdbarch *gdbarch;
3190       struct breakpoint_objfile_data *bp_objfile_data;
3191
3192       gdbarch = get_objfile_arch (objfile);
3193       if (!gdbarch_get_longjmp_target_p (gdbarch))
3194         continue;
3195
3196       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3197
3198       if (!bp_objfile_data->longjmp_searched)
3199         {
3200           bp_objfile_data->longjmp_probes
3201             = find_probes_in_objfile (objfile, "libc", "longjmp");
3202           bp_objfile_data->longjmp_searched = 1;
3203         }
3204
3205       if (bp_objfile_data->longjmp_probes != NULL)
3206         {
3207           int i;
3208           struct probe *probe;
3209           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3210
3211           for (i = 0;
3212                VEC_iterate (probe_p,
3213                             bp_objfile_data->longjmp_probes,
3214                             i, probe);
3215                ++i)
3216             {
3217               struct breakpoint *b;
3218
3219               b = create_internal_breakpoint (gdbarch, probe->address,
3220                                               bp_longjmp_master,
3221                                               &internal_breakpoint_ops);
3222               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3223               b->enable_state = bp_disabled;
3224             }
3225
3226           continue;
3227         }
3228
3229       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3230         {
3231           struct breakpoint *b;
3232           const char *func_name;
3233           CORE_ADDR addr;
3234
3235           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3236             continue;
3237
3238           func_name = longjmp_names[i];
3239           if (bp_objfile_data->longjmp_msym[i] == NULL)
3240             {
3241               struct minimal_symbol *m;
3242
3243               m = lookup_minimal_symbol_text (func_name, objfile);
3244               if (m == NULL)
3245                 {
3246                   /* Prevent future lookups in this objfile.  */
3247                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3248                   continue;
3249                 }
3250               bp_objfile_data->longjmp_msym[i] = m;
3251             }
3252
3253           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3254           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3255                                           &internal_breakpoint_ops);
3256           b->addr_string = xstrdup (func_name);
3257           b->enable_state = bp_disabled;
3258         }
3259     }
3260   }
3261   update_global_location_list (1);
3262
3263   do_cleanups (old_chain);
3264 }
3265
3266 /* Create a master std::terminate breakpoint.  */
3267 static void
3268 create_std_terminate_master_breakpoint (void)
3269 {
3270   struct program_space *pspace;
3271   struct cleanup *old_chain;
3272   const char *const func_name = "std::terminate()";
3273
3274   old_chain = save_current_program_space ();
3275
3276   ALL_PSPACES (pspace)
3277   {
3278     struct objfile *objfile;
3279     CORE_ADDR addr;
3280
3281     set_current_program_space (pspace);
3282
3283     ALL_OBJFILES (objfile)
3284     {
3285       struct breakpoint *b;
3286       struct breakpoint_objfile_data *bp_objfile_data;
3287
3288       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3289
3290       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3291         continue;
3292
3293       if (bp_objfile_data->terminate_msym == NULL)
3294         {
3295           struct minimal_symbol *m;
3296
3297           m = lookup_minimal_symbol (func_name, NULL, objfile);
3298           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3299                             && MSYMBOL_TYPE (m) != mst_file_text))
3300             {
3301               /* Prevent future lookups in this objfile.  */
3302               bp_objfile_data->terminate_msym = &msym_not_found;
3303               continue;
3304             }
3305           bp_objfile_data->terminate_msym = m;
3306         }
3307
3308       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3309       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3310                                       bp_std_terminate_master,
3311                                       &internal_breakpoint_ops);
3312       b->addr_string = xstrdup (func_name);
3313       b->enable_state = bp_disabled;
3314     }
3315   }
3316
3317   update_global_location_list (1);
3318
3319   do_cleanups (old_chain);
3320 }
3321
3322 /* Install a master breakpoint on the unwinder's debug hook.  */
3323
3324 static void
3325 create_exception_master_breakpoint (void)
3326 {
3327   struct objfile *objfile;
3328   const char *const func_name = "_Unwind_DebugHook";
3329
3330   ALL_OBJFILES (objfile)
3331     {
3332       struct breakpoint *b;
3333       struct gdbarch *gdbarch;
3334       struct breakpoint_objfile_data *bp_objfile_data;
3335       CORE_ADDR addr;
3336
3337       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3338
3339       /* We prefer the SystemTap probe point if it exists.  */
3340       if (!bp_objfile_data->exception_searched)
3341         {
3342           bp_objfile_data->exception_probes
3343             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3344           bp_objfile_data->exception_searched = 1;
3345         }
3346
3347       if (bp_objfile_data->exception_probes != NULL)
3348         {
3349           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3350           int i;
3351           struct probe *probe;
3352
3353           for (i = 0;
3354                VEC_iterate (probe_p,
3355                             bp_objfile_data->exception_probes,
3356                             i, probe);
3357                ++i)
3358             {
3359               struct breakpoint *b;
3360
3361               b = create_internal_breakpoint (gdbarch, probe->address,
3362                                               bp_exception_master,
3363                                               &internal_breakpoint_ops);
3364               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3365               b->enable_state = bp_disabled;
3366             }
3367
3368           continue;
3369         }
3370
3371       /* Otherwise, try the hook function.  */
3372
3373       if (msym_not_found_p (bp_objfile_data->exception_msym))
3374         continue;
3375
3376       gdbarch = get_objfile_arch (objfile);
3377
3378       if (bp_objfile_data->exception_msym == NULL)
3379         {
3380           struct minimal_symbol *debug_hook;
3381
3382           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3383           if (debug_hook == NULL)
3384             {
3385               bp_objfile_data->exception_msym = &msym_not_found;
3386               continue;
3387             }
3388
3389           bp_objfile_data->exception_msym = debug_hook;
3390         }
3391
3392       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3393       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3394                                                  &current_target);
3395       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3396                                       &internal_breakpoint_ops);
3397       b->addr_string = xstrdup (func_name);
3398       b->enable_state = bp_disabled;
3399     }
3400
3401   update_global_location_list (1);
3402 }
3403
3404 void
3405 update_breakpoints_after_exec (void)
3406 {
3407   struct breakpoint *b, *b_tmp;
3408   struct bp_location *bploc, **bplocp_tmp;
3409
3410   /* We're about to delete breakpoints from GDB's lists.  If the
3411      INSERTED flag is true, GDB will try to lift the breakpoints by
3412      writing the breakpoints' "shadow contents" back into memory.  The
3413      "shadow contents" are NOT valid after an exec, so GDB should not
3414      do that.  Instead, the target is responsible from marking
3415      breakpoints out as soon as it detects an exec.  We don't do that
3416      here instead, because there may be other attempts to delete
3417      breakpoints after detecting an exec and before reaching here.  */
3418   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3419     if (bploc->pspace == current_program_space)
3420       gdb_assert (!bploc->inserted);
3421
3422   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3423   {
3424     if (b->pspace != current_program_space)
3425       continue;
3426
3427     /* Solib breakpoints must be explicitly reset after an exec().  */
3428     if (b->type == bp_shlib_event)
3429       {
3430         delete_breakpoint (b);
3431         continue;
3432       }
3433
3434     /* JIT breakpoints must be explicitly reset after an exec().  */
3435     if (b->type == bp_jit_event)
3436       {
3437         delete_breakpoint (b);
3438         continue;
3439       }
3440
3441     /* Thread event breakpoints must be set anew after an exec(),
3442        as must overlay event and longjmp master breakpoints.  */
3443     if (b->type == bp_thread_event || b->type == bp_overlay_event
3444         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3445         || b->type == bp_exception_master)
3446       {
3447         delete_breakpoint (b);
3448         continue;
3449       }
3450
3451     /* Step-resume breakpoints are meaningless after an exec().  */
3452     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3453       {
3454         delete_breakpoint (b);
3455         continue;
3456       }
3457
3458     /* Longjmp and longjmp-resume breakpoints are also meaningless
3459        after an exec.  */
3460     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3461         || b->type == bp_longjmp_call_dummy
3462         || b->type == bp_exception || b->type == bp_exception_resume)
3463       {
3464         delete_breakpoint (b);
3465         continue;
3466       }
3467
3468     if (b->type == bp_catchpoint)
3469       {
3470         /* For now, none of the bp_catchpoint breakpoints need to
3471            do anything at this point.  In the future, if some of
3472            the catchpoints need to something, we will need to add
3473            a new method, and call this method from here.  */
3474         continue;
3475       }
3476
3477     /* bp_finish is a special case.  The only way we ought to be able
3478        to see one of these when an exec() has happened, is if the user
3479        caught a vfork, and then said "finish".  Ordinarily a finish just
3480        carries them to the call-site of the current callee, by setting
3481        a temporary bp there and resuming.  But in this case, the finish
3482        will carry them entirely through the vfork & exec.
3483
3484        We don't want to allow a bp_finish to remain inserted now.  But
3485        we can't safely delete it, 'cause finish_command has a handle to
3486        the bp on a bpstat, and will later want to delete it.  There's a
3487        chance (and I've seen it happen) that if we delete the bp_finish
3488        here, that its storage will get reused by the time finish_command
3489        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3490        We really must allow finish_command to delete a bp_finish.
3491
3492        In the absence of a general solution for the "how do we know
3493        it's safe to delete something others may have handles to?"
3494        problem, what we'll do here is just uninsert the bp_finish, and
3495        let finish_command delete it.
3496
3497        (We know the bp_finish is "doomed" in the sense that it's
3498        momentary, and will be deleted as soon as finish_command sees
3499        the inferior stopped.  So it doesn't matter that the bp's
3500        address is probably bogus in the new a.out, unlike e.g., the
3501        solib breakpoints.)  */
3502
3503     if (b->type == bp_finish)
3504       {
3505         continue;
3506       }
3507
3508     /* Without a symbolic address, we have little hope of the
3509        pre-exec() address meaning the same thing in the post-exec()
3510        a.out.  */
3511     if (b->addr_string == NULL)
3512       {
3513         delete_breakpoint (b);
3514         continue;
3515       }
3516   }
3517   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3518   create_overlay_event_breakpoint ();
3519   create_longjmp_master_breakpoint ();
3520   create_std_terminate_master_breakpoint ();
3521   create_exception_master_breakpoint ();
3522 }
3523
3524 int
3525 detach_breakpoints (ptid_t ptid)
3526 {
3527   struct bp_location *bl, **blp_tmp;
3528   int val = 0;
3529   struct cleanup *old_chain = save_inferior_ptid ();
3530   struct inferior *inf = current_inferior ();
3531
3532   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3533     error (_("Cannot detach breakpoints of inferior_ptid"));
3534
3535   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3536   inferior_ptid = ptid;
3537   ALL_BP_LOCATIONS (bl, blp_tmp)
3538   {
3539     if (bl->pspace != inf->pspace)
3540       continue;
3541
3542     if (bl->inserted)
3543       val |= remove_breakpoint_1 (bl, mark_inserted);
3544   }
3545
3546   /* Detach single-step breakpoints as well.  */
3547   detach_single_step_breakpoints ();
3548
3549   do_cleanups (old_chain);
3550   return val;
3551 }
3552
3553 /* Remove the breakpoint location BL from the current address space.
3554    Note that this is used to detach breakpoints from a child fork.
3555    When we get here, the child isn't in the inferior list, and neither
3556    do we have objects to represent its address space --- we should
3557    *not* look at bl->pspace->aspace here.  */
3558
3559 static int
3560 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3561 {
3562   int val;
3563
3564   /* BL is never in moribund_locations by our callers.  */
3565   gdb_assert (bl->owner != NULL);
3566
3567   if (bl->owner->enable_state == bp_permanent)
3568     /* Permanent breakpoints cannot be inserted or removed.  */
3569     return 0;
3570
3571   /* The type of none suggests that owner is actually deleted.
3572      This should not ever happen.  */
3573   gdb_assert (bl->owner->type != bp_none);
3574
3575   if (bl->loc_type == bp_loc_software_breakpoint
3576       || bl->loc_type == bp_loc_hardware_breakpoint)
3577     {
3578       /* "Normal" instruction breakpoint: either the standard
3579          trap-instruction bp (bp_breakpoint), or a
3580          bp_hardware_breakpoint.  */
3581
3582       /* First check to see if we have to handle an overlay.  */
3583       if (overlay_debugging == ovly_off
3584           || bl->section == NULL
3585           || !(section_is_overlay (bl->section)))
3586         {
3587           /* No overlay handling: just remove the breakpoint.  */
3588           val = bl->owner->ops->remove_location (bl);
3589         }
3590       else
3591         {
3592           /* This breakpoint is in an overlay section.
3593              Did we set a breakpoint at the LMA?  */
3594           if (!overlay_events_enabled)
3595               {
3596                 /* Yes -- overlay event support is not active, so we
3597                    should have set a breakpoint at the LMA.  Remove it.  
3598                 */
3599                 /* Ignore any failures: if the LMA is in ROM, we will
3600                    have already warned when we failed to insert it.  */
3601                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3602                   target_remove_hw_breakpoint (bl->gdbarch,
3603                                                &bl->overlay_target_info);
3604                 else
3605                   target_remove_breakpoint (bl->gdbarch,
3606                                             &bl->overlay_target_info);
3607               }
3608           /* Did we set a breakpoint at the VMA? 
3609              If so, we will have marked the breakpoint 'inserted'.  */
3610           if (bl->inserted)
3611             {
3612               /* Yes -- remove it.  Previously we did not bother to
3613                  remove the breakpoint if the section had been
3614                  unmapped, but let's not rely on that being safe.  We
3615                  don't know what the overlay manager might do.  */
3616
3617               /* However, we should remove *software* breakpoints only
3618                  if the section is still mapped, or else we overwrite
3619                  wrong code with the saved shadow contents.  */
3620               if (bl->loc_type == bp_loc_hardware_breakpoint
3621                   || section_is_mapped (bl->section))
3622                 val = bl->owner->ops->remove_location (bl);
3623               else
3624                 val = 0;
3625             }
3626           else
3627             {
3628               /* No -- not inserted, so no need to remove.  No error.  */
3629               val = 0;
3630             }
3631         }
3632
3633       /* In some cases, we might not be able to remove a breakpoint
3634          in a shared library that has already been removed, but we
3635          have not yet processed the shlib unload event.  */
3636       if (val && solib_name_from_address (bl->pspace, bl->address))
3637         val = 0;
3638
3639       if (val)
3640         return val;
3641       bl->inserted = (is == mark_inserted);
3642     }
3643   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3644     {
3645       gdb_assert (bl->owner->ops != NULL
3646                   && bl->owner->ops->remove_location != NULL);
3647
3648       bl->inserted = (is == mark_inserted);
3649       bl->owner->ops->remove_location (bl);
3650
3651       /* Failure to remove any of the hardware watchpoints comes here.  */
3652       if ((is == mark_uninserted) && (bl->inserted))
3653         warning (_("Could not remove hardware watchpoint %d."),
3654                  bl->owner->number);
3655     }
3656   else if (bl->owner->type == bp_catchpoint
3657            && breakpoint_enabled (bl->owner)
3658            && !bl->duplicate)
3659     {
3660       gdb_assert (bl->owner->ops != NULL
3661                   && bl->owner->ops->remove_location != NULL);
3662
3663       val = bl->owner->ops->remove_location (bl);
3664       if (val)
3665         return val;
3666
3667       bl->inserted = (is == mark_inserted);
3668     }
3669
3670   return 0;
3671 }
3672
3673 static int
3674 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3675 {
3676   int ret;
3677   struct cleanup *old_chain;
3678
3679   /* BL is never in moribund_locations by our callers.  */
3680   gdb_assert (bl->owner != NULL);
3681
3682   if (bl->owner->enable_state == bp_permanent)
3683     /* Permanent breakpoints cannot be inserted or removed.  */
3684     return 0;
3685
3686   /* The type of none suggests that owner is actually deleted.
3687      This should not ever happen.  */
3688   gdb_assert (bl->owner->type != bp_none);
3689
3690   old_chain = save_current_space_and_thread ();
3691
3692   switch_to_program_space_and_thread (bl->pspace);
3693
3694   ret = remove_breakpoint_1 (bl, is);
3695
3696   do_cleanups (old_chain);
3697   return ret;
3698 }
3699
3700 /* Clear the "inserted" flag in all breakpoints.  */
3701
3702 void
3703 mark_breakpoints_out (void)
3704 {
3705   struct bp_location *bl, **blp_tmp;
3706
3707   ALL_BP_LOCATIONS (bl, blp_tmp)
3708     if (bl->pspace == current_program_space)
3709       bl->inserted = 0;
3710 }
3711
3712 /* Clear the "inserted" flag in all breakpoints and delete any
3713    breakpoints which should go away between runs of the program.
3714
3715    Plus other such housekeeping that has to be done for breakpoints
3716    between runs.
3717
3718    Note: this function gets called at the end of a run (by
3719    generic_mourn_inferior) and when a run begins (by
3720    init_wait_for_inferior).  */
3721
3722
3723
3724 void
3725 breakpoint_init_inferior (enum inf_context context)
3726 {
3727   struct breakpoint *b, *b_tmp;
3728   struct bp_location *bl, **blp_tmp;
3729   int ix;
3730   struct program_space *pspace = current_program_space;
3731
3732   /* If breakpoint locations are shared across processes, then there's
3733      nothing to do.  */
3734   if (gdbarch_has_global_breakpoints (target_gdbarch))
3735     return;
3736
3737   ALL_BP_LOCATIONS (bl, blp_tmp)
3738   {
3739     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3740     if (bl->pspace == pspace
3741         && bl->owner->enable_state != bp_permanent)
3742       bl->inserted = 0;
3743   }
3744
3745   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3746   {
3747     if (b->loc && b->loc->pspace != pspace)
3748       continue;
3749
3750     switch (b->type)
3751       {
3752       case bp_call_dummy:
3753       case bp_longjmp_call_dummy:
3754
3755         /* If the call dummy breakpoint is at the entry point it will
3756            cause problems when the inferior is rerun, so we better get
3757            rid of it.  */
3758
3759       case bp_watchpoint_scope:
3760
3761         /* Also get rid of scope breakpoints.  */
3762
3763       case bp_shlib_event:
3764
3765         /* Also remove solib event breakpoints.  Their addresses may
3766            have changed since the last time we ran the program.
3767            Actually we may now be debugging against different target;
3768            and so the solib backend that installed this breakpoint may
3769            not be used in by the target.  E.g.,
3770
3771            (gdb) file prog-linux
3772            (gdb) run               # native linux target
3773            ...
3774            (gdb) kill
3775            (gdb) file prog-win.exe
3776            (gdb) tar rem :9999     # remote Windows gdbserver.
3777         */
3778
3779       case bp_step_resume:
3780
3781         /* Also remove step-resume breakpoints.  */
3782
3783         delete_breakpoint (b);
3784         break;
3785
3786       case bp_watchpoint:
3787       case bp_hardware_watchpoint:
3788       case bp_read_watchpoint:
3789       case bp_access_watchpoint:
3790         {
3791           struct watchpoint *w = (struct watchpoint *) b;
3792
3793           /* Likewise for watchpoints on local expressions.  */
3794           if (w->exp_valid_block != NULL)
3795             delete_breakpoint (b);
3796           else if (context == inf_starting)
3797             {
3798               /* Reset val field to force reread of starting value in
3799                  insert_breakpoints.  */
3800               if (w->val)
3801                 value_free (w->val);
3802               w->val = NULL;
3803               w->val_valid = 0;
3804           }
3805         }
3806         break;
3807       default:
3808         break;
3809       }
3810   }
3811
3812   /* Get rid of the moribund locations.  */
3813   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3814     decref_bp_location (&bl);
3815   VEC_free (bp_location_p, moribund_locations);
3816 }
3817
3818 /* These functions concern about actual breakpoints inserted in the
3819    target --- to e.g. check if we need to do decr_pc adjustment or if
3820    we need to hop over the bkpt --- so we check for address space
3821    match, not program space.  */
3822
3823 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3824    exists at PC.  It returns ordinary_breakpoint_here if it's an
3825    ordinary breakpoint, or permanent_breakpoint_here if it's a
3826    permanent breakpoint.
3827    - When continuing from a location with an ordinary breakpoint, we
3828      actually single step once before calling insert_breakpoints.
3829    - When continuing from a location with a permanent breakpoint, we
3830      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3831      the target, to advance the PC past the breakpoint.  */
3832
3833 enum breakpoint_here
3834 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3835 {
3836   struct bp_location *bl, **blp_tmp;
3837   int any_breakpoint_here = 0;
3838
3839   ALL_BP_LOCATIONS (bl, blp_tmp)
3840     {
3841       if (bl->loc_type != bp_loc_software_breakpoint
3842           && bl->loc_type != bp_loc_hardware_breakpoint)
3843         continue;
3844
3845       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3846       if ((breakpoint_enabled (bl->owner)
3847            || bl->owner->enable_state == bp_permanent)
3848           && breakpoint_location_address_match (bl, aspace, pc))
3849         {
3850           if (overlay_debugging 
3851               && section_is_overlay (bl->section)
3852               && !section_is_mapped (bl->section))
3853             continue;           /* unmapped overlay -- can't be a match */
3854           else if (bl->owner->enable_state == bp_permanent)
3855             return permanent_breakpoint_here;
3856           else
3857             any_breakpoint_here = 1;
3858         }
3859     }
3860
3861   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3862 }
3863
3864 /* Return true if there's a moribund breakpoint at PC.  */
3865
3866 int
3867 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3868 {
3869   struct bp_location *loc;
3870   int ix;
3871
3872   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3873     if (breakpoint_location_address_match (loc, aspace, pc))
3874       return 1;
3875
3876   return 0;
3877 }
3878
3879 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3880    inserted using regular breakpoint_chain / bp_location array
3881    mechanism.  This does not check for single-step breakpoints, which
3882    are inserted and removed using direct target manipulation.  */
3883
3884 int
3885 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3886                                     CORE_ADDR pc)
3887 {
3888   struct bp_location *bl, **blp_tmp;
3889
3890   ALL_BP_LOCATIONS (bl, blp_tmp)
3891     {
3892       if (bl->loc_type != bp_loc_software_breakpoint
3893           && bl->loc_type != bp_loc_hardware_breakpoint)
3894         continue;
3895
3896       if (bl->inserted
3897           && breakpoint_location_address_match (bl, aspace, pc))
3898         {
3899           if (overlay_debugging 
3900               && section_is_overlay (bl->section)
3901               && !section_is_mapped (bl->section))
3902             continue;           /* unmapped overlay -- can't be a match */
3903           else
3904             return 1;
3905         }
3906     }
3907   return 0;
3908 }
3909
3910 /* Returns non-zero iff there's either regular breakpoint
3911    or a single step breakpoint inserted at PC.  */
3912
3913 int
3914 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3915 {
3916   if (regular_breakpoint_inserted_here_p (aspace, pc))
3917     return 1;
3918
3919   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3920     return 1;
3921
3922   return 0;
3923 }
3924
3925 /* This function returns non-zero iff there is a software breakpoint
3926    inserted at PC.  */
3927
3928 int
3929 software_breakpoint_inserted_here_p (struct address_space *aspace,
3930                                      CORE_ADDR pc)
3931 {
3932   struct bp_location *bl, **blp_tmp;
3933
3934   ALL_BP_LOCATIONS (bl, blp_tmp)
3935     {
3936       if (bl->loc_type != bp_loc_software_breakpoint)
3937         continue;
3938
3939       if (bl->inserted
3940           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3941                                        aspace, pc))
3942         {
3943           if (overlay_debugging 
3944               && section_is_overlay (bl->section)
3945               && !section_is_mapped (bl->section))
3946             continue;           /* unmapped overlay -- can't be a match */
3947           else
3948             return 1;
3949         }
3950     }
3951
3952   /* Also check for software single-step breakpoints.  */
3953   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3954     return 1;
3955
3956   return 0;
3957 }
3958
3959 int
3960 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3961                                        CORE_ADDR addr, ULONGEST len)
3962 {
3963   struct breakpoint *bpt;
3964
3965   ALL_BREAKPOINTS (bpt)
3966     {
3967       struct bp_location *loc;
3968
3969       if (bpt->type != bp_hardware_watchpoint
3970           && bpt->type != bp_access_watchpoint)
3971         continue;
3972
3973       if (!breakpoint_enabled (bpt))
3974         continue;
3975
3976       for (loc = bpt->loc; loc; loc = loc->next)
3977         if (loc->pspace->aspace == aspace && loc->inserted)
3978           {
3979             CORE_ADDR l, h;
3980
3981             /* Check for intersection.  */
3982             l = max (loc->address, addr);
3983             h = min (loc->address + loc->length, addr + len);
3984             if (l < h)
3985               return 1;
3986           }
3987     }
3988   return 0;
3989 }
3990
3991 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3992    PC is valid for process/thread PTID.  */
3993
3994 int
3995 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3996                          ptid_t ptid)
3997 {
3998   struct bp_location *bl, **blp_tmp;
3999   /* The thread and task IDs associated to PTID, computed lazily.  */
4000   int thread = -1;
4001   int task = 0;
4002   
4003   ALL_BP_LOCATIONS (bl, blp_tmp)
4004     {
4005       if (bl->loc_type != bp_loc_software_breakpoint
4006           && bl->loc_type != bp_loc_hardware_breakpoint)
4007         continue;
4008
4009       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4010       if (!breakpoint_enabled (bl->owner)
4011           && bl->owner->enable_state != bp_permanent)
4012         continue;
4013
4014       if (!breakpoint_location_address_match (bl, aspace, pc))
4015         continue;
4016
4017       if (bl->owner->thread != -1)
4018         {
4019           /* This is a thread-specific breakpoint.  Check that ptid
4020              matches that thread.  If thread hasn't been computed yet,
4021              it is now time to do so.  */
4022           if (thread == -1)
4023             thread = pid_to_thread_id (ptid);
4024           if (bl->owner->thread != thread)
4025             continue;
4026         }
4027
4028       if (bl->owner->task != 0)
4029         {
4030           /* This is a task-specific breakpoint.  Check that ptid
4031              matches that task.  If task hasn't been computed yet,
4032              it is now time to do so.  */
4033           if (task == 0)
4034             task = ada_get_task_number (ptid);
4035           if (bl->owner->task != task)
4036             continue;
4037         }
4038
4039       if (overlay_debugging 
4040           && section_is_overlay (bl->section)
4041           && !section_is_mapped (bl->section))
4042         continue;           /* unmapped overlay -- can't be a match */
4043
4044       return 1;
4045     }
4046
4047   return 0;
4048 }
4049 \f
4050
4051 /* bpstat stuff.  External routines' interfaces are documented
4052    in breakpoint.h.  */
4053
4054 int
4055 is_catchpoint (struct breakpoint *ep)
4056 {
4057   return (ep->type == bp_catchpoint);
4058 }
4059
4060 /* Frees any storage that is part of a bpstat.  Does not walk the
4061    'next' chain.  */
4062
4063 static void
4064 bpstat_free (bpstat bs)
4065 {
4066   if (bs->old_val != NULL)
4067     value_free (bs->old_val);
4068   decref_counted_command_line (&bs->commands);
4069   decref_bp_location (&bs->bp_location_at);
4070   xfree (bs);
4071 }
4072
4073 /* Clear a bpstat so that it says we are not at any breakpoint.
4074    Also free any storage that is part of a bpstat.  */
4075
4076 void
4077 bpstat_clear (bpstat *bsp)
4078 {
4079   bpstat p;
4080   bpstat q;
4081
4082   if (bsp == 0)
4083     return;
4084   p = *bsp;
4085   while (p != NULL)
4086     {
4087       q = p->next;
4088       bpstat_free (p);
4089       p = q;
4090     }
4091   *bsp = NULL;
4092 }
4093
4094 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4095    is part of the bpstat is copied as well.  */
4096
4097 bpstat
4098 bpstat_copy (bpstat bs)
4099 {
4100   bpstat p = NULL;
4101   bpstat tmp;
4102   bpstat retval = NULL;
4103
4104   if (bs == NULL)
4105     return bs;
4106
4107   for (; bs != NULL; bs = bs->next)
4108     {
4109       tmp = (bpstat) xmalloc (sizeof (*tmp));
4110       memcpy (tmp, bs, sizeof (*tmp));
4111       incref_counted_command_line (tmp->commands);
4112       incref_bp_location (tmp->bp_location_at);
4113       if (bs->old_val != NULL)
4114         {
4115           tmp->old_val = value_copy (bs->old_val);
4116           release_value (tmp->old_val);
4117         }
4118
4119       if (p == NULL)
4120         /* This is the first thing in the chain.  */
4121         retval = tmp;
4122       else
4123         p->next = tmp;
4124       p = tmp;
4125     }
4126   p->next = NULL;
4127   return retval;
4128 }
4129
4130 /* Find the bpstat associated with this breakpoint.  */
4131
4132 bpstat
4133 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4134 {
4135   if (bsp == NULL)
4136     return NULL;
4137
4138   for (; bsp != NULL; bsp = bsp->next)
4139     {
4140       if (bsp->breakpoint_at == breakpoint)
4141         return bsp;
4142     }
4143   return NULL;
4144 }
4145
4146 /* Put in *NUM the breakpoint number of the first breakpoint we are
4147    stopped at.  *BSP upon return is a bpstat which points to the
4148    remaining breakpoints stopped at (but which is not guaranteed to be
4149    good for anything but further calls to bpstat_num).
4150
4151    Return 0 if passed a bpstat which does not indicate any breakpoints.
4152    Return -1 if stopped at a breakpoint that has been deleted since
4153    we set it.
4154    Return 1 otherwise.  */
4155
4156 int
4157 bpstat_num (bpstat *bsp, int *num)
4158 {
4159   struct breakpoint *b;
4160
4161   if ((*bsp) == NULL)
4162     return 0;                   /* No more breakpoint values */
4163
4164   /* We assume we'll never have several bpstats that correspond to a
4165      single breakpoint -- otherwise, this function might return the
4166      same number more than once and this will look ugly.  */
4167   b = (*bsp)->breakpoint_at;
4168   *bsp = (*bsp)->next;
4169   if (b == NULL)
4170     return -1;                  /* breakpoint that's been deleted since */
4171
4172   *num = b->number;             /* We have its number */
4173   return 1;
4174 }
4175
4176 /* See breakpoint.h.  */
4177
4178 void
4179 bpstat_clear_actions (void)
4180 {
4181   struct thread_info *tp;
4182   bpstat bs;
4183
4184   if (ptid_equal (inferior_ptid, null_ptid))
4185     return;
4186
4187   tp = find_thread_ptid (inferior_ptid);
4188   if (tp == NULL)
4189     return;
4190
4191   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4192     {
4193       decref_counted_command_line (&bs->commands);
4194
4195       if (bs->old_val != NULL)
4196         {
4197           value_free (bs->old_val);
4198           bs->old_val = NULL;
4199         }
4200     }
4201 }
4202
4203 /* Called when a command is about to proceed the inferior.  */
4204
4205 static void
4206 breakpoint_about_to_proceed (void)
4207 {
4208   if (!ptid_equal (inferior_ptid, null_ptid))
4209     {
4210       struct thread_info *tp = inferior_thread ();
4211
4212       /* Allow inferior function calls in breakpoint commands to not
4213          interrupt the command list.  When the call finishes
4214          successfully, the inferior will be standing at the same
4215          breakpoint as if nothing happened.  */
4216       if (tp->control.in_infcall)
4217         return;
4218     }
4219
4220   breakpoint_proceeded = 1;
4221 }
4222
4223 /* Stub for cleaning up our state if we error-out of a breakpoint
4224    command.  */
4225 static void
4226 cleanup_executing_breakpoints (void *ignore)
4227 {
4228   executing_breakpoint_commands = 0;
4229 }
4230
4231 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4232    or its equivalent.  */
4233
4234 static int
4235 command_line_is_silent (struct command_line *cmd)
4236 {
4237   return cmd && (strcmp ("silent", cmd->line) == 0
4238                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4239 }
4240
4241 /* Execute all the commands associated with all the breakpoints at
4242    this location.  Any of these commands could cause the process to
4243    proceed beyond this point, etc.  We look out for such changes by
4244    checking the global "breakpoint_proceeded" after each command.
4245
4246    Returns true if a breakpoint command resumed the inferior.  In that
4247    case, it is the caller's responsibility to recall it again with the
4248    bpstat of the current thread.  */
4249
4250 static int
4251 bpstat_do_actions_1 (bpstat *bsp)
4252 {
4253   bpstat bs;
4254   struct cleanup *old_chain;
4255   int again = 0;
4256
4257   /* Avoid endless recursion if a `source' command is contained
4258      in bs->commands.  */
4259   if (executing_breakpoint_commands)
4260     return 0;
4261
4262   executing_breakpoint_commands = 1;
4263   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4264
4265   prevent_dont_repeat ();
4266
4267   /* This pointer will iterate over the list of bpstat's.  */
4268   bs = *bsp;
4269
4270   breakpoint_proceeded = 0;
4271   for (; bs != NULL; bs = bs->next)
4272     {
4273       struct counted_command_line *ccmd;
4274       struct command_line *cmd;
4275       struct cleanup *this_cmd_tree_chain;
4276
4277       /* Take ownership of the BSP's command tree, if it has one.
4278
4279          The command tree could legitimately contain commands like
4280          'step' and 'next', which call clear_proceed_status, which
4281          frees stop_bpstat's command tree.  To make sure this doesn't
4282          free the tree we're executing out from under us, we need to
4283          take ownership of the tree ourselves.  Since a given bpstat's
4284          commands are only executed once, we don't need to copy it; we
4285          can clear the pointer in the bpstat, and make sure we free
4286          the tree when we're done.  */
4287       ccmd = bs->commands;
4288       bs->commands = NULL;
4289       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4290       cmd = ccmd ? ccmd->commands : NULL;
4291       if (command_line_is_silent (cmd))
4292         {
4293           /* The action has been already done by bpstat_stop_status.  */
4294           cmd = cmd->next;
4295         }
4296
4297       while (cmd != NULL)
4298         {
4299           execute_control_command (cmd);
4300
4301           if (breakpoint_proceeded)
4302             break;
4303           else
4304             cmd = cmd->next;
4305         }
4306
4307       /* We can free this command tree now.  */
4308       do_cleanups (this_cmd_tree_chain);
4309
4310       if (breakpoint_proceeded)
4311         {
4312           if (target_can_async_p ())
4313             /* If we are in async mode, then the target might be still
4314                running, not stopped at any breakpoint, so nothing for
4315                us to do here -- just return to the event loop.  */
4316             ;
4317           else
4318             /* In sync mode, when execute_control_command returns
4319                we're already standing on the next breakpoint.
4320                Breakpoint commands for that stop were not run, since
4321                execute_command does not run breakpoint commands --
4322                only command_line_handler does, but that one is not
4323                involved in execution of breakpoint commands.  So, we
4324                can now execute breakpoint commands.  It should be
4325                noted that making execute_command do bpstat actions is
4326                not an option -- in this case we'll have recursive
4327                invocation of bpstat for each breakpoint with a
4328                command, and can easily blow up GDB stack.  Instead, we
4329                return true, which will trigger the caller to recall us
4330                with the new stop_bpstat.  */
4331             again = 1;
4332           break;
4333         }
4334     }
4335   do_cleanups (old_chain);
4336   return again;
4337 }
4338
4339 void
4340 bpstat_do_actions (void)
4341 {
4342   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4343
4344   /* Do any commands attached to breakpoint we are stopped at.  */
4345   while (!ptid_equal (inferior_ptid, null_ptid)
4346          && target_has_execution
4347          && !is_exited (inferior_ptid)
4348          && !is_executing (inferior_ptid))
4349     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4350        and only return when it is stopped at the next breakpoint, we
4351        keep doing breakpoint actions until it returns false to
4352        indicate the inferior was not resumed.  */
4353     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4354       break;
4355
4356   discard_cleanups (cleanup_if_error);
4357 }
4358
4359 /* Print out the (old or new) value associated with a watchpoint.  */
4360
4361 static void
4362 watchpoint_value_print (struct value *val, struct ui_file *stream)
4363 {
4364   if (val == NULL)
4365     fprintf_unfiltered (stream, _("<unreadable>"));
4366   else
4367     {
4368       struct value_print_options opts;
4369       get_user_print_options (&opts);
4370       value_print (val, stream, &opts);
4371     }
4372 }
4373
4374 /* Generic routine for printing messages indicating why we
4375    stopped.  The behavior of this function depends on the value
4376    'print_it' in the bpstat structure.  Under some circumstances we
4377    may decide not to print anything here and delegate the task to
4378    normal_stop().  */
4379
4380 static enum print_stop_action
4381 print_bp_stop_message (bpstat bs)
4382 {
4383   switch (bs->print_it)
4384     {
4385     case print_it_noop:
4386       /* Nothing should be printed for this bpstat entry.  */
4387       return PRINT_UNKNOWN;
4388       break;
4389
4390     case print_it_done:
4391       /* We still want to print the frame, but we already printed the
4392          relevant messages.  */
4393       return PRINT_SRC_AND_LOC;
4394       break;
4395
4396     case print_it_normal:
4397       {
4398         struct breakpoint *b = bs->breakpoint_at;
4399
4400         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4401            which has since been deleted.  */
4402         if (b == NULL)
4403           return PRINT_UNKNOWN;
4404
4405         /* Normal case.  Call the breakpoint's print_it method.  */
4406         return b->ops->print_it (bs);
4407       }
4408       break;
4409
4410     default:
4411       internal_error (__FILE__, __LINE__,
4412                       _("print_bp_stop_message: unrecognized enum value"));
4413       break;
4414     }
4415 }
4416
4417 /* A helper function that prints a shared library stopped event.  */
4418
4419 static void
4420 print_solib_event (int is_catchpoint)
4421 {
4422   int any_deleted
4423     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4424   int any_added
4425     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4426
4427   if (!is_catchpoint)
4428     {
4429       if (any_added || any_deleted)
4430         ui_out_text (current_uiout,
4431                      _("Stopped due to shared library event:\n"));
4432       else
4433         ui_out_text (current_uiout,
4434                      _("Stopped due to shared library event (no "
4435                        "libraries added or removed)\n"));
4436     }
4437
4438   if (ui_out_is_mi_like_p (current_uiout))
4439     ui_out_field_string (current_uiout, "reason",
4440                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4441
4442   if (any_deleted)
4443     {
4444       struct cleanup *cleanup;
4445       char *name;
4446       int ix;
4447
4448       ui_out_text (current_uiout, _("  Inferior unloaded "));
4449       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4450                                                     "removed");
4451       for (ix = 0;
4452            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4453                         ix, name);
4454            ++ix)
4455         {
4456           if (ix > 0)
4457             ui_out_text (current_uiout, "    ");
4458           ui_out_field_string (current_uiout, "library", name);
4459           ui_out_text (current_uiout, "\n");
4460         }
4461
4462       do_cleanups (cleanup);
4463     }
4464
4465   if (any_added)
4466     {
4467       struct so_list *iter;
4468       int ix;
4469       struct cleanup *cleanup;
4470
4471       ui_out_text (current_uiout, _("  Inferior loaded "));
4472       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4473                                                     "added");
4474       for (ix = 0;
4475            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4476                         ix, iter);
4477            ++ix)
4478         {
4479           if (ix > 0)
4480             ui_out_text (current_uiout, "    ");
4481           ui_out_field_string (current_uiout, "library", iter->so_name);
4482           ui_out_text (current_uiout, "\n");
4483         }
4484
4485       do_cleanups (cleanup);
4486     }
4487 }
4488
4489 /* Print a message indicating what happened.  This is called from
4490    normal_stop().  The input to this routine is the head of the bpstat
4491    list - a list of the eventpoints that caused this stop.  KIND is
4492    the target_waitkind for the stopping event.  This
4493    routine calls the generic print routine for printing a message
4494    about reasons for stopping.  This will print (for example) the
4495    "Breakpoint n," part of the output.  The return value of this
4496    routine is one of:
4497
4498    PRINT_UNKNOWN: Means we printed nothing.
4499    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4500    code to print the location.  An example is 
4501    "Breakpoint 1, " which should be followed by
4502    the location.
4503    PRINT_SRC_ONLY: Means we printed something, but there is no need
4504    to also print the location part of the message.
4505    An example is the catch/throw messages, which
4506    don't require a location appended to the end.
4507    PRINT_NOTHING: We have done some printing and we don't need any 
4508    further info to be printed.  */
4509
4510 enum print_stop_action
4511 bpstat_print (bpstat bs, int kind)
4512 {
4513   int val;
4514
4515   /* Maybe another breakpoint in the chain caused us to stop.
4516      (Currently all watchpoints go on the bpstat whether hit or not.
4517      That probably could (should) be changed, provided care is taken
4518      with respect to bpstat_explains_signal).  */
4519   for (; bs; bs = bs->next)
4520     {
4521       val = print_bp_stop_message (bs);
4522       if (val == PRINT_SRC_ONLY 
4523           || val == PRINT_SRC_AND_LOC 
4524           || val == PRINT_NOTHING)
4525         return val;
4526     }
4527
4528   /* If we had hit a shared library event breakpoint,
4529      print_bp_stop_message would print out this message.  If we hit an
4530      OS-level shared library event, do the same thing.  */
4531   if (kind == TARGET_WAITKIND_LOADED)
4532     {
4533       print_solib_event (0);
4534       return PRINT_NOTHING;
4535     }
4536
4537   /* We reached the end of the chain, or we got a null BS to start
4538      with and nothing was printed.  */
4539   return PRINT_UNKNOWN;
4540 }
4541
4542 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4543    used inside a catch_errors to evaluate the breakpoint condition.
4544    The argument is a "struct expression *" that has been cast to a
4545    "char *" to make it pass through catch_errors.  */
4546
4547 static int
4548 breakpoint_cond_eval (void *exp)
4549 {
4550   struct value *mark = value_mark ();
4551   int i = !value_true (evaluate_expression ((struct expression *) exp));
4552
4553   value_free_to_mark (mark);
4554   return i;
4555 }
4556
4557 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4558
4559 static bpstat
4560 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4561 {
4562   bpstat bs;
4563
4564   bs = (bpstat) xmalloc (sizeof (*bs));
4565   bs->next = NULL;
4566   **bs_link_pointer = bs;
4567   *bs_link_pointer = &bs->next;
4568   bs->breakpoint_at = bl->owner;
4569   bs->bp_location_at = bl;
4570   incref_bp_location (bl);
4571   /* If the condition is false, etc., don't do the commands.  */
4572   bs->commands = NULL;
4573   bs->old_val = NULL;
4574   bs->print_it = print_it_normal;
4575   return bs;
4576 }
4577 \f
4578 /* The target has stopped with waitstatus WS.  Check if any hardware
4579    watchpoints have triggered, according to the target.  */
4580
4581 int
4582 watchpoints_triggered (struct target_waitstatus *ws)
4583 {
4584   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4585   CORE_ADDR addr;
4586   struct breakpoint *b;
4587
4588   if (!stopped_by_watchpoint)
4589     {
4590       /* We were not stopped by a watchpoint.  Mark all watchpoints
4591          as not triggered.  */
4592       ALL_BREAKPOINTS (b)
4593         if (is_hardware_watchpoint (b))
4594           {
4595             struct watchpoint *w = (struct watchpoint *) b;
4596
4597             w->watchpoint_triggered = watch_triggered_no;
4598           }
4599
4600       return 0;
4601     }
4602
4603   if (!target_stopped_data_address (&current_target, &addr))
4604     {
4605       /* We were stopped by a watchpoint, but we don't know where.
4606          Mark all watchpoints as unknown.  */
4607       ALL_BREAKPOINTS (b)
4608         if (is_hardware_watchpoint (b))
4609           {
4610             struct watchpoint *w = (struct watchpoint *) b;
4611
4612             w->watchpoint_triggered = watch_triggered_unknown;
4613           }
4614
4615       return stopped_by_watchpoint;
4616     }
4617
4618   /* The target could report the data address.  Mark watchpoints
4619      affected by this data address as triggered, and all others as not
4620      triggered.  */
4621
4622   ALL_BREAKPOINTS (b)
4623     if (is_hardware_watchpoint (b))
4624       {
4625         struct watchpoint *w = (struct watchpoint *) b;
4626         struct bp_location *loc;
4627
4628         w->watchpoint_triggered = watch_triggered_no;
4629         for (loc = b->loc; loc; loc = loc->next)
4630           {
4631             if (is_masked_watchpoint (b))
4632               {
4633                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4634                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4635
4636                 if (newaddr == start)
4637                   {
4638                     w->watchpoint_triggered = watch_triggered_yes;
4639                     break;
4640                   }
4641               }
4642             /* Exact match not required.  Within range is sufficient.  */
4643             else if (target_watchpoint_addr_within_range (&current_target,
4644                                                          addr, loc->address,
4645                                                          loc->length))
4646               {
4647                 w->watchpoint_triggered = watch_triggered_yes;
4648                 break;
4649               }
4650           }
4651       }
4652
4653   return 1;
4654 }
4655
4656 /* Possible return values for watchpoint_check (this can't be an enum
4657    because of check_errors).  */
4658 /* The watchpoint has been deleted.  */
4659 #define WP_DELETED 1
4660 /* The value has changed.  */
4661 #define WP_VALUE_CHANGED 2
4662 /* The value has not changed.  */
4663 #define WP_VALUE_NOT_CHANGED 3
4664 /* Ignore this watchpoint, no matter if the value changed or not.  */
4665 #define WP_IGNORE 4
4666
4667 #define BP_TEMPFLAG 1
4668 #define BP_HARDWAREFLAG 2
4669
4670 /* Evaluate watchpoint condition expression and check if its value
4671    changed.
4672
4673    P should be a pointer to struct bpstat, but is defined as a void *
4674    in order for this function to be usable with catch_errors.  */
4675
4676 static int
4677 watchpoint_check (void *p)
4678 {
4679   bpstat bs = (bpstat) p;
4680   struct watchpoint *b;
4681   struct frame_info *fr;
4682   int within_current_scope;
4683
4684   /* BS is built from an existing struct breakpoint.  */
4685   gdb_assert (bs->breakpoint_at != NULL);
4686   b = (struct watchpoint *) bs->breakpoint_at;
4687
4688   /* If this is a local watchpoint, we only want to check if the
4689      watchpoint frame is in scope if the current thread is the thread
4690      that was used to create the watchpoint.  */
4691   if (!watchpoint_in_thread_scope (b))
4692     return WP_IGNORE;
4693
4694   if (b->exp_valid_block == NULL)
4695     within_current_scope = 1;
4696   else
4697     {
4698       struct frame_info *frame = get_current_frame ();
4699       struct gdbarch *frame_arch = get_frame_arch (frame);
4700       CORE_ADDR frame_pc = get_frame_pc (frame);
4701
4702       /* in_function_epilogue_p() returns a non-zero value if we're
4703          still in the function but the stack frame has already been
4704          invalidated.  Since we can't rely on the values of local
4705          variables after the stack has been destroyed, we are treating
4706          the watchpoint in that state as `not changed' without further
4707          checking.  Don't mark watchpoints as changed if the current
4708          frame is in an epilogue - even if they are in some other
4709          frame, our view of the stack is likely to be wrong and
4710          frame_find_by_id could error out.  */
4711       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4712         return WP_IGNORE;
4713
4714       fr = frame_find_by_id (b->watchpoint_frame);
4715       within_current_scope = (fr != NULL);
4716
4717       /* If we've gotten confused in the unwinder, we might have
4718          returned a frame that can't describe this variable.  */
4719       if (within_current_scope)
4720         {
4721           struct symbol *function;
4722
4723           function = get_frame_function (fr);
4724           if (function == NULL
4725               || !contained_in (b->exp_valid_block,
4726                                 SYMBOL_BLOCK_VALUE (function)))
4727             within_current_scope = 0;
4728         }
4729
4730       if (within_current_scope)
4731         /* If we end up stopping, the current frame will get selected
4732            in normal_stop.  So this call to select_frame won't affect
4733            the user.  */
4734         select_frame (fr);
4735     }
4736
4737   if (within_current_scope)
4738     {
4739       /* We use value_{,free_to_}mark because it could be a *long*
4740          time before we return to the command level and call
4741          free_all_values.  We can't call free_all_values because we
4742          might be in the middle of evaluating a function call.  */
4743
4744       int pc = 0;
4745       struct value *mark;
4746       struct value *new_val;
4747
4748       if (is_masked_watchpoint (&b->base))
4749         /* Since we don't know the exact trigger address (from
4750            stopped_data_address), just tell the user we've triggered
4751            a mask watchpoint.  */
4752         return WP_VALUE_CHANGED;
4753
4754       mark = value_mark ();
4755       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4756
4757       /* We use value_equal_contents instead of value_equal because
4758          the latter coerces an array to a pointer, thus comparing just
4759          the address of the array instead of its contents.  This is
4760          not what we want.  */
4761       if ((b->val != NULL) != (new_val != NULL)
4762           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4763         {
4764           if (new_val != NULL)
4765             {
4766               release_value (new_val);
4767               value_free_to_mark (mark);
4768             }
4769           bs->old_val = b->val;
4770           b->val = new_val;
4771           b->val_valid = 1;
4772           return WP_VALUE_CHANGED;
4773         }
4774       else
4775         {
4776           /* Nothing changed.  */
4777           value_free_to_mark (mark);
4778           return WP_VALUE_NOT_CHANGED;
4779         }
4780     }
4781   else
4782     {
4783       struct ui_out *uiout = current_uiout;
4784
4785       /* This seems like the only logical thing to do because
4786          if we temporarily ignored the watchpoint, then when
4787          we reenter the block in which it is valid it contains
4788          garbage (in the case of a function, it may have two
4789          garbage values, one before and one after the prologue).
4790          So we can't even detect the first assignment to it and
4791          watch after that (since the garbage may or may not equal
4792          the first value assigned).  */
4793       /* We print all the stop information in
4794          breakpoint_ops->print_it, but in this case, by the time we
4795          call breakpoint_ops->print_it this bp will be deleted
4796          already.  So we have no choice but print the information
4797          here.  */
4798       if (ui_out_is_mi_like_p (uiout))
4799         ui_out_field_string
4800           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4801       ui_out_text (uiout, "\nWatchpoint ");
4802       ui_out_field_int (uiout, "wpnum", b->base.number);
4803       ui_out_text (uiout,
4804                    " deleted because the program has left the block in\n\
4805 which its expression is valid.\n");     
4806
4807       /* Make sure the watchpoint's commands aren't executed.  */
4808       decref_counted_command_line (&b->base.commands);
4809       watchpoint_del_at_next_stop (b);
4810
4811       return WP_DELETED;
4812     }
4813 }
4814
4815 /* Return true if it looks like target has stopped due to hitting
4816    breakpoint location BL.  This function does not check if we should
4817    stop, only if BL explains the stop.  */
4818
4819 static int
4820 bpstat_check_location (const struct bp_location *bl,
4821                        struct address_space *aspace, CORE_ADDR bp_addr,
4822                        const struct target_waitstatus *ws)
4823 {
4824   struct breakpoint *b = bl->owner;
4825
4826   /* BL is from an existing breakpoint.  */
4827   gdb_assert (b != NULL);
4828
4829   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4830 }
4831
4832 /* Determine if the watched values have actually changed, and we
4833    should stop.  If not, set BS->stop to 0.  */
4834
4835 static void
4836 bpstat_check_watchpoint (bpstat bs)
4837 {
4838   const struct bp_location *bl;
4839   struct watchpoint *b;
4840
4841   /* BS is built for existing struct breakpoint.  */
4842   bl = bs->bp_location_at;
4843   gdb_assert (bl != NULL);
4844   b = (struct watchpoint *) bs->breakpoint_at;
4845   gdb_assert (b != NULL);
4846
4847     {
4848       int must_check_value = 0;
4849       
4850       if (b->base.type == bp_watchpoint)
4851         /* For a software watchpoint, we must always check the
4852            watched value.  */
4853         must_check_value = 1;
4854       else if (b->watchpoint_triggered == watch_triggered_yes)
4855         /* We have a hardware watchpoint (read, write, or access)
4856            and the target earlier reported an address watched by
4857            this watchpoint.  */
4858         must_check_value = 1;
4859       else if (b->watchpoint_triggered == watch_triggered_unknown
4860                && b->base.type == bp_hardware_watchpoint)
4861         /* We were stopped by a hardware watchpoint, but the target could
4862            not report the data address.  We must check the watchpoint's
4863            value.  Access and read watchpoints are out of luck; without
4864            a data address, we can't figure it out.  */
4865         must_check_value = 1;
4866
4867       if (must_check_value)
4868         {
4869           char *message
4870             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4871                           b->base.number);
4872           struct cleanup *cleanups = make_cleanup (xfree, message);
4873           int e = catch_errors (watchpoint_check, bs, message,
4874                                 RETURN_MASK_ALL);
4875           do_cleanups (cleanups);
4876           switch (e)
4877             {
4878             case WP_DELETED:
4879               /* We've already printed what needs to be printed.  */
4880               bs->print_it = print_it_done;
4881               /* Stop.  */
4882               break;
4883             case WP_IGNORE:
4884               bs->print_it = print_it_noop;
4885               bs->stop = 0;
4886               break;
4887             case WP_VALUE_CHANGED:
4888               if (b->base.type == bp_read_watchpoint)
4889                 {
4890                   /* There are two cases to consider here:
4891
4892                      1. We're watching the triggered memory for reads.
4893                      In that case, trust the target, and always report
4894                      the watchpoint hit to the user.  Even though
4895                      reads don't cause value changes, the value may
4896                      have changed since the last time it was read, and
4897                      since we're not trapping writes, we will not see
4898                      those, and as such we should ignore our notion of
4899                      old value.
4900
4901                      2. We're watching the triggered memory for both
4902                      reads and writes.  There are two ways this may
4903                      happen:
4904
4905                      2.1. This is a target that can't break on data
4906                      reads only, but can break on accesses (reads or
4907                      writes), such as e.g., x86.  We detect this case
4908                      at the time we try to insert read watchpoints.
4909
4910                      2.2. Otherwise, the target supports read
4911                      watchpoints, but, the user set an access or write
4912                      watchpoint watching the same memory as this read
4913                      watchpoint.
4914
4915                      If we're watching memory writes as well as reads,
4916                      ignore watchpoint hits when we find that the
4917                      value hasn't changed, as reads don't cause
4918                      changes.  This still gives false positives when
4919                      the program writes the same value to memory as
4920                      what there was already in memory (we will confuse
4921                      it for a read), but it's much better than
4922                      nothing.  */
4923
4924                   int other_write_watchpoint = 0;
4925
4926                   if (bl->watchpoint_type == hw_read)
4927                     {
4928                       struct breakpoint *other_b;
4929
4930                       ALL_BREAKPOINTS (other_b)
4931                         if (other_b->type == bp_hardware_watchpoint
4932                             || other_b->type == bp_access_watchpoint)
4933                           {
4934                             struct watchpoint *other_w =
4935                               (struct watchpoint *) other_b;
4936
4937                             if (other_w->watchpoint_triggered
4938                                 == watch_triggered_yes)
4939                               {
4940                                 other_write_watchpoint = 1;
4941                                 break;
4942                               }
4943                           }
4944                     }
4945
4946                   if (other_write_watchpoint
4947                       || bl->watchpoint_type == hw_access)
4948                     {
4949                       /* We're watching the same memory for writes,
4950                          and the value changed since the last time we
4951                          updated it, so this trap must be for a write.
4952                          Ignore it.  */
4953                       bs->print_it = print_it_noop;
4954                       bs->stop = 0;
4955                     }
4956                 }
4957               break;
4958             case WP_VALUE_NOT_CHANGED:
4959               if (b->base.type == bp_hardware_watchpoint
4960                   || b->base.type == bp_watchpoint)
4961                 {
4962                   /* Don't stop: write watchpoints shouldn't fire if
4963                      the value hasn't changed.  */
4964                   bs->print_it = print_it_noop;
4965                   bs->stop = 0;
4966                 }
4967               /* Stop.  */
4968               break;
4969             default:
4970               /* Can't happen.  */
4971             case 0:
4972               /* Error from catch_errors.  */
4973               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4974               watchpoint_del_at_next_stop (b);
4975               /* We've already printed what needs to be printed.  */
4976               bs->print_it = print_it_done;
4977               break;
4978             }
4979         }
4980       else      /* must_check_value == 0 */
4981         {
4982           /* This is a case where some watchpoint(s) triggered, but
4983              not at the address of this watchpoint, or else no
4984              watchpoint triggered after all.  So don't print
4985              anything for this watchpoint.  */
4986           bs->print_it = print_it_noop;
4987           bs->stop = 0;
4988         }
4989     }
4990 }
4991
4992
4993 /* Check conditions (condition proper, frame, thread and ignore count)
4994    of breakpoint referred to by BS.  If we should not stop for this
4995    breakpoint, set BS->stop to 0.  */
4996
4997 static void
4998 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4999 {
5000   int thread_id = pid_to_thread_id (ptid);
5001   const struct bp_location *bl;
5002   struct breakpoint *b;
5003
5004   /* BS is built for existing struct breakpoint.  */
5005   bl = bs->bp_location_at;
5006   gdb_assert (bl != NULL);
5007   b = bs->breakpoint_at;
5008   gdb_assert (b != NULL);
5009
5010   /* Even if the target evaluated the condition on its end and notified GDB, we
5011      need to do so again since GDB does not know if we stopped due to a
5012      breakpoint or a single step breakpoint.  */
5013
5014   if (frame_id_p (b->frame_id)
5015       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5016     bs->stop = 0;
5017   else if (bs->stop)
5018     {
5019       int value_is_zero = 0;
5020       struct expression *cond;
5021
5022       /* Evaluate Python breakpoints that have a "stop"
5023          method implemented.  */
5024       if (b->py_bp_object)
5025         bs->stop = gdbpy_should_stop (b->py_bp_object);
5026
5027       if (is_watchpoint (b))
5028         {
5029           struct watchpoint *w = (struct watchpoint *) b;
5030
5031           cond = w->cond_exp;
5032         }
5033       else
5034         cond = bl->cond;
5035
5036       if (cond && b->disposition != disp_del_at_next_stop)
5037         {
5038           int within_current_scope = 1;
5039           struct watchpoint * w;
5040
5041           /* We use value_mark and value_free_to_mark because it could
5042              be a long time before we return to the command level and
5043              call free_all_values.  We can't call free_all_values
5044              because we might be in the middle of evaluating a
5045              function call.  */
5046           struct value *mark = value_mark ();
5047
5048           if (is_watchpoint (b))
5049             w = (struct watchpoint *) b;
5050           else
5051             w = NULL;
5052
5053           /* Need to select the frame, with all that implies so that
5054              the conditions will have the right context.  Because we
5055              use the frame, we will not see an inlined function's
5056              variables when we arrive at a breakpoint at the start
5057              of the inlined function; the current frame will be the
5058              call site.  */
5059           if (w == NULL || w->cond_exp_valid_block == NULL)
5060             select_frame (get_current_frame ());
5061           else
5062             {
5063               struct frame_info *frame;
5064
5065               /* For local watchpoint expressions, which particular
5066                  instance of a local is being watched matters, so we
5067                  keep track of the frame to evaluate the expression
5068                  in.  To evaluate the condition however, it doesn't
5069                  really matter which instantiation of the function
5070                  where the condition makes sense triggers the
5071                  watchpoint.  This allows an expression like "watch
5072                  global if q > 10" set in `func', catch writes to
5073                  global on all threads that call `func', or catch
5074                  writes on all recursive calls of `func' by a single
5075                  thread.  We simply always evaluate the condition in
5076                  the innermost frame that's executing where it makes
5077                  sense to evaluate the condition.  It seems
5078                  intuitive.  */
5079               frame = block_innermost_frame (w->cond_exp_valid_block);
5080               if (frame != NULL)
5081                 select_frame (frame);
5082               else
5083                 within_current_scope = 0;
5084             }
5085           if (within_current_scope)
5086             value_is_zero
5087               = catch_errors (breakpoint_cond_eval, cond,
5088                               "Error in testing breakpoint condition:\n",
5089                               RETURN_MASK_ALL);
5090           else
5091             {
5092               warning (_("Watchpoint condition cannot be tested "
5093                          "in the current scope"));
5094               /* If we failed to set the right context for this
5095                  watchpoint, unconditionally report it.  */
5096               value_is_zero = 0;
5097             }
5098           /* FIXME-someday, should give breakpoint #.  */
5099           value_free_to_mark (mark);
5100         }
5101
5102       if (cond && value_is_zero)
5103         {
5104           bs->stop = 0;
5105         }
5106       else if (b->thread != -1 && b->thread != thread_id)
5107         {
5108           bs->stop = 0;
5109         }
5110       else if (b->ignore_count > 0)
5111         {
5112           b->ignore_count--;
5113           annotate_ignore_count_change ();
5114           bs->stop = 0;
5115           /* Increase the hit count even though we don't stop.  */
5116           ++(b->hit_count);
5117           observer_notify_breakpoint_modified (b);
5118         }       
5119     }
5120 }
5121
5122
5123 /* Get a bpstat associated with having just stopped at address
5124    BP_ADDR in thread PTID.
5125
5126    Determine whether we stopped at a breakpoint, etc, or whether we
5127    don't understand this stop.  Result is a chain of bpstat's such
5128    that:
5129
5130    if we don't understand the stop, the result is a null pointer.
5131
5132    if we understand why we stopped, the result is not null.
5133
5134    Each element of the chain refers to a particular breakpoint or
5135    watchpoint at which we have stopped.  (We may have stopped for
5136    several reasons concurrently.)
5137
5138    Each element of the chain has valid next, breakpoint_at,
5139    commands, FIXME??? fields.  */
5140
5141 bpstat
5142 bpstat_stop_status (struct address_space *aspace,
5143                     CORE_ADDR bp_addr, ptid_t ptid,
5144                     const struct target_waitstatus *ws)
5145 {
5146   struct breakpoint *b = NULL;
5147   struct bp_location *bl;
5148   struct bp_location *loc;
5149   /* First item of allocated bpstat's.  */
5150   bpstat bs_head = NULL, *bs_link = &bs_head;
5151   /* Pointer to the last thing in the chain currently.  */
5152   bpstat bs;
5153   int ix;
5154   int need_remove_insert;
5155   int removed_any;
5156
5157   /* First, build the bpstat chain with locations that explain a
5158      target stop, while being careful to not set the target running,
5159      as that may invalidate locations (in particular watchpoint
5160      locations are recreated).  Resuming will happen here with
5161      breakpoint conditions or watchpoint expressions that include
5162      inferior function calls.  */
5163
5164   ALL_BREAKPOINTS (b)
5165     {
5166       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5167         continue;
5168
5169       for (bl = b->loc; bl != NULL; bl = bl->next)
5170         {
5171           /* For hardware watchpoints, we look only at the first
5172              location.  The watchpoint_check function will work on the
5173              entire expression, not the individual locations.  For
5174              read watchpoints, the watchpoints_triggered function has
5175              checked all locations already.  */
5176           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5177             break;
5178
5179           if (bl->shlib_disabled)
5180             continue;
5181
5182           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5183             continue;
5184
5185           /* Come here if it's a watchpoint, or if the break address
5186              matches.  */
5187
5188           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5189                                                    explain stop.  */
5190
5191           /* Assume we stop.  Should we find a watchpoint that is not
5192              actually triggered, or if the condition of the breakpoint
5193              evaluates as false, we'll reset 'stop' to 0.  */
5194           bs->stop = 1;
5195           bs->print = 1;
5196
5197           /* If this is a scope breakpoint, mark the associated
5198              watchpoint as triggered so that we will handle the
5199              out-of-scope event.  We'll get to the watchpoint next
5200              iteration.  */
5201           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5202             {
5203               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5204
5205               w->watchpoint_triggered = watch_triggered_yes;
5206             }
5207         }
5208     }
5209
5210   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5211     {
5212       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5213         {
5214           bs = bpstat_alloc (loc, &bs_link);
5215           /* For hits of moribund locations, we should just proceed.  */
5216           bs->stop = 0;
5217           bs->print = 0;
5218           bs->print_it = print_it_noop;
5219         }
5220     }
5221
5222   /* A bit of special processing for shlib breakpoints.  We need to
5223      process solib loading here, so that the lists of loaded and
5224      unloaded libraries are correct before we handle "catch load" and
5225      "catch unload".  */
5226   for (bs = bs_head; bs != NULL; bs = bs->next)
5227     {
5228       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5229         {
5230           handle_solib_event ();
5231           break;
5232         }
5233     }
5234
5235   /* Now go through the locations that caused the target to stop, and
5236      check whether we're interested in reporting this stop to higher
5237      layers, or whether we should resume the target transparently.  */
5238
5239   removed_any = 0;
5240
5241   for (bs = bs_head; bs != NULL; bs = bs->next)
5242     {
5243       if (!bs->stop)
5244         continue;
5245
5246       b = bs->breakpoint_at;
5247       b->ops->check_status (bs);
5248       if (bs->stop)
5249         {
5250           bpstat_check_breakpoint_conditions (bs, ptid);
5251
5252           if (bs->stop)
5253             {
5254               ++(b->hit_count);
5255               observer_notify_breakpoint_modified (b);
5256
5257               /* We will stop here.  */
5258               if (b->disposition == disp_disable)
5259                 {
5260                   --(b->enable_count);
5261                   if (b->enable_count <= 0
5262                       && b->enable_state != bp_permanent)
5263                     b->enable_state = bp_disabled;
5264                   removed_any = 1;
5265                 }
5266               if (b->silent)
5267                 bs->print = 0;
5268               bs->commands = b->commands;
5269               incref_counted_command_line (bs->commands);
5270               if (command_line_is_silent (bs->commands
5271                                           ? bs->commands->commands : NULL))
5272                 bs->print = 0;
5273             }
5274
5275         }
5276
5277       /* Print nothing for this entry if we don't stop or don't
5278          print.  */
5279       if (!bs->stop || !bs->print)
5280         bs->print_it = print_it_noop;
5281     }
5282
5283   /* If we aren't stopping, the value of some hardware watchpoint may
5284      not have changed, but the intermediate memory locations we are
5285      watching may have.  Don't bother if we're stopping; this will get
5286      done later.  */
5287   need_remove_insert = 0;
5288   if (! bpstat_causes_stop (bs_head))
5289     for (bs = bs_head; bs != NULL; bs = bs->next)
5290       if (!bs->stop
5291           && bs->breakpoint_at
5292           && is_hardware_watchpoint (bs->breakpoint_at))
5293         {
5294           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5295
5296           update_watchpoint (w, 0 /* don't reparse.  */);
5297           need_remove_insert = 1;
5298         }
5299
5300   if (need_remove_insert)
5301     update_global_location_list (1);
5302   else if (removed_any)
5303     update_global_location_list (0);
5304
5305   return bs_head;
5306 }
5307
5308 static void
5309 handle_jit_event (void)
5310 {
5311   struct frame_info *frame;
5312   struct gdbarch *gdbarch;
5313
5314   /* Switch terminal for any messages produced by
5315      breakpoint_re_set.  */
5316   target_terminal_ours_for_output ();
5317
5318   frame = get_current_frame ();
5319   gdbarch = get_frame_arch (frame);
5320
5321   jit_event_handler (gdbarch);
5322
5323   target_terminal_inferior ();
5324 }
5325
5326 /* Handle an solib event by calling solib_add.  */
5327
5328 void
5329 handle_solib_event (void)
5330 {
5331   clear_program_space_solib_cache (current_inferior ()->pspace);
5332
5333   /* Check for any newly added shared libraries if we're supposed to
5334      be adding them automatically.  Switch terminal for any messages
5335      produced by breakpoint_re_set.  */
5336   target_terminal_ours_for_output ();
5337 #ifdef SOLIB_ADD
5338   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5339 #else
5340   solib_add (NULL, 0, &current_target, auto_solib_add);
5341 #endif
5342   target_terminal_inferior ();
5343 }
5344
5345 /* Prepare WHAT final decision for infrun.  */
5346
5347 /* Decide what infrun needs to do with this bpstat.  */
5348
5349 struct bpstat_what
5350 bpstat_what (bpstat bs_head)
5351 {
5352   struct bpstat_what retval;
5353   int jit_event = 0;
5354   bpstat bs;
5355
5356   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5357   retval.call_dummy = STOP_NONE;
5358   retval.is_longjmp = 0;
5359
5360   for (bs = bs_head; bs != NULL; bs = bs->next)
5361     {
5362       /* Extract this BS's action.  After processing each BS, we check
5363          if its action overrides all we've seem so far.  */
5364       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5365       enum bptype bptype;
5366
5367       if (bs->breakpoint_at == NULL)
5368         {
5369           /* I suspect this can happen if it was a momentary
5370              breakpoint which has since been deleted.  */
5371           bptype = bp_none;
5372         }
5373       else
5374         bptype = bs->breakpoint_at->type;
5375
5376       switch (bptype)
5377         {
5378         case bp_none:
5379           break;
5380         case bp_breakpoint:
5381         case bp_hardware_breakpoint:
5382         case bp_until:
5383         case bp_finish:
5384         case bp_shlib_event:
5385           if (bs->stop)
5386             {
5387               if (bs->print)
5388                 this_action = BPSTAT_WHAT_STOP_NOISY;
5389               else
5390                 this_action = BPSTAT_WHAT_STOP_SILENT;
5391             }
5392           else
5393             this_action = BPSTAT_WHAT_SINGLE;
5394           break;
5395         case bp_watchpoint:
5396         case bp_hardware_watchpoint:
5397         case bp_read_watchpoint:
5398         case bp_access_watchpoint:
5399           if (bs->stop)
5400             {
5401               if (bs->print)
5402                 this_action = BPSTAT_WHAT_STOP_NOISY;
5403               else
5404                 this_action = BPSTAT_WHAT_STOP_SILENT;
5405             }
5406           else
5407             {
5408               /* There was a watchpoint, but we're not stopping.
5409                  This requires no further action.  */
5410             }
5411           break;
5412         case bp_longjmp:
5413         case bp_longjmp_call_dummy:
5414         case bp_exception:
5415           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5416           retval.is_longjmp = bptype != bp_exception;
5417           break;
5418         case bp_longjmp_resume:
5419         case bp_exception_resume:
5420           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5421           retval.is_longjmp = bptype == bp_longjmp_resume;
5422           break;
5423         case bp_step_resume:
5424           if (bs->stop)
5425             this_action = BPSTAT_WHAT_STEP_RESUME;
5426           else
5427             {
5428               /* It is for the wrong frame.  */
5429               this_action = BPSTAT_WHAT_SINGLE;
5430             }
5431           break;
5432         case bp_hp_step_resume:
5433           if (bs->stop)
5434             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5435           else
5436             {
5437               /* It is for the wrong frame.  */
5438               this_action = BPSTAT_WHAT_SINGLE;
5439             }
5440           break;
5441         case bp_watchpoint_scope:
5442         case bp_thread_event:
5443         case bp_overlay_event:
5444         case bp_longjmp_master:
5445         case bp_std_terminate_master:
5446         case bp_exception_master:
5447           this_action = BPSTAT_WHAT_SINGLE;
5448           break;
5449         case bp_catchpoint:
5450           if (bs->stop)
5451             {
5452               if (bs->print)
5453                 this_action = BPSTAT_WHAT_STOP_NOISY;
5454               else
5455                 this_action = BPSTAT_WHAT_STOP_SILENT;
5456             }
5457           else
5458             {
5459               /* There was a catchpoint, but we're not stopping.
5460                  This requires no further action.  */
5461             }
5462           break;
5463         case bp_jit_event:
5464           jit_event = 1;
5465           this_action = BPSTAT_WHAT_SINGLE;
5466           break;
5467         case bp_call_dummy:
5468           /* Make sure the action is stop (silent or noisy),
5469              so infrun.c pops the dummy frame.  */
5470           retval.call_dummy = STOP_STACK_DUMMY;
5471           this_action = BPSTAT_WHAT_STOP_SILENT;
5472           break;
5473         case bp_std_terminate:
5474           /* Make sure the action is stop (silent or noisy),
5475              so infrun.c pops the dummy frame.  */
5476           retval.call_dummy = STOP_STD_TERMINATE;
5477           this_action = BPSTAT_WHAT_STOP_SILENT;
5478           break;
5479         case bp_tracepoint:
5480         case bp_fast_tracepoint:
5481         case bp_static_tracepoint:
5482           /* Tracepoint hits should not be reported back to GDB, and
5483              if one got through somehow, it should have been filtered
5484              out already.  */
5485           internal_error (__FILE__, __LINE__,
5486                           _("bpstat_what: tracepoint encountered"));
5487           break;
5488         case bp_gnu_ifunc_resolver:
5489           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5490           this_action = BPSTAT_WHAT_SINGLE;
5491           break;
5492         case bp_gnu_ifunc_resolver_return:
5493           /* The breakpoint will be removed, execution will restart from the
5494              PC of the former breakpoint.  */
5495           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5496           break;
5497
5498         case bp_dprintf:
5499           this_action = BPSTAT_WHAT_STOP_SILENT;
5500           break;
5501
5502         default:
5503           internal_error (__FILE__, __LINE__,
5504                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5505         }
5506
5507       retval.main_action = max (retval.main_action, this_action);
5508     }
5509
5510   /* These operations may affect the bs->breakpoint_at state so they are
5511      delayed after MAIN_ACTION is decided above.  */
5512
5513   if (jit_event)
5514     {
5515       if (debug_infrun)
5516         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5517
5518       handle_jit_event ();
5519     }
5520
5521   for (bs = bs_head; bs != NULL; bs = bs->next)
5522     {
5523       struct breakpoint *b = bs->breakpoint_at;
5524
5525       if (b == NULL)
5526         continue;
5527       switch (b->type)
5528         {
5529         case bp_gnu_ifunc_resolver:
5530           gnu_ifunc_resolver_stop (b);
5531           break;
5532         case bp_gnu_ifunc_resolver_return:
5533           gnu_ifunc_resolver_return_stop (b);
5534           break;
5535         }
5536     }
5537
5538   return retval;
5539 }
5540
5541 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5542    without hardware support).  This isn't related to a specific bpstat,
5543    just to things like whether watchpoints are set.  */
5544
5545 int
5546 bpstat_should_step (void)
5547 {
5548   struct breakpoint *b;
5549
5550   ALL_BREAKPOINTS (b)
5551     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5552       return 1;
5553   return 0;
5554 }
5555
5556 int
5557 bpstat_causes_stop (bpstat bs)
5558 {
5559   for (; bs != NULL; bs = bs->next)
5560     if (bs->stop)
5561       return 1;
5562
5563   return 0;
5564 }
5565
5566 \f
5567
5568 /* Compute a string of spaces suitable to indent the next line
5569    so it starts at the position corresponding to the table column
5570    named COL_NAME in the currently active table of UIOUT.  */
5571
5572 static char *
5573 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5574 {
5575   static char wrap_indent[80];
5576   int i, total_width, width, align;
5577   char *text;
5578
5579   total_width = 0;
5580   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5581     {
5582       if (strcmp (text, col_name) == 0)
5583         {
5584           gdb_assert (total_width < sizeof wrap_indent);
5585           memset (wrap_indent, ' ', total_width);
5586           wrap_indent[total_width] = 0;
5587
5588           return wrap_indent;
5589         }
5590
5591       total_width += width + 1;
5592     }
5593
5594   return NULL;
5595 }
5596
5597 /* Determine if the locations of this breakpoint will have their conditions
5598    evaluated by the target, host or a mix of both.  Returns the following:
5599
5600     "host": Host evals condition.
5601     "host or target": Host or Target evals condition.
5602     "target": Target evals condition.
5603 */
5604
5605 static const char *
5606 bp_condition_evaluator (struct breakpoint *b)
5607 {
5608   struct bp_location *bl;
5609   char host_evals = 0;
5610   char target_evals = 0;
5611
5612   if (!b)
5613     return NULL;
5614
5615   if (!is_breakpoint (b))
5616     return NULL;
5617
5618   if (gdb_evaluates_breakpoint_condition_p ()
5619       || !target_supports_evaluation_of_breakpoint_conditions ())
5620     return condition_evaluation_host;
5621
5622   for (bl = b->loc; bl; bl = bl->next)
5623     {
5624       if (bl->cond_bytecode)
5625         target_evals++;
5626       else
5627         host_evals++;
5628     }
5629
5630   if (host_evals && target_evals)
5631     return condition_evaluation_both;
5632   else if (target_evals)
5633     return condition_evaluation_target;
5634   else
5635     return condition_evaluation_host;
5636 }
5637
5638 /* Determine the breakpoint location's condition evaluator.  This is
5639    similar to bp_condition_evaluator, but for locations.  */
5640
5641 static const char *
5642 bp_location_condition_evaluator (struct bp_location *bl)
5643 {
5644   if (bl && !is_breakpoint (bl->owner))
5645     return NULL;
5646
5647   if (gdb_evaluates_breakpoint_condition_p ()
5648       || !target_supports_evaluation_of_breakpoint_conditions ())
5649     return condition_evaluation_host;
5650
5651   if (bl && bl->cond_bytecode)
5652     return condition_evaluation_target;
5653   else
5654     return condition_evaluation_host;
5655 }
5656
5657 /* Print the LOC location out of the list of B->LOC locations.  */
5658
5659 static void
5660 print_breakpoint_location (struct breakpoint *b,
5661                            struct bp_location *loc)
5662 {
5663   struct ui_out *uiout = current_uiout;
5664   struct cleanup *old_chain = save_current_program_space ();
5665
5666   if (loc != NULL && loc->shlib_disabled)
5667     loc = NULL;
5668
5669   if (loc != NULL)
5670     set_current_program_space (loc->pspace);
5671
5672   if (b->display_canonical)
5673     ui_out_field_string (uiout, "what", b->addr_string);
5674   else if (loc && loc->source_file)
5675     {
5676       struct symbol *sym 
5677         = find_pc_sect_function (loc->address, loc->section);
5678       if (sym)
5679         {
5680           ui_out_text (uiout, "in ");
5681           ui_out_field_string (uiout, "func",
5682                                SYMBOL_PRINT_NAME (sym));
5683           ui_out_text (uiout, " ");
5684           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5685           ui_out_text (uiout, "at ");
5686         }
5687       ui_out_field_string (uiout, "file", loc->source_file);
5688       ui_out_text (uiout, ":");
5689       
5690       if (ui_out_is_mi_like_p (uiout))
5691         {
5692           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5693           char *fullname = symtab_to_fullname (sal.symtab);
5694           
5695           if (fullname)
5696             ui_out_field_string (uiout, "fullname", fullname);
5697         }
5698       
5699       ui_out_field_int (uiout, "line", loc->line_number);
5700     }
5701   else if (loc)
5702     {
5703       struct ui_file *stb = mem_fileopen ();
5704       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5705
5706       print_address_symbolic (loc->gdbarch, loc->address, stb,
5707                               demangle, "");
5708       ui_out_field_stream (uiout, "at", stb);
5709
5710       do_cleanups (stb_chain);
5711     }
5712   else
5713     ui_out_field_string (uiout, "pending", b->addr_string);
5714
5715   if (loc && is_breakpoint (b)
5716       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5717       && bp_condition_evaluator (b) == condition_evaluation_both)
5718     {
5719       ui_out_text (uiout, " (");
5720       ui_out_field_string (uiout, "evaluated-by",
5721                            bp_location_condition_evaluator (loc));
5722       ui_out_text (uiout, ")");
5723     }
5724
5725   do_cleanups (old_chain);
5726 }
5727
5728 static const char *
5729 bptype_string (enum bptype type)
5730 {
5731   struct ep_type_description
5732     {
5733       enum bptype type;
5734       char *description;
5735     };
5736   static struct ep_type_description bptypes[] =
5737   {
5738     {bp_none, "?deleted?"},
5739     {bp_breakpoint, "breakpoint"},
5740     {bp_hardware_breakpoint, "hw breakpoint"},
5741     {bp_until, "until"},
5742     {bp_finish, "finish"},
5743     {bp_watchpoint, "watchpoint"},
5744     {bp_hardware_watchpoint, "hw watchpoint"},
5745     {bp_read_watchpoint, "read watchpoint"},
5746     {bp_access_watchpoint, "acc watchpoint"},
5747     {bp_longjmp, "longjmp"},
5748     {bp_longjmp_resume, "longjmp resume"},
5749     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5750     {bp_exception, "exception"},
5751     {bp_exception_resume, "exception resume"},
5752     {bp_step_resume, "step resume"},
5753     {bp_hp_step_resume, "high-priority step resume"},
5754     {bp_watchpoint_scope, "watchpoint scope"},
5755     {bp_call_dummy, "call dummy"},
5756     {bp_std_terminate, "std::terminate"},
5757     {bp_shlib_event, "shlib events"},
5758     {bp_thread_event, "thread events"},
5759     {bp_overlay_event, "overlay events"},
5760     {bp_longjmp_master, "longjmp master"},
5761     {bp_std_terminate_master, "std::terminate master"},
5762     {bp_exception_master, "exception master"},
5763     {bp_catchpoint, "catchpoint"},
5764     {bp_tracepoint, "tracepoint"},
5765     {bp_fast_tracepoint, "fast tracepoint"},
5766     {bp_static_tracepoint, "static tracepoint"},
5767     {bp_dprintf, "dprintf"},
5768     {bp_jit_event, "jit events"},
5769     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5770     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5771   };
5772
5773   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5774       || ((int) type != bptypes[(int) type].type))
5775     internal_error (__FILE__, __LINE__,
5776                     _("bptypes table does not describe type #%d."),
5777                     (int) type);
5778
5779   return bptypes[(int) type].description;
5780 }
5781
5782 /* Print B to gdb_stdout.  */
5783
5784 static void
5785 print_one_breakpoint_location (struct breakpoint *b,
5786                                struct bp_location *loc,
5787                                int loc_number,
5788                                struct bp_location **last_loc,
5789                                int allflag)
5790 {
5791   struct command_line *l;
5792   static char bpenables[] = "nynny";
5793
5794   struct ui_out *uiout = current_uiout;
5795   int header_of_multiple = 0;
5796   int part_of_multiple = (loc != NULL);
5797   struct value_print_options opts;
5798
5799   get_user_print_options (&opts);
5800
5801   gdb_assert (!loc || loc_number != 0);
5802   /* See comment in print_one_breakpoint concerning treatment of
5803      breakpoints with single disabled location.  */
5804   if (loc == NULL 
5805       && (b->loc != NULL 
5806           && (b->loc->next != NULL || !b->loc->enabled)))
5807     header_of_multiple = 1;
5808   if (loc == NULL)
5809     loc = b->loc;
5810
5811   annotate_record ();
5812
5813   /* 1 */
5814   annotate_field (0);
5815   if (part_of_multiple)
5816     {
5817       char *formatted;
5818       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5819       ui_out_field_string (uiout, "number", formatted);
5820       xfree (formatted);
5821     }
5822   else
5823     {
5824       ui_out_field_int (uiout, "number", b->number);
5825     }
5826
5827   /* 2 */
5828   annotate_field (1);
5829   if (part_of_multiple)
5830     ui_out_field_skip (uiout, "type");
5831   else
5832     ui_out_field_string (uiout, "type", bptype_string (b->type));
5833
5834   /* 3 */
5835   annotate_field (2);
5836   if (part_of_multiple)
5837     ui_out_field_skip (uiout, "disp");
5838   else
5839     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5840
5841
5842   /* 4 */
5843   annotate_field (3);
5844   if (part_of_multiple)
5845     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5846   else
5847     ui_out_field_fmt (uiout, "enabled", "%c", 
5848                       bpenables[(int) b->enable_state]);
5849   ui_out_spaces (uiout, 2);
5850
5851   
5852   /* 5 and 6 */
5853   if (b->ops != NULL && b->ops->print_one != NULL)
5854     {
5855       /* Although the print_one can possibly print all locations,
5856          calling it here is not likely to get any nice result.  So,
5857          make sure there's just one location.  */
5858       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5859       b->ops->print_one (b, last_loc);
5860     }
5861   else
5862     switch (b->type)
5863       {
5864       case bp_none:
5865         internal_error (__FILE__, __LINE__,
5866                         _("print_one_breakpoint: bp_none encountered\n"));
5867         break;
5868
5869       case bp_watchpoint:
5870       case bp_hardware_watchpoint:
5871       case bp_read_watchpoint:
5872       case bp_access_watchpoint:
5873         {
5874           struct watchpoint *w = (struct watchpoint *) b;
5875
5876           /* Field 4, the address, is omitted (which makes the columns
5877              not line up too nicely with the headers, but the effect
5878              is relatively readable).  */
5879           if (opts.addressprint)
5880             ui_out_field_skip (uiout, "addr");
5881           annotate_field (5);
5882           ui_out_field_string (uiout, "what", w->exp_string);
5883         }
5884         break;
5885
5886       case bp_breakpoint:
5887       case bp_hardware_breakpoint:
5888       case bp_until:
5889       case bp_finish:
5890       case bp_longjmp:
5891       case bp_longjmp_resume:
5892       case bp_longjmp_call_dummy:
5893       case bp_exception:
5894       case bp_exception_resume:
5895       case bp_step_resume:
5896       case bp_hp_step_resume:
5897       case bp_watchpoint_scope:
5898       case bp_call_dummy:
5899       case bp_std_terminate:
5900       case bp_shlib_event:
5901       case bp_thread_event:
5902       case bp_overlay_event:
5903       case bp_longjmp_master:
5904       case bp_std_terminate_master:
5905       case bp_exception_master:
5906       case bp_tracepoint:
5907       case bp_fast_tracepoint:
5908       case bp_static_tracepoint:
5909       case bp_dprintf:
5910       case bp_jit_event:
5911       case bp_gnu_ifunc_resolver:
5912       case bp_gnu_ifunc_resolver_return:
5913         if (opts.addressprint)
5914           {
5915             annotate_field (4);
5916             if (header_of_multiple)
5917               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5918             else if (b->loc == NULL || loc->shlib_disabled)
5919               ui_out_field_string (uiout, "addr", "<PENDING>");
5920             else
5921               ui_out_field_core_addr (uiout, "addr",
5922                                       loc->gdbarch, loc->address);
5923           }
5924         annotate_field (5);
5925         if (!header_of_multiple)
5926           print_breakpoint_location (b, loc);
5927         if (b->loc)
5928           *last_loc = b->loc;
5929         break;
5930       }
5931
5932
5933   /* For backward compatibility, don't display inferiors unless there
5934      are several.  */
5935   if (loc != NULL
5936       && !header_of_multiple
5937       && (allflag
5938           || (!gdbarch_has_global_breakpoints (target_gdbarch)
5939               && (number_of_program_spaces () > 1
5940                   || number_of_inferiors () > 1)
5941               /* LOC is for existing B, it cannot be in
5942                  moribund_locations and thus having NULL OWNER.  */
5943               && loc->owner->type != bp_catchpoint)))
5944     {
5945       struct inferior *inf;
5946       int first = 1;
5947
5948       for (inf = inferior_list; inf != NULL; inf = inf->next)
5949         {
5950           if (inf->pspace == loc->pspace)
5951             {
5952               if (first)
5953                 {
5954                   first = 0;
5955                   ui_out_text (uiout, " inf ");
5956                 }
5957               else
5958                 ui_out_text (uiout, ", ");
5959               ui_out_text (uiout, plongest (inf->num));
5960             }
5961         }
5962     }
5963
5964   if (!part_of_multiple)
5965     {
5966       if (b->thread != -1)
5967         {
5968           /* FIXME: This seems to be redundant and lost here; see the
5969              "stop only in" line a little further down.  */
5970           ui_out_text (uiout, " thread ");
5971           ui_out_field_int (uiout, "thread", b->thread);
5972         }
5973       else if (b->task != 0)
5974         {
5975           ui_out_text (uiout, " task ");
5976           ui_out_field_int (uiout, "task", b->task);
5977         }
5978     }
5979
5980   ui_out_text (uiout, "\n");
5981
5982   if (!part_of_multiple)
5983     b->ops->print_one_detail (b, uiout);
5984
5985   if (part_of_multiple && frame_id_p (b->frame_id))
5986     {
5987       annotate_field (6);
5988       ui_out_text (uiout, "\tstop only in stack frame at ");
5989       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5990          the frame ID.  */
5991       ui_out_field_core_addr (uiout, "frame",
5992                               b->gdbarch, b->frame_id.stack_addr);
5993       ui_out_text (uiout, "\n");
5994     }
5995   
5996   if (!part_of_multiple && b->cond_string)
5997     {
5998       annotate_field (7);
5999       if (is_tracepoint (b))
6000         ui_out_text (uiout, "\ttrace only if ");
6001       else
6002         ui_out_text (uiout, "\tstop only if ");
6003       ui_out_field_string (uiout, "cond", b->cond_string);
6004
6005       /* Print whether the target is doing the breakpoint's condition
6006          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6007       if (is_breakpoint (b)
6008           && breakpoint_condition_evaluation_mode ()
6009           == condition_evaluation_target)
6010         {
6011           ui_out_text (uiout, " (");
6012           ui_out_field_string (uiout, "evaluated-by",
6013                                bp_condition_evaluator (b));
6014           ui_out_text (uiout, " evals)");
6015         }
6016       ui_out_text (uiout, "\n");
6017     }
6018
6019   if (!part_of_multiple && b->thread != -1)
6020     {
6021       /* FIXME should make an annotation for this.  */
6022       ui_out_text (uiout, "\tstop only in thread ");
6023       ui_out_field_int (uiout, "thread", b->thread);
6024       ui_out_text (uiout, "\n");
6025     }
6026   
6027   if (!part_of_multiple && b->hit_count)
6028     {
6029       /* FIXME should make an annotation for this.  */
6030       if (is_catchpoint (b))
6031         ui_out_text (uiout, "\tcatchpoint");
6032       else if (is_tracepoint (b))
6033         ui_out_text (uiout, "\ttracepoint");
6034       else
6035         ui_out_text (uiout, "\tbreakpoint");
6036       ui_out_text (uiout, " already hit ");
6037       ui_out_field_int (uiout, "times", b->hit_count);
6038       if (b->hit_count == 1)
6039         ui_out_text (uiout, " time\n");
6040       else
6041         ui_out_text (uiout, " times\n");
6042     }
6043   
6044   /* Output the count also if it is zero, but only if this is mi.
6045      FIXME: Should have a better test for this.  */
6046   if (ui_out_is_mi_like_p (uiout))
6047     if (!part_of_multiple && b->hit_count == 0)
6048       ui_out_field_int (uiout, "times", b->hit_count);
6049
6050   if (!part_of_multiple && b->ignore_count)
6051     {
6052       annotate_field (8);
6053       ui_out_text (uiout, "\tignore next ");
6054       ui_out_field_int (uiout, "ignore", b->ignore_count);
6055       ui_out_text (uiout, " hits\n");
6056     }
6057
6058   /* Note that an enable count of 1 corresponds to "enable once"
6059      behavior, which is reported by the combination of enablement and
6060      disposition, so we don't need to mention it here.  */
6061   if (!part_of_multiple && b->enable_count > 1)
6062     {
6063       annotate_field (8);
6064       ui_out_text (uiout, "\tdisable after ");
6065       /* Tweak the wording to clarify that ignore and enable counts
6066          are distinct, and have additive effect.  */
6067       if (b->ignore_count)
6068         ui_out_text (uiout, "additional ");
6069       else
6070         ui_out_text (uiout, "next ");
6071       ui_out_field_int (uiout, "enable", b->enable_count);
6072       ui_out_text (uiout, " hits\n");
6073     }
6074
6075   if (!part_of_multiple && is_tracepoint (b))
6076     {
6077       struct tracepoint *tp = (struct tracepoint *) b;
6078
6079       if (tp->traceframe_usage)
6080         {
6081           ui_out_text (uiout, "\ttrace buffer usage ");
6082           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6083           ui_out_text (uiout, " bytes\n");
6084         }
6085     }
6086   
6087   if (!part_of_multiple && b->extra_string
6088       && b->type == bp_dprintf && !b->commands)
6089     {
6090       annotate_field (7);
6091       ui_out_text (uiout, "\t(agent printf) ");
6092       ui_out_field_string (uiout, "printf", b->extra_string);
6093       ui_out_text (uiout, "\n");
6094     }
6095
6096   l = b->commands ? b->commands->commands : NULL;
6097   if (!part_of_multiple && l)
6098     {
6099       struct cleanup *script_chain;
6100
6101       annotate_field (9);
6102       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6103       print_command_lines (uiout, l, 4);
6104       do_cleanups (script_chain);
6105     }
6106
6107   if (is_tracepoint (b))
6108     {
6109       struct tracepoint *t = (struct tracepoint *) b;
6110
6111       if (!part_of_multiple && t->pass_count)
6112         {
6113           annotate_field (10);
6114           ui_out_text (uiout, "\tpass count ");
6115           ui_out_field_int (uiout, "pass", t->pass_count);
6116           ui_out_text (uiout, " \n");
6117         }
6118     }
6119
6120   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6121     {
6122       if (is_watchpoint (b))
6123         {
6124           struct watchpoint *w = (struct watchpoint *) b;
6125
6126           ui_out_field_string (uiout, "original-location", w->exp_string);
6127         }
6128       else if (b->addr_string)
6129         ui_out_field_string (uiout, "original-location", b->addr_string);
6130     }
6131 }
6132
6133 static void
6134 print_one_breakpoint (struct breakpoint *b,
6135                       struct bp_location **last_loc, 
6136                       int allflag)
6137 {
6138   struct cleanup *bkpt_chain;
6139   struct ui_out *uiout = current_uiout;
6140
6141   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6142
6143   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6144   do_cleanups (bkpt_chain);
6145
6146   /* If this breakpoint has custom print function,
6147      it's already printed.  Otherwise, print individual
6148      locations, if any.  */
6149   if (b->ops == NULL || b->ops->print_one == NULL)
6150     {
6151       /* If breakpoint has a single location that is disabled, we
6152          print it as if it had several locations, since otherwise it's
6153          hard to represent "breakpoint enabled, location disabled"
6154          situation.
6155
6156          Note that while hardware watchpoints have several locations
6157          internally, that's not a property exposed to user.  */
6158       if (b->loc 
6159           && !is_hardware_watchpoint (b)
6160           && (b->loc->next || !b->loc->enabled))
6161         {
6162           struct bp_location *loc;
6163           int n = 1;
6164
6165           for (loc = b->loc; loc; loc = loc->next, ++n)
6166             {
6167               struct cleanup *inner2 =
6168                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6169               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6170               do_cleanups (inner2);
6171             }
6172         }
6173     }
6174 }
6175
6176 static int
6177 breakpoint_address_bits (struct breakpoint *b)
6178 {
6179   int print_address_bits = 0;
6180   struct bp_location *loc;
6181
6182   for (loc = b->loc; loc; loc = loc->next)
6183     {
6184       int addr_bit;
6185
6186       /* Software watchpoints that aren't watching memory don't have
6187          an address to print.  */
6188       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6189         continue;
6190
6191       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6192       if (addr_bit > print_address_bits)
6193         print_address_bits = addr_bit;
6194     }
6195
6196   return print_address_bits;
6197 }
6198
6199 struct captured_breakpoint_query_args
6200   {
6201     int bnum;
6202   };
6203
6204 static int
6205 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6206 {
6207   struct captured_breakpoint_query_args *args = data;
6208   struct breakpoint *b;
6209   struct bp_location *dummy_loc = NULL;
6210
6211   ALL_BREAKPOINTS (b)
6212     {
6213       if (args->bnum == b->number)
6214         {
6215           print_one_breakpoint (b, &dummy_loc, 0);
6216           return GDB_RC_OK;
6217         }
6218     }
6219   return GDB_RC_NONE;
6220 }
6221
6222 enum gdb_rc
6223 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6224                       char **error_message)
6225 {
6226   struct captured_breakpoint_query_args args;
6227
6228   args.bnum = bnum;
6229   /* For the moment we don't trust print_one_breakpoint() to not throw
6230      an error.  */
6231   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6232                                  error_message, RETURN_MASK_ALL) < 0)
6233     return GDB_RC_FAIL;
6234   else
6235     return GDB_RC_OK;
6236 }
6237
6238 /* Return true if this breakpoint was set by the user, false if it is
6239    internal or momentary.  */
6240
6241 int
6242 user_breakpoint_p (struct breakpoint *b)
6243 {
6244   return b->number > 0;
6245 }
6246
6247 /* Print information on user settable breakpoint (watchpoint, etc)
6248    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6249    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6250    FILTER is non-NULL, call it on each breakpoint and only include the
6251    ones for which it returns non-zero.  Return the total number of
6252    breakpoints listed.  */
6253
6254 static int
6255 breakpoint_1 (char *args, int allflag, 
6256               int (*filter) (const struct breakpoint *))
6257 {
6258   struct breakpoint *b;
6259   struct bp_location *last_loc = NULL;
6260   int nr_printable_breakpoints;
6261   struct cleanup *bkpttbl_chain;
6262   struct value_print_options opts;
6263   int print_address_bits = 0;
6264   int print_type_col_width = 14;
6265   struct ui_out *uiout = current_uiout;
6266
6267   get_user_print_options (&opts);
6268
6269   /* Compute the number of rows in the table, as well as the size
6270      required for address fields.  */
6271   nr_printable_breakpoints = 0;
6272   ALL_BREAKPOINTS (b)
6273     {
6274       /* If we have a filter, only list the breakpoints it accepts.  */
6275       if (filter && !filter (b))
6276         continue;
6277
6278       /* If we have an "args" string, it is a list of breakpoints to 
6279          accept.  Skip the others.  */
6280       if (args != NULL && *args != '\0')
6281         {
6282           if (allflag && parse_and_eval_long (args) != b->number)
6283             continue;
6284           if (!allflag && !number_is_in_list (args, b->number))
6285             continue;
6286         }
6287
6288       if (allflag || user_breakpoint_p (b))
6289         {
6290           int addr_bit, type_len;
6291
6292           addr_bit = breakpoint_address_bits (b);
6293           if (addr_bit > print_address_bits)
6294             print_address_bits = addr_bit;
6295
6296           type_len = strlen (bptype_string (b->type));
6297           if (type_len > print_type_col_width)
6298             print_type_col_width = type_len;
6299
6300           nr_printable_breakpoints++;
6301         }
6302     }
6303
6304   if (opts.addressprint)
6305     bkpttbl_chain 
6306       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6307                                              nr_printable_breakpoints,
6308                                              "BreakpointTable");
6309   else
6310     bkpttbl_chain 
6311       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6312                                              nr_printable_breakpoints,
6313                                              "BreakpointTable");
6314
6315   if (nr_printable_breakpoints > 0)
6316     annotate_breakpoints_headers ();
6317   if (nr_printable_breakpoints > 0)
6318     annotate_field (0);
6319   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6320   if (nr_printable_breakpoints > 0)
6321     annotate_field (1);
6322   ui_out_table_header (uiout, print_type_col_width, ui_left,
6323                        "type", "Type");                         /* 2 */
6324   if (nr_printable_breakpoints > 0)
6325     annotate_field (2);
6326   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6327   if (nr_printable_breakpoints > 0)
6328     annotate_field (3);
6329   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6330   if (opts.addressprint)
6331     {
6332       if (nr_printable_breakpoints > 0)
6333         annotate_field (4);
6334       if (print_address_bits <= 32)
6335         ui_out_table_header (uiout, 10, ui_left, 
6336                              "addr", "Address");                /* 5 */
6337       else
6338         ui_out_table_header (uiout, 18, ui_left, 
6339                              "addr", "Address");                /* 5 */
6340     }
6341   if (nr_printable_breakpoints > 0)
6342     annotate_field (5);
6343   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6344   ui_out_table_body (uiout);
6345   if (nr_printable_breakpoints > 0)
6346     annotate_breakpoints_table ();
6347
6348   ALL_BREAKPOINTS (b)
6349     {
6350       QUIT;
6351       /* If we have a filter, only list the breakpoints it accepts.  */
6352       if (filter && !filter (b))
6353         continue;
6354
6355       /* If we have an "args" string, it is a list of breakpoints to 
6356          accept.  Skip the others.  */
6357
6358       if (args != NULL && *args != '\0')
6359         {
6360           if (allflag)  /* maintenance info breakpoint */
6361             {
6362               if (parse_and_eval_long (args) != b->number)
6363                 continue;
6364             }
6365           else          /* all others */
6366             {
6367               if (!number_is_in_list (args, b->number))
6368                 continue;
6369             }
6370         }
6371       /* We only print out user settable breakpoints unless the
6372          allflag is set.  */
6373       if (allflag || user_breakpoint_p (b))
6374         print_one_breakpoint (b, &last_loc, allflag);
6375     }
6376
6377   do_cleanups (bkpttbl_chain);
6378
6379   if (nr_printable_breakpoints == 0)
6380     {
6381       /* If there's a filter, let the caller decide how to report
6382          empty list.  */
6383       if (!filter)
6384         {
6385           if (args == NULL || *args == '\0')
6386             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6387           else
6388             ui_out_message (uiout, 0, 
6389                             "No breakpoint or watchpoint matching '%s'.\n",
6390                             args);
6391         }
6392     }
6393   else
6394     {
6395       if (last_loc && !server_command)
6396         set_next_address (last_loc->gdbarch, last_loc->address);
6397     }
6398
6399   /* FIXME?  Should this be moved up so that it is only called when
6400      there have been breakpoints? */
6401   annotate_breakpoints_table_end ();
6402
6403   return nr_printable_breakpoints;
6404 }
6405
6406 /* Display the value of default-collect in a way that is generally
6407    compatible with the breakpoint list.  */
6408
6409 static void
6410 default_collect_info (void)
6411 {
6412   struct ui_out *uiout = current_uiout;
6413
6414   /* If it has no value (which is frequently the case), say nothing; a
6415      message like "No default-collect." gets in user's face when it's
6416      not wanted.  */
6417   if (!*default_collect)
6418     return;
6419
6420   /* The following phrase lines up nicely with per-tracepoint collect
6421      actions.  */
6422   ui_out_text (uiout, "default collect ");
6423   ui_out_field_string (uiout, "default-collect", default_collect);
6424   ui_out_text (uiout, " \n");
6425 }
6426   
6427 static void
6428 breakpoints_info (char *args, int from_tty)
6429 {
6430   breakpoint_1 (args, 0, NULL);
6431
6432   default_collect_info ();
6433 }
6434
6435 static void
6436 watchpoints_info (char *args, int from_tty)
6437 {
6438   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6439   struct ui_out *uiout = current_uiout;
6440
6441   if (num_printed == 0)
6442     {
6443       if (args == NULL || *args == '\0')
6444         ui_out_message (uiout, 0, "No watchpoints.\n");
6445       else
6446         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6447     }
6448 }
6449
6450 static void
6451 maintenance_info_breakpoints (char *args, int from_tty)
6452 {
6453   breakpoint_1 (args, 1, NULL);
6454
6455   default_collect_info ();
6456 }
6457
6458 static int
6459 breakpoint_has_pc (struct breakpoint *b,
6460                    struct program_space *pspace,
6461                    CORE_ADDR pc, struct obj_section *section)
6462 {
6463   struct bp_location *bl = b->loc;
6464
6465   for (; bl; bl = bl->next)
6466     {
6467       if (bl->pspace == pspace
6468           && bl->address == pc
6469           && (!overlay_debugging || bl->section == section))
6470         return 1;         
6471     }
6472   return 0;
6473 }
6474
6475 /* Print a message describing any user-breakpoints set at PC.  This
6476    concerns with logical breakpoints, so we match program spaces, not
6477    address spaces.  */
6478
6479 static void
6480 describe_other_breakpoints (struct gdbarch *gdbarch,
6481                             struct program_space *pspace, CORE_ADDR pc,
6482                             struct obj_section *section, int thread)
6483 {
6484   int others = 0;
6485   struct breakpoint *b;
6486
6487   ALL_BREAKPOINTS (b)
6488     others += (user_breakpoint_p (b)
6489                && breakpoint_has_pc (b, pspace, pc, section));
6490   if (others > 0)
6491     {
6492       if (others == 1)
6493         printf_filtered (_("Note: breakpoint "));
6494       else /* if (others == ???) */
6495         printf_filtered (_("Note: breakpoints "));
6496       ALL_BREAKPOINTS (b)
6497         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6498           {
6499             others--;
6500             printf_filtered ("%d", b->number);
6501             if (b->thread == -1 && thread != -1)
6502               printf_filtered (" (all threads)");
6503             else if (b->thread != -1)
6504               printf_filtered (" (thread %d)", b->thread);
6505             printf_filtered ("%s%s ",
6506                              ((b->enable_state == bp_disabled
6507                                || b->enable_state == bp_call_disabled)
6508                               ? " (disabled)"
6509                               : b->enable_state == bp_permanent 
6510                               ? " (permanent)"
6511                               : ""),
6512                              (others > 1) ? "," 
6513                              : ((others == 1) ? " and" : ""));
6514           }
6515       printf_filtered (_("also set at pc "));
6516       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6517       printf_filtered (".\n");
6518     }
6519 }
6520 \f
6521
6522 /* Return true iff it is meaningful to use the address member of
6523    BPT.  For some breakpoint types, the address member is irrelevant
6524    and it makes no sense to attempt to compare it to other addresses
6525    (or use it for any other purpose either).
6526
6527    More specifically, each of the following breakpoint types will
6528    always have a zero valued address and we don't want to mark
6529    breakpoints of any of these types to be a duplicate of an actual
6530    breakpoint at address zero:
6531
6532       bp_watchpoint
6533       bp_catchpoint
6534
6535 */
6536
6537 static int
6538 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6539 {
6540   enum bptype type = bpt->type;
6541
6542   return (type != bp_watchpoint && type != bp_catchpoint);
6543 }
6544
6545 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6546    true if LOC1 and LOC2 represent the same watchpoint location.  */
6547
6548 static int
6549 watchpoint_locations_match (struct bp_location *loc1, 
6550                             struct bp_location *loc2)
6551 {
6552   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6553   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6554
6555   /* Both of them must exist.  */
6556   gdb_assert (w1 != NULL);
6557   gdb_assert (w2 != NULL);
6558
6559   /* If the target can evaluate the condition expression in hardware,
6560      then we we need to insert both watchpoints even if they are at
6561      the same place.  Otherwise the watchpoint will only trigger when
6562      the condition of whichever watchpoint was inserted evaluates to
6563      true, not giving a chance for GDB to check the condition of the
6564      other watchpoint.  */
6565   if ((w1->cond_exp
6566        && target_can_accel_watchpoint_condition (loc1->address, 
6567                                                  loc1->length,
6568                                                  loc1->watchpoint_type,
6569                                                  w1->cond_exp))
6570       || (w2->cond_exp
6571           && target_can_accel_watchpoint_condition (loc2->address, 
6572                                                     loc2->length,
6573                                                     loc2->watchpoint_type,
6574                                                     w2->cond_exp)))
6575     return 0;
6576
6577   /* Note that this checks the owner's type, not the location's.  In
6578      case the target does not support read watchpoints, but does
6579      support access watchpoints, we'll have bp_read_watchpoint
6580      watchpoints with hw_access locations.  Those should be considered
6581      duplicates of hw_read locations.  The hw_read locations will
6582      become hw_access locations later.  */
6583   return (loc1->owner->type == loc2->owner->type
6584           && loc1->pspace->aspace == loc2->pspace->aspace
6585           && loc1->address == loc2->address
6586           && loc1->length == loc2->length);
6587 }
6588
6589 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6590    same breakpoint location.  In most targets, this can only be true
6591    if ASPACE1 matches ASPACE2.  On targets that have global
6592    breakpoints, the address space doesn't really matter.  */
6593
6594 static int
6595 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6596                           struct address_space *aspace2, CORE_ADDR addr2)
6597 {
6598   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6599            || aspace1 == aspace2)
6600           && addr1 == addr2);
6601 }
6602
6603 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6604    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6605    matches ASPACE2.  On targets that have global breakpoints, the address
6606    space doesn't really matter.  */
6607
6608 static int
6609 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6610                                 int len1, struct address_space *aspace2,
6611                                 CORE_ADDR addr2)
6612 {
6613   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6614            || aspace1 == aspace2)
6615           && addr2 >= addr1 && addr2 < addr1 + len1);
6616 }
6617
6618 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6619    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6620    matches the breakpoint's address space.  On targets that have global
6621    breakpoints, the address space doesn't really matter.  */
6622
6623 static int
6624 breakpoint_location_address_match (struct bp_location *bl,
6625                                    struct address_space *aspace,
6626                                    CORE_ADDR addr)
6627 {
6628   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6629                                     aspace, addr)
6630           || (bl->length
6631               && breakpoint_address_match_range (bl->pspace->aspace,
6632                                                  bl->address, bl->length,
6633                                                  aspace, addr)));
6634 }
6635
6636 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6637    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6638    true, otherwise returns false.  */
6639
6640 static int
6641 tracepoint_locations_match (struct bp_location *loc1,
6642                             struct bp_location *loc2)
6643 {
6644   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6645     /* Since tracepoint locations are never duplicated with others', tracepoint
6646        locations at the same address of different tracepoints are regarded as
6647        different locations.  */
6648     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6649   else
6650     return 0;
6651 }
6652
6653 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6654    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6655    represent the same location.  */
6656
6657 static int
6658 breakpoint_locations_match (struct bp_location *loc1, 
6659                             struct bp_location *loc2)
6660 {
6661   int hw_point1, hw_point2;
6662
6663   /* Both of them must not be in moribund_locations.  */
6664   gdb_assert (loc1->owner != NULL);
6665   gdb_assert (loc2->owner != NULL);
6666
6667   hw_point1 = is_hardware_watchpoint (loc1->owner);
6668   hw_point2 = is_hardware_watchpoint (loc2->owner);
6669
6670   if (hw_point1 != hw_point2)
6671     return 0;
6672   else if (hw_point1)
6673     return watchpoint_locations_match (loc1, loc2);
6674   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6675     return tracepoint_locations_match (loc1, loc2);
6676   else
6677     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6678     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6679                                      loc2->pspace->aspace, loc2->address)
6680             && loc1->length == loc2->length);
6681 }
6682
6683 static void
6684 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6685                                int bnum, int have_bnum)
6686 {
6687   /* The longest string possibly returned by hex_string_custom
6688      is 50 chars.  These must be at least that big for safety.  */
6689   char astr1[64];
6690   char astr2[64];
6691
6692   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6693   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6694   if (have_bnum)
6695     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6696              bnum, astr1, astr2);
6697   else
6698     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6699 }
6700
6701 /* Adjust a breakpoint's address to account for architectural
6702    constraints on breakpoint placement.  Return the adjusted address.
6703    Note: Very few targets require this kind of adjustment.  For most
6704    targets, this function is simply the identity function.  */
6705
6706 static CORE_ADDR
6707 adjust_breakpoint_address (struct gdbarch *gdbarch,
6708                            CORE_ADDR bpaddr, enum bptype bptype)
6709 {
6710   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6711     {
6712       /* Very few targets need any kind of breakpoint adjustment.  */
6713       return bpaddr;
6714     }
6715   else if (bptype == bp_watchpoint
6716            || bptype == bp_hardware_watchpoint
6717            || bptype == bp_read_watchpoint
6718            || bptype == bp_access_watchpoint
6719            || bptype == bp_catchpoint)
6720     {
6721       /* Watchpoints and the various bp_catch_* eventpoints should not
6722          have their addresses modified.  */
6723       return bpaddr;
6724     }
6725   else
6726     {
6727       CORE_ADDR adjusted_bpaddr;
6728
6729       /* Some targets have architectural constraints on the placement
6730          of breakpoint instructions.  Obtain the adjusted address.  */
6731       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6732
6733       /* An adjusted breakpoint address can significantly alter
6734          a user's expectations.  Print a warning if an adjustment
6735          is required.  */
6736       if (adjusted_bpaddr != bpaddr)
6737         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6738
6739       return adjusted_bpaddr;
6740     }
6741 }
6742
6743 void
6744 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6745                   struct breakpoint *owner)
6746 {
6747   memset (loc, 0, sizeof (*loc));
6748
6749   gdb_assert (ops != NULL);
6750
6751   loc->ops = ops;
6752   loc->owner = owner;
6753   loc->cond = NULL;
6754   loc->cond_bytecode = NULL;
6755   loc->shlib_disabled = 0;
6756   loc->enabled = 1;
6757
6758   switch (owner->type)
6759     {
6760     case bp_breakpoint:
6761     case bp_until:
6762     case bp_finish:
6763     case bp_longjmp:
6764     case bp_longjmp_resume:
6765     case bp_longjmp_call_dummy:
6766     case bp_exception:
6767     case bp_exception_resume:
6768     case bp_step_resume:
6769     case bp_hp_step_resume:
6770     case bp_watchpoint_scope:
6771     case bp_call_dummy:
6772     case bp_std_terminate:
6773     case bp_shlib_event:
6774     case bp_thread_event:
6775     case bp_overlay_event:
6776     case bp_jit_event:
6777     case bp_longjmp_master:
6778     case bp_std_terminate_master:
6779     case bp_exception_master:
6780     case bp_gnu_ifunc_resolver:
6781     case bp_gnu_ifunc_resolver_return:
6782     case bp_dprintf:
6783       loc->loc_type = bp_loc_software_breakpoint;
6784       mark_breakpoint_location_modified (loc);
6785       break;
6786     case bp_hardware_breakpoint:
6787       loc->loc_type = bp_loc_hardware_breakpoint;
6788       mark_breakpoint_location_modified (loc);
6789       break;
6790     case bp_hardware_watchpoint:
6791     case bp_read_watchpoint:
6792     case bp_access_watchpoint:
6793       loc->loc_type = bp_loc_hardware_watchpoint;
6794       break;
6795     case bp_watchpoint:
6796     case bp_catchpoint:
6797     case bp_tracepoint:
6798     case bp_fast_tracepoint:
6799     case bp_static_tracepoint:
6800       loc->loc_type = bp_loc_other;
6801       break;
6802     default:
6803       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6804     }
6805
6806   loc->refc = 1;
6807 }
6808
6809 /* Allocate a struct bp_location.  */
6810
6811 static struct bp_location *
6812 allocate_bp_location (struct breakpoint *bpt)
6813 {
6814   return bpt->ops->allocate_location (bpt);
6815 }
6816
6817 static void
6818 free_bp_location (struct bp_location *loc)
6819 {
6820   loc->ops->dtor (loc);
6821   xfree (loc);
6822 }
6823
6824 /* Increment reference count.  */
6825
6826 static void
6827 incref_bp_location (struct bp_location *bl)
6828 {
6829   ++bl->refc;
6830 }
6831
6832 /* Decrement reference count.  If the reference count reaches 0,
6833    destroy the bp_location.  Sets *BLP to NULL.  */
6834
6835 static void
6836 decref_bp_location (struct bp_location **blp)
6837 {
6838   gdb_assert ((*blp)->refc > 0);
6839
6840   if (--(*blp)->refc == 0)
6841     free_bp_location (*blp);
6842   *blp = NULL;
6843 }
6844
6845 /* Add breakpoint B at the end of the global breakpoint chain.  */
6846
6847 static void
6848 add_to_breakpoint_chain (struct breakpoint *b)
6849 {
6850   struct breakpoint *b1;
6851
6852   /* Add this breakpoint to the end of the chain so that a list of
6853      breakpoints will come out in order of increasing numbers.  */
6854
6855   b1 = breakpoint_chain;
6856   if (b1 == 0)
6857     breakpoint_chain = b;
6858   else
6859     {
6860       while (b1->next)
6861         b1 = b1->next;
6862       b1->next = b;
6863     }
6864 }
6865
6866 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6867
6868 static void
6869 init_raw_breakpoint_without_location (struct breakpoint *b,
6870                                       struct gdbarch *gdbarch,
6871                                       enum bptype bptype,
6872                                       const struct breakpoint_ops *ops)
6873 {
6874   memset (b, 0, sizeof (*b));
6875
6876   gdb_assert (ops != NULL);
6877
6878   b->ops = ops;
6879   b->type = bptype;
6880   b->gdbarch = gdbarch;
6881   b->language = current_language->la_language;
6882   b->input_radix = input_radix;
6883   b->thread = -1;
6884   b->enable_state = bp_enabled;
6885   b->next = 0;
6886   b->silent = 0;
6887   b->ignore_count = 0;
6888   b->commands = NULL;
6889   b->frame_id = null_frame_id;
6890   b->condition_not_parsed = 0;
6891   b->py_bp_object = NULL;
6892   b->related_breakpoint = b;
6893 }
6894
6895 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6896    that has type BPTYPE and has no locations as yet.  */
6897
6898 static struct breakpoint *
6899 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6900                                      enum bptype bptype,
6901                                      const struct breakpoint_ops *ops)
6902 {
6903   struct breakpoint *b = XNEW (struct breakpoint);
6904
6905   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6906   add_to_breakpoint_chain (b);
6907   return b;
6908 }
6909
6910 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6911    resolutions should be made as the user specified the location explicitly
6912    enough.  */
6913
6914 static void
6915 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6916 {
6917   gdb_assert (loc->owner != NULL);
6918
6919   if (loc->owner->type == bp_breakpoint
6920       || loc->owner->type == bp_hardware_breakpoint
6921       || is_tracepoint (loc->owner))
6922     {
6923       int is_gnu_ifunc;
6924       const char *function_name;
6925       CORE_ADDR func_addr;
6926
6927       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6928                                           &func_addr, NULL, &is_gnu_ifunc);
6929
6930       if (is_gnu_ifunc && !explicit_loc)
6931         {
6932           struct breakpoint *b = loc->owner;
6933
6934           gdb_assert (loc->pspace == current_program_space);
6935           if (gnu_ifunc_resolve_name (function_name,
6936                                       &loc->requested_address))
6937             {
6938               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6939               loc->address = adjust_breakpoint_address (loc->gdbarch,
6940                                                         loc->requested_address,
6941                                                         b->type);
6942             }
6943           else if (b->type == bp_breakpoint && b->loc == loc
6944                    && loc->next == NULL && b->related_breakpoint == b)
6945             {
6946               /* Create only the whole new breakpoint of this type but do not
6947                  mess more complicated breakpoints with multiple locations.  */
6948               b->type = bp_gnu_ifunc_resolver;
6949               /* Remember the resolver's address for use by the return
6950                  breakpoint.  */
6951               loc->related_address = func_addr;
6952             }
6953         }
6954
6955       if (function_name)
6956         loc->function_name = xstrdup (function_name);
6957     }
6958 }
6959
6960 /* Attempt to determine architecture of location identified by SAL.  */
6961 struct gdbarch *
6962 get_sal_arch (struct symtab_and_line sal)
6963 {
6964   if (sal.section)
6965     return get_objfile_arch (sal.section->objfile);
6966   if (sal.symtab)
6967     return get_objfile_arch (sal.symtab->objfile);
6968
6969   return NULL;
6970 }
6971
6972 /* Low level routine for partially initializing a breakpoint of type
6973    BPTYPE.  The newly created breakpoint's address, section, source
6974    file name, and line number are provided by SAL.
6975
6976    It is expected that the caller will complete the initialization of
6977    the newly created breakpoint struct as well as output any status
6978    information regarding the creation of a new breakpoint.  */
6979
6980 static void
6981 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
6982                      struct symtab_and_line sal, enum bptype bptype,
6983                      const struct breakpoint_ops *ops)
6984 {
6985   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6986
6987   add_location_to_breakpoint (b, &sal);
6988
6989   if (bptype != bp_catchpoint)
6990     gdb_assert (sal.pspace != NULL);
6991
6992   /* Store the program space that was used to set the breakpoint,
6993      except for ordinary breakpoints, which are independent of the
6994      program space.  */
6995   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
6996     b->pspace = sal.pspace;
6997
6998   breakpoints_changed ();
6999 }
7000
7001 /* set_raw_breakpoint is a low level routine for allocating and
7002    partially initializing a breakpoint of type BPTYPE.  The newly
7003    created breakpoint's address, section, source file name, and line
7004    number are provided by SAL.  The newly created and partially
7005    initialized breakpoint is added to the breakpoint chain and
7006    is also returned as the value of this function.
7007
7008    It is expected that the caller will complete the initialization of
7009    the newly created breakpoint struct as well as output any status
7010    information regarding the creation of a new breakpoint.  In
7011    particular, set_raw_breakpoint does NOT set the breakpoint
7012    number!  Care should be taken to not allow an error to occur
7013    prior to completing the initialization of the breakpoint.  If this
7014    should happen, a bogus breakpoint will be left on the chain.  */
7015
7016 struct breakpoint *
7017 set_raw_breakpoint (struct gdbarch *gdbarch,
7018                     struct symtab_and_line sal, enum bptype bptype,
7019                     const struct breakpoint_ops *ops)
7020 {
7021   struct breakpoint *b = XNEW (struct breakpoint);
7022
7023   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7024   add_to_breakpoint_chain (b);
7025   return b;
7026 }
7027
7028
7029 /* Note that the breakpoint object B describes a permanent breakpoint
7030    instruction, hard-wired into the inferior's code.  */
7031 void
7032 make_breakpoint_permanent (struct breakpoint *b)
7033 {
7034   struct bp_location *bl;
7035
7036   b->enable_state = bp_permanent;
7037
7038   /* By definition, permanent breakpoints are already present in the
7039      code.  Mark all locations as inserted.  For now,
7040      make_breakpoint_permanent is called in just one place, so it's
7041      hard to say if it's reasonable to have permanent breakpoint with
7042      multiple locations or not, but it's easy to implement.  */
7043   for (bl = b->loc; bl; bl = bl->next)
7044     bl->inserted = 1;
7045 }
7046
7047 /* Call this routine when stepping and nexting to enable a breakpoint
7048    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7049    initiated the operation.  */
7050
7051 void
7052 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7053 {
7054   struct breakpoint *b, *b_tmp;
7055   int thread = tp->num;
7056
7057   /* To avoid having to rescan all objfile symbols at every step,
7058      we maintain a list of continually-inserted but always disabled
7059      longjmp "master" breakpoints.  Here, we simply create momentary
7060      clones of those and enable them for the requested thread.  */
7061   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7062     if (b->pspace == current_program_space
7063         && (b->type == bp_longjmp_master
7064             || b->type == bp_exception_master))
7065       {
7066         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7067         struct breakpoint *clone;
7068
7069         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7070            after their removal.  */
7071         clone = momentary_breakpoint_from_master (b, type,
7072                                                   &longjmp_breakpoint_ops);
7073         clone->thread = thread;
7074       }
7075
7076   tp->initiating_frame = frame;
7077 }
7078
7079 /* Delete all longjmp breakpoints from THREAD.  */
7080 void
7081 delete_longjmp_breakpoint (int thread)
7082 {
7083   struct breakpoint *b, *b_tmp;
7084
7085   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7086     if (b->type == bp_longjmp || b->type == bp_exception)
7087       {
7088         if (b->thread == thread)
7089           delete_breakpoint (b);
7090       }
7091 }
7092
7093 void
7094 delete_longjmp_breakpoint_at_next_stop (int thread)
7095 {
7096   struct breakpoint *b, *b_tmp;
7097
7098   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7099     if (b->type == bp_longjmp || b->type == bp_exception)
7100       {
7101         if (b->thread == thread)
7102           b->disposition = disp_del_at_next_stop;
7103       }
7104 }
7105
7106 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7107    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7108    pointer to any of them.  Return NULL if this system cannot place longjmp
7109    breakpoints.  */
7110
7111 struct breakpoint *
7112 set_longjmp_breakpoint_for_call_dummy (void)
7113 {
7114   struct breakpoint *b, *retval = NULL;
7115
7116   ALL_BREAKPOINTS (b)
7117     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7118       {
7119         struct breakpoint *new_b;
7120
7121         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7122                                                   &momentary_breakpoint_ops);
7123         new_b->thread = pid_to_thread_id (inferior_ptid);
7124
7125         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7126
7127         gdb_assert (new_b->related_breakpoint == new_b);
7128         if (retval == NULL)
7129           retval = new_b;
7130         new_b->related_breakpoint = retval;
7131         while (retval->related_breakpoint != new_b->related_breakpoint)
7132           retval = retval->related_breakpoint;
7133         retval->related_breakpoint = new_b;
7134       }
7135
7136   return retval;
7137 }
7138
7139 /* Verify all existing dummy frames and their associated breakpoints for
7140    THREAD.  Remove those which can no longer be found in the current frame
7141    stack.
7142
7143    You should call this function only at places where it is safe to currently
7144    unwind the whole stack.  Failed stack unwind would discard live dummy
7145    frames.  */
7146
7147 void
7148 check_longjmp_breakpoint_for_call_dummy (int thread)
7149 {
7150   struct breakpoint *b, *b_tmp;
7151
7152   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7153     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7154       {
7155         struct breakpoint *dummy_b = b->related_breakpoint;
7156
7157         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7158           dummy_b = dummy_b->related_breakpoint;
7159         if (dummy_b->type != bp_call_dummy
7160             || frame_find_by_id (dummy_b->frame_id) != NULL)
7161           continue;
7162         
7163         dummy_frame_discard (dummy_b->frame_id);
7164
7165         while (b->related_breakpoint != b)
7166           {
7167             if (b_tmp == b->related_breakpoint)
7168               b_tmp = b->related_breakpoint->next;
7169             delete_breakpoint (b->related_breakpoint);
7170           }
7171         delete_breakpoint (b);
7172       }
7173 }
7174
7175 void
7176 enable_overlay_breakpoints (void)
7177 {
7178   struct breakpoint *b;
7179
7180   ALL_BREAKPOINTS (b)
7181     if (b->type == bp_overlay_event)
7182     {
7183       b->enable_state = bp_enabled;
7184       update_global_location_list (1);
7185       overlay_events_enabled = 1;
7186     }
7187 }
7188
7189 void
7190 disable_overlay_breakpoints (void)
7191 {
7192   struct breakpoint *b;
7193
7194   ALL_BREAKPOINTS (b)
7195     if (b->type == bp_overlay_event)
7196     {
7197       b->enable_state = bp_disabled;
7198       update_global_location_list (0);
7199       overlay_events_enabled = 0;
7200     }
7201 }
7202
7203 /* Set an active std::terminate breakpoint for each std::terminate
7204    master breakpoint.  */
7205 void
7206 set_std_terminate_breakpoint (void)
7207 {
7208   struct breakpoint *b, *b_tmp;
7209
7210   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7211     if (b->pspace == current_program_space
7212         && b->type == bp_std_terminate_master)
7213       {
7214         momentary_breakpoint_from_master (b, bp_std_terminate,
7215                                           &momentary_breakpoint_ops);
7216       }
7217 }
7218
7219 /* Delete all the std::terminate breakpoints.  */
7220 void
7221 delete_std_terminate_breakpoint (void)
7222 {
7223   struct breakpoint *b, *b_tmp;
7224
7225   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7226     if (b->type == bp_std_terminate)
7227       delete_breakpoint (b);
7228 }
7229
7230 struct breakpoint *
7231 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7232 {
7233   struct breakpoint *b;
7234
7235   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7236                                   &internal_breakpoint_ops);
7237
7238   b->enable_state = bp_enabled;
7239   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7240   b->addr_string
7241     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7242
7243   update_global_location_list_nothrow (1);
7244
7245   return b;
7246 }
7247
7248 void
7249 remove_thread_event_breakpoints (void)
7250 {
7251   struct breakpoint *b, *b_tmp;
7252
7253   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7254     if (b->type == bp_thread_event
7255         && b->loc->pspace == current_program_space)
7256       delete_breakpoint (b);
7257 }
7258
7259 struct lang_and_radix
7260   {
7261     enum language lang;
7262     int radix;
7263   };
7264
7265 /* Create a breakpoint for JIT code registration and unregistration.  */
7266
7267 struct breakpoint *
7268 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7269 {
7270   struct breakpoint *b;
7271
7272   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7273                                   &internal_breakpoint_ops);
7274   update_global_location_list_nothrow (1);
7275   return b;
7276 }
7277
7278 /* Remove JIT code registration and unregistration breakpoint(s).  */
7279
7280 void
7281 remove_jit_event_breakpoints (void)
7282 {
7283   struct breakpoint *b, *b_tmp;
7284
7285   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7286     if (b->type == bp_jit_event
7287         && b->loc->pspace == current_program_space)
7288       delete_breakpoint (b);
7289 }
7290
7291 void
7292 remove_solib_event_breakpoints (void)
7293 {
7294   struct breakpoint *b, *b_tmp;
7295
7296   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7297     if (b->type == bp_shlib_event
7298         && b->loc->pspace == current_program_space)
7299       delete_breakpoint (b);
7300 }
7301
7302 struct breakpoint *
7303 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7304 {
7305   struct breakpoint *b;
7306
7307   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7308                                   &internal_breakpoint_ops);
7309   update_global_location_list_nothrow (1);
7310   return b;
7311 }
7312
7313 /* Disable any breakpoints that are on code in shared libraries.  Only
7314    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7315
7316 void
7317 disable_breakpoints_in_shlibs (void)
7318 {
7319   struct bp_location *loc, **locp_tmp;
7320
7321   ALL_BP_LOCATIONS (loc, locp_tmp)
7322   {
7323     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7324     struct breakpoint *b = loc->owner;
7325
7326     /* We apply the check to all breakpoints, including disabled for
7327        those with loc->duplicate set.  This is so that when breakpoint
7328        becomes enabled, or the duplicate is removed, gdb will try to
7329        insert all breakpoints.  If we don't set shlib_disabled here,
7330        we'll try to insert those breakpoints and fail.  */
7331     if (((b->type == bp_breakpoint)
7332          || (b->type == bp_jit_event)
7333          || (b->type == bp_hardware_breakpoint)
7334          || (is_tracepoint (b)))
7335         && loc->pspace == current_program_space
7336         && !loc->shlib_disabled
7337 #ifdef PC_SOLIB
7338         && PC_SOLIB (loc->address)
7339 #else
7340         && solib_name_from_address (loc->pspace, loc->address)
7341 #endif
7342         )
7343       {
7344         loc->shlib_disabled = 1;
7345       }
7346   }
7347 }
7348
7349 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7350    library.  Only apply to enabled breakpoints, disabled ones can just stay
7351    disabled.  */
7352
7353 static void
7354 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7355 {
7356   struct bp_location *loc, **locp_tmp;
7357   int disabled_shlib_breaks = 0;
7358
7359   /* SunOS a.out shared libraries are always mapped, so do not
7360      disable breakpoints; they will only be reported as unloaded
7361      through clear_solib when GDB discards its shared library
7362      list.  See clear_solib for more information.  */
7363   if (exec_bfd != NULL
7364       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7365     return;
7366
7367   ALL_BP_LOCATIONS (loc, locp_tmp)
7368   {
7369     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7370     struct breakpoint *b = loc->owner;
7371
7372     if (solib->pspace == loc->pspace
7373         && !loc->shlib_disabled
7374         && (((b->type == bp_breakpoint
7375               || b->type == bp_jit_event
7376               || b->type == bp_hardware_breakpoint)
7377              && (loc->loc_type == bp_loc_hardware_breakpoint
7378                  || loc->loc_type == bp_loc_software_breakpoint))
7379             || is_tracepoint (b))
7380         && solib_contains_address_p (solib, loc->address))
7381       {
7382         loc->shlib_disabled = 1;
7383         /* At this point, we cannot rely on remove_breakpoint
7384            succeeding so we must mark the breakpoint as not inserted
7385            to prevent future errors occurring in remove_breakpoints.  */
7386         loc->inserted = 0;
7387
7388         /* This may cause duplicate notifications for the same breakpoint.  */
7389         observer_notify_breakpoint_modified (b);
7390
7391         if (!disabled_shlib_breaks)
7392           {
7393             target_terminal_ours_for_output ();
7394             warning (_("Temporarily disabling breakpoints "
7395                        "for unloaded shared library \"%s\""),
7396                      solib->so_name);
7397           }
7398         disabled_shlib_breaks = 1;
7399       }
7400   }
7401 }
7402
7403 /* FORK & VFORK catchpoints.  */
7404
7405 /* An instance of this type is used to represent a fork or vfork
7406    catchpoint.  It includes a "struct breakpoint" as a kind of base
7407    class; users downcast to "struct breakpoint *" when needed.  A
7408    breakpoint is really of this type iff its ops pointer points to
7409    CATCH_FORK_BREAKPOINT_OPS.  */
7410
7411 struct fork_catchpoint
7412 {
7413   /* The base class.  */
7414   struct breakpoint base;
7415
7416   /* Process id of a child process whose forking triggered this
7417      catchpoint.  This field is only valid immediately after this
7418      catchpoint has triggered.  */
7419   ptid_t forked_inferior_pid;
7420 };
7421
7422 /* Implement the "insert" breakpoint_ops method for fork
7423    catchpoints.  */
7424
7425 static int
7426 insert_catch_fork (struct bp_location *bl)
7427 {
7428   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7429 }
7430
7431 /* Implement the "remove" breakpoint_ops method for fork
7432    catchpoints.  */
7433
7434 static int
7435 remove_catch_fork (struct bp_location *bl)
7436 {
7437   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7438 }
7439
7440 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7441    catchpoints.  */
7442
7443 static int
7444 breakpoint_hit_catch_fork (const struct bp_location *bl,
7445                            struct address_space *aspace, CORE_ADDR bp_addr,
7446                            const struct target_waitstatus *ws)
7447 {
7448   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7449
7450   if (ws->kind != TARGET_WAITKIND_FORKED)
7451     return 0;
7452
7453   c->forked_inferior_pid = ws->value.related_pid;
7454   return 1;
7455 }
7456
7457 /* Implement the "print_it" breakpoint_ops method for fork
7458    catchpoints.  */
7459
7460 static enum print_stop_action
7461 print_it_catch_fork (bpstat bs)
7462 {
7463   struct ui_out *uiout = current_uiout;
7464   struct breakpoint *b = bs->breakpoint_at;
7465   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7466
7467   annotate_catchpoint (b->number);
7468   if (b->disposition == disp_del)
7469     ui_out_text (uiout, "\nTemporary catchpoint ");
7470   else
7471     ui_out_text (uiout, "\nCatchpoint ");
7472   if (ui_out_is_mi_like_p (uiout))
7473     {
7474       ui_out_field_string (uiout, "reason",
7475                            async_reason_lookup (EXEC_ASYNC_FORK));
7476       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7477     }
7478   ui_out_field_int (uiout, "bkptno", b->number);
7479   ui_out_text (uiout, " (forked process ");
7480   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7481   ui_out_text (uiout, "), ");
7482   return PRINT_SRC_AND_LOC;
7483 }
7484
7485 /* Implement the "print_one" breakpoint_ops method for fork
7486    catchpoints.  */
7487
7488 static void
7489 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7490 {
7491   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7492   struct value_print_options opts;
7493   struct ui_out *uiout = current_uiout;
7494
7495   get_user_print_options (&opts);
7496
7497   /* Field 4, the address, is omitted (which makes the columns not
7498      line up too nicely with the headers, but the effect is relatively
7499      readable).  */
7500   if (opts.addressprint)
7501     ui_out_field_skip (uiout, "addr");
7502   annotate_field (5);
7503   ui_out_text (uiout, "fork");
7504   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7505     {
7506       ui_out_text (uiout, ", process ");
7507       ui_out_field_int (uiout, "what",
7508                         ptid_get_pid (c->forked_inferior_pid));
7509       ui_out_spaces (uiout, 1);
7510     }
7511 }
7512
7513 /* Implement the "print_mention" breakpoint_ops method for fork
7514    catchpoints.  */
7515
7516 static void
7517 print_mention_catch_fork (struct breakpoint *b)
7518 {
7519   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7520 }
7521
7522 /* Implement the "print_recreate" breakpoint_ops method for fork
7523    catchpoints.  */
7524
7525 static void
7526 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7527 {
7528   fprintf_unfiltered (fp, "catch fork");
7529   print_recreate_thread (b, fp);
7530 }
7531
7532 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7533
7534 static struct breakpoint_ops catch_fork_breakpoint_ops;
7535
7536 /* Implement the "insert" breakpoint_ops method for vfork
7537    catchpoints.  */
7538
7539 static int
7540 insert_catch_vfork (struct bp_location *bl)
7541 {
7542   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7543 }
7544
7545 /* Implement the "remove" breakpoint_ops method for vfork
7546    catchpoints.  */
7547
7548 static int
7549 remove_catch_vfork (struct bp_location *bl)
7550 {
7551   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7552 }
7553
7554 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7555    catchpoints.  */
7556
7557 static int
7558 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7559                             struct address_space *aspace, CORE_ADDR bp_addr,
7560                             const struct target_waitstatus *ws)
7561 {
7562   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7563
7564   if (ws->kind != TARGET_WAITKIND_VFORKED)
7565     return 0;
7566
7567   c->forked_inferior_pid = ws->value.related_pid;
7568   return 1;
7569 }
7570
7571 /* Implement the "print_it" breakpoint_ops method for vfork
7572    catchpoints.  */
7573
7574 static enum print_stop_action
7575 print_it_catch_vfork (bpstat bs)
7576 {
7577   struct ui_out *uiout = current_uiout;
7578   struct breakpoint *b = bs->breakpoint_at;
7579   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7580
7581   annotate_catchpoint (b->number);
7582   if (b->disposition == disp_del)
7583     ui_out_text (uiout, "\nTemporary catchpoint ");
7584   else
7585     ui_out_text (uiout, "\nCatchpoint ");
7586   if (ui_out_is_mi_like_p (uiout))
7587     {
7588       ui_out_field_string (uiout, "reason",
7589                            async_reason_lookup (EXEC_ASYNC_VFORK));
7590       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7591     }
7592   ui_out_field_int (uiout, "bkptno", b->number);
7593   ui_out_text (uiout, " (vforked process ");
7594   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7595   ui_out_text (uiout, "), ");
7596   return PRINT_SRC_AND_LOC;
7597 }
7598
7599 /* Implement the "print_one" breakpoint_ops method for vfork
7600    catchpoints.  */
7601
7602 static void
7603 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7604 {
7605   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7606   struct value_print_options opts;
7607   struct ui_out *uiout = current_uiout;
7608
7609   get_user_print_options (&opts);
7610   /* Field 4, the address, is omitted (which makes the columns not
7611      line up too nicely with the headers, but the effect is relatively
7612      readable).  */
7613   if (opts.addressprint)
7614     ui_out_field_skip (uiout, "addr");
7615   annotate_field (5);
7616   ui_out_text (uiout, "vfork");
7617   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7618     {
7619       ui_out_text (uiout, ", process ");
7620       ui_out_field_int (uiout, "what",
7621                         ptid_get_pid (c->forked_inferior_pid));
7622       ui_out_spaces (uiout, 1);
7623     }
7624 }
7625
7626 /* Implement the "print_mention" breakpoint_ops method for vfork
7627    catchpoints.  */
7628
7629 static void
7630 print_mention_catch_vfork (struct breakpoint *b)
7631 {
7632   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7633 }
7634
7635 /* Implement the "print_recreate" breakpoint_ops method for vfork
7636    catchpoints.  */
7637
7638 static void
7639 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7640 {
7641   fprintf_unfiltered (fp, "catch vfork");
7642   print_recreate_thread (b, fp);
7643 }
7644
7645 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7646
7647 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7648
7649 /* An instance of this type is used to represent an solib catchpoint.
7650    It includes a "struct breakpoint" as a kind of base class; users
7651    downcast to "struct breakpoint *" when needed.  A breakpoint is
7652    really of this type iff its ops pointer points to
7653    CATCH_SOLIB_BREAKPOINT_OPS.  */
7654
7655 struct solib_catchpoint
7656 {
7657   /* The base class.  */
7658   struct breakpoint base;
7659
7660   /* True for "catch load", false for "catch unload".  */
7661   unsigned char is_load;
7662
7663   /* Regular expression to match, if any.  COMPILED is only valid when
7664      REGEX is non-NULL.  */
7665   char *regex;
7666   regex_t compiled;
7667 };
7668
7669 static void
7670 dtor_catch_solib (struct breakpoint *b)
7671 {
7672   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7673
7674   if (self->regex)
7675     regfree (&self->compiled);
7676   xfree (self->regex);
7677
7678   base_breakpoint_ops.dtor (b);
7679 }
7680
7681 static int
7682 insert_catch_solib (struct bp_location *ignore)
7683 {
7684   return 0;
7685 }
7686
7687 static int
7688 remove_catch_solib (struct bp_location *ignore)
7689 {
7690   return 0;
7691 }
7692
7693 static int
7694 breakpoint_hit_catch_solib (const struct bp_location *bl,
7695                             struct address_space *aspace,
7696                             CORE_ADDR bp_addr,
7697                             const struct target_waitstatus *ws)
7698 {
7699   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7700   struct breakpoint *other;
7701
7702   if (ws->kind == TARGET_WAITKIND_LOADED)
7703     return 1;
7704
7705   ALL_BREAKPOINTS (other)
7706   {
7707     struct bp_location *other_bl;
7708
7709     if (other == bl->owner)
7710       continue;
7711
7712     if (other->type != bp_shlib_event)
7713       continue;
7714
7715     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7716       continue;
7717
7718     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7719       {
7720         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7721           return 1;
7722       }
7723   }
7724
7725   return 0;
7726 }
7727
7728 static void
7729 check_status_catch_solib (struct bpstats *bs)
7730 {
7731   struct solib_catchpoint *self
7732     = (struct solib_catchpoint *) bs->breakpoint_at;
7733   int ix;
7734
7735   if (self->is_load)
7736     {
7737       struct so_list *iter;
7738
7739       for (ix = 0;
7740            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7741                         ix, iter);
7742            ++ix)
7743         {
7744           if (!self->regex
7745               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7746             return;
7747         }
7748     }
7749   else
7750     {
7751       char *iter;
7752
7753       for (ix = 0;
7754            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7755                         ix, iter);
7756            ++ix)
7757         {
7758           if (!self->regex
7759               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7760             return;
7761         }
7762     }
7763
7764   bs->stop = 0;
7765   bs->print_it = print_it_noop;
7766 }
7767
7768 static enum print_stop_action
7769 print_it_catch_solib (bpstat bs)
7770 {
7771   struct breakpoint *b = bs->breakpoint_at;
7772   struct ui_out *uiout = current_uiout;
7773
7774   annotate_catchpoint (b->number);
7775   if (b->disposition == disp_del)
7776     ui_out_text (uiout, "\nTemporary catchpoint ");
7777   else
7778     ui_out_text (uiout, "\nCatchpoint ");
7779   ui_out_field_int (uiout, "bkptno", b->number);
7780   ui_out_text (uiout, "\n");
7781   if (ui_out_is_mi_like_p (uiout))
7782     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7783   print_solib_event (1);
7784   return PRINT_SRC_AND_LOC;
7785 }
7786
7787 static void
7788 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7789 {
7790   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7791   struct value_print_options opts;
7792   struct ui_out *uiout = current_uiout;
7793   char *msg;
7794
7795   get_user_print_options (&opts);
7796   /* Field 4, the address, is omitted (which makes the columns not
7797      line up too nicely with the headers, but the effect is relatively
7798      readable).  */
7799   if (opts.addressprint)
7800     {
7801       annotate_field (4);
7802       ui_out_field_skip (uiout, "addr");
7803     }
7804
7805   annotate_field (5);
7806   if (self->is_load)
7807     {
7808       if (self->regex)
7809         msg = xstrprintf (_("load of library matching %s"), self->regex);
7810       else
7811         msg = xstrdup (_("load of library"));
7812     }
7813   else
7814     {
7815       if (self->regex)
7816         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7817       else
7818         msg = xstrdup (_("unload of library"));
7819     }
7820   ui_out_field_string (uiout, "what", msg);
7821   xfree (msg);
7822 }
7823
7824 static void
7825 print_mention_catch_solib (struct breakpoint *b)
7826 {
7827   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7828
7829   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7830                    self->is_load ? "load" : "unload");
7831 }
7832
7833 static void
7834 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7835 {
7836   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7837
7838   fprintf_unfiltered (fp, "%s %s",
7839                       b->disposition == disp_del ? "tcatch" : "catch",
7840                       self->is_load ? "load" : "unload");
7841   if (self->regex)
7842     fprintf_unfiltered (fp, " %s", self->regex);
7843   fprintf_unfiltered (fp, "\n");
7844 }
7845
7846 static struct breakpoint_ops catch_solib_breakpoint_ops;
7847
7848 /* A helper function that does all the work for "catch load" and
7849    "catch unload".  */
7850
7851 static void
7852 catch_load_or_unload (char *arg, int from_tty, int is_load,
7853                       struct cmd_list_element *command)
7854 {
7855   struct solib_catchpoint *c;
7856   struct gdbarch *gdbarch = get_current_arch ();
7857   int tempflag;
7858   struct cleanup *cleanup;
7859
7860   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7861
7862   if (!arg)
7863     arg = "";
7864   arg = skip_spaces (arg);
7865
7866   c = XCNEW (struct solib_catchpoint);
7867   cleanup = make_cleanup (xfree, c);
7868
7869   if (*arg != '\0')
7870     {
7871       int errcode;
7872
7873       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7874       if (errcode != 0)
7875         {
7876           char *err = get_regcomp_error (errcode, &c->compiled);
7877
7878           make_cleanup (xfree, err);
7879           error (_("Invalid regexp (%s): %s"), err, arg);
7880         }
7881       c->regex = xstrdup (arg);
7882     }
7883
7884   c->is_load = is_load;
7885   init_catchpoint (&c->base, gdbarch, tempflag, NULL,
7886                    &catch_solib_breakpoint_ops);
7887
7888   discard_cleanups (cleanup);
7889   install_breakpoint (0, &c->base, 1);
7890 }
7891
7892 static void
7893 catch_load_command_1 (char *arg, int from_tty,
7894                       struct cmd_list_element *command)
7895 {
7896   catch_load_or_unload (arg, from_tty, 1, command);
7897 }
7898
7899 static void
7900 catch_unload_command_1 (char *arg, int from_tty,
7901                         struct cmd_list_element *command)
7902 {
7903   catch_load_or_unload (arg, from_tty, 0, command);
7904 }
7905
7906 DEF_VEC_I(int);
7907
7908 /* An instance of this type is used to represent a syscall catchpoint.
7909    It includes a "struct breakpoint" as a kind of base class; users
7910    downcast to "struct breakpoint *" when needed.  A breakpoint is
7911    really of this type iff its ops pointer points to
7912    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7913
7914 struct syscall_catchpoint
7915 {
7916   /* The base class.  */
7917   struct breakpoint base;
7918
7919   /* Syscall numbers used for the 'catch syscall' feature.  If no
7920      syscall has been specified for filtering, its value is NULL.
7921      Otherwise, it holds a list of all syscalls to be caught.  The
7922      list elements are allocated with xmalloc.  */
7923   VEC(int) *syscalls_to_be_caught;
7924 };
7925
7926 /* Implement the "dtor" breakpoint_ops method for syscall
7927    catchpoints.  */
7928
7929 static void
7930 dtor_catch_syscall (struct breakpoint *b)
7931 {
7932   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7933
7934   VEC_free (int, c->syscalls_to_be_caught);
7935
7936   base_breakpoint_ops.dtor (b);
7937 }
7938
7939 static const struct inferior_data *catch_syscall_inferior_data = NULL;
7940
7941 struct catch_syscall_inferior_data
7942 {
7943   /* We keep a count of the number of times the user has requested a
7944      particular syscall to be tracked, and pass this information to the
7945      target.  This lets capable targets implement filtering directly.  */
7946
7947   /* Number of times that "any" syscall is requested.  */
7948   int any_syscall_count;
7949
7950   /* Count of each system call.  */
7951   VEC(int) *syscalls_counts;
7952
7953   /* This counts all syscall catch requests, so we can readily determine
7954      if any catching is necessary.  */
7955   int total_syscalls_count;
7956 };
7957
7958 static struct catch_syscall_inferior_data*
7959 get_catch_syscall_inferior_data (struct inferior *inf)
7960 {
7961   struct catch_syscall_inferior_data *inf_data;
7962
7963   inf_data = inferior_data (inf, catch_syscall_inferior_data);
7964   if (inf_data == NULL)
7965     {
7966       inf_data = XZALLOC (struct catch_syscall_inferior_data);
7967       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
7968     }
7969
7970   return inf_data;
7971 }
7972
7973 static void
7974 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
7975 {
7976   xfree (arg);
7977 }
7978
7979
7980 /* Implement the "insert" breakpoint_ops method for syscall
7981    catchpoints.  */
7982
7983 static int
7984 insert_catch_syscall (struct bp_location *bl)
7985 {
7986   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7987   struct inferior *inf = current_inferior ();
7988   struct catch_syscall_inferior_data *inf_data
7989     = get_catch_syscall_inferior_data (inf);
7990
7991   ++inf_data->total_syscalls_count;
7992   if (!c->syscalls_to_be_caught)
7993     ++inf_data->any_syscall_count;
7994   else
7995     {
7996       int i, iter;
7997
7998       for (i = 0;
7999            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8000            i++)
8001         {
8002           int elem;
8003
8004           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8005             {
8006               int old_size = VEC_length (int, inf_data->syscalls_counts);
8007               uintptr_t vec_addr_offset
8008                 = old_size * ((uintptr_t) sizeof (int));
8009               uintptr_t vec_addr;
8010               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8011               vec_addr = ((uintptr_t) VEC_address (int,
8012                                                   inf_data->syscalls_counts)
8013                           + vec_addr_offset);
8014               memset ((void *) vec_addr, 0,
8015                       (iter + 1 - old_size) * sizeof (int));
8016             }
8017           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8018           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8019         }
8020     }
8021
8022   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8023                                         inf_data->total_syscalls_count != 0,
8024                                         inf_data->any_syscall_count,
8025                                         VEC_length (int,
8026                                                     inf_data->syscalls_counts),
8027                                         VEC_address (int,
8028                                                      inf_data->syscalls_counts));
8029 }
8030
8031 /* Implement the "remove" breakpoint_ops method for syscall
8032    catchpoints.  */
8033
8034 static int
8035 remove_catch_syscall (struct bp_location *bl)
8036 {
8037   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8038   struct inferior *inf = current_inferior ();
8039   struct catch_syscall_inferior_data *inf_data
8040     = get_catch_syscall_inferior_data (inf);
8041
8042   --inf_data->total_syscalls_count;
8043   if (!c->syscalls_to_be_caught)
8044     --inf_data->any_syscall_count;
8045   else
8046     {
8047       int i, iter;
8048
8049       for (i = 0;
8050            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8051            i++)
8052         {
8053           int elem;
8054           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8055             /* Shouldn't happen.  */
8056             continue;
8057           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8058           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8059         }
8060     }
8061
8062   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8063                                         inf_data->total_syscalls_count != 0,
8064                                         inf_data->any_syscall_count,
8065                                         VEC_length (int,
8066                                                     inf_data->syscalls_counts),
8067                                         VEC_address (int,
8068                                                      inf_data->syscalls_counts));
8069 }
8070
8071 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8072    catchpoints.  */
8073
8074 static int
8075 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8076                               struct address_space *aspace, CORE_ADDR bp_addr,
8077                               const struct target_waitstatus *ws)
8078 {
8079   /* We must check if we are catching specific syscalls in this
8080      breakpoint.  If we are, then we must guarantee that the called
8081      syscall is the same syscall we are catching.  */
8082   int syscall_number = 0;
8083   const struct syscall_catchpoint *c
8084     = (const struct syscall_catchpoint *) bl->owner;
8085
8086   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8087       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8088     return 0;
8089
8090   syscall_number = ws->value.syscall_number;
8091
8092   /* Now, checking if the syscall is the same.  */
8093   if (c->syscalls_to_be_caught)
8094     {
8095       int i, iter;
8096
8097       for (i = 0;
8098            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8099            i++)
8100         if (syscall_number == iter)
8101           break;
8102       /* Not the same.  */
8103       if (!iter)
8104         return 0;
8105     }
8106
8107   return 1;
8108 }
8109
8110 /* Implement the "print_it" breakpoint_ops method for syscall
8111    catchpoints.  */
8112
8113 static enum print_stop_action
8114 print_it_catch_syscall (bpstat bs)
8115 {
8116   struct ui_out *uiout = current_uiout;
8117   struct breakpoint *b = bs->breakpoint_at;
8118   /* These are needed because we want to know in which state a
8119      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8120      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8121      must print "called syscall" or "returned from syscall".  */
8122   ptid_t ptid;
8123   struct target_waitstatus last;
8124   struct syscall s;
8125
8126   get_last_target_status (&ptid, &last);
8127
8128   get_syscall_by_number (last.value.syscall_number, &s);
8129
8130   annotate_catchpoint (b->number);
8131
8132   if (b->disposition == disp_del)
8133     ui_out_text (uiout, "\nTemporary catchpoint ");
8134   else
8135     ui_out_text (uiout, "\nCatchpoint ");
8136   if (ui_out_is_mi_like_p (uiout))
8137     {
8138       ui_out_field_string (uiout, "reason",
8139                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8140                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8141                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8142       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8143     }
8144   ui_out_field_int (uiout, "bkptno", b->number);
8145
8146   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8147     ui_out_text (uiout, " (call to syscall ");
8148   else
8149     ui_out_text (uiout, " (returned from syscall ");
8150
8151   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8152     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8153   if (s.name != NULL)
8154     ui_out_field_string (uiout, "syscall-name", s.name);
8155
8156   ui_out_text (uiout, "), ");
8157
8158   return PRINT_SRC_AND_LOC;
8159 }
8160
8161 /* Implement the "print_one" breakpoint_ops method for syscall
8162    catchpoints.  */
8163
8164 static void
8165 print_one_catch_syscall (struct breakpoint *b,
8166                          struct bp_location **last_loc)
8167 {
8168   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8169   struct value_print_options opts;
8170   struct ui_out *uiout = current_uiout;
8171
8172   get_user_print_options (&opts);
8173   /* Field 4, the address, is omitted (which makes the columns not
8174      line up too nicely with the headers, but the effect is relatively
8175      readable).  */
8176   if (opts.addressprint)
8177     ui_out_field_skip (uiout, "addr");
8178   annotate_field (5);
8179
8180   if (c->syscalls_to_be_caught
8181       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8182     ui_out_text (uiout, "syscalls \"");
8183   else
8184     ui_out_text (uiout, "syscall \"");
8185
8186   if (c->syscalls_to_be_caught)
8187     {
8188       int i, iter;
8189       char *text = xstrprintf ("%s", "");
8190
8191       for (i = 0;
8192            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8193            i++)
8194         {
8195           char *x = text;
8196           struct syscall s;
8197           get_syscall_by_number (iter, &s);
8198
8199           if (s.name != NULL)
8200             text = xstrprintf ("%s%s, ", text, s.name);
8201           else
8202             text = xstrprintf ("%s%d, ", text, iter);
8203
8204           /* We have to xfree the last 'text' (now stored at 'x')
8205              because xstrprintf dynamically allocates new space for it
8206              on every call.  */
8207           xfree (x);
8208         }
8209       /* Remove the last comma.  */
8210       text[strlen (text) - 2] = '\0';
8211       ui_out_field_string (uiout, "what", text);
8212     }
8213   else
8214     ui_out_field_string (uiout, "what", "<any syscall>");
8215   ui_out_text (uiout, "\" ");
8216 }
8217
8218 /* Implement the "print_mention" breakpoint_ops method for syscall
8219    catchpoints.  */
8220
8221 static void
8222 print_mention_catch_syscall (struct breakpoint *b)
8223 {
8224   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8225
8226   if (c->syscalls_to_be_caught)
8227     {
8228       int i, iter;
8229
8230       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8231         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8232       else
8233         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8234
8235       for (i = 0;
8236            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8237            i++)
8238         {
8239           struct syscall s;
8240           get_syscall_by_number (iter, &s);
8241
8242           if (s.name)
8243             printf_filtered (" '%s' [%d]", s.name, s.number);
8244           else
8245             printf_filtered (" %d", s.number);
8246         }
8247       printf_filtered (")");
8248     }
8249   else
8250     printf_filtered (_("Catchpoint %d (any syscall)"),
8251                      b->number);
8252 }
8253
8254 /* Implement the "print_recreate" breakpoint_ops method for syscall
8255    catchpoints.  */
8256
8257 static void
8258 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8259 {
8260   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8261
8262   fprintf_unfiltered (fp, "catch syscall");
8263
8264   if (c->syscalls_to_be_caught)
8265     {
8266       int i, iter;
8267
8268       for (i = 0;
8269            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8270            i++)
8271         {
8272           struct syscall s;
8273
8274           get_syscall_by_number (iter, &s);
8275           if (s.name)
8276             fprintf_unfiltered (fp, " %s", s.name);
8277           else
8278             fprintf_unfiltered (fp, " %d", s.number);
8279         }
8280     }
8281   print_recreate_thread (b, fp);
8282 }
8283
8284 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8285
8286 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8287
8288 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8289
8290 static int
8291 syscall_catchpoint_p (struct breakpoint *b)
8292 {
8293   return (b->ops == &catch_syscall_breakpoint_ops);
8294 }
8295
8296 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8297    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8298    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8299    the breakpoint_ops structure associated to the catchpoint.  */
8300
8301 static void
8302 init_catchpoint (struct breakpoint *b,
8303                  struct gdbarch *gdbarch, int tempflag,
8304                  char *cond_string,
8305                  const struct breakpoint_ops *ops)
8306 {
8307   struct symtab_and_line sal;
8308
8309   init_sal (&sal);
8310   sal.pspace = current_program_space;
8311
8312   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8313
8314   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8315   b->disposition = tempflag ? disp_del : disp_donttouch;
8316 }
8317
8318 void
8319 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8320 {
8321   add_to_breakpoint_chain (b);
8322   set_breakpoint_number (internal, b);
8323   if (!internal)
8324     mention (b);
8325   observer_notify_breakpoint_created (b);
8326
8327   if (update_gll)
8328     update_global_location_list (1);
8329 }
8330
8331 static void
8332 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8333                                     int tempflag, char *cond_string,
8334                                     const struct breakpoint_ops *ops)
8335 {
8336   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8337
8338   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8339
8340   c->forked_inferior_pid = null_ptid;
8341
8342   install_breakpoint (0, &c->base, 1);
8343 }
8344
8345 /* Exec catchpoints.  */
8346
8347 /* An instance of this type is used to represent an exec catchpoint.
8348    It includes a "struct breakpoint" as a kind of base class; users
8349    downcast to "struct breakpoint *" when needed.  A breakpoint is
8350    really of this type iff its ops pointer points to
8351    CATCH_EXEC_BREAKPOINT_OPS.  */
8352
8353 struct exec_catchpoint
8354 {
8355   /* The base class.  */
8356   struct breakpoint base;
8357
8358   /* Filename of a program whose exec triggered this catchpoint.
8359      This field is only valid immediately after this catchpoint has
8360      triggered.  */
8361   char *exec_pathname;
8362 };
8363
8364 /* Implement the "dtor" breakpoint_ops method for exec
8365    catchpoints.  */
8366
8367 static void
8368 dtor_catch_exec (struct breakpoint *b)
8369 {
8370   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8371
8372   xfree (c->exec_pathname);
8373
8374   base_breakpoint_ops.dtor (b);
8375 }
8376
8377 static int
8378 insert_catch_exec (struct bp_location *bl)
8379 {
8380   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8381 }
8382
8383 static int
8384 remove_catch_exec (struct bp_location *bl)
8385 {
8386   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8387 }
8388
8389 static int
8390 breakpoint_hit_catch_exec (const struct bp_location *bl,
8391                            struct address_space *aspace, CORE_ADDR bp_addr,
8392                            const struct target_waitstatus *ws)
8393 {
8394   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8395
8396   if (ws->kind != TARGET_WAITKIND_EXECD)
8397     return 0;
8398
8399   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8400   return 1;
8401 }
8402
8403 static enum print_stop_action
8404 print_it_catch_exec (bpstat bs)
8405 {
8406   struct ui_out *uiout = current_uiout;
8407   struct breakpoint *b = bs->breakpoint_at;
8408   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8409
8410   annotate_catchpoint (b->number);
8411   if (b->disposition == disp_del)
8412     ui_out_text (uiout, "\nTemporary catchpoint ");
8413   else
8414     ui_out_text (uiout, "\nCatchpoint ");
8415   if (ui_out_is_mi_like_p (uiout))
8416     {
8417       ui_out_field_string (uiout, "reason",
8418                            async_reason_lookup (EXEC_ASYNC_EXEC));
8419       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8420     }
8421   ui_out_field_int (uiout, "bkptno", b->number);
8422   ui_out_text (uiout, " (exec'd ");
8423   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8424   ui_out_text (uiout, "), ");
8425
8426   return PRINT_SRC_AND_LOC;
8427 }
8428
8429 static void
8430 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8431 {
8432   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8433   struct value_print_options opts;
8434   struct ui_out *uiout = current_uiout;
8435
8436   get_user_print_options (&opts);
8437
8438   /* Field 4, the address, is omitted (which makes the columns
8439      not line up too nicely with the headers, but the effect
8440      is relatively readable).  */
8441   if (opts.addressprint)
8442     ui_out_field_skip (uiout, "addr");
8443   annotate_field (5);
8444   ui_out_text (uiout, "exec");
8445   if (c->exec_pathname != NULL)
8446     {
8447       ui_out_text (uiout, ", program \"");
8448       ui_out_field_string (uiout, "what", c->exec_pathname);
8449       ui_out_text (uiout, "\" ");
8450     }
8451 }
8452
8453 static void
8454 print_mention_catch_exec (struct breakpoint *b)
8455 {
8456   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8457 }
8458
8459 /* Implement the "print_recreate" breakpoint_ops method for exec
8460    catchpoints.  */
8461
8462 static void
8463 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8464 {
8465   fprintf_unfiltered (fp, "catch exec");
8466   print_recreate_thread (b, fp);
8467 }
8468
8469 static struct breakpoint_ops catch_exec_breakpoint_ops;
8470
8471 static void
8472 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8473                                  const struct breakpoint_ops *ops)
8474 {
8475   struct syscall_catchpoint *c;
8476   struct gdbarch *gdbarch = get_current_arch ();
8477
8478   c = XNEW (struct syscall_catchpoint);
8479   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8480   c->syscalls_to_be_caught = filter;
8481
8482   install_breakpoint (0, &c->base, 1);
8483 }
8484
8485 static int
8486 hw_breakpoint_used_count (void)
8487 {
8488   int i = 0;
8489   struct breakpoint *b;
8490   struct bp_location *bl;
8491
8492   ALL_BREAKPOINTS (b)
8493   {
8494     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8495       for (bl = b->loc; bl; bl = bl->next)
8496         {
8497           /* Special types of hardware breakpoints may use more than
8498              one register.  */
8499           i += b->ops->resources_needed (bl);
8500         }
8501   }
8502
8503   return i;
8504 }
8505
8506 /* Returns the resources B would use if it were a hardware
8507    watchpoint.  */
8508
8509 static int
8510 hw_watchpoint_use_count (struct breakpoint *b)
8511 {
8512   int i = 0;
8513   struct bp_location *bl;
8514
8515   if (!breakpoint_enabled (b))
8516     return 0;
8517
8518   for (bl = b->loc; bl; bl = bl->next)
8519     {
8520       /* Special types of hardware watchpoints may use more than
8521          one register.  */
8522       i += b->ops->resources_needed (bl);
8523     }
8524
8525   return i;
8526 }
8527
8528 /* Returns the sum the used resources of all hardware watchpoints of
8529    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8530    the sum of the used resources of all hardware watchpoints of other
8531    types _not_ TYPE.  */
8532
8533 static int
8534 hw_watchpoint_used_count_others (struct breakpoint *except,
8535                                  enum bptype type, int *other_type_used)
8536 {
8537   int i = 0;
8538   struct breakpoint *b;
8539
8540   *other_type_used = 0;
8541   ALL_BREAKPOINTS (b)
8542     {
8543       if (b == except)
8544         continue;
8545       if (!breakpoint_enabled (b))
8546         continue;
8547
8548       if (b->type == type)
8549         i += hw_watchpoint_use_count (b);
8550       else if (is_hardware_watchpoint (b))
8551         *other_type_used = 1;
8552     }
8553
8554   return i;
8555 }
8556
8557 void
8558 disable_watchpoints_before_interactive_call_start (void)
8559 {
8560   struct breakpoint *b;
8561
8562   ALL_BREAKPOINTS (b)
8563   {
8564     if (is_watchpoint (b) && breakpoint_enabled (b))
8565       {
8566         b->enable_state = bp_call_disabled;
8567         update_global_location_list (0);
8568       }
8569   }
8570 }
8571
8572 void
8573 enable_watchpoints_after_interactive_call_stop (void)
8574 {
8575   struct breakpoint *b;
8576
8577   ALL_BREAKPOINTS (b)
8578   {
8579     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8580       {
8581         b->enable_state = bp_enabled;
8582         update_global_location_list (1);
8583       }
8584   }
8585 }
8586
8587 void
8588 disable_breakpoints_before_startup (void)
8589 {
8590   current_program_space->executing_startup = 1;
8591   update_global_location_list (0);
8592 }
8593
8594 void
8595 enable_breakpoints_after_startup (void)
8596 {
8597   current_program_space->executing_startup = 0;
8598   breakpoint_re_set ();
8599 }
8600
8601
8602 /* Set a breakpoint that will evaporate an end of command
8603    at address specified by SAL.
8604    Restrict it to frame FRAME if FRAME is nonzero.  */
8605
8606 struct breakpoint *
8607 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8608                           struct frame_id frame_id, enum bptype type)
8609 {
8610   struct breakpoint *b;
8611
8612   /* If FRAME_ID is valid, it should be a real frame, not an inlined
8613      one.  */
8614   gdb_assert (!frame_id_inlined_p (frame_id));
8615
8616   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8617   b->enable_state = bp_enabled;
8618   b->disposition = disp_donttouch;
8619   b->frame_id = frame_id;
8620
8621   /* If we're debugging a multi-threaded program, then we want
8622      momentary breakpoints to be active in only a single thread of
8623      control.  */
8624   if (in_thread_list (inferior_ptid))
8625     b->thread = pid_to_thread_id (inferior_ptid);
8626
8627   update_global_location_list_nothrow (1);
8628
8629   return b;
8630 }
8631
8632 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8633    The new breakpoint will have type TYPE, and use OPS as it
8634    breakpoint_ops.  */
8635
8636 static struct breakpoint *
8637 momentary_breakpoint_from_master (struct breakpoint *orig,
8638                                   enum bptype type,
8639                                   const struct breakpoint_ops *ops)
8640 {
8641   struct breakpoint *copy;
8642
8643   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8644   copy->loc = allocate_bp_location (copy);
8645   set_breakpoint_location_function (copy->loc, 1);
8646
8647   copy->loc->gdbarch = orig->loc->gdbarch;
8648   copy->loc->requested_address = orig->loc->requested_address;
8649   copy->loc->address = orig->loc->address;
8650   copy->loc->section = orig->loc->section;
8651   copy->loc->pspace = orig->loc->pspace;
8652   copy->loc->probe = orig->loc->probe;
8653
8654   if (orig->loc->source_file != NULL)
8655     copy->loc->source_file = xstrdup (orig->loc->source_file);
8656
8657   copy->loc->line_number = orig->loc->line_number;
8658   copy->frame_id = orig->frame_id;
8659   copy->thread = orig->thread;
8660   copy->pspace = orig->pspace;
8661
8662   copy->enable_state = bp_enabled;
8663   copy->disposition = disp_donttouch;
8664   copy->number = internal_breakpoint_number--;
8665
8666   update_global_location_list_nothrow (0);
8667   return copy;
8668 }
8669
8670 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8671    ORIG is NULL.  */
8672
8673 struct breakpoint *
8674 clone_momentary_breakpoint (struct breakpoint *orig)
8675 {
8676   /* If there's nothing to clone, then return nothing.  */
8677   if (orig == NULL)
8678     return NULL;
8679
8680   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8681 }
8682
8683 struct breakpoint *
8684 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8685                                 enum bptype type)
8686 {
8687   struct symtab_and_line sal;
8688
8689   sal = find_pc_line (pc, 0);
8690   sal.pc = pc;
8691   sal.section = find_pc_overlay (pc);
8692   sal.explicit_pc = 1;
8693
8694   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8695 }
8696 \f
8697
8698 /* Tell the user we have just set a breakpoint B.  */
8699
8700 static void
8701 mention (struct breakpoint *b)
8702 {
8703   b->ops->print_mention (b);
8704   if (ui_out_is_mi_like_p (current_uiout))
8705     return;
8706   printf_filtered ("\n");
8707 }
8708 \f
8709
8710 static struct bp_location *
8711 add_location_to_breakpoint (struct breakpoint *b,
8712                             const struct symtab_and_line *sal)
8713 {
8714   struct bp_location *loc, **tmp;
8715   CORE_ADDR adjusted_address;
8716   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8717
8718   if (loc_gdbarch == NULL)
8719     loc_gdbarch = b->gdbarch;
8720
8721   /* Adjust the breakpoint's address prior to allocating a location.
8722      Once we call allocate_bp_location(), that mostly uninitialized
8723      location will be placed on the location chain.  Adjustment of the
8724      breakpoint may cause target_read_memory() to be called and we do
8725      not want its scan of the location chain to find a breakpoint and
8726      location that's only been partially initialized.  */
8727   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8728                                                 sal->pc, b->type);
8729
8730   loc = allocate_bp_location (b);
8731   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8732     ;
8733   *tmp = loc;
8734
8735   loc->requested_address = sal->pc;
8736   loc->address = adjusted_address;
8737   loc->pspace = sal->pspace;
8738   loc->probe = sal->probe;
8739   gdb_assert (loc->pspace != NULL);
8740   loc->section = sal->section;
8741   loc->gdbarch = loc_gdbarch;
8742
8743   if (sal->symtab != NULL)
8744     loc->source_file = xstrdup (sal->symtab->filename);
8745   loc->line_number = sal->line;
8746
8747   set_breakpoint_location_function (loc,
8748                                     sal->explicit_pc || sal->explicit_line);
8749   return loc;
8750 }
8751 \f
8752
8753 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8754    return 0 otherwise.  */
8755
8756 static int
8757 bp_loc_is_permanent (struct bp_location *loc)
8758 {
8759   int len;
8760   CORE_ADDR addr;
8761   const gdb_byte *bpoint;
8762   gdb_byte *target_mem;
8763   struct cleanup *cleanup;
8764   int retval = 0;
8765
8766   gdb_assert (loc != NULL);
8767
8768   addr = loc->address;
8769   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8770
8771   /* Software breakpoints unsupported?  */
8772   if (bpoint == NULL)
8773     return 0;
8774
8775   target_mem = alloca (len);
8776
8777   /* Enable the automatic memory restoration from breakpoints while
8778      we read the memory.  Otherwise we could say about our temporary
8779      breakpoints they are permanent.  */
8780   cleanup = save_current_space_and_thread ();
8781
8782   switch_to_program_space_and_thread (loc->pspace);
8783   make_show_memory_breakpoints_cleanup (0);
8784
8785   if (target_read_memory (loc->address, target_mem, len) == 0
8786       && memcmp (target_mem, bpoint, len) == 0)
8787     retval = 1;
8788
8789   do_cleanups (cleanup);
8790
8791   return retval;
8792 }
8793
8794 /* Build a command list for the dprintf corresponding to the current
8795    settings of the dprintf style options.  */
8796
8797 static void
8798 update_dprintf_command_list (struct breakpoint *b)
8799 {
8800   char *dprintf_args = b->extra_string;
8801   char *printf_line = NULL;
8802
8803   if (!dprintf_args)
8804     return;
8805
8806   dprintf_args = skip_spaces (dprintf_args);
8807
8808   /* Allow a comma, as it may have terminated a location, but don't
8809      insist on it.  */
8810   if (*dprintf_args == ',')
8811     ++dprintf_args;
8812   dprintf_args = skip_spaces (dprintf_args);
8813
8814   if (*dprintf_args != '"')
8815     error (_("Bad format string, missing '\"'."));
8816
8817   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8818     printf_line = xstrprintf ("printf %s", dprintf_args);
8819   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8820     {
8821       if (!dprintf_function)
8822         error (_("No function supplied for dprintf call"));
8823
8824       if (dprintf_channel && strlen (dprintf_channel) > 0)
8825         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8826                                   dprintf_function,
8827                                   dprintf_channel,
8828                                   dprintf_args);
8829       else
8830         printf_line = xstrprintf ("call (void) %s (%s)",
8831                                   dprintf_function,
8832                                   dprintf_args);
8833     }
8834   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8835     {
8836       if (target_can_run_breakpoint_commands ())
8837         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8838       else
8839         {
8840           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8841           printf_line = xstrprintf ("printf %s", dprintf_args);
8842         }
8843     }
8844   else
8845     internal_error (__FILE__, __LINE__,
8846                     _("Invalid dprintf style."));
8847
8848   /* Manufacture a printf/continue sequence.  */
8849   if (printf_line)
8850     {
8851       struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8852
8853       if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8854         {
8855           cont_cmd_line = xmalloc (sizeof (struct command_line));
8856           cont_cmd_line->control_type = simple_control;
8857           cont_cmd_line->body_count = 0;
8858           cont_cmd_line->body_list = NULL;
8859           cont_cmd_line->next = NULL;
8860           cont_cmd_line->line = xstrdup ("continue");
8861         }
8862
8863       printf_cmd_line = xmalloc (sizeof (struct command_line));
8864       printf_cmd_line->control_type = simple_control;
8865       printf_cmd_line->body_count = 0;
8866       printf_cmd_line->body_list = NULL;
8867       printf_cmd_line->next = cont_cmd_line;
8868       printf_cmd_line->line = printf_line;
8869
8870       breakpoint_set_commands (b, printf_cmd_line);
8871     }
8872 }
8873
8874 /* Update all dprintf commands, making their command lists reflect
8875    current style settings.  */
8876
8877 static void
8878 update_dprintf_commands (char *args, int from_tty,
8879                          struct cmd_list_element *c)
8880 {
8881   struct breakpoint *b;
8882
8883   ALL_BREAKPOINTS (b)
8884     {
8885       if (b->type == bp_dprintf)
8886         update_dprintf_command_list (b);
8887     }
8888 }
8889
8890 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8891    as textual description of the location, and COND_STRING
8892    as condition expression.  */
8893
8894 static void
8895 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8896                      struct symtabs_and_lines sals, char *addr_string,
8897                      char *filter, char *cond_string,
8898                      char *extra_string,
8899                      enum bptype type, enum bpdisp disposition,
8900                      int thread, int task, int ignore_count,
8901                      const struct breakpoint_ops *ops, int from_tty,
8902                      int enabled, int internal, unsigned flags,
8903                      int display_canonical)
8904 {
8905   int i;
8906
8907   if (type == bp_hardware_breakpoint)
8908     {
8909       int target_resources_ok;
8910
8911       i = hw_breakpoint_used_count ();
8912       target_resources_ok =
8913         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8914                                             i + 1, 0);
8915       if (target_resources_ok == 0)
8916         error (_("No hardware breakpoint support in the target."));
8917       else if (target_resources_ok < 0)
8918         error (_("Hardware breakpoints used exceeds limit."));
8919     }
8920
8921   gdb_assert (sals.nelts > 0);
8922
8923   for (i = 0; i < sals.nelts; ++i)
8924     {
8925       struct symtab_and_line sal = sals.sals[i];
8926       struct bp_location *loc;
8927
8928       if (from_tty)
8929         {
8930           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8931           if (!loc_gdbarch)
8932             loc_gdbarch = gdbarch;
8933
8934           describe_other_breakpoints (loc_gdbarch,
8935                                       sal.pspace, sal.pc, sal.section, thread);
8936         }
8937
8938       if (i == 0)
8939         {
8940           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8941           b->thread = thread;
8942           b->task = task;
8943
8944           b->cond_string = cond_string;
8945           b->extra_string = extra_string;
8946           b->ignore_count = ignore_count;
8947           b->enable_state = enabled ? bp_enabled : bp_disabled;
8948           b->disposition = disposition;
8949
8950           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8951             b->loc->inserted = 1;
8952
8953           if (type == bp_static_tracepoint)
8954             {
8955               struct tracepoint *t = (struct tracepoint *) b;
8956               struct static_tracepoint_marker marker;
8957
8958               if (strace_marker_p (b))
8959                 {
8960                   /* We already know the marker exists, otherwise, we
8961                      wouldn't see a sal for it.  */
8962                   char *p = &addr_string[3];
8963                   char *endp;
8964                   char *marker_str;
8965
8966                   p = skip_spaces (p);
8967
8968                   endp = skip_to_space (p);
8969
8970                   marker_str = savestring (p, endp - p);
8971                   t->static_trace_marker_id = marker_str;
8972
8973                   printf_filtered (_("Probed static tracepoint "
8974                                      "marker \"%s\"\n"),
8975                                    t->static_trace_marker_id);
8976                 }
8977               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8978                 {
8979                   t->static_trace_marker_id = xstrdup (marker.str_id);
8980                   release_static_tracepoint_marker (&marker);
8981
8982                   printf_filtered (_("Probed static tracepoint "
8983                                      "marker \"%s\"\n"),
8984                                    t->static_trace_marker_id);
8985                 }
8986               else
8987                 warning (_("Couldn't determine the static "
8988                            "tracepoint marker to probe"));
8989             }
8990
8991           loc = b->loc;
8992         }
8993       else
8994         {
8995           loc = add_location_to_breakpoint (b, &sal);
8996           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8997             loc->inserted = 1;
8998         }
8999
9000       if (bp_loc_is_permanent (loc))
9001         make_breakpoint_permanent (b);
9002
9003       if (b->cond_string)
9004         {
9005           char *arg = b->cond_string;
9006           loc->cond = parse_exp_1 (&arg, loc->address,
9007                                    block_for_pc (loc->address), 0);
9008           if (*arg)
9009               error (_("Garbage '%s' follows condition"), arg);
9010         }
9011
9012       /* Dynamic printf requires and uses additional arguments on the
9013          command line, otherwise it's an error.  */
9014       if (type == bp_dprintf)
9015         {
9016           if (b->extra_string)
9017             update_dprintf_command_list (b);
9018           else
9019             error (_("Format string required"));
9020         }
9021       else if (b->extra_string)
9022         error (_("Garbage '%s' at end of command"), b->extra_string);
9023     }
9024
9025   b->display_canonical = display_canonical;
9026   if (addr_string)
9027     b->addr_string = addr_string;
9028   else
9029     /* addr_string has to be used or breakpoint_re_set will delete
9030        me.  */
9031     b->addr_string
9032       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9033   b->filter = filter;
9034 }
9035
9036 static void
9037 create_breakpoint_sal (struct gdbarch *gdbarch,
9038                        struct symtabs_and_lines sals, char *addr_string,
9039                        char *filter, char *cond_string,
9040                        char *extra_string,
9041                        enum bptype type, enum bpdisp disposition,
9042                        int thread, int task, int ignore_count,
9043                        const struct breakpoint_ops *ops, int from_tty,
9044                        int enabled, int internal, unsigned flags,
9045                        int display_canonical)
9046 {
9047   struct breakpoint *b;
9048   struct cleanup *old_chain;
9049
9050   if (is_tracepoint_type (type))
9051     {
9052       struct tracepoint *t;
9053
9054       t = XCNEW (struct tracepoint);
9055       b = &t->base;
9056     }
9057   else
9058     b = XNEW (struct breakpoint);
9059
9060   old_chain = make_cleanup (xfree, b);
9061
9062   init_breakpoint_sal (b, gdbarch,
9063                        sals, addr_string,
9064                        filter, cond_string, extra_string,
9065                        type, disposition,
9066                        thread, task, ignore_count,
9067                        ops, from_tty,
9068                        enabled, internal, flags,
9069                        display_canonical);
9070   discard_cleanups (old_chain);
9071
9072   install_breakpoint (internal, b, 0);
9073 }
9074
9075 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9076    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9077    value.  COND_STRING, if not NULL, specified the condition to be
9078    used for all breakpoints.  Essentially the only case where
9079    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9080    function.  In that case, it's still not possible to specify
9081    separate conditions for different overloaded functions, so
9082    we take just a single condition string.
9083    
9084    NOTE: If the function succeeds, the caller is expected to cleanup
9085    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9086    array contents).  If the function fails (error() is called), the
9087    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9088    COND and SALS arrays and each of those arrays contents.  */
9089
9090 static void
9091 create_breakpoints_sal (struct gdbarch *gdbarch,
9092                         struct linespec_result *canonical,
9093                         char *cond_string, char *extra_string,
9094                         enum bptype type, enum bpdisp disposition,
9095                         int thread, int task, int ignore_count,
9096                         const struct breakpoint_ops *ops, int from_tty,
9097                         int enabled, int internal, unsigned flags)
9098 {
9099   int i;
9100   struct linespec_sals *lsal;
9101
9102   if (canonical->pre_expanded)
9103     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9104
9105   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9106     {
9107       /* Note that 'addr_string' can be NULL in the case of a plain
9108          'break', without arguments.  */
9109       char *addr_string = (canonical->addr_string
9110                            ? xstrdup (canonical->addr_string)
9111                            : NULL);
9112       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9113       struct cleanup *inner = make_cleanup (xfree, addr_string);
9114
9115       make_cleanup (xfree, filter_string);
9116       create_breakpoint_sal (gdbarch, lsal->sals,
9117                              addr_string,
9118                              filter_string,
9119                              cond_string, extra_string,
9120                              type, disposition,
9121                              thread, task, ignore_count, ops,
9122                              from_tty, enabled, internal, flags,
9123                              canonical->special_display);
9124       discard_cleanups (inner);
9125     }
9126 }
9127
9128 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9129    followed by conditionals.  On return, SALS contains an array of SAL
9130    addresses found.  ADDR_STRING contains a vector of (canonical)
9131    address strings.  ADDRESS points to the end of the SAL.
9132
9133    The array and the line spec strings are allocated on the heap, it is
9134    the caller's responsibility to free them.  */
9135
9136 static void
9137 parse_breakpoint_sals (char **address,
9138                        struct linespec_result *canonical)
9139 {
9140   /* If no arg given, or if first arg is 'if ', use the default
9141      breakpoint.  */
9142   if ((*address) == NULL
9143       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9144     {
9145       /* The last displayed codepoint, if it's valid, is our default breakpoint
9146          address.  */
9147       if (last_displayed_sal_is_valid ())
9148         {
9149           struct linespec_sals lsal;
9150           struct symtab_and_line sal;
9151           CORE_ADDR pc;
9152
9153           init_sal (&sal);              /* Initialize to zeroes.  */
9154           lsal.sals.sals = (struct symtab_and_line *)
9155             xmalloc (sizeof (struct symtab_and_line));
9156
9157           /* Set sal's pspace, pc, symtab, and line to the values
9158              corresponding to the last call to print_frame_info.
9159              Be sure to reinitialize LINE with NOTCURRENT == 0
9160              as the breakpoint line number is inappropriate otherwise.
9161              find_pc_line would adjust PC, re-set it back.  */
9162           get_last_displayed_sal (&sal);
9163           pc = sal.pc;
9164           sal = find_pc_line (pc, 0);
9165
9166           /* "break" without arguments is equivalent to "break *PC"
9167              where PC is the last displayed codepoint's address.  So
9168              make sure to set sal.explicit_pc to prevent GDB from
9169              trying to expand the list of sals to include all other
9170              instances with the same symtab and line.  */
9171           sal.pc = pc;
9172           sal.explicit_pc = 1;
9173
9174           lsal.sals.sals[0] = sal;
9175           lsal.sals.nelts = 1;
9176           lsal.canonical = NULL;
9177
9178           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9179         }
9180       else
9181         error (_("No default breakpoint address now."));
9182     }
9183   else
9184     {
9185       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9186
9187       /* Force almost all breakpoints to be in terms of the
9188          current_source_symtab (which is decode_line_1's default).
9189          This should produce the results we want almost all of the
9190          time while leaving default_breakpoint_* alone.
9191
9192          ObjC: However, don't match an Objective-C method name which
9193          may have a '+' or '-' succeeded by a '['.  */
9194       if (last_displayed_sal_is_valid ()
9195           && (!cursal.symtab
9196               || ((strchr ("+-", (*address)[0]) != NULL)
9197                   && ((*address)[1] != '['))))
9198         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9199                           get_last_displayed_symtab (),
9200                           get_last_displayed_line (),
9201                           canonical, NULL, NULL);
9202       else
9203         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9204                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9205     }
9206 }
9207
9208
9209 /* Convert each SAL into a real PC.  Verify that the PC can be
9210    inserted as a breakpoint.  If it can't throw an error.  */
9211
9212 static void
9213 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9214 {    
9215   int i;
9216
9217   for (i = 0; i < sals->nelts; i++)
9218     resolve_sal_pc (&sals->sals[i]);
9219 }
9220
9221 /* Fast tracepoints may have restrictions on valid locations.  For
9222    instance, a fast tracepoint using a jump instead of a trap will
9223    likely have to overwrite more bytes than a trap would, and so can
9224    only be placed where the instruction is longer than the jump, or a
9225    multi-instruction sequence does not have a jump into the middle of
9226    it, etc.  */
9227
9228 static void
9229 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9230                             struct symtabs_and_lines *sals)
9231 {
9232   int i, rslt;
9233   struct symtab_and_line *sal;
9234   char *msg;
9235   struct cleanup *old_chain;
9236
9237   for (i = 0; i < sals->nelts; i++)
9238     {
9239       struct gdbarch *sarch;
9240
9241       sal = &sals->sals[i];
9242
9243       sarch = get_sal_arch (*sal);
9244       /* We fall back to GDBARCH if there is no architecture
9245          associated with SAL.  */
9246       if (sarch == NULL)
9247         sarch = gdbarch;
9248       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9249                                                NULL, &msg);
9250       old_chain = make_cleanup (xfree, msg);
9251
9252       if (!rslt)
9253         error (_("May not have a fast tracepoint at 0x%s%s"),
9254                paddress (sarch, sal->pc), (msg ? msg : ""));
9255
9256       do_cleanups (old_chain);
9257     }
9258 }
9259
9260 /* Issue an invalid thread ID error.  */
9261
9262 static void ATTRIBUTE_NORETURN
9263 invalid_thread_id_error (int id)
9264 {
9265   error (_("Unknown thread %d."), id);
9266 }
9267
9268 /* Given TOK, a string specification of condition and thread, as
9269    accepted by the 'break' command, extract the condition
9270    string and thread number and set *COND_STRING and *THREAD.
9271    PC identifies the context at which the condition should be parsed.
9272    If no condition is found, *COND_STRING is set to NULL.
9273    If no thread is found, *THREAD is set to -1.  */
9274
9275 static void
9276 find_condition_and_thread (char *tok, CORE_ADDR pc,
9277                            char **cond_string, int *thread, int *task,
9278                            char **rest)
9279 {
9280   *cond_string = NULL;
9281   *thread = -1;
9282   *task = 0;
9283   *rest = NULL;
9284
9285   while (tok && *tok)
9286     {
9287       char *end_tok;
9288       int toklen;
9289       char *cond_start = NULL;
9290       char *cond_end = NULL;
9291
9292       tok = skip_spaces (tok);
9293
9294       if ((*tok == '"' || *tok == ',') && rest)
9295         {
9296           *rest = savestring (tok, strlen (tok));
9297           return;
9298         }
9299
9300       end_tok = skip_to_space (tok);
9301
9302       toklen = end_tok - tok;
9303
9304       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9305         {
9306           struct expression *expr;
9307
9308           tok = cond_start = end_tok + 1;
9309           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9310           xfree (expr);
9311           cond_end = tok;
9312           *cond_string = savestring (cond_start, cond_end - cond_start);
9313         }
9314       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9315         {
9316           char *tmptok;
9317
9318           tok = end_tok + 1;
9319           tmptok = tok;
9320           *thread = strtol (tok, &tok, 0);
9321           if (tok == tmptok)
9322             error (_("Junk after thread keyword."));
9323           if (!valid_thread_id (*thread))
9324             invalid_thread_id_error (*thread);
9325         }
9326       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9327         {
9328           char *tmptok;
9329
9330           tok = end_tok + 1;
9331           tmptok = tok;
9332           *task = strtol (tok, &tok, 0);
9333           if (tok == tmptok)
9334             error (_("Junk after task keyword."));
9335           if (!valid_task_id (*task))
9336             error (_("Unknown task %d."), *task);
9337         }
9338       else if (rest)
9339         {
9340           *rest = savestring (tok, strlen (tok));
9341           return;
9342         }
9343       else
9344         error (_("Junk at end of arguments."));
9345     }
9346 }
9347
9348 /* Decode a static tracepoint marker spec.  */
9349
9350 static struct symtabs_and_lines
9351 decode_static_tracepoint_spec (char **arg_p)
9352 {
9353   VEC(static_tracepoint_marker_p) *markers = NULL;
9354   struct symtabs_and_lines sals;
9355   struct cleanup *old_chain;
9356   char *p = &(*arg_p)[3];
9357   char *endp;
9358   char *marker_str;
9359   int i;
9360
9361   p = skip_spaces (p);
9362
9363   endp = skip_to_space (p);
9364
9365   marker_str = savestring (p, endp - p);
9366   old_chain = make_cleanup (xfree, marker_str);
9367
9368   markers = target_static_tracepoint_markers_by_strid (marker_str);
9369   if (VEC_empty(static_tracepoint_marker_p, markers))
9370     error (_("No known static tracepoint marker named %s"), marker_str);
9371
9372   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9373   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9374
9375   for (i = 0; i < sals.nelts; i++)
9376     {
9377       struct static_tracepoint_marker *marker;
9378
9379       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9380
9381       init_sal (&sals.sals[i]);
9382
9383       sals.sals[i] = find_pc_line (marker->address, 0);
9384       sals.sals[i].pc = marker->address;
9385
9386       release_static_tracepoint_marker (marker);
9387     }
9388
9389   do_cleanups (old_chain);
9390
9391   *arg_p = endp;
9392   return sals;
9393 }
9394
9395 /* Set a breakpoint.  This function is shared between CLI and MI
9396    functions for setting a breakpoint.  This function has two major
9397    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9398    parameter.  If non-zero, the function will parse arg, extracting
9399    breakpoint location, address and thread.  Otherwise, ARG is just
9400    the location of breakpoint, with condition and thread specified by
9401    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9402    the breakpoint number will be allocated from the internal
9403    breakpoint count.  Returns true if any breakpoint was created;
9404    false otherwise.  */
9405
9406 int
9407 create_breakpoint (struct gdbarch *gdbarch,
9408                    char *arg, char *cond_string,
9409                    int thread, char *extra_string,
9410                    int parse_condition_and_thread,
9411                    int tempflag, enum bptype type_wanted,
9412                    int ignore_count,
9413                    enum auto_boolean pending_break_support,
9414                    const struct breakpoint_ops *ops,
9415                    int from_tty, int enabled, int internal,
9416                    unsigned flags)
9417 {
9418   volatile struct gdb_exception e;
9419   char *copy_arg = NULL;
9420   char *addr_start = arg;
9421   struct linespec_result canonical;
9422   struct cleanup *old_chain;
9423   struct cleanup *bkpt_chain = NULL;
9424   int pending = 0;
9425   int task = 0;
9426   int prev_bkpt_count = breakpoint_count;
9427
9428   gdb_assert (ops != NULL);
9429
9430   init_linespec_result (&canonical);
9431
9432   TRY_CATCH (e, RETURN_MASK_ALL)
9433     {
9434       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9435                                      addr_start, &copy_arg);
9436     }
9437
9438   /* If caller is interested in rc value from parse, set value.  */
9439   switch (e.reason)
9440     {
9441     case GDB_NO_ERROR:
9442       if (VEC_empty (linespec_sals, canonical.sals))
9443         return 0;
9444       break;
9445     case RETURN_ERROR:
9446       switch (e.error)
9447         {
9448         case NOT_FOUND_ERROR:
9449
9450           /* If pending breakpoint support is turned off, throw
9451              error.  */
9452
9453           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9454             throw_exception (e);
9455
9456           exception_print (gdb_stderr, e);
9457
9458           /* If pending breakpoint support is auto query and the user
9459              selects no, then simply return the error code.  */
9460           if (pending_break_support == AUTO_BOOLEAN_AUTO
9461               && !nquery (_("Make %s pending on future shared library load? "),
9462                           bptype_string (type_wanted)))
9463             return 0;
9464
9465           /* At this point, either the user was queried about setting
9466              a pending breakpoint and selected yes, or pending
9467              breakpoint behavior is on and thus a pending breakpoint
9468              is defaulted on behalf of the user.  */
9469           {
9470             struct linespec_sals lsal;
9471
9472             copy_arg = xstrdup (addr_start);
9473             lsal.canonical = xstrdup (copy_arg);
9474             lsal.sals.nelts = 1;
9475             lsal.sals.sals = XNEW (struct symtab_and_line);
9476             init_sal (&lsal.sals.sals[0]);
9477             pending = 1;
9478             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9479           }
9480           break;
9481         default:
9482           throw_exception (e);
9483         }
9484       break;
9485     default:
9486       throw_exception (e);
9487     }
9488
9489   /* Create a chain of things that always need to be cleaned up.  */
9490   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9491
9492   /* ----------------------------- SNIP -----------------------------
9493      Anything added to the cleanup chain beyond this point is assumed
9494      to be part of a breakpoint.  If the breakpoint create succeeds
9495      then the memory is not reclaimed.  */
9496   bkpt_chain = make_cleanup (null_cleanup, 0);
9497
9498   /* Resolve all line numbers to PC's and verify that the addresses
9499      are ok for the target.  */
9500   if (!pending)
9501     {
9502       int ix;
9503       struct linespec_sals *iter;
9504
9505       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9506         breakpoint_sals_to_pc (&iter->sals);
9507     }
9508
9509   /* Fast tracepoints may have additional restrictions on location.  */
9510   if (!pending && type_wanted == bp_fast_tracepoint)
9511     {
9512       int ix;
9513       struct linespec_sals *iter;
9514
9515       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9516         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9517     }
9518
9519   /* Verify that condition can be parsed, before setting any
9520      breakpoints.  Allocate a separate condition expression for each
9521      breakpoint.  */
9522   if (!pending)
9523     {
9524       struct linespec_sals *lsal;
9525
9526       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9527
9528       if (parse_condition_and_thread)
9529         {
9530             char *rest;
9531             /* Here we only parse 'arg' to separate condition
9532                from thread number, so parsing in context of first
9533                sal is OK.  When setting the breakpoint we'll 
9534                re-parse it in context of each sal.  */
9535
9536             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9537                                        &thread, &task, &rest);
9538             if (cond_string)
9539                 make_cleanup (xfree, cond_string);
9540             if (rest)
9541               make_cleanup (xfree, rest);
9542             if (rest)
9543               extra_string = rest;
9544         }
9545       else
9546         {
9547             /* Create a private copy of condition string.  */
9548             if (cond_string)
9549             {
9550                 cond_string = xstrdup (cond_string);
9551                 make_cleanup (xfree, cond_string);
9552             }
9553             /* Create a private copy of any extra string.  */
9554             if (extra_string)
9555               {
9556                 extra_string = xstrdup (extra_string);
9557                 make_cleanup (xfree, extra_string);
9558               }
9559         }
9560
9561       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9562                                    cond_string, extra_string, type_wanted,
9563                                    tempflag ? disp_del : disp_donttouch,
9564                                    thread, task, ignore_count, ops,
9565                                    from_tty, enabled, internal, flags);
9566     }
9567   else
9568     {
9569       struct breakpoint *b;
9570
9571       make_cleanup (xfree, copy_arg);
9572
9573       if (is_tracepoint_type (type_wanted))
9574         {
9575           struct tracepoint *t;
9576
9577           t = XCNEW (struct tracepoint);
9578           b = &t->base;
9579         }
9580       else
9581         b = XNEW (struct breakpoint);
9582
9583       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9584
9585       b->addr_string = copy_arg;
9586       if (parse_condition_and_thread)
9587         b->cond_string = NULL;
9588       else
9589         {
9590           /* Create a private copy of condition string.  */
9591           if (cond_string)
9592             {
9593               cond_string = xstrdup (cond_string);
9594               make_cleanup (xfree, cond_string);
9595             }
9596           b->cond_string = cond_string;
9597         }
9598       b->extra_string = NULL;
9599       b->ignore_count = ignore_count;
9600       b->disposition = tempflag ? disp_del : disp_donttouch;
9601       b->condition_not_parsed = 1;
9602       b->enable_state = enabled ? bp_enabled : bp_disabled;
9603       if ((type_wanted != bp_breakpoint
9604            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9605         b->pspace = current_program_space;
9606
9607       install_breakpoint (internal, b, 0);
9608     }
9609   
9610   if (VEC_length (linespec_sals, canonical.sals) > 1)
9611     {
9612       warning (_("Multiple breakpoints were set.\nUse the "
9613                  "\"delete\" command to delete unwanted breakpoints."));
9614       prev_breakpoint_count = prev_bkpt_count;
9615     }
9616
9617   /* That's it.  Discard the cleanups for data inserted into the
9618      breakpoint.  */
9619   discard_cleanups (bkpt_chain);
9620   /* But cleanup everything else.  */
9621   do_cleanups (old_chain);
9622
9623   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9624   update_global_location_list (1);
9625
9626   return 1;
9627 }
9628
9629 /* Set a breakpoint.
9630    ARG is a string describing breakpoint address,
9631    condition, and thread.
9632    FLAG specifies if a breakpoint is hardware on,
9633    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9634    and BP_TEMPFLAG.  */
9635
9636 static void
9637 break_command_1 (char *arg, int flag, int from_tty)
9638 {
9639   int tempflag = flag & BP_TEMPFLAG;
9640   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9641                              ? bp_hardware_breakpoint
9642                              : bp_breakpoint);
9643   struct breakpoint_ops *ops;
9644   const char *arg_cp = arg;
9645
9646   /* Matching breakpoints on probes.  */
9647   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9648     ops = &bkpt_probe_breakpoint_ops;
9649   else
9650     ops = &bkpt_breakpoint_ops;
9651
9652   create_breakpoint (get_current_arch (),
9653                      arg,
9654                      NULL, 0, NULL, 1 /* parse arg */,
9655                      tempflag, type_wanted,
9656                      0 /* Ignore count */,
9657                      pending_break_support,
9658                      ops,
9659                      from_tty,
9660                      1 /* enabled */,
9661                      0 /* internal */,
9662                      0);
9663 }
9664
9665 /* Helper function for break_command_1 and disassemble_command.  */
9666
9667 void
9668 resolve_sal_pc (struct symtab_and_line *sal)
9669 {
9670   CORE_ADDR pc;
9671
9672   if (sal->pc == 0 && sal->symtab != NULL)
9673     {
9674       if (!find_line_pc (sal->symtab, sal->line, &pc))
9675         error (_("No line %d in file \"%s\"."),
9676                sal->line, sal->symtab->filename);
9677       sal->pc = pc;
9678
9679       /* If this SAL corresponds to a breakpoint inserted using a line
9680          number, then skip the function prologue if necessary.  */
9681       if (sal->explicit_line)
9682         skip_prologue_sal (sal);
9683     }
9684
9685   if (sal->section == 0 && sal->symtab != NULL)
9686     {
9687       struct blockvector *bv;
9688       struct block *b;
9689       struct symbol *sym;
9690
9691       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9692       if (bv != NULL)
9693         {
9694           sym = block_linkage_function (b);
9695           if (sym != NULL)
9696             {
9697               fixup_symbol_section (sym, sal->symtab->objfile);
9698               sal->section = SYMBOL_OBJ_SECTION (sym);
9699             }
9700           else
9701             {
9702               /* It really is worthwhile to have the section, so we'll
9703                  just have to look harder. This case can be executed
9704                  if we have line numbers but no functions (as can
9705                  happen in assembly source).  */
9706
9707               struct minimal_symbol *msym;
9708               struct cleanup *old_chain = save_current_space_and_thread ();
9709
9710               switch_to_program_space_and_thread (sal->pspace);
9711
9712               msym = lookup_minimal_symbol_by_pc (sal->pc);
9713               if (msym)
9714                 sal->section = SYMBOL_OBJ_SECTION (msym);
9715
9716               do_cleanups (old_chain);
9717             }
9718         }
9719     }
9720 }
9721
9722 void
9723 break_command (char *arg, int from_tty)
9724 {
9725   break_command_1 (arg, 0, from_tty);
9726 }
9727
9728 void
9729 tbreak_command (char *arg, int from_tty)
9730 {
9731   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9732 }
9733
9734 static void
9735 hbreak_command (char *arg, int from_tty)
9736 {
9737   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9738 }
9739
9740 static void
9741 thbreak_command (char *arg, int from_tty)
9742 {
9743   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9744 }
9745
9746 static void
9747 stop_command (char *arg, int from_tty)
9748 {
9749   printf_filtered (_("Specify the type of breakpoint to set.\n\
9750 Usage: stop in <function | address>\n\
9751        stop at <line>\n"));
9752 }
9753
9754 static void
9755 stopin_command (char *arg, int from_tty)
9756 {
9757   int badInput = 0;
9758
9759   if (arg == (char *) NULL)
9760     badInput = 1;
9761   else if (*arg != '*')
9762     {
9763       char *argptr = arg;
9764       int hasColon = 0;
9765
9766       /* Look for a ':'.  If this is a line number specification, then
9767          say it is bad, otherwise, it should be an address or
9768          function/method name.  */
9769       while (*argptr && !hasColon)
9770         {
9771           hasColon = (*argptr == ':');
9772           argptr++;
9773         }
9774
9775       if (hasColon)
9776         badInput = (*argptr != ':');    /* Not a class::method */
9777       else
9778         badInput = isdigit (*arg);      /* a simple line number */
9779     }
9780
9781   if (badInput)
9782     printf_filtered (_("Usage: stop in <function | address>\n"));
9783   else
9784     break_command_1 (arg, 0, from_tty);
9785 }
9786
9787 static void
9788 stopat_command (char *arg, int from_tty)
9789 {
9790   int badInput = 0;
9791
9792   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9793     badInput = 1;
9794   else
9795     {
9796       char *argptr = arg;
9797       int hasColon = 0;
9798
9799       /* Look for a ':'.  If there is a '::' then get out, otherwise
9800          it is probably a line number.  */
9801       while (*argptr && !hasColon)
9802         {
9803           hasColon = (*argptr == ':');
9804           argptr++;
9805         }
9806
9807       if (hasColon)
9808         badInput = (*argptr == ':');    /* we have class::method */
9809       else
9810         badInput = !isdigit (*arg);     /* not a line number */
9811     }
9812
9813   if (badInput)
9814     printf_filtered (_("Usage: stop at <line>\n"));
9815   else
9816     break_command_1 (arg, 0, from_tty);
9817 }
9818
9819 void dprintf_command (char *arg, int from_tty);
9820
9821 /* The dynamic printf command is mostly like a regular breakpoint, but
9822    with a prewired command list consisting of a single output command,
9823    built from extra arguments supplied on the dprintf command
9824    line.  */
9825
9826 void
9827 dprintf_command (char *arg, int from_tty)
9828 {
9829   create_breakpoint (get_current_arch (),
9830                      arg,
9831                      NULL, 0, NULL, 1 /* parse arg */,
9832                      0, bp_dprintf,
9833                      0 /* Ignore count */,
9834                      pending_break_support,
9835                      &dprintf_breakpoint_ops,
9836                      from_tty,
9837                      1 /* enabled */,
9838                      0 /* internal */,
9839                      0);
9840 }
9841
9842 static void
9843 agent_printf_command (char *arg, int from_tty)
9844 {
9845   error (_("May only run agent-printf on the target"));
9846 }
9847
9848 /* Implement the "breakpoint_hit" breakpoint_ops method for
9849    ranged breakpoints.  */
9850
9851 static int
9852 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9853                                   struct address_space *aspace,
9854                                   CORE_ADDR bp_addr,
9855                                   const struct target_waitstatus *ws)
9856 {
9857   if (ws->kind != TARGET_WAITKIND_STOPPED
9858       || ws->value.sig != GDB_SIGNAL_TRAP)
9859     return 0;
9860
9861   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9862                                          bl->length, aspace, bp_addr);
9863 }
9864
9865 /* Implement the "resources_needed" breakpoint_ops method for
9866    ranged breakpoints.  */
9867
9868 static int
9869 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9870 {
9871   return target_ranged_break_num_registers ();
9872 }
9873
9874 /* Implement the "print_it" breakpoint_ops method for
9875    ranged breakpoints.  */
9876
9877 static enum print_stop_action
9878 print_it_ranged_breakpoint (bpstat bs)
9879 {
9880   struct breakpoint *b = bs->breakpoint_at;
9881   struct bp_location *bl = b->loc;
9882   struct ui_out *uiout = current_uiout;
9883
9884   gdb_assert (b->type == bp_hardware_breakpoint);
9885
9886   /* Ranged breakpoints have only one location.  */
9887   gdb_assert (bl && bl->next == NULL);
9888
9889   annotate_breakpoint (b->number);
9890   if (b->disposition == disp_del)
9891     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9892   else
9893     ui_out_text (uiout, "\nRanged breakpoint ");
9894   if (ui_out_is_mi_like_p (uiout))
9895     {
9896       ui_out_field_string (uiout, "reason",
9897                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9898       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9899     }
9900   ui_out_field_int (uiout, "bkptno", b->number);
9901   ui_out_text (uiout, ", ");
9902
9903   return PRINT_SRC_AND_LOC;
9904 }
9905
9906 /* Implement the "print_one" breakpoint_ops method for
9907    ranged breakpoints.  */
9908
9909 static void
9910 print_one_ranged_breakpoint (struct breakpoint *b,
9911                              struct bp_location **last_loc)
9912 {
9913   struct bp_location *bl = b->loc;
9914   struct value_print_options opts;
9915   struct ui_out *uiout = current_uiout;
9916
9917   /* Ranged breakpoints have only one location.  */
9918   gdb_assert (bl && bl->next == NULL);
9919
9920   get_user_print_options (&opts);
9921
9922   if (opts.addressprint)
9923     /* We don't print the address range here, it will be printed later
9924        by print_one_detail_ranged_breakpoint.  */
9925     ui_out_field_skip (uiout, "addr");
9926   annotate_field (5);
9927   print_breakpoint_location (b, bl);
9928   *last_loc = bl;
9929 }
9930
9931 /* Implement the "print_one_detail" breakpoint_ops method for
9932    ranged breakpoints.  */
9933
9934 static void
9935 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9936                                     struct ui_out *uiout)
9937 {
9938   CORE_ADDR address_start, address_end;
9939   struct bp_location *bl = b->loc;
9940   struct ui_file *stb = mem_fileopen ();
9941   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
9942
9943   gdb_assert (bl);
9944
9945   address_start = bl->address;
9946   address_end = address_start + bl->length - 1;
9947
9948   ui_out_text (uiout, "\taddress range: ");
9949   fprintf_unfiltered (stb, "[%s, %s]",
9950                       print_core_address (bl->gdbarch, address_start),
9951                       print_core_address (bl->gdbarch, address_end));
9952   ui_out_field_stream (uiout, "addr", stb);
9953   ui_out_text (uiout, "\n");
9954
9955   do_cleanups (cleanup);
9956 }
9957
9958 /* Implement the "print_mention" breakpoint_ops method for
9959    ranged breakpoints.  */
9960
9961 static void
9962 print_mention_ranged_breakpoint (struct breakpoint *b)
9963 {
9964   struct bp_location *bl = b->loc;
9965   struct ui_out *uiout = current_uiout;
9966
9967   gdb_assert (bl);
9968   gdb_assert (b->type == bp_hardware_breakpoint);
9969
9970   if (ui_out_is_mi_like_p (uiout))
9971     return;
9972
9973   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9974                    b->number, paddress (bl->gdbarch, bl->address),
9975                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9976 }
9977
9978 /* Implement the "print_recreate" breakpoint_ops method for
9979    ranged breakpoints.  */
9980
9981 static void
9982 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9983 {
9984   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9985                       b->addr_string_range_end);
9986   print_recreate_thread (b, fp);
9987 }
9988
9989 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9990
9991 static struct breakpoint_ops ranged_breakpoint_ops;
9992
9993 /* Find the address where the end of the breakpoint range should be
9994    placed, given the SAL of the end of the range.  This is so that if
9995    the user provides a line number, the end of the range is set to the
9996    last instruction of the given line.  */
9997
9998 static CORE_ADDR
9999 find_breakpoint_range_end (struct symtab_and_line sal)
10000 {
10001   CORE_ADDR end;
10002
10003   /* If the user provided a PC value, use it.  Otherwise,
10004      find the address of the end of the given location.  */
10005   if (sal.explicit_pc)
10006     end = sal.pc;
10007   else
10008     {
10009       int ret;
10010       CORE_ADDR start;
10011
10012       ret = find_line_pc_range (sal, &start, &end);
10013       if (!ret)
10014         error (_("Could not find location of the end of the range."));
10015
10016       /* find_line_pc_range returns the start of the next line.  */
10017       end--;
10018     }
10019
10020   return end;
10021 }
10022
10023 /* Implement the "break-range" CLI command.  */
10024
10025 static void
10026 break_range_command (char *arg, int from_tty)
10027 {
10028   char *arg_start, *addr_string_start, *addr_string_end;
10029   struct linespec_result canonical_start, canonical_end;
10030   int bp_count, can_use_bp, length;
10031   CORE_ADDR end;
10032   struct breakpoint *b;
10033   struct symtab_and_line sal_start, sal_end;
10034   struct cleanup *cleanup_bkpt;
10035   struct linespec_sals *lsal_start, *lsal_end;
10036
10037   /* We don't support software ranged breakpoints.  */
10038   if (target_ranged_break_num_registers () < 0)
10039     error (_("This target does not support hardware ranged breakpoints."));
10040
10041   bp_count = hw_breakpoint_used_count ();
10042   bp_count += target_ranged_break_num_registers ();
10043   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10044                                                    bp_count, 0);
10045   if (can_use_bp < 0)
10046     error (_("Hardware breakpoints used exceeds limit."));
10047
10048   arg = skip_spaces (arg);
10049   if (arg == NULL || arg[0] == '\0')
10050     error(_("No address range specified."));
10051
10052   init_linespec_result (&canonical_start);
10053
10054   arg_start = arg;
10055   parse_breakpoint_sals (&arg, &canonical_start);
10056
10057   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10058
10059   if (arg[0] != ',')
10060     error (_("Too few arguments."));
10061   else if (VEC_empty (linespec_sals, canonical_start.sals))
10062     error (_("Could not find location of the beginning of the range."));
10063
10064   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10065
10066   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10067       || lsal_start->sals.nelts != 1)
10068     error (_("Cannot create a ranged breakpoint with multiple locations."));
10069
10070   sal_start = lsal_start->sals.sals[0];
10071   addr_string_start = savestring (arg_start, arg - arg_start);
10072   make_cleanup (xfree, addr_string_start);
10073
10074   arg++;        /* Skip the comma.  */
10075   arg = skip_spaces (arg);
10076
10077   /* Parse the end location.  */
10078
10079   init_linespec_result (&canonical_end);
10080   arg_start = arg;
10081
10082   /* We call decode_line_full directly here instead of using
10083      parse_breakpoint_sals because we need to specify the start location's
10084      symtab and line as the default symtab and line for the end of the
10085      range.  This makes it possible to have ranges like "foo.c:27, +14",
10086      where +14 means 14 lines from the start location.  */
10087   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10088                     sal_start.symtab, sal_start.line,
10089                     &canonical_end, NULL, NULL);
10090
10091   make_cleanup_destroy_linespec_result (&canonical_end);
10092
10093   if (VEC_empty (linespec_sals, canonical_end.sals))
10094     error (_("Could not find location of the end of the range."));
10095
10096   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10097   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10098       || lsal_end->sals.nelts != 1)
10099     error (_("Cannot create a ranged breakpoint with multiple locations."));
10100
10101   sal_end = lsal_end->sals.sals[0];
10102   addr_string_end = savestring (arg_start, arg - arg_start);
10103   make_cleanup (xfree, addr_string_end);
10104
10105   end = find_breakpoint_range_end (sal_end);
10106   if (sal_start.pc > end)
10107     error (_("Invalid address range, end precedes start."));
10108
10109   length = end - sal_start.pc + 1;
10110   if (length < 0)
10111     /* Length overflowed.  */
10112     error (_("Address range too large."));
10113   else if (length == 1)
10114     {
10115       /* This range is simple enough to be handled by
10116          the `hbreak' command.  */
10117       hbreak_command (addr_string_start, 1);
10118
10119       do_cleanups (cleanup_bkpt);
10120
10121       return;
10122     }
10123
10124   /* Now set up the breakpoint.  */
10125   b = set_raw_breakpoint (get_current_arch (), sal_start,
10126                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10127   set_breakpoint_count (breakpoint_count + 1);
10128   b->number = breakpoint_count;
10129   b->disposition = disp_donttouch;
10130   b->addr_string = xstrdup (addr_string_start);
10131   b->addr_string_range_end = xstrdup (addr_string_end);
10132   b->loc->length = length;
10133
10134   do_cleanups (cleanup_bkpt);
10135
10136   mention (b);
10137   observer_notify_breakpoint_created (b);
10138   update_global_location_list (1);
10139 }
10140
10141 /*  Return non-zero if EXP is verified as constant.  Returned zero
10142     means EXP is variable.  Also the constant detection may fail for
10143     some constant expressions and in such case still falsely return
10144     zero.  */
10145
10146 static int
10147 watchpoint_exp_is_const (const struct expression *exp)
10148 {
10149   int i = exp->nelts;
10150
10151   while (i > 0)
10152     {
10153       int oplenp, argsp;
10154
10155       /* We are only interested in the descriptor of each element.  */
10156       operator_length (exp, i, &oplenp, &argsp);
10157       i -= oplenp;
10158
10159       switch (exp->elts[i].opcode)
10160         {
10161         case BINOP_ADD:
10162         case BINOP_SUB:
10163         case BINOP_MUL:
10164         case BINOP_DIV:
10165         case BINOP_REM:
10166         case BINOP_MOD:
10167         case BINOP_LSH:
10168         case BINOP_RSH:
10169         case BINOP_LOGICAL_AND:
10170         case BINOP_LOGICAL_OR:
10171         case BINOP_BITWISE_AND:
10172         case BINOP_BITWISE_IOR:
10173         case BINOP_BITWISE_XOR:
10174         case BINOP_EQUAL:
10175         case BINOP_NOTEQUAL:
10176         case BINOP_LESS:
10177         case BINOP_GTR:
10178         case BINOP_LEQ:
10179         case BINOP_GEQ:
10180         case BINOP_REPEAT:
10181         case BINOP_COMMA:
10182         case BINOP_EXP:
10183         case BINOP_MIN:
10184         case BINOP_MAX:
10185         case BINOP_INTDIV:
10186         case BINOP_CONCAT:
10187         case BINOP_IN:
10188         case BINOP_RANGE:
10189         case TERNOP_COND:
10190         case TERNOP_SLICE:
10191
10192         case OP_LONG:
10193         case OP_DOUBLE:
10194         case OP_DECFLOAT:
10195         case OP_LAST:
10196         case OP_COMPLEX:
10197         case OP_STRING:
10198         case OP_ARRAY:
10199         case OP_TYPE:
10200         case OP_TYPEOF:
10201         case OP_DECLTYPE:
10202         case OP_NAME:
10203         case OP_OBJC_NSSTRING:
10204
10205         case UNOP_NEG:
10206         case UNOP_LOGICAL_NOT:
10207         case UNOP_COMPLEMENT:
10208         case UNOP_ADDR:
10209         case UNOP_HIGH:
10210         case UNOP_CAST:
10211
10212         case UNOP_CAST_TYPE:
10213         case UNOP_REINTERPRET_CAST:
10214         case UNOP_DYNAMIC_CAST:
10215           /* Unary, binary and ternary operators: We have to check
10216              their operands.  If they are constant, then so is the
10217              result of that operation.  For instance, if A and B are
10218              determined to be constants, then so is "A + B".
10219
10220              UNOP_IND is one exception to the rule above, because the
10221              value of *ADDR is not necessarily a constant, even when
10222              ADDR is.  */
10223           break;
10224
10225         case OP_VAR_VALUE:
10226           /* Check whether the associated symbol is a constant.
10227
10228              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10229              possible that a buggy compiler could mark a variable as
10230              constant even when it is not, and TYPE_CONST would return
10231              true in this case, while SYMBOL_CLASS wouldn't.
10232
10233              We also have to check for function symbols because they
10234              are always constant.  */
10235           {
10236             struct symbol *s = exp->elts[i + 2].symbol;
10237
10238             if (SYMBOL_CLASS (s) != LOC_BLOCK
10239                 && SYMBOL_CLASS (s) != LOC_CONST
10240                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10241               return 0;
10242             break;
10243           }
10244
10245         /* The default action is to return 0 because we are using
10246            the optimistic approach here: If we don't know something,
10247            then it is not a constant.  */
10248         default:
10249           return 0;
10250         }
10251     }
10252
10253   return 1;
10254 }
10255
10256 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10257
10258 static void
10259 dtor_watchpoint (struct breakpoint *self)
10260 {
10261   struct watchpoint *w = (struct watchpoint *) self;
10262
10263   xfree (w->cond_exp);
10264   xfree (w->exp);
10265   xfree (w->exp_string);
10266   xfree (w->exp_string_reparse);
10267   value_free (w->val);
10268
10269   base_breakpoint_ops.dtor (self);
10270 }
10271
10272 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10273
10274 static void
10275 re_set_watchpoint (struct breakpoint *b)
10276 {
10277   struct watchpoint *w = (struct watchpoint *) b;
10278
10279   /* Watchpoint can be either on expression using entirely global
10280      variables, or it can be on local variables.
10281
10282      Watchpoints of the first kind are never auto-deleted, and even
10283      persist across program restarts.  Since they can use variables
10284      from shared libraries, we need to reparse expression as libraries
10285      are loaded and unloaded.
10286
10287      Watchpoints on local variables can also change meaning as result
10288      of solib event.  For example, if a watchpoint uses both a local
10289      and a global variables in expression, it's a local watchpoint,
10290      but unloading of a shared library will make the expression
10291      invalid.  This is not a very common use case, but we still
10292      re-evaluate expression, to avoid surprises to the user.
10293
10294      Note that for local watchpoints, we re-evaluate it only if
10295      watchpoints frame id is still valid.  If it's not, it means the
10296      watchpoint is out of scope and will be deleted soon.  In fact,
10297      I'm not sure we'll ever be called in this case.
10298
10299      If a local watchpoint's frame id is still valid, then
10300      w->exp_valid_block is likewise valid, and we can safely use it.
10301
10302      Don't do anything about disabled watchpoints, since they will be
10303      reevaluated again when enabled.  */
10304   update_watchpoint (w, 1 /* reparse */);
10305 }
10306
10307 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10308
10309 static int
10310 insert_watchpoint (struct bp_location *bl)
10311 {
10312   struct watchpoint *w = (struct watchpoint *) bl->owner;
10313   int length = w->exact ? 1 : bl->length;
10314
10315   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10316                                    w->cond_exp);
10317 }
10318
10319 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10320
10321 static int
10322 remove_watchpoint (struct bp_location *bl)
10323 {
10324   struct watchpoint *w = (struct watchpoint *) bl->owner;
10325   int length = w->exact ? 1 : bl->length;
10326
10327   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10328                                    w->cond_exp);
10329 }
10330
10331 static int
10332 breakpoint_hit_watchpoint (const struct bp_location *bl,
10333                            struct address_space *aspace, CORE_ADDR bp_addr,
10334                            const struct target_waitstatus *ws)
10335 {
10336   struct breakpoint *b = bl->owner;
10337   struct watchpoint *w = (struct watchpoint *) b;
10338
10339   /* Continuable hardware watchpoints are treated as non-existent if the
10340      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10341      some data address).  Otherwise gdb won't stop on a break instruction
10342      in the code (not from a breakpoint) when a hardware watchpoint has
10343      been defined.  Also skip watchpoints which we know did not trigger
10344      (did not match the data address).  */
10345   if (is_hardware_watchpoint (b)
10346       && w->watchpoint_triggered == watch_triggered_no)
10347     return 0;
10348
10349   return 1;
10350 }
10351
10352 static void
10353 check_status_watchpoint (bpstat bs)
10354 {
10355   gdb_assert (is_watchpoint (bs->breakpoint_at));
10356
10357   bpstat_check_watchpoint (bs);
10358 }
10359
10360 /* Implement the "resources_needed" breakpoint_ops method for
10361    hardware watchpoints.  */
10362
10363 static int
10364 resources_needed_watchpoint (const struct bp_location *bl)
10365 {
10366   struct watchpoint *w = (struct watchpoint *) bl->owner;
10367   int length = w->exact? 1 : bl->length;
10368
10369   return target_region_ok_for_hw_watchpoint (bl->address, length);
10370 }
10371
10372 /* Implement the "works_in_software_mode" breakpoint_ops method for
10373    hardware watchpoints.  */
10374
10375 static int
10376 works_in_software_mode_watchpoint (const struct breakpoint *b)
10377 {
10378   /* Read and access watchpoints only work with hardware support.  */
10379   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10380 }
10381
10382 static enum print_stop_action
10383 print_it_watchpoint (bpstat bs)
10384 {
10385   struct cleanup *old_chain;
10386   struct breakpoint *b;
10387   const struct bp_location *bl;
10388   struct ui_file *stb;
10389   enum print_stop_action result;
10390   struct watchpoint *w;
10391   struct ui_out *uiout = current_uiout;
10392
10393   gdb_assert (bs->bp_location_at != NULL);
10394
10395   bl = bs->bp_location_at;
10396   b = bs->breakpoint_at;
10397   w = (struct watchpoint *) b;
10398
10399   stb = mem_fileopen ();
10400   old_chain = make_cleanup_ui_file_delete (stb);
10401
10402   switch (b->type)
10403     {
10404     case bp_watchpoint:
10405     case bp_hardware_watchpoint:
10406       annotate_watchpoint (b->number);
10407       if (ui_out_is_mi_like_p (uiout))
10408         ui_out_field_string
10409           (uiout, "reason",
10410            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10411       mention (b);
10412       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10413       ui_out_text (uiout, "\nOld value = ");
10414       watchpoint_value_print (bs->old_val, stb);
10415       ui_out_field_stream (uiout, "old", stb);
10416       ui_out_text (uiout, "\nNew value = ");
10417       watchpoint_value_print (w->val, stb);
10418       ui_out_field_stream (uiout, "new", stb);
10419       ui_out_text (uiout, "\n");
10420       /* More than one watchpoint may have been triggered.  */
10421       result = PRINT_UNKNOWN;
10422       break;
10423
10424     case bp_read_watchpoint:
10425       if (ui_out_is_mi_like_p (uiout))
10426         ui_out_field_string
10427           (uiout, "reason",
10428            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10429       mention (b);
10430       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10431       ui_out_text (uiout, "\nValue = ");
10432       watchpoint_value_print (w->val, stb);
10433       ui_out_field_stream (uiout, "value", stb);
10434       ui_out_text (uiout, "\n");
10435       result = PRINT_UNKNOWN;
10436       break;
10437
10438     case bp_access_watchpoint:
10439       if (bs->old_val != NULL)
10440         {
10441           annotate_watchpoint (b->number);
10442           if (ui_out_is_mi_like_p (uiout))
10443             ui_out_field_string
10444               (uiout, "reason",
10445                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10446           mention (b);
10447           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10448           ui_out_text (uiout, "\nOld value = ");
10449           watchpoint_value_print (bs->old_val, stb);
10450           ui_out_field_stream (uiout, "old", stb);
10451           ui_out_text (uiout, "\nNew value = ");
10452         }
10453       else
10454         {
10455           mention (b);
10456           if (ui_out_is_mi_like_p (uiout))
10457             ui_out_field_string
10458               (uiout, "reason",
10459                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10460           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10461           ui_out_text (uiout, "\nValue = ");
10462         }
10463       watchpoint_value_print (w->val, stb);
10464       ui_out_field_stream (uiout, "new", stb);
10465       ui_out_text (uiout, "\n");
10466       result = PRINT_UNKNOWN;
10467       break;
10468     default:
10469       result = PRINT_UNKNOWN;
10470     }
10471
10472   do_cleanups (old_chain);
10473   return result;
10474 }
10475
10476 /* Implement the "print_mention" breakpoint_ops method for hardware
10477    watchpoints.  */
10478
10479 static void
10480 print_mention_watchpoint (struct breakpoint *b)
10481 {
10482   struct cleanup *ui_out_chain;
10483   struct watchpoint *w = (struct watchpoint *) b;
10484   struct ui_out *uiout = current_uiout;
10485
10486   switch (b->type)
10487     {
10488     case bp_watchpoint:
10489       ui_out_text (uiout, "Watchpoint ");
10490       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10491       break;
10492     case bp_hardware_watchpoint:
10493       ui_out_text (uiout, "Hardware watchpoint ");
10494       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10495       break;
10496     case bp_read_watchpoint:
10497       ui_out_text (uiout, "Hardware read watchpoint ");
10498       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10499       break;
10500     case bp_access_watchpoint:
10501       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10502       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10503       break;
10504     default:
10505       internal_error (__FILE__, __LINE__,
10506                       _("Invalid hardware watchpoint type."));
10507     }
10508
10509   ui_out_field_int (uiout, "number", b->number);
10510   ui_out_text (uiout, ": ");
10511   ui_out_field_string (uiout, "exp", w->exp_string);
10512   do_cleanups (ui_out_chain);
10513 }
10514
10515 /* Implement the "print_recreate" breakpoint_ops method for
10516    watchpoints.  */
10517
10518 static void
10519 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10520 {
10521   struct watchpoint *w = (struct watchpoint *) b;
10522
10523   switch (b->type)
10524     {
10525     case bp_watchpoint:
10526     case bp_hardware_watchpoint:
10527       fprintf_unfiltered (fp, "watch");
10528       break;
10529     case bp_read_watchpoint:
10530       fprintf_unfiltered (fp, "rwatch");
10531       break;
10532     case bp_access_watchpoint:
10533       fprintf_unfiltered (fp, "awatch");
10534       break;
10535     default:
10536       internal_error (__FILE__, __LINE__,
10537                       _("Invalid watchpoint type."));
10538     }
10539
10540   fprintf_unfiltered (fp, " %s", w->exp_string);
10541   print_recreate_thread (b, fp);
10542 }
10543
10544 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10545
10546 static struct breakpoint_ops watchpoint_breakpoint_ops;
10547
10548 /* Implement the "insert" breakpoint_ops method for
10549    masked hardware watchpoints.  */
10550
10551 static int
10552 insert_masked_watchpoint (struct bp_location *bl)
10553 {
10554   struct watchpoint *w = (struct watchpoint *) bl->owner;
10555
10556   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10557                                         bl->watchpoint_type);
10558 }
10559
10560 /* Implement the "remove" breakpoint_ops method for
10561    masked hardware watchpoints.  */
10562
10563 static int
10564 remove_masked_watchpoint (struct bp_location *bl)
10565 {
10566   struct watchpoint *w = (struct watchpoint *) bl->owner;
10567
10568   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10569                                         bl->watchpoint_type);
10570 }
10571
10572 /* Implement the "resources_needed" breakpoint_ops method for
10573    masked hardware watchpoints.  */
10574
10575 static int
10576 resources_needed_masked_watchpoint (const struct bp_location *bl)
10577 {
10578   struct watchpoint *w = (struct watchpoint *) bl->owner;
10579
10580   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10581 }
10582
10583 /* Implement the "works_in_software_mode" breakpoint_ops method for
10584    masked hardware watchpoints.  */
10585
10586 static int
10587 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10588 {
10589   return 0;
10590 }
10591
10592 /* Implement the "print_it" breakpoint_ops method for
10593    masked hardware watchpoints.  */
10594
10595 static enum print_stop_action
10596 print_it_masked_watchpoint (bpstat bs)
10597 {
10598   struct breakpoint *b = bs->breakpoint_at;
10599   struct ui_out *uiout = current_uiout;
10600
10601   /* Masked watchpoints have only one location.  */
10602   gdb_assert (b->loc && b->loc->next == NULL);
10603
10604   switch (b->type)
10605     {
10606     case bp_hardware_watchpoint:
10607       annotate_watchpoint (b->number);
10608       if (ui_out_is_mi_like_p (uiout))
10609         ui_out_field_string
10610           (uiout, "reason",
10611            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10612       break;
10613
10614     case bp_read_watchpoint:
10615       if (ui_out_is_mi_like_p (uiout))
10616         ui_out_field_string
10617           (uiout, "reason",
10618            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10619       break;
10620
10621     case bp_access_watchpoint:
10622       if (ui_out_is_mi_like_p (uiout))
10623         ui_out_field_string
10624           (uiout, "reason",
10625            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10626       break;
10627     default:
10628       internal_error (__FILE__, __LINE__,
10629                       _("Invalid hardware watchpoint type."));
10630     }
10631
10632   mention (b);
10633   ui_out_text (uiout, _("\n\
10634 Check the underlying instruction at PC for the memory\n\
10635 address and value which triggered this watchpoint.\n"));
10636   ui_out_text (uiout, "\n");
10637
10638   /* More than one watchpoint may have been triggered.  */
10639   return PRINT_UNKNOWN;
10640 }
10641
10642 /* Implement the "print_one_detail" breakpoint_ops method for
10643    masked hardware watchpoints.  */
10644
10645 static void
10646 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10647                                     struct ui_out *uiout)
10648 {
10649   struct watchpoint *w = (struct watchpoint *) b;
10650
10651   /* Masked watchpoints have only one location.  */
10652   gdb_assert (b->loc && b->loc->next == NULL);
10653
10654   ui_out_text (uiout, "\tmask ");
10655   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10656   ui_out_text (uiout, "\n");
10657 }
10658
10659 /* Implement the "print_mention" breakpoint_ops method for
10660    masked hardware watchpoints.  */
10661
10662 static void
10663 print_mention_masked_watchpoint (struct breakpoint *b)
10664 {
10665   struct watchpoint *w = (struct watchpoint *) b;
10666   struct ui_out *uiout = current_uiout;
10667   struct cleanup *ui_out_chain;
10668
10669   switch (b->type)
10670     {
10671     case bp_hardware_watchpoint:
10672       ui_out_text (uiout, "Masked hardware watchpoint ");
10673       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10674       break;
10675     case bp_read_watchpoint:
10676       ui_out_text (uiout, "Masked hardware read watchpoint ");
10677       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10678       break;
10679     case bp_access_watchpoint:
10680       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10681       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10682       break;
10683     default:
10684       internal_error (__FILE__, __LINE__,
10685                       _("Invalid hardware watchpoint type."));
10686     }
10687
10688   ui_out_field_int (uiout, "number", b->number);
10689   ui_out_text (uiout, ": ");
10690   ui_out_field_string (uiout, "exp", w->exp_string);
10691   do_cleanups (ui_out_chain);
10692 }
10693
10694 /* Implement the "print_recreate" breakpoint_ops method for
10695    masked hardware watchpoints.  */
10696
10697 static void
10698 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10699 {
10700   struct watchpoint *w = (struct watchpoint *) b;
10701   char tmp[40];
10702
10703   switch (b->type)
10704     {
10705     case bp_hardware_watchpoint:
10706       fprintf_unfiltered (fp, "watch");
10707       break;
10708     case bp_read_watchpoint:
10709       fprintf_unfiltered (fp, "rwatch");
10710       break;
10711     case bp_access_watchpoint:
10712       fprintf_unfiltered (fp, "awatch");
10713       break;
10714     default:
10715       internal_error (__FILE__, __LINE__,
10716                       _("Invalid hardware watchpoint type."));
10717     }
10718
10719   sprintf_vma (tmp, w->hw_wp_mask);
10720   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10721   print_recreate_thread (b, fp);
10722 }
10723
10724 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10725
10726 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10727
10728 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10729
10730 static int
10731 is_masked_watchpoint (const struct breakpoint *b)
10732 {
10733   return b->ops == &masked_watchpoint_breakpoint_ops;
10734 }
10735
10736 /* accessflag:  hw_write:  watch write, 
10737                 hw_read:   watch read, 
10738                 hw_access: watch access (read or write) */
10739 static void
10740 watch_command_1 (char *arg, int accessflag, int from_tty,
10741                  int just_location, int internal)
10742 {
10743   volatile struct gdb_exception e;
10744   struct breakpoint *b, *scope_breakpoint = NULL;
10745   struct expression *exp;
10746   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10747   struct value *val, *mark, *result;
10748   struct frame_info *frame;
10749   char *exp_start = NULL;
10750   char *exp_end = NULL;
10751   char *tok, *end_tok;
10752   int toklen = -1;
10753   char *cond_start = NULL;
10754   char *cond_end = NULL;
10755   enum bptype bp_type;
10756   int thread = -1;
10757   int pc = 0;
10758   /* Flag to indicate whether we are going to use masks for
10759      the hardware watchpoint.  */
10760   int use_mask = 0;
10761   CORE_ADDR mask = 0;
10762   struct watchpoint *w;
10763
10764   /* Make sure that we actually have parameters to parse.  */
10765   if (arg != NULL && arg[0] != '\0')
10766     {
10767       char *value_start;
10768
10769       /* Look for "parameter value" pairs at the end
10770          of the arguments string.  */
10771       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10772         {
10773           /* Skip whitespace at the end of the argument list.  */
10774           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10775             tok--;
10776
10777           /* Find the beginning of the last token.
10778              This is the value of the parameter.  */
10779           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10780             tok--;
10781           value_start = tok + 1;
10782
10783           /* Skip whitespace.  */
10784           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10785             tok--;
10786
10787           end_tok = tok;
10788
10789           /* Find the beginning of the second to last token.
10790              This is the parameter itself.  */
10791           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10792             tok--;
10793           tok++;
10794           toklen = end_tok - tok + 1;
10795
10796           if (toklen == 6 && !strncmp (tok, "thread", 6))
10797             {
10798               /* At this point we've found a "thread" token, which means
10799                  the user is trying to set a watchpoint that triggers
10800                  only in a specific thread.  */
10801               char *endp;
10802
10803               if (thread != -1)
10804                 error(_("You can specify only one thread."));
10805
10806               /* Extract the thread ID from the next token.  */
10807               thread = strtol (value_start, &endp, 0);
10808
10809               /* Check if the user provided a valid numeric value for the
10810                  thread ID.  */
10811               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10812                 error (_("Invalid thread ID specification %s."), value_start);
10813
10814               /* Check if the thread actually exists.  */
10815               if (!valid_thread_id (thread))
10816                 invalid_thread_id_error (thread);
10817             }
10818           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10819             {
10820               /* We've found a "mask" token, which means the user wants to
10821                  create a hardware watchpoint that is going to have the mask
10822                  facility.  */
10823               struct value *mask_value, *mark;
10824
10825               if (use_mask)
10826                 error(_("You can specify only one mask."));
10827
10828               use_mask = just_location = 1;
10829
10830               mark = value_mark ();
10831               mask_value = parse_to_comma_and_eval (&value_start);
10832               mask = value_as_address (mask_value);
10833               value_free_to_mark (mark);
10834             }
10835           else
10836             /* We didn't recognize what we found.  We should stop here.  */
10837             break;
10838
10839           /* Truncate the string and get rid of the "parameter value" pair before
10840              the arguments string is parsed by the parse_exp_1 function.  */
10841           *tok = '\0';
10842         }
10843     }
10844
10845   /* Parse the rest of the arguments.  */
10846   innermost_block = NULL;
10847   exp_start = arg;
10848   exp = parse_exp_1 (&arg, 0, 0, 0);
10849   exp_end = arg;
10850   /* Remove trailing whitespace from the expression before saving it.
10851      This makes the eventual display of the expression string a bit
10852      prettier.  */
10853   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10854     --exp_end;
10855
10856   /* Checking if the expression is not constant.  */
10857   if (watchpoint_exp_is_const (exp))
10858     {
10859       int len;
10860
10861       len = exp_end - exp_start;
10862       while (len > 0 && isspace (exp_start[len - 1]))
10863         len--;
10864       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10865     }
10866
10867   exp_valid_block = innermost_block;
10868   mark = value_mark ();
10869   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10870
10871   if (just_location)
10872     {
10873       int ret;
10874
10875       exp_valid_block = NULL;
10876       val = value_addr (result);
10877       release_value (val);
10878       value_free_to_mark (mark);
10879
10880       if (use_mask)
10881         {
10882           ret = target_masked_watch_num_registers (value_as_address (val),
10883                                                    mask);
10884           if (ret == -1)
10885             error (_("This target does not support masked watchpoints."));
10886           else if (ret == -2)
10887             error (_("Invalid mask or memory region."));
10888         }
10889     }
10890   else if (val != NULL)
10891     release_value (val);
10892
10893   tok = skip_spaces (arg);
10894   end_tok = skip_to_space (tok);
10895
10896   toklen = end_tok - tok;
10897   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10898     {
10899       struct expression *cond;
10900
10901       innermost_block = NULL;
10902       tok = cond_start = end_tok + 1;
10903       cond = parse_exp_1 (&tok, 0, 0, 0);
10904
10905       /* The watchpoint expression may not be local, but the condition
10906          may still be.  E.g.: `watch global if local > 0'.  */
10907       cond_exp_valid_block = innermost_block;
10908
10909       xfree (cond);
10910       cond_end = tok;
10911     }
10912   if (*tok)
10913     error (_("Junk at end of command."));
10914
10915   if (accessflag == hw_read)
10916     bp_type = bp_read_watchpoint;
10917   else if (accessflag == hw_access)
10918     bp_type = bp_access_watchpoint;
10919   else
10920     bp_type = bp_hardware_watchpoint;
10921
10922   frame = block_innermost_frame (exp_valid_block);
10923
10924   /* If the expression is "local", then set up a "watchpoint scope"
10925      breakpoint at the point where we've left the scope of the watchpoint
10926      expression.  Create the scope breakpoint before the watchpoint, so
10927      that we will encounter it first in bpstat_stop_status.  */
10928   if (exp_valid_block && frame)
10929     {
10930       if (frame_id_p (frame_unwind_caller_id (frame)))
10931         {
10932           scope_breakpoint
10933             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10934                                           frame_unwind_caller_pc (frame),
10935                                           bp_watchpoint_scope,
10936                                           &momentary_breakpoint_ops);
10937
10938           scope_breakpoint->enable_state = bp_enabled;
10939
10940           /* Automatically delete the breakpoint when it hits.  */
10941           scope_breakpoint->disposition = disp_del;
10942
10943           /* Only break in the proper frame (help with recursion).  */
10944           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10945
10946           /* Set the address at which we will stop.  */
10947           scope_breakpoint->loc->gdbarch
10948             = frame_unwind_caller_arch (frame);
10949           scope_breakpoint->loc->requested_address
10950             = frame_unwind_caller_pc (frame);
10951           scope_breakpoint->loc->address
10952             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10953                                          scope_breakpoint->loc->requested_address,
10954                                          scope_breakpoint->type);
10955         }
10956     }
10957
10958   /* Now set up the breakpoint.  */
10959
10960   w = XCNEW (struct watchpoint);
10961   b = &w->base;
10962   if (use_mask)
10963     init_raw_breakpoint_without_location (b, NULL, bp_type,
10964                                           &masked_watchpoint_breakpoint_ops);
10965   else
10966     init_raw_breakpoint_without_location (b, NULL, bp_type,
10967                                           &watchpoint_breakpoint_ops);
10968   b->thread = thread;
10969   b->disposition = disp_donttouch;
10970   b->pspace = current_program_space;
10971   w->exp = exp;
10972   w->exp_valid_block = exp_valid_block;
10973   w->cond_exp_valid_block = cond_exp_valid_block;
10974   if (just_location)
10975     {
10976       struct type *t = value_type (val);
10977       CORE_ADDR addr = value_as_address (val);
10978       char *name;
10979
10980       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10981       name = type_to_string (t);
10982
10983       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10984                                           core_addr_to_string (addr));
10985       xfree (name);
10986
10987       w->exp_string = xstrprintf ("-location %.*s",
10988                                   (int) (exp_end - exp_start), exp_start);
10989
10990       /* The above expression is in C.  */
10991       b->language = language_c;
10992     }
10993   else
10994     w->exp_string = savestring (exp_start, exp_end - exp_start);
10995
10996   if (use_mask)
10997     {
10998       w->hw_wp_mask = mask;
10999     }
11000   else
11001     {
11002       w->val = val;
11003       w->val_valid = 1;
11004     }
11005
11006   if (cond_start)
11007     b->cond_string = savestring (cond_start, cond_end - cond_start);
11008   else
11009     b->cond_string = 0;
11010
11011   if (frame)
11012     {
11013       w->watchpoint_frame = get_frame_id (frame);
11014       w->watchpoint_thread = inferior_ptid;
11015     }
11016   else
11017     {
11018       w->watchpoint_frame = null_frame_id;
11019       w->watchpoint_thread = null_ptid;
11020     }
11021
11022   if (scope_breakpoint != NULL)
11023     {
11024       /* The scope breakpoint is related to the watchpoint.  We will
11025          need to act on them together.  */
11026       b->related_breakpoint = scope_breakpoint;
11027       scope_breakpoint->related_breakpoint = b;
11028     }
11029
11030   if (!just_location)
11031     value_free_to_mark (mark);
11032
11033   TRY_CATCH (e, RETURN_MASK_ALL)
11034     {
11035       /* Finally update the new watchpoint.  This creates the locations
11036          that should be inserted.  */
11037       update_watchpoint (w, 1);
11038     }
11039   if (e.reason < 0)
11040     {
11041       delete_breakpoint (b);
11042       throw_exception (e);
11043     }
11044
11045   install_breakpoint (internal, b, 1);
11046 }
11047
11048 /* Return count of debug registers needed to watch the given expression.
11049    If the watchpoint cannot be handled in hardware return zero.  */
11050
11051 static int
11052 can_use_hardware_watchpoint (struct value *v)
11053 {
11054   int found_memory_cnt = 0;
11055   struct value *head = v;
11056
11057   /* Did the user specifically forbid us to use hardware watchpoints? */
11058   if (!can_use_hw_watchpoints)
11059     return 0;
11060
11061   /* Make sure that the value of the expression depends only upon
11062      memory contents, and values computed from them within GDB.  If we
11063      find any register references or function calls, we can't use a
11064      hardware watchpoint.
11065
11066      The idea here is that evaluating an expression generates a series
11067      of values, one holding the value of every subexpression.  (The
11068      expression a*b+c has five subexpressions: a, b, a*b, c, and
11069      a*b+c.)  GDB's values hold almost enough information to establish
11070      the criteria given above --- they identify memory lvalues,
11071      register lvalues, computed values, etcetera.  So we can evaluate
11072      the expression, and then scan the chain of values that leaves
11073      behind to decide whether we can detect any possible change to the
11074      expression's final value using only hardware watchpoints.
11075
11076      However, I don't think that the values returned by inferior
11077      function calls are special in any way.  So this function may not
11078      notice that an expression involving an inferior function call
11079      can't be watched with hardware watchpoints.  FIXME.  */
11080   for (; v; v = value_next (v))
11081     {
11082       if (VALUE_LVAL (v) == lval_memory)
11083         {
11084           if (v != head && value_lazy (v))
11085             /* A lazy memory lvalue in the chain is one that GDB never
11086                needed to fetch; we either just used its address (e.g.,
11087                `a' in `a.b') or we never needed it at all (e.g., `a'
11088                in `a,b').  This doesn't apply to HEAD; if that is
11089                lazy then it was not readable, but watch it anyway.  */
11090             ;
11091           else
11092             {
11093               /* Ahh, memory we actually used!  Check if we can cover
11094                  it with hardware watchpoints.  */
11095               struct type *vtype = check_typedef (value_type (v));
11096
11097               /* We only watch structs and arrays if user asked for it
11098                  explicitly, never if they just happen to appear in a
11099                  middle of some value chain.  */
11100               if (v == head
11101                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11102                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11103                 {
11104                   CORE_ADDR vaddr = value_address (v);
11105                   int len;
11106                   int num_regs;
11107
11108                   len = (target_exact_watchpoints
11109                          && is_scalar_type_recursive (vtype))?
11110                     1 : TYPE_LENGTH (value_type (v));
11111
11112                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11113                   if (!num_regs)
11114                     return 0;
11115                   else
11116                     found_memory_cnt += num_regs;
11117                 }
11118             }
11119         }
11120       else if (VALUE_LVAL (v) != not_lval
11121                && deprecated_value_modifiable (v) == 0)
11122         return 0;       /* These are values from the history (e.g., $1).  */
11123       else if (VALUE_LVAL (v) == lval_register)
11124         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11125     }
11126
11127   /* The expression itself looks suitable for using a hardware
11128      watchpoint, but give the target machine a chance to reject it.  */
11129   return found_memory_cnt;
11130 }
11131
11132 void
11133 watch_command_wrapper (char *arg, int from_tty, int internal)
11134 {
11135   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11136 }
11137
11138 /* A helper function that looks for the "-location" argument and then
11139    calls watch_command_1.  */
11140
11141 static void
11142 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11143 {
11144   int just_location = 0;
11145
11146   if (arg
11147       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11148           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11149     {
11150       arg = skip_spaces (arg);
11151       just_location = 1;
11152     }
11153
11154   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11155 }
11156
11157 static void
11158 watch_command (char *arg, int from_tty)
11159 {
11160   watch_maybe_just_location (arg, hw_write, from_tty);
11161 }
11162
11163 void
11164 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11165 {
11166   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11167 }
11168
11169 static void
11170 rwatch_command (char *arg, int from_tty)
11171 {
11172   watch_maybe_just_location (arg, hw_read, from_tty);
11173 }
11174
11175 void
11176 awatch_command_wrapper (char *arg, int from_tty, int internal)
11177 {
11178   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11179 }
11180
11181 static void
11182 awatch_command (char *arg, int from_tty)
11183 {
11184   watch_maybe_just_location (arg, hw_access, from_tty);
11185 }
11186 \f
11187
11188 /* Helper routines for the until_command routine in infcmd.c.  Here
11189    because it uses the mechanisms of breakpoints.  */
11190
11191 struct until_break_command_continuation_args
11192 {
11193   struct breakpoint *breakpoint;
11194   struct breakpoint *breakpoint2;
11195   int thread_num;
11196 };
11197
11198 /* This function is called by fetch_inferior_event via the
11199    cmd_continuation pointer, to complete the until command.  It takes
11200    care of cleaning up the temporary breakpoints set up by the until
11201    command.  */
11202 static void
11203 until_break_command_continuation (void *arg, int err)
11204 {
11205   struct until_break_command_continuation_args *a = arg;
11206
11207   delete_breakpoint (a->breakpoint);
11208   if (a->breakpoint2)
11209     delete_breakpoint (a->breakpoint2);
11210   delete_longjmp_breakpoint (a->thread_num);
11211 }
11212
11213 void
11214 until_break_command (char *arg, int from_tty, int anywhere)
11215 {
11216   struct symtabs_and_lines sals;
11217   struct symtab_and_line sal;
11218   struct frame_info *frame;
11219   struct gdbarch *frame_gdbarch;
11220   struct frame_id stack_frame_id;
11221   struct frame_id caller_frame_id;
11222   struct breakpoint *breakpoint;
11223   struct breakpoint *breakpoint2 = NULL;
11224   struct cleanup *old_chain;
11225   int thread;
11226   struct thread_info *tp;
11227
11228   clear_proceed_status ();
11229
11230   /* Set a breakpoint where the user wants it and at return from
11231      this function.  */
11232
11233   if (last_displayed_sal_is_valid ())
11234     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11235                           get_last_displayed_symtab (),
11236                           get_last_displayed_line ());
11237   else
11238     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11239                           (struct symtab *) NULL, 0);
11240
11241   if (sals.nelts != 1)
11242     error (_("Couldn't get information on specified line."));
11243
11244   sal = sals.sals[0];
11245   xfree (sals.sals);    /* malloc'd, so freed.  */
11246
11247   if (*arg)
11248     error (_("Junk at end of arguments."));
11249
11250   resolve_sal_pc (&sal);
11251
11252   tp = inferior_thread ();
11253   thread = tp->num;
11254
11255   old_chain = make_cleanup (null_cleanup, NULL);
11256
11257   /* Note linespec handling above invalidates the frame chain.
11258      Installing a breakpoint also invalidates the frame chain (as it
11259      may need to switch threads), so do any frame handling before
11260      that.  */
11261
11262   frame = get_selected_frame (NULL);
11263   frame_gdbarch = get_frame_arch (frame);
11264   stack_frame_id = get_stack_frame_id (frame);
11265   caller_frame_id = frame_unwind_caller_id (frame);
11266
11267   /* Keep within the current frame, or in frames called by the current
11268      one.  */
11269
11270   if (frame_id_p (caller_frame_id))
11271     {
11272       struct symtab_and_line sal2;
11273
11274       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11275       sal2.pc = frame_unwind_caller_pc (frame);
11276       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11277                                               sal2,
11278                                               caller_frame_id,
11279                                               bp_until);
11280       make_cleanup_delete_breakpoint (breakpoint2);
11281
11282       set_longjmp_breakpoint (tp, caller_frame_id);
11283       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11284     }
11285
11286   /* set_momentary_breakpoint could invalidate FRAME.  */
11287   frame = NULL;
11288
11289   if (anywhere)
11290     /* If the user told us to continue until a specified location,
11291        we don't specify a frame at which we need to stop.  */
11292     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11293                                            null_frame_id, bp_until);
11294   else
11295     /* Otherwise, specify the selected frame, because we want to stop
11296        only at the very same frame.  */
11297     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11298                                            stack_frame_id, bp_until);
11299   make_cleanup_delete_breakpoint (breakpoint);
11300
11301   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11302
11303   /* If we are running asynchronously, and proceed call above has
11304      actually managed to start the target, arrange for breakpoints to
11305      be deleted when the target stops.  Otherwise, we're already
11306      stopped and delete breakpoints via cleanup chain.  */
11307
11308   if (target_can_async_p () && is_running (inferior_ptid))
11309     {
11310       struct until_break_command_continuation_args *args;
11311       args = xmalloc (sizeof (*args));
11312
11313       args->breakpoint = breakpoint;
11314       args->breakpoint2 = breakpoint2;
11315       args->thread_num = thread;
11316
11317       discard_cleanups (old_chain);
11318       add_continuation (inferior_thread (),
11319                         until_break_command_continuation, args,
11320                         xfree);
11321     }
11322   else
11323     do_cleanups (old_chain);
11324 }
11325
11326 /* This function attempts to parse an optional "if <cond>" clause
11327    from the arg string.  If one is not found, it returns NULL.
11328
11329    Else, it returns a pointer to the condition string.  (It does not
11330    attempt to evaluate the string against a particular block.)  And,
11331    it updates arg to point to the first character following the parsed
11332    if clause in the arg string.  */
11333
11334 static char *
11335 ep_parse_optional_if_clause (char **arg)
11336 {
11337   char *cond_string;
11338
11339   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11340     return NULL;
11341
11342   /* Skip the "if" keyword.  */
11343   (*arg) += 2;
11344
11345   /* Skip any extra leading whitespace, and record the start of the
11346      condition string.  */
11347   *arg = skip_spaces (*arg);
11348   cond_string = *arg;
11349
11350   /* Assume that the condition occupies the remainder of the arg
11351      string.  */
11352   (*arg) += strlen (cond_string);
11353
11354   return cond_string;
11355 }
11356
11357 /* Commands to deal with catching events, such as signals, exceptions,
11358    process start/exit, etc.  */
11359
11360 typedef enum
11361 {
11362   catch_fork_temporary, catch_vfork_temporary,
11363   catch_fork_permanent, catch_vfork_permanent
11364 }
11365 catch_fork_kind;
11366
11367 static void
11368 catch_fork_command_1 (char *arg, int from_tty, 
11369                       struct cmd_list_element *command)
11370 {
11371   struct gdbarch *gdbarch = get_current_arch ();
11372   char *cond_string = NULL;
11373   catch_fork_kind fork_kind;
11374   int tempflag;
11375
11376   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11377   tempflag = (fork_kind == catch_fork_temporary
11378               || fork_kind == catch_vfork_temporary);
11379
11380   if (!arg)
11381     arg = "";
11382   arg = skip_spaces (arg);
11383
11384   /* The allowed syntax is:
11385      catch [v]fork
11386      catch [v]fork if <cond>
11387
11388      First, check if there's an if clause.  */
11389   cond_string = ep_parse_optional_if_clause (&arg);
11390
11391   if ((*arg != '\0') && !isspace (*arg))
11392     error (_("Junk at end of arguments."));
11393
11394   /* If this target supports it, create a fork or vfork catchpoint
11395      and enable reporting of such events.  */
11396   switch (fork_kind)
11397     {
11398     case catch_fork_temporary:
11399     case catch_fork_permanent:
11400       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11401                                           &catch_fork_breakpoint_ops);
11402       break;
11403     case catch_vfork_temporary:
11404     case catch_vfork_permanent:
11405       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11406                                           &catch_vfork_breakpoint_ops);
11407       break;
11408     default:
11409       error (_("unsupported or unknown fork kind; cannot catch it"));
11410       break;
11411     }
11412 }
11413
11414 static void
11415 catch_exec_command_1 (char *arg, int from_tty, 
11416                       struct cmd_list_element *command)
11417 {
11418   struct exec_catchpoint *c;
11419   struct gdbarch *gdbarch = get_current_arch ();
11420   int tempflag;
11421   char *cond_string = NULL;
11422
11423   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11424
11425   if (!arg)
11426     arg = "";
11427   arg = skip_spaces (arg);
11428
11429   /* The allowed syntax is:
11430      catch exec
11431      catch exec if <cond>
11432
11433      First, check if there's an if clause.  */
11434   cond_string = ep_parse_optional_if_clause (&arg);
11435
11436   if ((*arg != '\0') && !isspace (*arg))
11437     error (_("Junk at end of arguments."));
11438
11439   c = XNEW (struct exec_catchpoint);
11440   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11441                    &catch_exec_breakpoint_ops);
11442   c->exec_pathname = NULL;
11443
11444   install_breakpoint (0, &c->base, 1);
11445 }
11446
11447 static enum print_stop_action
11448 print_it_exception_catchpoint (bpstat bs)
11449 {
11450   struct ui_out *uiout = current_uiout;
11451   struct breakpoint *b = bs->breakpoint_at;
11452   int bp_temp, bp_throw;
11453
11454   annotate_catchpoint (b->number);
11455
11456   bp_throw = strstr (b->addr_string, "throw") != NULL;
11457   if (b->loc->address != b->loc->requested_address)
11458     breakpoint_adjustment_warning (b->loc->requested_address,
11459                                    b->loc->address,
11460                                    b->number, 1);
11461   bp_temp = b->disposition == disp_del;
11462   ui_out_text (uiout, 
11463                bp_temp ? "Temporary catchpoint "
11464                        : "Catchpoint ");
11465   if (!ui_out_is_mi_like_p (uiout))
11466     ui_out_field_int (uiout, "bkptno", b->number);
11467   ui_out_text (uiout,
11468                bp_throw ? " (exception thrown), "
11469                         : " (exception caught), ");
11470   if (ui_out_is_mi_like_p (uiout))
11471     {
11472       ui_out_field_string (uiout, "reason", 
11473                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11474       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11475       ui_out_field_int (uiout, "bkptno", b->number);
11476     }
11477   return PRINT_SRC_AND_LOC;
11478 }
11479
11480 static void
11481 print_one_exception_catchpoint (struct breakpoint *b, 
11482                                 struct bp_location **last_loc)
11483 {
11484   struct value_print_options opts;
11485   struct ui_out *uiout = current_uiout;
11486
11487   get_user_print_options (&opts);
11488   if (opts.addressprint)
11489     {
11490       annotate_field (4);
11491       if (b->loc == NULL || b->loc->shlib_disabled)
11492         ui_out_field_string (uiout, "addr", "<PENDING>");
11493       else
11494         ui_out_field_core_addr (uiout, "addr",
11495                                 b->loc->gdbarch, b->loc->address);
11496     }
11497   annotate_field (5);
11498   if (b->loc)
11499     *last_loc = b->loc;
11500   if (strstr (b->addr_string, "throw") != NULL)
11501     ui_out_field_string (uiout, "what", "exception throw");
11502   else
11503     ui_out_field_string (uiout, "what", "exception catch");
11504 }
11505
11506 static void
11507 print_mention_exception_catchpoint (struct breakpoint *b)
11508 {
11509   struct ui_out *uiout = current_uiout;
11510   int bp_temp;
11511   int bp_throw;
11512
11513   bp_temp = b->disposition == disp_del;
11514   bp_throw = strstr (b->addr_string, "throw") != NULL;
11515   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11516                               : _("Catchpoint "));
11517   ui_out_field_int (uiout, "bkptno", b->number);
11518   ui_out_text (uiout, bp_throw ? _(" (throw)")
11519                                : _(" (catch)"));
11520 }
11521
11522 /* Implement the "print_recreate" breakpoint_ops method for throw and
11523    catch catchpoints.  */
11524
11525 static void
11526 print_recreate_exception_catchpoint (struct breakpoint *b, 
11527                                      struct ui_file *fp)
11528 {
11529   int bp_temp;
11530   int bp_throw;
11531
11532   bp_temp = b->disposition == disp_del;
11533   bp_throw = strstr (b->addr_string, "throw") != NULL;
11534   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11535   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11536   print_recreate_thread (b, fp);
11537 }
11538
11539 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11540
11541 static int
11542 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11543                           enum exception_event_kind ex_event, int from_tty)
11544 {
11545   char *trigger_func_name;
11546  
11547   if (ex_event == EX_EVENT_CATCH)
11548     trigger_func_name = "__cxa_begin_catch";
11549   else
11550     trigger_func_name = "__cxa_throw";
11551
11552   create_breakpoint (get_current_arch (),
11553                      trigger_func_name, cond_string, -1, NULL,
11554                      0 /* condition and thread are valid.  */,
11555                      tempflag, bp_breakpoint,
11556                      0,
11557                      AUTO_BOOLEAN_TRUE /* pending */,
11558                      &gnu_v3_exception_catchpoint_ops, from_tty,
11559                      1 /* enabled */,
11560                      0 /* internal */,
11561                      0);
11562
11563   return 1;
11564 }
11565
11566 /* Deal with "catch catch" and "catch throw" commands.  */
11567
11568 static void
11569 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11570                            int tempflag, int from_tty)
11571 {
11572   char *cond_string = NULL;
11573
11574   if (!arg)
11575     arg = "";
11576   arg = skip_spaces (arg);
11577
11578   cond_string = ep_parse_optional_if_clause (&arg);
11579
11580   if ((*arg != '\0') && !isspace (*arg))
11581     error (_("Junk at end of arguments."));
11582
11583   if (ex_event != EX_EVENT_THROW
11584       && ex_event != EX_EVENT_CATCH)
11585     error (_("Unsupported or unknown exception event; cannot catch it"));
11586
11587   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11588     return;
11589
11590   warning (_("Unsupported with this platform/compiler combination."));
11591 }
11592
11593 /* Implementation of "catch catch" command.  */
11594
11595 static void
11596 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11597 {
11598   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11599
11600   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11601 }
11602
11603 /* Implementation of "catch throw" command.  */
11604
11605 static void
11606 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11607 {
11608   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11609
11610   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11611 }
11612
11613 void
11614 init_ada_exception_breakpoint (struct breakpoint *b,
11615                                struct gdbarch *gdbarch,
11616                                struct symtab_and_line sal,
11617                                char *addr_string,
11618                                const struct breakpoint_ops *ops,
11619                                int tempflag,
11620                                int from_tty)
11621 {
11622   if (from_tty)
11623     {
11624       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11625       if (!loc_gdbarch)
11626         loc_gdbarch = gdbarch;
11627
11628       describe_other_breakpoints (loc_gdbarch,
11629                                   sal.pspace, sal.pc, sal.section, -1);
11630       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11631          version for exception catchpoints, because two catchpoints
11632          used for different exception names will use the same address.
11633          In this case, a "breakpoint ... also set at..." warning is
11634          unproductive.  Besides, the warning phrasing is also a bit
11635          inappropriate, we should use the word catchpoint, and tell
11636          the user what type of catchpoint it is.  The above is good
11637          enough for now, though.  */
11638     }
11639
11640   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11641
11642   b->enable_state = bp_enabled;
11643   b->disposition = tempflag ? disp_del : disp_donttouch;
11644   b->addr_string = addr_string;
11645   b->language = language_ada;
11646 }
11647
11648 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11649    filter list, or NULL if no filtering is required.  */
11650 static VEC(int) *
11651 catch_syscall_split_args (char *arg)
11652 {
11653   VEC(int) *result = NULL;
11654   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11655
11656   while (*arg != '\0')
11657     {
11658       int i, syscall_number;
11659       char *endptr;
11660       char cur_name[128];
11661       struct syscall s;
11662
11663       /* Skip whitespace.  */
11664       while (isspace (*arg))
11665         arg++;
11666
11667       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11668         cur_name[i] = arg[i];
11669       cur_name[i] = '\0';
11670       arg += i;
11671
11672       /* Check if the user provided a syscall name or a number.  */
11673       syscall_number = (int) strtol (cur_name, &endptr, 0);
11674       if (*endptr == '\0')
11675         get_syscall_by_number (syscall_number, &s);
11676       else
11677         {
11678           /* We have a name.  Let's check if it's valid and convert it
11679              to a number.  */
11680           get_syscall_by_name (cur_name, &s);
11681
11682           if (s.number == UNKNOWN_SYSCALL)
11683             /* Here we have to issue an error instead of a warning,
11684                because GDB cannot do anything useful if there's no
11685                syscall number to be caught.  */
11686             error (_("Unknown syscall name '%s'."), cur_name);
11687         }
11688
11689       /* Ok, it's valid.  */
11690       VEC_safe_push (int, result, s.number);
11691     }
11692
11693   discard_cleanups (cleanup);
11694   return result;
11695 }
11696
11697 /* Implement the "catch syscall" command.  */
11698
11699 static void
11700 catch_syscall_command_1 (char *arg, int from_tty, 
11701                          struct cmd_list_element *command)
11702 {
11703   int tempflag;
11704   VEC(int) *filter;
11705   struct syscall s;
11706   struct gdbarch *gdbarch = get_current_arch ();
11707
11708   /* Checking if the feature if supported.  */
11709   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11710     error (_("The feature 'catch syscall' is not supported on \
11711 this architecture yet."));
11712
11713   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11714
11715   arg = skip_spaces (arg);
11716
11717   /* We need to do this first "dummy" translation in order
11718      to get the syscall XML file loaded or, most important,
11719      to display a warning to the user if there's no XML file
11720      for his/her architecture.  */
11721   get_syscall_by_number (0, &s);
11722
11723   /* The allowed syntax is:
11724      catch syscall
11725      catch syscall <name | number> [<name | number> ... <name | number>]
11726
11727      Let's check if there's a syscall name.  */
11728
11729   if (arg != NULL)
11730     filter = catch_syscall_split_args (arg);
11731   else
11732     filter = NULL;
11733
11734   create_syscall_event_catchpoint (tempflag, filter,
11735                                    &catch_syscall_breakpoint_ops);
11736 }
11737
11738 static void
11739 catch_command (char *arg, int from_tty)
11740 {
11741   error (_("Catch requires an event name."));
11742 }
11743 \f
11744
11745 static void
11746 tcatch_command (char *arg, int from_tty)
11747 {
11748   error (_("Catch requires an event name."));
11749 }
11750
11751 /* A qsort comparison function that sorts breakpoints in order.  */
11752
11753 static int
11754 compare_breakpoints (const void *a, const void *b)
11755 {
11756   const breakpoint_p *ba = a;
11757   uintptr_t ua = (uintptr_t) *ba;
11758   const breakpoint_p *bb = b;
11759   uintptr_t ub = (uintptr_t) *bb;
11760
11761   if ((*ba)->number < (*bb)->number)
11762     return -1;
11763   else if ((*ba)->number > (*bb)->number)
11764     return 1;
11765
11766   /* Now sort by address, in case we see, e..g, two breakpoints with
11767      the number 0.  */
11768   if (ua < ub)
11769     return -1;
11770   return ub > ub ? 1 : 0;
11771 }
11772
11773 /* Delete breakpoints by address or line.  */
11774
11775 static void
11776 clear_command (char *arg, int from_tty)
11777 {
11778   struct breakpoint *b, *prev;
11779   VEC(breakpoint_p) *found = 0;
11780   int ix;
11781   int default_match;
11782   struct symtabs_and_lines sals;
11783   struct symtab_and_line sal;
11784   int i;
11785   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11786
11787   if (arg)
11788     {
11789       sals = decode_line_with_current_source (arg,
11790                                               (DECODE_LINE_FUNFIRSTLINE
11791                                                | DECODE_LINE_LIST_MODE));
11792       default_match = 0;
11793     }
11794   else
11795     {
11796       sals.sals = (struct symtab_and_line *)
11797         xmalloc (sizeof (struct symtab_and_line));
11798       make_cleanup (xfree, sals.sals);
11799       init_sal (&sal);          /* Initialize to zeroes.  */
11800
11801       /* Set sal's line, symtab, pc, and pspace to the values
11802          corresponding to the last call to print_frame_info.  If the
11803          codepoint is not valid, this will set all the fields to 0.  */
11804       get_last_displayed_sal (&sal);
11805       if (sal.symtab == 0)
11806         error (_("No source file specified."));
11807
11808       sals.sals[0] = sal;
11809       sals.nelts = 1;
11810
11811       default_match = 1;
11812     }
11813
11814   /* We don't call resolve_sal_pc here.  That's not as bad as it
11815      seems, because all existing breakpoints typically have both
11816      file/line and pc set.  So, if clear is given file/line, we can
11817      match this to existing breakpoint without obtaining pc at all.
11818
11819      We only support clearing given the address explicitly 
11820      present in breakpoint table.  Say, we've set breakpoint 
11821      at file:line.  There were several PC values for that file:line,
11822      due to optimization, all in one block.
11823
11824      We've picked one PC value.  If "clear" is issued with another
11825      PC corresponding to the same file:line, the breakpoint won't
11826      be cleared.  We probably can still clear the breakpoint, but 
11827      since the other PC value is never presented to user, user
11828      can only find it by guessing, and it does not seem important
11829      to support that.  */
11830
11831   /* For each line spec given, delete bps which correspond to it.  Do
11832      it in two passes, solely to preserve the current behavior that
11833      from_tty is forced true if we delete more than one
11834      breakpoint.  */
11835
11836   found = NULL;
11837   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11838   for (i = 0; i < sals.nelts; i++)
11839     {
11840       int is_abs, sal_name_len;
11841
11842       /* If exact pc given, clear bpts at that pc.
11843          If line given (pc == 0), clear all bpts on specified line.
11844          If defaulting, clear all bpts on default line
11845          or at default pc.
11846
11847          defaulting    sal.pc != 0    tests to do
11848
11849          0              1             pc
11850          1              1             pc _and_ line
11851          0              0             line
11852          1              0             <can't happen> */
11853
11854       sal = sals.sals[i];
11855       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11856       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11857
11858       /* Find all matching breakpoints and add them to 'found'.  */
11859       ALL_BREAKPOINTS (b)
11860         {
11861           int match = 0;
11862           /* Are we going to delete b?  */
11863           if (b->type != bp_none && !is_watchpoint (b))
11864             {
11865               struct bp_location *loc = b->loc;
11866               for (; loc; loc = loc->next)
11867                 {
11868                   /* If the user specified file:line, don't allow a PC
11869                      match.  This matches historical gdb behavior.  */
11870                   int pc_match = (!sal.explicit_line
11871                                   && sal.pc
11872                                   && (loc->pspace == sal.pspace)
11873                                   && (loc->address == sal.pc)
11874                                   && (!section_is_overlay (loc->section)
11875                                       || loc->section == sal.section));
11876                   int line_match = 0;
11877
11878                   if ((default_match || sal.explicit_line)
11879                       && loc->source_file != NULL
11880                       && sal.symtab != NULL
11881                       && sal.pspace == loc->pspace
11882                       && loc->line_number == sal.line)
11883                     {
11884                       if (filename_cmp (loc->source_file,
11885                                         sal.symtab->filename) == 0)
11886                         line_match = 1;
11887                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11888                                && compare_filenames_for_search (loc->source_file,
11889                                                                 sal.symtab->filename,
11890                                                                 sal_name_len))
11891                         line_match = 1;
11892                     }
11893
11894                   if (pc_match || line_match)
11895                     {
11896                       match = 1;
11897                       break;
11898                     }
11899                 }
11900             }
11901
11902           if (match)
11903             VEC_safe_push(breakpoint_p, found, b);
11904         }
11905     }
11906
11907   /* Now go thru the 'found' chain and delete them.  */
11908   if (VEC_empty(breakpoint_p, found))
11909     {
11910       if (arg)
11911         error (_("No breakpoint at %s."), arg);
11912       else
11913         error (_("No breakpoint at this line."));
11914     }
11915
11916   /* Remove duplicates from the vec.  */
11917   qsort (VEC_address (breakpoint_p, found),
11918          VEC_length (breakpoint_p, found),
11919          sizeof (breakpoint_p),
11920          compare_breakpoints);
11921   prev = VEC_index (breakpoint_p, found, 0);
11922   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11923     {
11924       if (b == prev)
11925         {
11926           VEC_ordered_remove (breakpoint_p, found, ix);
11927           --ix;
11928         }
11929     }
11930
11931   if (VEC_length(breakpoint_p, found) > 1)
11932     from_tty = 1;       /* Always report if deleted more than one.  */
11933   if (from_tty)
11934     {
11935       if (VEC_length(breakpoint_p, found) == 1)
11936         printf_unfiltered (_("Deleted breakpoint "));
11937       else
11938         printf_unfiltered (_("Deleted breakpoints "));
11939     }
11940   breakpoints_changed ();
11941
11942   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11943     {
11944       if (from_tty)
11945         printf_unfiltered ("%d ", b->number);
11946       delete_breakpoint (b);
11947     }
11948   if (from_tty)
11949     putchar_unfiltered ('\n');
11950
11951   do_cleanups (cleanups);
11952 }
11953 \f
11954 /* Delete breakpoint in BS if they are `delete' breakpoints and
11955    all breakpoints that are marked for deletion, whether hit or not.
11956    This is called after any breakpoint is hit, or after errors.  */
11957
11958 void
11959 breakpoint_auto_delete (bpstat bs)
11960 {
11961   struct breakpoint *b, *b_tmp;
11962
11963   for (; bs; bs = bs->next)
11964     if (bs->breakpoint_at
11965         && bs->breakpoint_at->disposition == disp_del
11966         && bs->stop)
11967       delete_breakpoint (bs->breakpoint_at);
11968
11969   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11970   {
11971     if (b->disposition == disp_del_at_next_stop)
11972       delete_breakpoint (b);
11973   }
11974 }
11975
11976 /* A comparison function for bp_location AP and BP being interfaced to
11977    qsort.  Sort elements primarily by their ADDRESS (no matter what
11978    does breakpoint_address_is_meaningful say for its OWNER),
11979    secondarily by ordering first bp_permanent OWNERed elements and
11980    terciarily just ensuring the array is sorted stable way despite
11981    qsort being an unstable algorithm.  */
11982
11983 static int
11984 bp_location_compare (const void *ap, const void *bp)
11985 {
11986   struct bp_location *a = *(void **) ap;
11987   struct bp_location *b = *(void **) bp;
11988   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11989   int a_perm = a->owner->enable_state == bp_permanent;
11990   int b_perm = b->owner->enable_state == bp_permanent;
11991
11992   if (a->address != b->address)
11993     return (a->address > b->address) - (a->address < b->address);
11994
11995   /* Sort locations at the same address by their pspace number, keeping
11996      locations of the same inferior (in a multi-inferior environment)
11997      grouped.  */
11998
11999   if (a->pspace->num != b->pspace->num)
12000     return ((a->pspace->num > b->pspace->num)
12001             - (a->pspace->num < b->pspace->num));
12002
12003   /* Sort permanent breakpoints first.  */
12004   if (a_perm != b_perm)
12005     return (a_perm < b_perm) - (a_perm > b_perm);
12006
12007   /* Make the internal GDB representation stable across GDB runs
12008      where A and B memory inside GDB can differ.  Breakpoint locations of
12009      the same type at the same address can be sorted in arbitrary order.  */
12010
12011   if (a->owner->number != b->owner->number)
12012     return ((a->owner->number > b->owner->number)
12013             - (a->owner->number < b->owner->number));
12014
12015   return (a > b) - (a < b);
12016 }
12017
12018 /* Set bp_location_placed_address_before_address_max and
12019    bp_location_shadow_len_after_address_max according to the current
12020    content of the bp_location array.  */
12021
12022 static void
12023 bp_location_target_extensions_update (void)
12024 {
12025   struct bp_location *bl, **blp_tmp;
12026
12027   bp_location_placed_address_before_address_max = 0;
12028   bp_location_shadow_len_after_address_max = 0;
12029
12030   ALL_BP_LOCATIONS (bl, blp_tmp)
12031     {
12032       CORE_ADDR start, end, addr;
12033
12034       if (!bp_location_has_shadow (bl))
12035         continue;
12036
12037       start = bl->target_info.placed_address;
12038       end = start + bl->target_info.shadow_len;
12039
12040       gdb_assert (bl->address >= start);
12041       addr = bl->address - start;
12042       if (addr > bp_location_placed_address_before_address_max)
12043         bp_location_placed_address_before_address_max = addr;
12044
12045       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12046
12047       gdb_assert (bl->address < end);
12048       addr = end - bl->address;
12049       if (addr > bp_location_shadow_len_after_address_max)
12050         bp_location_shadow_len_after_address_max = addr;
12051     }
12052 }
12053
12054 /* Download tracepoint locations if they haven't been.  */
12055
12056 static void
12057 download_tracepoint_locations (void)
12058 {
12059   struct bp_location *bl, **blp_tmp;
12060   struct cleanup *old_chain;
12061
12062   if (!target_can_download_tracepoint ())
12063     return;
12064
12065   old_chain = save_current_space_and_thread ();
12066
12067   ALL_BP_LOCATIONS (bl, blp_tmp)
12068     {
12069       struct tracepoint *t;
12070
12071       if (!is_tracepoint (bl->owner))
12072         continue;
12073
12074       if ((bl->owner->type == bp_fast_tracepoint
12075            ? !may_insert_fast_tracepoints
12076            : !may_insert_tracepoints))
12077         continue;
12078
12079       /* In tracepoint, locations are _never_ duplicated, so
12080          should_be_inserted is equivalent to
12081          unduplicated_should_be_inserted.  */
12082       if (!should_be_inserted (bl) || bl->inserted)
12083         continue;
12084
12085       switch_to_program_space_and_thread (bl->pspace);
12086
12087       target_download_tracepoint (bl);
12088
12089       bl->inserted = 1;
12090       t = (struct tracepoint *) bl->owner;
12091       t->number_on_target = bl->owner->number;
12092     }
12093
12094   do_cleanups (old_chain);
12095 }
12096
12097 /* Swap the insertion/duplication state between two locations.  */
12098
12099 static void
12100 swap_insertion (struct bp_location *left, struct bp_location *right)
12101 {
12102   const int left_inserted = left->inserted;
12103   const int left_duplicate = left->duplicate;
12104   const int left_needs_update = left->needs_update;
12105   const struct bp_target_info left_target_info = left->target_info;
12106
12107   /* Locations of tracepoints can never be duplicated.  */
12108   if (is_tracepoint (left->owner))
12109     gdb_assert (!left->duplicate);
12110   if (is_tracepoint (right->owner))
12111     gdb_assert (!right->duplicate);
12112
12113   left->inserted = right->inserted;
12114   left->duplicate = right->duplicate;
12115   left->needs_update = right->needs_update;
12116   left->target_info = right->target_info;
12117   right->inserted = left_inserted;
12118   right->duplicate = left_duplicate;
12119   right->needs_update = left_needs_update;
12120   right->target_info = left_target_info;
12121 }
12122
12123 /* Force the re-insertion of the locations at ADDRESS.  This is called
12124    once a new/deleted/modified duplicate location is found and we are evaluating
12125    conditions on the target's side.  Such conditions need to be updated on
12126    the target.  */
12127
12128 static void
12129 force_breakpoint_reinsertion (struct bp_location *bl)
12130 {
12131   struct bp_location **locp = NULL, **loc2p;
12132   struct bp_location *loc;
12133   CORE_ADDR address = 0;
12134   int pspace_num;
12135
12136   address = bl->address;
12137   pspace_num = bl->pspace->num;
12138
12139   /* This is only meaningful if the target is
12140      evaluating conditions and if the user has
12141      opted for condition evaluation on the target's
12142      side.  */
12143   if (gdb_evaluates_breakpoint_condition_p ()
12144       || !target_supports_evaluation_of_breakpoint_conditions ())
12145     return;
12146
12147   /* Flag all breakpoint locations with this address and
12148      the same program space as the location
12149      as "its condition has changed".  We need to
12150      update the conditions on the target's side.  */
12151   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12152     {
12153       loc = *loc2p;
12154
12155       if (!is_breakpoint (loc->owner)
12156           || pspace_num != loc->pspace->num)
12157         continue;
12158
12159       /* Flag the location appropriately.  We use a different state to
12160          let everyone know that we already updated the set of locations
12161          with addr bl->address and program space bl->pspace.  This is so
12162          we don't have to keep calling these functions just to mark locations
12163          that have already been marked.  */
12164       loc->condition_changed = condition_updated;
12165
12166       /* Free the agent expression bytecode as well.  We will compute
12167          it later on.  */
12168       if (loc->cond_bytecode)
12169         {
12170           free_agent_expr (loc->cond_bytecode);
12171           loc->cond_bytecode = NULL;
12172         }
12173     }
12174 }
12175
12176 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12177    into the inferior, only remove already-inserted locations that no
12178    longer should be inserted.  Functions that delete a breakpoint or
12179    breakpoints should pass false, so that deleting a breakpoint
12180    doesn't have the side effect of inserting the locations of other
12181    breakpoints that are marked not-inserted, but should_be_inserted
12182    returns true on them.
12183
12184    This behaviour is useful is situations close to tear-down -- e.g.,
12185    after an exec, while the target still has execution, but breakpoint
12186    shadows of the previous executable image should *NOT* be restored
12187    to the new image; or before detaching, where the target still has
12188    execution and wants to delete breakpoints from GDB's lists, and all
12189    breakpoints had already been removed from the inferior.  */
12190
12191 static void
12192 update_global_location_list (int should_insert)
12193 {
12194   struct breakpoint *b;
12195   struct bp_location **locp, *loc;
12196   struct cleanup *cleanups;
12197   /* Last breakpoint location address that was marked for update.  */
12198   CORE_ADDR last_addr = 0;
12199   /* Last breakpoint location program space that was marked for update.  */
12200   int last_pspace_num = -1;
12201
12202   /* Used in the duplicates detection below.  When iterating over all
12203      bp_locations, points to the first bp_location of a given address.
12204      Breakpoints and watchpoints of different types are never
12205      duplicates of each other.  Keep one pointer for each type of
12206      breakpoint/watchpoint, so we only need to loop over all locations
12207      once.  */
12208   struct bp_location *bp_loc_first;  /* breakpoint */
12209   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12210   struct bp_location *awp_loc_first; /* access watchpoint */
12211   struct bp_location *rwp_loc_first; /* read watchpoint */
12212
12213   /* Saved former bp_location array which we compare against the newly
12214      built bp_location from the current state of ALL_BREAKPOINTS.  */
12215   struct bp_location **old_location, **old_locp;
12216   unsigned old_location_count;
12217
12218   old_location = bp_location;
12219   old_location_count = bp_location_count;
12220   bp_location = NULL;
12221   bp_location_count = 0;
12222   cleanups = make_cleanup (xfree, old_location);
12223
12224   ALL_BREAKPOINTS (b)
12225     for (loc = b->loc; loc; loc = loc->next)
12226       bp_location_count++;
12227
12228   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12229   locp = bp_location;
12230   ALL_BREAKPOINTS (b)
12231     for (loc = b->loc; loc; loc = loc->next)
12232       *locp++ = loc;
12233   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12234          bp_location_compare);
12235
12236   bp_location_target_extensions_update ();
12237
12238   /* Identify bp_location instances that are no longer present in the
12239      new list, and therefore should be freed.  Note that it's not
12240      necessary that those locations should be removed from inferior --
12241      if there's another location at the same address (previously
12242      marked as duplicate), we don't need to remove/insert the
12243      location.
12244      
12245      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12246      and former bp_location array state respectively.  */
12247
12248   locp = bp_location;
12249   for (old_locp = old_location; old_locp < old_location + old_location_count;
12250        old_locp++)
12251     {
12252       struct bp_location *old_loc = *old_locp;
12253       struct bp_location **loc2p;
12254
12255       /* Tells if 'old_loc' is found among the new locations.  If
12256          not, we have to free it.  */
12257       int found_object = 0;
12258       /* Tells if the location should remain inserted in the target.  */
12259       int keep_in_target = 0;
12260       int removed = 0;
12261
12262       /* Skip LOCP entries which will definitely never be needed.
12263          Stop either at or being the one matching OLD_LOC.  */
12264       while (locp < bp_location + bp_location_count
12265              && (*locp)->address < old_loc->address)
12266         locp++;
12267
12268       for (loc2p = locp;
12269            (loc2p < bp_location + bp_location_count
12270             && (*loc2p)->address == old_loc->address);
12271            loc2p++)
12272         {
12273           /* Check if this is a new/duplicated location or a duplicated
12274              location that had its condition modified.  If so, we want to send
12275              its condition to the target if evaluation of conditions is taking
12276              place there.  */
12277           if ((*loc2p)->condition_changed == condition_modified
12278               && (last_addr != old_loc->address
12279                   || last_pspace_num != old_loc->pspace->num))
12280             {
12281               force_breakpoint_reinsertion (*loc2p);
12282               last_pspace_num = old_loc->pspace->num;
12283             }
12284
12285           if (*loc2p == old_loc)
12286             found_object = 1;
12287         }
12288
12289       /* We have already handled this address, update it so that we don't
12290          have to go through updates again.  */
12291       last_addr = old_loc->address;
12292
12293       /* Target-side condition evaluation: Handle deleted locations.  */
12294       if (!found_object)
12295         force_breakpoint_reinsertion (old_loc);
12296
12297       /* If this location is no longer present, and inserted, look if
12298          there's maybe a new location at the same address.  If so,
12299          mark that one inserted, and don't remove this one.  This is
12300          needed so that we don't have a time window where a breakpoint
12301          at certain location is not inserted.  */
12302
12303       if (old_loc->inserted)
12304         {
12305           /* If the location is inserted now, we might have to remove
12306              it.  */
12307
12308           if (found_object && should_be_inserted (old_loc))
12309             {
12310               /* The location is still present in the location list,
12311                  and still should be inserted.  Don't do anything.  */
12312               keep_in_target = 1;
12313             }
12314           else
12315             {
12316               /* This location still exists, but it won't be kept in the
12317                  target since it may have been disabled.  We proceed to
12318                  remove its target-side condition.  */
12319
12320               /* The location is either no longer present, or got
12321                  disabled.  See if there's another location at the
12322                  same address, in which case we don't need to remove
12323                  this one from the target.  */
12324
12325               /* OLD_LOC comes from existing struct breakpoint.  */
12326               if (breakpoint_address_is_meaningful (old_loc->owner))
12327                 {
12328                   for (loc2p = locp;
12329                        (loc2p < bp_location + bp_location_count
12330                         && (*loc2p)->address == old_loc->address);
12331                        loc2p++)
12332                     {
12333                       struct bp_location *loc2 = *loc2p;
12334
12335                       if (breakpoint_locations_match (loc2, old_loc))
12336                         {
12337                           /* Read watchpoint locations are switched to
12338                              access watchpoints, if the former are not
12339                              supported, but the latter are.  */
12340                           if (is_hardware_watchpoint (old_loc->owner))
12341                             {
12342                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12343                               loc2->watchpoint_type = old_loc->watchpoint_type;
12344                             }
12345
12346                           /* loc2 is a duplicated location. We need to check
12347                              if it should be inserted in case it will be
12348                              unduplicated.  */
12349                           if (loc2 != old_loc
12350                               && unduplicated_should_be_inserted (loc2))
12351                             {
12352                               swap_insertion (old_loc, loc2);
12353                               keep_in_target = 1;
12354                               break;
12355                             }
12356                         }
12357                     }
12358                 }
12359             }
12360
12361           if (!keep_in_target)
12362             {
12363               if (remove_breakpoint (old_loc, mark_uninserted))
12364                 {
12365                   /* This is just about all we can do.  We could keep
12366                      this location on the global list, and try to
12367                      remove it next time, but there's no particular
12368                      reason why we will succeed next time.
12369                      
12370                      Note that at this point, old_loc->owner is still
12371                      valid, as delete_breakpoint frees the breakpoint
12372                      only after calling us.  */
12373                   printf_filtered (_("warning: Error removing "
12374                                      "breakpoint %d\n"), 
12375                                    old_loc->owner->number);
12376                 }
12377               removed = 1;
12378             }
12379         }
12380
12381       if (!found_object)
12382         {
12383           if (removed && non_stop
12384               && breakpoint_address_is_meaningful (old_loc->owner)
12385               && !is_hardware_watchpoint (old_loc->owner))
12386             {
12387               /* This location was removed from the target.  In
12388                  non-stop mode, a race condition is possible where
12389                  we've removed a breakpoint, but stop events for that
12390                  breakpoint are already queued and will arrive later.
12391                  We apply an heuristic to be able to distinguish such
12392                  SIGTRAPs from other random SIGTRAPs: we keep this
12393                  breakpoint location for a bit, and will retire it
12394                  after we see some number of events.  The theory here
12395                  is that reporting of events should, "on the average",
12396                  be fair, so after a while we'll see events from all
12397                  threads that have anything of interest, and no longer
12398                  need to keep this breakpoint location around.  We
12399                  don't hold locations forever so to reduce chances of
12400                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12401                  SIGTRAP.
12402
12403                  The heuristic failing can be disastrous on
12404                  decr_pc_after_break targets.
12405
12406                  On decr_pc_after_break targets, like e.g., x86-linux,
12407                  if we fail to recognize a late breakpoint SIGTRAP,
12408                  because events_till_retirement has reached 0 too
12409                  soon, we'll fail to do the PC adjustment, and report
12410                  a random SIGTRAP to the user.  When the user resumes
12411                  the inferior, it will most likely immediately crash
12412                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12413                  corrupted, because of being resumed e.g., in the
12414                  middle of a multi-byte instruction, or skipped a
12415                  one-byte instruction.  This was actually seen happen
12416                  on native x86-linux, and should be less rare on
12417                  targets that do not support new thread events, like
12418                  remote, due to the heuristic depending on
12419                  thread_count.
12420
12421                  Mistaking a random SIGTRAP for a breakpoint trap
12422                  causes similar symptoms (PC adjustment applied when
12423                  it shouldn't), but then again, playing with SIGTRAPs
12424                  behind the debugger's back is asking for trouble.
12425
12426                  Since hardware watchpoint traps are always
12427                  distinguishable from other traps, so we don't need to
12428                  apply keep hardware watchpoint moribund locations
12429                  around.  We simply always ignore hardware watchpoint
12430                  traps we can no longer explain.  */
12431
12432               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12433               old_loc->owner = NULL;
12434
12435               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12436             }
12437           else
12438             {
12439               old_loc->owner = NULL;
12440               decref_bp_location (&old_loc);
12441             }
12442         }
12443     }
12444
12445   /* Rescan breakpoints at the same address and section, marking the
12446      first one as "first" and any others as "duplicates".  This is so
12447      that the bpt instruction is only inserted once.  If we have a
12448      permanent breakpoint at the same place as BPT, make that one the
12449      official one, and the rest as duplicates.  Permanent breakpoints
12450      are sorted first for the same address.
12451
12452      Do the same for hardware watchpoints, but also considering the
12453      watchpoint's type (regular/access/read) and length.  */
12454
12455   bp_loc_first = NULL;
12456   wp_loc_first = NULL;
12457   awp_loc_first = NULL;
12458   rwp_loc_first = NULL;
12459   ALL_BP_LOCATIONS (loc, locp)
12460     {
12461       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12462          non-NULL.  */
12463       struct bp_location **loc_first_p;
12464       b = loc->owner;
12465
12466       if (!should_be_inserted (loc)
12467           || !breakpoint_address_is_meaningful (b)
12468           /* Don't detect duplicate for tracepoint locations because they are
12469            never duplicated.  See the comments in field `duplicate' of
12470            `struct bp_location'.  */
12471           || is_tracepoint (b))
12472         {
12473           /* Clear the condition modification flag.  */
12474           loc->condition_changed = condition_unchanged;
12475           continue;
12476         }
12477
12478       /* Permanent breakpoint should always be inserted.  */
12479       if (b->enable_state == bp_permanent && ! loc->inserted)
12480         internal_error (__FILE__, __LINE__,
12481                         _("allegedly permanent breakpoint is not "
12482                         "actually inserted"));
12483
12484       if (b->type == bp_hardware_watchpoint)
12485         loc_first_p = &wp_loc_first;
12486       else if (b->type == bp_read_watchpoint)
12487         loc_first_p = &rwp_loc_first;
12488       else if (b->type == bp_access_watchpoint)
12489         loc_first_p = &awp_loc_first;
12490       else
12491         loc_first_p = &bp_loc_first;
12492
12493       if (*loc_first_p == NULL
12494           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12495           || !breakpoint_locations_match (loc, *loc_first_p))
12496         {
12497           *loc_first_p = loc;
12498           loc->duplicate = 0;
12499
12500           if (is_breakpoint (loc->owner) && loc->condition_changed)
12501             {
12502               loc->needs_update = 1;
12503               /* Clear the condition modification flag.  */
12504               loc->condition_changed = condition_unchanged;
12505             }
12506           continue;
12507         }
12508
12509
12510       /* This and the above ensure the invariant that the first location
12511          is not duplicated, and is the inserted one.
12512          All following are marked as duplicated, and are not inserted.  */
12513       if (loc->inserted)
12514         swap_insertion (loc, *loc_first_p);
12515       loc->duplicate = 1;
12516
12517       /* Clear the condition modification flag.  */
12518       loc->condition_changed = condition_unchanged;
12519
12520       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12521           && b->enable_state != bp_permanent)
12522         internal_error (__FILE__, __LINE__,
12523                         _("another breakpoint was inserted on top of "
12524                         "a permanent breakpoint"));
12525     }
12526
12527   if (breakpoints_always_inserted_mode ()
12528       && (have_live_inferiors ()
12529           || (gdbarch_has_global_breakpoints (target_gdbarch))))
12530     {
12531       if (should_insert)
12532         insert_breakpoint_locations ();
12533       else
12534         {
12535           /* Though should_insert is false, we may need to update conditions
12536              on the target's side if it is evaluating such conditions.  We
12537              only update conditions for locations that are marked
12538              "needs_update".  */
12539           update_inserted_breakpoint_locations ();
12540         }
12541     }
12542
12543   if (should_insert)
12544     download_tracepoint_locations ();
12545
12546   do_cleanups (cleanups);
12547 }
12548
12549 void
12550 breakpoint_retire_moribund (void)
12551 {
12552   struct bp_location *loc;
12553   int ix;
12554
12555   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12556     if (--(loc->events_till_retirement) == 0)
12557       {
12558         decref_bp_location (&loc);
12559         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12560         --ix;
12561       }
12562 }
12563
12564 static void
12565 update_global_location_list_nothrow (int inserting)
12566 {
12567   volatile struct gdb_exception e;
12568
12569   TRY_CATCH (e, RETURN_MASK_ERROR)
12570     update_global_location_list (inserting);
12571 }
12572
12573 /* Clear BKP from a BPS.  */
12574
12575 static void
12576 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12577 {
12578   bpstat bs;
12579
12580   for (bs = bps; bs; bs = bs->next)
12581     if (bs->breakpoint_at == bpt)
12582       {
12583         bs->breakpoint_at = NULL;
12584         bs->old_val = NULL;
12585         /* bs->commands will be freed later.  */
12586       }
12587 }
12588
12589 /* Callback for iterate_over_threads.  */
12590 static int
12591 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12592 {
12593   struct breakpoint *bpt = data;
12594
12595   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12596   return 0;
12597 }
12598
12599 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12600    callbacks.  */
12601
12602 static void
12603 say_where (struct breakpoint *b)
12604 {
12605   struct ui_out *uiout = current_uiout;
12606   struct value_print_options opts;
12607
12608   get_user_print_options (&opts);
12609
12610   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12611      single string.  */
12612   if (b->loc == NULL)
12613     {
12614       printf_filtered (_(" (%s) pending."), b->addr_string);
12615     }
12616   else
12617     {
12618       if (opts.addressprint || b->loc->source_file == NULL)
12619         {
12620           printf_filtered (" at ");
12621           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12622                           gdb_stdout);
12623         }
12624       if (b->loc->source_file)
12625         {
12626           /* If there is a single location, we can print the location
12627              more nicely.  */
12628           if (b->loc->next == NULL)
12629             printf_filtered (": file %s, line %d.",
12630                              b->loc->source_file, b->loc->line_number);
12631           else
12632             /* This is not ideal, but each location may have a
12633                different file name, and this at least reflects the
12634                real situation somewhat.  */
12635             printf_filtered (": %s.", b->addr_string);
12636         }
12637
12638       if (b->loc->next)
12639         {
12640           struct bp_location *loc = b->loc;
12641           int n = 0;
12642           for (; loc; loc = loc->next)
12643             ++n;
12644           printf_filtered (" (%d locations)", n);
12645         }
12646     }
12647 }
12648
12649 /* Default bp_location_ops methods.  */
12650
12651 static void
12652 bp_location_dtor (struct bp_location *self)
12653 {
12654   xfree (self->cond);
12655   if (self->cond_bytecode)
12656     free_agent_expr (self->cond_bytecode);
12657   xfree (self->function_name);
12658   xfree (self->source_file);
12659 }
12660
12661 static const struct bp_location_ops bp_location_ops =
12662 {
12663   bp_location_dtor
12664 };
12665
12666 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12667    inherit from.  */
12668
12669 static void
12670 base_breakpoint_dtor (struct breakpoint *self)
12671 {
12672   decref_counted_command_line (&self->commands);
12673   xfree (self->cond_string);
12674   xfree (self->addr_string);
12675   xfree (self->filter);
12676   xfree (self->addr_string_range_end);
12677 }
12678
12679 static struct bp_location *
12680 base_breakpoint_allocate_location (struct breakpoint *self)
12681 {
12682   struct bp_location *loc;
12683
12684   loc = XNEW (struct bp_location);
12685   init_bp_location (loc, &bp_location_ops, self);
12686   return loc;
12687 }
12688
12689 static void
12690 base_breakpoint_re_set (struct breakpoint *b)
12691 {
12692   /* Nothing to re-set. */
12693 }
12694
12695 #define internal_error_pure_virtual_called() \
12696   gdb_assert_not_reached ("pure virtual function called")
12697
12698 static int
12699 base_breakpoint_insert_location (struct bp_location *bl)
12700 {
12701   internal_error_pure_virtual_called ();
12702 }
12703
12704 static int
12705 base_breakpoint_remove_location (struct bp_location *bl)
12706 {
12707   internal_error_pure_virtual_called ();
12708 }
12709
12710 static int
12711 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12712                                 struct address_space *aspace,
12713                                 CORE_ADDR bp_addr,
12714                                 const struct target_waitstatus *ws)
12715 {
12716   internal_error_pure_virtual_called ();
12717 }
12718
12719 static void
12720 base_breakpoint_check_status (bpstat bs)
12721 {
12722   /* Always stop.   */
12723 }
12724
12725 /* A "works_in_software_mode" breakpoint_ops method that just internal
12726    errors.  */
12727
12728 static int
12729 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12730 {
12731   internal_error_pure_virtual_called ();
12732 }
12733
12734 /* A "resources_needed" breakpoint_ops method that just internal
12735    errors.  */
12736
12737 static int
12738 base_breakpoint_resources_needed (const struct bp_location *bl)
12739 {
12740   internal_error_pure_virtual_called ();
12741 }
12742
12743 static enum print_stop_action
12744 base_breakpoint_print_it (bpstat bs)
12745 {
12746   internal_error_pure_virtual_called ();
12747 }
12748
12749 static void
12750 base_breakpoint_print_one_detail (const struct breakpoint *self,
12751                                   struct ui_out *uiout)
12752 {
12753   /* nothing */
12754 }
12755
12756 static void
12757 base_breakpoint_print_mention (struct breakpoint *b)
12758 {
12759   internal_error_pure_virtual_called ();
12760 }
12761
12762 static void
12763 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12764 {
12765   internal_error_pure_virtual_called ();
12766 }
12767
12768 static void
12769 base_breakpoint_create_sals_from_address (char **arg,
12770                                           struct linespec_result *canonical,
12771                                           enum bptype type_wanted,
12772                                           char *addr_start,
12773                                           char **copy_arg)
12774 {
12775   internal_error_pure_virtual_called ();
12776 }
12777
12778 static void
12779 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12780                                         struct linespec_result *c,
12781                                         struct linespec_sals *lsal,
12782                                         char *cond_string,
12783                                         char *extra_string,
12784                                         enum bptype type_wanted,
12785                                         enum bpdisp disposition,
12786                                         int thread,
12787                                         int task, int ignore_count,
12788                                         const struct breakpoint_ops *o,
12789                                         int from_tty, int enabled,
12790                                         int internal, unsigned flags)
12791 {
12792   internal_error_pure_virtual_called ();
12793 }
12794
12795 static void
12796 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12797                                  struct symtabs_and_lines *sals)
12798 {
12799   internal_error_pure_virtual_called ();
12800 }
12801
12802 static struct breakpoint_ops base_breakpoint_ops =
12803 {
12804   base_breakpoint_dtor,
12805   base_breakpoint_allocate_location,
12806   base_breakpoint_re_set,
12807   base_breakpoint_insert_location,
12808   base_breakpoint_remove_location,
12809   base_breakpoint_breakpoint_hit,
12810   base_breakpoint_check_status,
12811   base_breakpoint_resources_needed,
12812   base_breakpoint_works_in_software_mode,
12813   base_breakpoint_print_it,
12814   NULL,
12815   base_breakpoint_print_one_detail,
12816   base_breakpoint_print_mention,
12817   base_breakpoint_print_recreate,
12818   base_breakpoint_create_sals_from_address,
12819   base_breakpoint_create_breakpoints_sal,
12820   base_breakpoint_decode_linespec,
12821 };
12822
12823 /* Default breakpoint_ops methods.  */
12824
12825 static void
12826 bkpt_re_set (struct breakpoint *b)
12827 {
12828   /* FIXME: is this still reachable?  */
12829   if (b->addr_string == NULL)
12830     {
12831       /* Anything without a string can't be re-set.  */
12832       delete_breakpoint (b);
12833       return;
12834     }
12835
12836   breakpoint_re_set_default (b);
12837 }
12838
12839 static int
12840 bkpt_insert_location (struct bp_location *bl)
12841 {
12842   if (bl->loc_type == bp_loc_hardware_breakpoint)
12843     return target_insert_hw_breakpoint (bl->gdbarch,
12844                                         &bl->target_info);
12845   else
12846     return target_insert_breakpoint (bl->gdbarch,
12847                                      &bl->target_info);
12848 }
12849
12850 static int
12851 bkpt_remove_location (struct bp_location *bl)
12852 {
12853   if (bl->loc_type == bp_loc_hardware_breakpoint)
12854     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12855   else
12856     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12857 }
12858
12859 static int
12860 bkpt_breakpoint_hit (const struct bp_location *bl,
12861                      struct address_space *aspace, CORE_ADDR bp_addr,
12862                      const struct target_waitstatus *ws)
12863 {
12864   struct breakpoint *b = bl->owner;
12865
12866   if (ws->kind != TARGET_WAITKIND_STOPPED
12867       || ws->value.sig != GDB_SIGNAL_TRAP)
12868     return 0;
12869
12870   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12871                                  aspace, bp_addr))
12872     return 0;
12873
12874   if (overlay_debugging         /* unmapped overlay section */
12875       && section_is_overlay (bl->section)
12876       && !section_is_mapped (bl->section))
12877     return 0;
12878
12879   return 1;
12880 }
12881
12882 static int
12883 bkpt_resources_needed (const struct bp_location *bl)
12884 {
12885   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12886
12887   return 1;
12888 }
12889
12890 static enum print_stop_action
12891 bkpt_print_it (bpstat bs)
12892 {
12893   struct breakpoint *b;
12894   const struct bp_location *bl;
12895   int bp_temp;
12896   struct ui_out *uiout = current_uiout;
12897
12898   gdb_assert (bs->bp_location_at != NULL);
12899
12900   bl = bs->bp_location_at;
12901   b = bs->breakpoint_at;
12902
12903   bp_temp = b->disposition == disp_del;
12904   if (bl->address != bl->requested_address)
12905     breakpoint_adjustment_warning (bl->requested_address,
12906                                    bl->address,
12907                                    b->number, 1);
12908   annotate_breakpoint (b->number);
12909   if (bp_temp)
12910     ui_out_text (uiout, "\nTemporary breakpoint ");
12911   else
12912     ui_out_text (uiout, "\nBreakpoint ");
12913   if (ui_out_is_mi_like_p (uiout))
12914     {
12915       ui_out_field_string (uiout, "reason",
12916                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12917       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12918     }
12919   ui_out_field_int (uiout, "bkptno", b->number);
12920   ui_out_text (uiout, ", ");
12921
12922   return PRINT_SRC_AND_LOC;
12923 }
12924
12925 static void
12926 bkpt_print_mention (struct breakpoint *b)
12927 {
12928   if (ui_out_is_mi_like_p (current_uiout))
12929     return;
12930
12931   switch (b->type)
12932     {
12933     case bp_breakpoint:
12934     case bp_gnu_ifunc_resolver:
12935       if (b->disposition == disp_del)
12936         printf_filtered (_("Temporary breakpoint"));
12937       else
12938         printf_filtered (_("Breakpoint"));
12939       printf_filtered (_(" %d"), b->number);
12940       if (b->type == bp_gnu_ifunc_resolver)
12941         printf_filtered (_(" at gnu-indirect-function resolver"));
12942       break;
12943     case bp_hardware_breakpoint:
12944       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12945       break;
12946     case bp_dprintf:
12947       printf_filtered (_("Dprintf %d"), b->number);
12948       break;
12949     }
12950
12951   say_where (b);
12952 }
12953
12954 static void
12955 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12956 {
12957   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12958     fprintf_unfiltered (fp, "tbreak");
12959   else if (tp->type == bp_breakpoint)
12960     fprintf_unfiltered (fp, "break");
12961   else if (tp->type == bp_hardware_breakpoint
12962            && tp->disposition == disp_del)
12963     fprintf_unfiltered (fp, "thbreak");
12964   else if (tp->type == bp_hardware_breakpoint)
12965     fprintf_unfiltered (fp, "hbreak");
12966   else
12967     internal_error (__FILE__, __LINE__,
12968                     _("unhandled breakpoint type %d"), (int) tp->type);
12969
12970   fprintf_unfiltered (fp, " %s", tp->addr_string);
12971   print_recreate_thread (tp, fp);
12972 }
12973
12974 static void
12975 bkpt_create_sals_from_address (char **arg,
12976                                struct linespec_result *canonical,
12977                                enum bptype type_wanted,
12978                                char *addr_start, char **copy_arg)
12979 {
12980   create_sals_from_address_default (arg, canonical, type_wanted,
12981                                     addr_start, copy_arg);
12982 }
12983
12984 static void
12985 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12986                              struct linespec_result *canonical,
12987                              struct linespec_sals *lsal,
12988                              char *cond_string,
12989                              char *extra_string,
12990                              enum bptype type_wanted,
12991                              enum bpdisp disposition,
12992                              int thread,
12993                              int task, int ignore_count,
12994                              const struct breakpoint_ops *ops,
12995                              int from_tty, int enabled,
12996                              int internal, unsigned flags)
12997 {
12998   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12999                                   cond_string, extra_string,
13000                                   type_wanted,
13001                                   disposition, thread, task,
13002                                   ignore_count, ops, from_tty,
13003                                   enabled, internal, flags);
13004 }
13005
13006 static void
13007 bkpt_decode_linespec (struct breakpoint *b, char **s,
13008                       struct symtabs_and_lines *sals)
13009 {
13010   decode_linespec_default (b, s, sals);
13011 }
13012
13013 /* Virtual table for internal breakpoints.  */
13014
13015 static void
13016 internal_bkpt_re_set (struct breakpoint *b)
13017 {
13018   switch (b->type)
13019     {
13020       /* Delete overlay event and longjmp master breakpoints; they
13021          will be reset later by breakpoint_re_set.  */
13022     case bp_overlay_event:
13023     case bp_longjmp_master:
13024     case bp_std_terminate_master:
13025     case bp_exception_master:
13026       delete_breakpoint (b);
13027       break;
13028
13029       /* This breakpoint is special, it's set up when the inferior
13030          starts and we really don't want to touch it.  */
13031     case bp_shlib_event:
13032
13033       /* Like bp_shlib_event, this breakpoint type is special.  Once
13034          it is set up, we do not want to touch it.  */
13035     case bp_thread_event:
13036       break;
13037     }
13038 }
13039
13040 static void
13041 internal_bkpt_check_status (bpstat bs)
13042 {
13043   if (bs->breakpoint_at->type == bp_shlib_event)
13044     {
13045       /* If requested, stop when the dynamic linker notifies GDB of
13046          events.  This allows the user to get control and place
13047          breakpoints in initializer routines for dynamically loaded
13048          objects (among other things).  */
13049       bs->stop = stop_on_solib_events;
13050       bs->print = stop_on_solib_events;
13051     }
13052   else
13053     bs->stop = 0;
13054 }
13055
13056 static enum print_stop_action
13057 internal_bkpt_print_it (bpstat bs)
13058 {
13059   struct ui_out *uiout = current_uiout;
13060   struct breakpoint *b;
13061
13062   b = bs->breakpoint_at;
13063
13064   switch (b->type)
13065     {
13066     case bp_shlib_event:
13067       /* Did we stop because the user set the stop_on_solib_events
13068          variable?  (If so, we report this as a generic, "Stopped due
13069          to shlib event" message.) */
13070       print_solib_event (0);
13071       break;
13072
13073     case bp_thread_event:
13074       /* Not sure how we will get here.
13075          GDB should not stop for these breakpoints.  */
13076       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13077       break;
13078
13079     case bp_overlay_event:
13080       /* By analogy with the thread event, GDB should not stop for these.  */
13081       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13082       break;
13083
13084     case bp_longjmp_master:
13085       /* These should never be enabled.  */
13086       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13087       break;
13088
13089     case bp_std_terminate_master:
13090       /* These should never be enabled.  */
13091       printf_filtered (_("std::terminate Master Breakpoint: "
13092                          "gdb should not stop!\n"));
13093       break;
13094
13095     case bp_exception_master:
13096       /* These should never be enabled.  */
13097       printf_filtered (_("Exception Master Breakpoint: "
13098                          "gdb should not stop!\n"));
13099       break;
13100     }
13101
13102   return PRINT_NOTHING;
13103 }
13104
13105 static void
13106 internal_bkpt_print_mention (struct breakpoint *b)
13107 {
13108   /* Nothing to mention.  These breakpoints are internal.  */
13109 }
13110
13111 /* Virtual table for momentary breakpoints  */
13112
13113 static void
13114 momentary_bkpt_re_set (struct breakpoint *b)
13115 {
13116   /* Keep temporary breakpoints, which can be encountered when we step
13117      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13118      Otherwise these should have been blown away via the cleanup chain
13119      or by breakpoint_init_inferior when we rerun the executable.  */
13120 }
13121
13122 static void
13123 momentary_bkpt_check_status (bpstat bs)
13124 {
13125   /* Nothing.  The point of these breakpoints is causing a stop.  */
13126 }
13127
13128 static enum print_stop_action
13129 momentary_bkpt_print_it (bpstat bs)
13130 {
13131   struct ui_out *uiout = current_uiout;
13132
13133   if (ui_out_is_mi_like_p (uiout))
13134     {
13135       struct breakpoint *b = bs->breakpoint_at;
13136
13137       switch (b->type)
13138         {
13139         case bp_finish:
13140           ui_out_field_string
13141             (uiout, "reason",
13142              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13143           break;
13144
13145         case bp_until:
13146           ui_out_field_string
13147             (uiout, "reason",
13148              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13149           break;
13150         }
13151     }
13152
13153   return PRINT_UNKNOWN;
13154 }
13155
13156 static void
13157 momentary_bkpt_print_mention (struct breakpoint *b)
13158 {
13159   /* Nothing to mention.  These breakpoints are internal.  */
13160 }
13161
13162 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13163
13164    It gets cleared already on the removal of the first one of such placed
13165    breakpoints.  This is OK as they get all removed altogether.  */
13166
13167 static void
13168 longjmp_bkpt_dtor (struct breakpoint *self)
13169 {
13170   struct thread_info *tp = find_thread_id (self->thread);
13171
13172   if (tp)
13173     tp->initiating_frame = null_frame_id;
13174
13175   momentary_breakpoint_ops.dtor (self);
13176 }
13177
13178 /* Specific methods for probe breakpoints.  */
13179
13180 static int
13181 bkpt_probe_insert_location (struct bp_location *bl)
13182 {
13183   int v = bkpt_insert_location (bl);
13184
13185   if (v == 0)
13186     {
13187       /* The insertion was successful, now let's set the probe's semaphore
13188          if needed.  */
13189       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13190     }
13191
13192   return v;
13193 }
13194
13195 static int
13196 bkpt_probe_remove_location (struct bp_location *bl)
13197 {
13198   /* Let's clear the semaphore before removing the location.  */
13199   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13200
13201   return bkpt_remove_location (bl);
13202 }
13203
13204 static void
13205 bkpt_probe_create_sals_from_address (char **arg,
13206                                      struct linespec_result *canonical,
13207                                      enum bptype type_wanted,
13208                                      char *addr_start, char **copy_arg)
13209 {
13210   struct linespec_sals lsal;
13211
13212   lsal.sals = parse_probes (arg, canonical);
13213
13214   *copy_arg = xstrdup (canonical->addr_string);
13215   lsal.canonical = xstrdup (*copy_arg);
13216
13217   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13218 }
13219
13220 static void
13221 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13222                             struct symtabs_and_lines *sals)
13223 {
13224   *sals = parse_probes (s, NULL);
13225   if (!sals->sals)
13226     error (_("probe not found"));
13227 }
13228
13229 /* The breakpoint_ops structure to be used in tracepoints.  */
13230
13231 static void
13232 tracepoint_re_set (struct breakpoint *b)
13233 {
13234   breakpoint_re_set_default (b);
13235 }
13236
13237 static int
13238 tracepoint_breakpoint_hit (const struct bp_location *bl,
13239                            struct address_space *aspace, CORE_ADDR bp_addr,
13240                            const struct target_waitstatus *ws)
13241 {
13242   /* By definition, the inferior does not report stops at
13243      tracepoints.  */
13244   return 0;
13245 }
13246
13247 static void
13248 tracepoint_print_one_detail (const struct breakpoint *self,
13249                              struct ui_out *uiout)
13250 {
13251   struct tracepoint *tp = (struct tracepoint *) self;
13252   if (tp->static_trace_marker_id)
13253     {
13254       gdb_assert (self->type == bp_static_tracepoint);
13255
13256       ui_out_text (uiout, "\tmarker id is ");
13257       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13258                            tp->static_trace_marker_id);
13259       ui_out_text (uiout, "\n");
13260     }
13261 }
13262
13263 static void
13264 tracepoint_print_mention (struct breakpoint *b)
13265 {
13266   if (ui_out_is_mi_like_p (current_uiout))
13267     return;
13268
13269   switch (b->type)
13270     {
13271     case bp_tracepoint:
13272       printf_filtered (_("Tracepoint"));
13273       printf_filtered (_(" %d"), b->number);
13274       break;
13275     case bp_fast_tracepoint:
13276       printf_filtered (_("Fast tracepoint"));
13277       printf_filtered (_(" %d"), b->number);
13278       break;
13279     case bp_static_tracepoint:
13280       printf_filtered (_("Static tracepoint"));
13281       printf_filtered (_(" %d"), b->number);
13282       break;
13283     default:
13284       internal_error (__FILE__, __LINE__,
13285                       _("unhandled tracepoint type %d"), (int) b->type);
13286     }
13287
13288   say_where (b);
13289 }
13290
13291 static void
13292 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13293 {
13294   struct tracepoint *tp = (struct tracepoint *) self;
13295
13296   if (self->type == bp_fast_tracepoint)
13297     fprintf_unfiltered (fp, "ftrace");
13298   if (self->type == bp_static_tracepoint)
13299     fprintf_unfiltered (fp, "strace");
13300   else if (self->type == bp_tracepoint)
13301     fprintf_unfiltered (fp, "trace");
13302   else
13303     internal_error (__FILE__, __LINE__,
13304                     _("unhandled tracepoint type %d"), (int) self->type);
13305
13306   fprintf_unfiltered (fp, " %s", self->addr_string);
13307   print_recreate_thread (self, fp);
13308
13309   if (tp->pass_count)
13310     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13311 }
13312
13313 static void
13314 tracepoint_create_sals_from_address (char **arg,
13315                                      struct linespec_result *canonical,
13316                                      enum bptype type_wanted,
13317                                      char *addr_start, char **copy_arg)
13318 {
13319   create_sals_from_address_default (arg, canonical, type_wanted,
13320                                     addr_start, copy_arg);
13321 }
13322
13323 static void
13324 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13325                                    struct linespec_result *canonical,
13326                                    struct linespec_sals *lsal,
13327                                    char *cond_string,
13328                                    char *extra_string,
13329                                    enum bptype type_wanted,
13330                                    enum bpdisp disposition,
13331                                    int thread,
13332                                    int task, int ignore_count,
13333                                    const struct breakpoint_ops *ops,
13334                                    int from_tty, int enabled,
13335                                    int internal, unsigned flags)
13336 {
13337   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13338                                   cond_string, extra_string,
13339                                   type_wanted,
13340                                   disposition, thread, task,
13341                                   ignore_count, ops, from_tty,
13342                                   enabled, internal, flags);
13343 }
13344
13345 static void
13346 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13347                             struct symtabs_and_lines *sals)
13348 {
13349   decode_linespec_default (b, s, sals);
13350 }
13351
13352 struct breakpoint_ops tracepoint_breakpoint_ops;
13353
13354 /* The breakpoint_ops structure to be use on tracepoints placed in a
13355    static probe.  */
13356
13357 static void
13358 tracepoint_probe_create_sals_from_address (char **arg,
13359                                            struct linespec_result *canonical,
13360                                            enum bptype type_wanted,
13361                                            char *addr_start, char **copy_arg)
13362 {
13363   /* We use the same method for breakpoint on probes.  */
13364   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13365                                        addr_start, copy_arg);
13366 }
13367
13368 static void
13369 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13370                                   struct symtabs_and_lines *sals)
13371 {
13372   /* We use the same method for breakpoint on probes.  */
13373   bkpt_probe_decode_linespec (b, s, sals);
13374 }
13375
13376 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13377
13378 /* The breakpoint_ops structure to be used on static tracepoints with
13379    markers (`-m').  */
13380
13381 static void
13382 strace_marker_create_sals_from_address (char **arg,
13383                                         struct linespec_result *canonical,
13384                                         enum bptype type_wanted,
13385                                         char *addr_start, char **copy_arg)
13386 {
13387   struct linespec_sals lsal;
13388
13389   lsal.sals = decode_static_tracepoint_spec (arg);
13390
13391   *copy_arg = savestring (addr_start, *arg - addr_start);
13392
13393   canonical->addr_string = xstrdup (*copy_arg);
13394   lsal.canonical = xstrdup (*copy_arg);
13395   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13396 }
13397
13398 static void
13399 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13400                                       struct linespec_result *canonical,
13401                                       struct linespec_sals *lsal,
13402                                       char *cond_string,
13403                                       char *extra_string,
13404                                       enum bptype type_wanted,
13405                                       enum bpdisp disposition,
13406                                       int thread,
13407                                       int task, int ignore_count,
13408                                       const struct breakpoint_ops *ops,
13409                                       int from_tty, int enabled,
13410                                       int internal, unsigned flags)
13411 {
13412   int i;
13413
13414   /* If the user is creating a static tracepoint by marker id
13415      (strace -m MARKER_ID), then store the sals index, so that
13416      breakpoint_re_set can try to match up which of the newly
13417      found markers corresponds to this one, and, don't try to
13418      expand multiple locations for each sal, given than SALS
13419      already should contain all sals for MARKER_ID.  */
13420
13421   for (i = 0; i < lsal->sals.nelts; ++i)
13422     {
13423       struct symtabs_and_lines expanded;
13424       struct tracepoint *tp;
13425       struct cleanup *old_chain;
13426       char *addr_string;
13427
13428       expanded.nelts = 1;
13429       expanded.sals = &lsal->sals.sals[i];
13430
13431       addr_string = xstrdup (canonical->addr_string);
13432       old_chain = make_cleanup (xfree, addr_string);
13433
13434       tp = XCNEW (struct tracepoint);
13435       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13436                            addr_string, NULL,
13437                            cond_string, extra_string,
13438                            type_wanted, disposition,
13439                            thread, task, ignore_count, ops,
13440                            from_tty, enabled, internal, flags,
13441                            canonical->special_display);
13442       /* Given that its possible to have multiple markers with
13443          the same string id, if the user is creating a static
13444          tracepoint by marker id ("strace -m MARKER_ID"), then
13445          store the sals index, so that breakpoint_re_set can
13446          try to match up which of the newly found markers
13447          corresponds to this one  */
13448       tp->static_trace_marker_id_idx = i;
13449
13450       install_breakpoint (internal, &tp->base, 0);
13451
13452       discard_cleanups (old_chain);
13453     }
13454 }
13455
13456 static void
13457 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13458                                struct symtabs_and_lines *sals)
13459 {
13460   struct tracepoint *tp = (struct tracepoint *) b;
13461
13462   *sals = decode_static_tracepoint_spec (s);
13463   if (sals->nelts > tp->static_trace_marker_id_idx)
13464     {
13465       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13466       sals->nelts = 1;
13467     }
13468   else
13469     error (_("marker %s not found"), tp->static_trace_marker_id);
13470 }
13471
13472 static struct breakpoint_ops strace_marker_breakpoint_ops;
13473
13474 static int
13475 strace_marker_p (struct breakpoint *b)
13476 {
13477   return b->ops == &strace_marker_breakpoint_ops;
13478 }
13479
13480 /* Delete a breakpoint and clean up all traces of it in the data
13481    structures.  */
13482
13483 void
13484 delete_breakpoint (struct breakpoint *bpt)
13485 {
13486   struct breakpoint *b;
13487
13488   gdb_assert (bpt != NULL);
13489
13490   /* Has this bp already been deleted?  This can happen because
13491      multiple lists can hold pointers to bp's.  bpstat lists are
13492      especial culprits.
13493
13494      One example of this happening is a watchpoint's scope bp.  When
13495      the scope bp triggers, we notice that the watchpoint is out of
13496      scope, and delete it.  We also delete its scope bp.  But the
13497      scope bp is marked "auto-deleting", and is already on a bpstat.
13498      That bpstat is then checked for auto-deleting bp's, which are
13499      deleted.
13500
13501      A real solution to this problem might involve reference counts in
13502      bp's, and/or giving them pointers back to their referencing
13503      bpstat's, and teaching delete_breakpoint to only free a bp's
13504      storage when no more references were extent.  A cheaper bandaid
13505      was chosen.  */
13506   if (bpt->type == bp_none)
13507     return;
13508
13509   /* At least avoid this stale reference until the reference counting
13510      of breakpoints gets resolved.  */
13511   if (bpt->related_breakpoint != bpt)
13512     {
13513       struct breakpoint *related;
13514       struct watchpoint *w;
13515
13516       if (bpt->type == bp_watchpoint_scope)
13517         w = (struct watchpoint *) bpt->related_breakpoint;
13518       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13519         w = (struct watchpoint *) bpt;
13520       else
13521         w = NULL;
13522       if (w != NULL)
13523         watchpoint_del_at_next_stop (w);
13524
13525       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13526       for (related = bpt; related->related_breakpoint != bpt;
13527            related = related->related_breakpoint);
13528       related->related_breakpoint = bpt->related_breakpoint;
13529       bpt->related_breakpoint = bpt;
13530     }
13531
13532   /* watch_command_1 creates a watchpoint but only sets its number if
13533      update_watchpoint succeeds in creating its bp_locations.  If there's
13534      a problem in that process, we'll be asked to delete the half-created
13535      watchpoint.  In that case, don't announce the deletion.  */
13536   if (bpt->number)
13537     observer_notify_breakpoint_deleted (bpt);
13538
13539   if (breakpoint_chain == bpt)
13540     breakpoint_chain = bpt->next;
13541
13542   ALL_BREAKPOINTS (b)
13543     if (b->next == bpt)
13544     {
13545       b->next = bpt->next;
13546       break;
13547     }
13548
13549   /* Be sure no bpstat's are pointing at the breakpoint after it's
13550      been freed.  */
13551   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13552      in all threads for now.  Note that we cannot just remove bpstats
13553      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13554      commands are associated with the bpstat; if we remove it here,
13555      then the later call to bpstat_do_actions (&stop_bpstat); in
13556      event-top.c won't do anything, and temporary breakpoints with
13557      commands won't work.  */
13558
13559   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13560
13561   /* Now that breakpoint is removed from breakpoint list, update the
13562      global location list.  This will remove locations that used to
13563      belong to this breakpoint.  Do this before freeing the breakpoint
13564      itself, since remove_breakpoint looks at location's owner.  It
13565      might be better design to have location completely
13566      self-contained, but it's not the case now.  */
13567   update_global_location_list (0);
13568
13569   bpt->ops->dtor (bpt);
13570   /* On the chance that someone will soon try again to delete this
13571      same bp, we mark it as deleted before freeing its storage.  */
13572   bpt->type = bp_none;
13573   xfree (bpt);
13574 }
13575
13576 static void
13577 do_delete_breakpoint_cleanup (void *b)
13578 {
13579   delete_breakpoint (b);
13580 }
13581
13582 struct cleanup *
13583 make_cleanup_delete_breakpoint (struct breakpoint *b)
13584 {
13585   return make_cleanup (do_delete_breakpoint_cleanup, b);
13586 }
13587
13588 /* Iterator function to call a user-provided callback function once
13589    for each of B and its related breakpoints.  */
13590
13591 static void
13592 iterate_over_related_breakpoints (struct breakpoint *b,
13593                                   void (*function) (struct breakpoint *,
13594                                                     void *),
13595                                   void *data)
13596 {
13597   struct breakpoint *related;
13598
13599   related = b;
13600   do
13601     {
13602       struct breakpoint *next;
13603
13604       /* FUNCTION may delete RELATED.  */
13605       next = related->related_breakpoint;
13606
13607       if (next == related)
13608         {
13609           /* RELATED is the last ring entry.  */
13610           function (related, data);
13611
13612           /* FUNCTION may have deleted it, so we'd never reach back to
13613              B.  There's nothing left to do anyway, so just break
13614              out.  */
13615           break;
13616         }
13617       else
13618         function (related, data);
13619
13620       related = next;
13621     }
13622   while (related != b);
13623 }
13624
13625 static void
13626 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13627 {
13628   delete_breakpoint (b);
13629 }
13630
13631 /* A callback for map_breakpoint_numbers that calls
13632    delete_breakpoint.  */
13633
13634 static void
13635 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13636 {
13637   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13638 }
13639
13640 void
13641 delete_command (char *arg, int from_tty)
13642 {
13643   struct breakpoint *b, *b_tmp;
13644
13645   dont_repeat ();
13646
13647   if (arg == 0)
13648     {
13649       int breaks_to_delete = 0;
13650
13651       /* Delete all breakpoints if no argument.  Do not delete
13652          internal breakpoints, these have to be deleted with an
13653          explicit breakpoint number argument.  */
13654       ALL_BREAKPOINTS (b)
13655         if (user_breakpoint_p (b))
13656           {
13657             breaks_to_delete = 1;
13658             break;
13659           }
13660
13661       /* Ask user only if there are some breakpoints to delete.  */
13662       if (!from_tty
13663           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13664         {
13665           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13666             if (user_breakpoint_p (b))
13667               delete_breakpoint (b);
13668         }
13669     }
13670   else
13671     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13672 }
13673
13674 static int
13675 all_locations_are_pending (struct bp_location *loc)
13676 {
13677   for (; loc; loc = loc->next)
13678     if (!loc->shlib_disabled
13679         && !loc->pspace->executing_startup)
13680       return 0;
13681   return 1;
13682 }
13683
13684 /* Subroutine of update_breakpoint_locations to simplify it.
13685    Return non-zero if multiple fns in list LOC have the same name.
13686    Null names are ignored.  */
13687
13688 static int
13689 ambiguous_names_p (struct bp_location *loc)
13690 {
13691   struct bp_location *l;
13692   htab_t htab = htab_create_alloc (13, htab_hash_string,
13693                                    (int (*) (const void *, 
13694                                              const void *)) streq,
13695                                    NULL, xcalloc, xfree);
13696
13697   for (l = loc; l != NULL; l = l->next)
13698     {
13699       const char **slot;
13700       const char *name = l->function_name;
13701
13702       /* Allow for some names to be NULL, ignore them.  */
13703       if (name == NULL)
13704         continue;
13705
13706       slot = (const char **) htab_find_slot (htab, (const void *) name,
13707                                              INSERT);
13708       /* NOTE: We can assume slot != NULL here because xcalloc never
13709          returns NULL.  */
13710       if (*slot != NULL)
13711         {
13712           htab_delete (htab);
13713           return 1;
13714         }
13715       *slot = name;
13716     }
13717
13718   htab_delete (htab);
13719   return 0;
13720 }
13721
13722 /* When symbols change, it probably means the sources changed as well,
13723    and it might mean the static tracepoint markers are no longer at
13724    the same address or line numbers they used to be at last we
13725    checked.  Losing your static tracepoints whenever you rebuild is
13726    undesirable.  This function tries to resync/rematch gdb static
13727    tracepoints with the markers on the target, for static tracepoints
13728    that have not been set by marker id.  Static tracepoint that have
13729    been set by marker id are reset by marker id in breakpoint_re_set.
13730    The heuristic is:
13731
13732    1) For a tracepoint set at a specific address, look for a marker at
13733    the old PC.  If one is found there, assume to be the same marker.
13734    If the name / string id of the marker found is different from the
13735    previous known name, assume that means the user renamed the marker
13736    in the sources, and output a warning.
13737
13738    2) For a tracepoint set at a given line number, look for a marker
13739    at the new address of the old line number.  If one is found there,
13740    assume to be the same marker.  If the name / string id of the
13741    marker found is different from the previous known name, assume that
13742    means the user renamed the marker in the sources, and output a
13743    warning.
13744
13745    3) If a marker is no longer found at the same address or line, it
13746    may mean the marker no longer exists.  But it may also just mean
13747    the code changed a bit.  Maybe the user added a few lines of code
13748    that made the marker move up or down (in line number terms).  Ask
13749    the target for info about the marker with the string id as we knew
13750    it.  If found, update line number and address in the matching
13751    static tracepoint.  This will get confused if there's more than one
13752    marker with the same ID (possible in UST, although unadvised
13753    precisely because it confuses tools).  */
13754
13755 static struct symtab_and_line
13756 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13757 {
13758   struct tracepoint *tp = (struct tracepoint *) b;
13759   struct static_tracepoint_marker marker;
13760   CORE_ADDR pc;
13761
13762   pc = sal.pc;
13763   if (sal.line)
13764     find_line_pc (sal.symtab, sal.line, &pc);
13765
13766   if (target_static_tracepoint_marker_at (pc, &marker))
13767     {
13768       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13769         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13770                  b->number,
13771                  tp->static_trace_marker_id, marker.str_id);
13772
13773       xfree (tp->static_trace_marker_id);
13774       tp->static_trace_marker_id = xstrdup (marker.str_id);
13775       release_static_tracepoint_marker (&marker);
13776
13777       return sal;
13778     }
13779
13780   /* Old marker wasn't found on target at lineno.  Try looking it up
13781      by string ID.  */
13782   if (!sal.explicit_pc
13783       && sal.line != 0
13784       && sal.symtab != NULL
13785       && tp->static_trace_marker_id != NULL)
13786     {
13787       VEC(static_tracepoint_marker_p) *markers;
13788
13789       markers
13790         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13791
13792       if (!VEC_empty(static_tracepoint_marker_p, markers))
13793         {
13794           struct symtab_and_line sal2;
13795           struct symbol *sym;
13796           struct static_tracepoint_marker *tpmarker;
13797           struct ui_out *uiout = current_uiout;
13798
13799           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13800
13801           xfree (tp->static_trace_marker_id);
13802           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13803
13804           warning (_("marker for static tracepoint %d (%s) not "
13805                      "found at previous line number"),
13806                    b->number, tp->static_trace_marker_id);
13807
13808           init_sal (&sal2);
13809
13810           sal2.pc = tpmarker->address;
13811
13812           sal2 = find_pc_line (tpmarker->address, 0);
13813           sym = find_pc_sect_function (tpmarker->address, NULL);
13814           ui_out_text (uiout, "Now in ");
13815           if (sym)
13816             {
13817               ui_out_field_string (uiout, "func",
13818                                    SYMBOL_PRINT_NAME (sym));
13819               ui_out_text (uiout, " at ");
13820             }
13821           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13822           ui_out_text (uiout, ":");
13823
13824           if (ui_out_is_mi_like_p (uiout))
13825             {
13826               char *fullname = symtab_to_fullname (sal2.symtab);
13827
13828               if (fullname)
13829                 ui_out_field_string (uiout, "fullname", fullname);
13830             }
13831
13832           ui_out_field_int (uiout, "line", sal2.line);
13833           ui_out_text (uiout, "\n");
13834
13835           b->loc->line_number = sal2.line;
13836
13837           xfree (b->loc->source_file);
13838           if (sym)
13839             b->loc->source_file = xstrdup (sal2.symtab->filename);
13840           else
13841             b->loc->source_file = NULL;
13842
13843           xfree (b->addr_string);
13844           b->addr_string = xstrprintf ("%s:%d",
13845                                        sal2.symtab->filename,
13846                                        b->loc->line_number);
13847
13848           /* Might be nice to check if function changed, and warn if
13849              so.  */
13850
13851           release_static_tracepoint_marker (tpmarker);
13852         }
13853     }
13854   return sal;
13855 }
13856
13857 /* Returns 1 iff locations A and B are sufficiently same that
13858    we don't need to report breakpoint as changed.  */
13859
13860 static int
13861 locations_are_equal (struct bp_location *a, struct bp_location *b)
13862 {
13863   while (a && b)
13864     {
13865       if (a->address != b->address)
13866         return 0;
13867
13868       if (a->shlib_disabled != b->shlib_disabled)
13869         return 0;
13870
13871       if (a->enabled != b->enabled)
13872         return 0;
13873
13874       a = a->next;
13875       b = b->next;
13876     }
13877
13878   if ((a == NULL) != (b == NULL))
13879     return 0;
13880
13881   return 1;
13882 }
13883
13884 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13885    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13886    a ranged breakpoint.  */
13887
13888 void
13889 update_breakpoint_locations (struct breakpoint *b,
13890                              struct symtabs_and_lines sals,
13891                              struct symtabs_and_lines sals_end)
13892 {
13893   int i;
13894   struct bp_location *existing_locations = b->loc;
13895
13896   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13897     {
13898       /* Ranged breakpoints have only one start location and one end
13899          location.  */
13900       b->enable_state = bp_disabled;
13901       update_global_location_list (1);
13902       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13903                            "multiple locations found\n"),
13904                          b->number);
13905       return;
13906     }
13907
13908   /* If there's no new locations, and all existing locations are
13909      pending, don't do anything.  This optimizes the common case where
13910      all locations are in the same shared library, that was unloaded.
13911      We'd like to retain the location, so that when the library is
13912      loaded again, we don't loose the enabled/disabled status of the
13913      individual locations.  */
13914   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13915     return;
13916
13917   b->loc = NULL;
13918
13919   for (i = 0; i < sals.nelts; ++i)
13920     {
13921       struct bp_location *new_loc;
13922
13923       switch_to_program_space_and_thread (sals.sals[i].pspace);
13924
13925       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13926
13927       /* Reparse conditions, they might contain references to the
13928          old symtab.  */
13929       if (b->cond_string != NULL)
13930         {
13931           char *s;
13932           volatile struct gdb_exception e;
13933
13934           s = b->cond_string;
13935           TRY_CATCH (e, RETURN_MASK_ERROR)
13936             {
13937               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13938                                            block_for_pc (sals.sals[i].pc), 
13939                                            0);
13940             }
13941           if (e.reason < 0)
13942             {
13943               warning (_("failed to reevaluate condition "
13944                          "for breakpoint %d: %s"), 
13945                        b->number, e.message);
13946               new_loc->enabled = 0;
13947             }
13948         }
13949
13950       if (sals_end.nelts)
13951         {
13952           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13953
13954           new_loc->length = end - sals.sals[0].pc + 1;
13955         }
13956     }
13957
13958   /* Update locations of permanent breakpoints.  */
13959   if (b->enable_state == bp_permanent)
13960     make_breakpoint_permanent (b);
13961
13962   /* If possible, carry over 'disable' status from existing
13963      breakpoints.  */
13964   {
13965     struct bp_location *e = existing_locations;
13966     /* If there are multiple breakpoints with the same function name,
13967        e.g. for inline functions, comparing function names won't work.
13968        Instead compare pc addresses; this is just a heuristic as things
13969        may have moved, but in practice it gives the correct answer
13970        often enough until a better solution is found.  */
13971     int have_ambiguous_names = ambiguous_names_p (b->loc);
13972
13973     for (; e; e = e->next)
13974       {
13975         if (!e->enabled && e->function_name)
13976           {
13977             struct bp_location *l = b->loc;
13978             if (have_ambiguous_names)
13979               {
13980                 for (; l; l = l->next)
13981                   if (breakpoint_locations_match (e, l))
13982                     {
13983                       l->enabled = 0;
13984                       break;
13985                     }
13986               }
13987             else
13988               {
13989                 for (; l; l = l->next)
13990                   if (l->function_name
13991                       && strcmp (e->function_name, l->function_name) == 0)
13992                     {
13993                       l->enabled = 0;
13994                       break;
13995                     }
13996               }
13997           }
13998       }
13999   }
14000
14001   if (!locations_are_equal (existing_locations, b->loc))
14002     observer_notify_breakpoint_modified (b);
14003
14004   update_global_location_list (1);
14005 }
14006
14007 /* Find the SaL locations corresponding to the given ADDR_STRING.
14008    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14009
14010 static struct symtabs_and_lines
14011 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14012 {
14013   char *s;
14014   struct symtabs_and_lines sals = {0};
14015   volatile struct gdb_exception e;
14016
14017   gdb_assert (b->ops != NULL);
14018   s = addr_string;
14019
14020   TRY_CATCH (e, RETURN_MASK_ERROR)
14021     {
14022       b->ops->decode_linespec (b, &s, &sals);
14023     }
14024   if (e.reason < 0)
14025     {
14026       int not_found_and_ok = 0;
14027       /* For pending breakpoints, it's expected that parsing will
14028          fail until the right shared library is loaded.  User has
14029          already told to create pending breakpoints and don't need
14030          extra messages.  If breakpoint is in bp_shlib_disabled
14031          state, then user already saw the message about that
14032          breakpoint being disabled, and don't want to see more
14033          errors.  */
14034       if (e.error == NOT_FOUND_ERROR
14035           && (b->condition_not_parsed 
14036               || (b->loc && b->loc->shlib_disabled)
14037               || (b->loc && b->loc->pspace->executing_startup)
14038               || b->enable_state == bp_disabled))
14039         not_found_and_ok = 1;
14040
14041       if (!not_found_and_ok)
14042         {
14043           /* We surely don't want to warn about the same breakpoint
14044              10 times.  One solution, implemented here, is disable
14045              the breakpoint on error.  Another solution would be to
14046              have separate 'warning emitted' flag.  Since this
14047              happens only when a binary has changed, I don't know
14048              which approach is better.  */
14049           b->enable_state = bp_disabled;
14050           throw_exception (e);
14051         }
14052     }
14053
14054   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14055     {
14056       int i;
14057
14058       for (i = 0; i < sals.nelts; ++i)
14059         resolve_sal_pc (&sals.sals[i]);
14060       if (b->condition_not_parsed && s && s[0])
14061         {
14062           char *cond_string, *extra_string;
14063           int thread, task;
14064
14065           find_condition_and_thread (s, sals.sals[0].pc,
14066                                      &cond_string, &thread, &task,
14067                                      &extra_string);
14068           if (cond_string)
14069             b->cond_string = cond_string;
14070           b->thread = thread;
14071           b->task = task;
14072           if (extra_string)
14073             b->extra_string = extra_string;
14074           b->condition_not_parsed = 0;
14075         }
14076
14077       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14078         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14079
14080       *found = 1;
14081     }
14082   else
14083     *found = 0;
14084
14085   return sals;
14086 }
14087
14088 /* The default re_set method, for typical hardware or software
14089    breakpoints.  Reevaluate the breakpoint and recreate its
14090    locations.  */
14091
14092 static void
14093 breakpoint_re_set_default (struct breakpoint *b)
14094 {
14095   int found;
14096   struct symtabs_and_lines sals, sals_end;
14097   struct symtabs_and_lines expanded = {0};
14098   struct symtabs_and_lines expanded_end = {0};
14099
14100   sals = addr_string_to_sals (b, b->addr_string, &found);
14101   if (found)
14102     {
14103       make_cleanup (xfree, sals.sals);
14104       expanded = sals;
14105     }
14106
14107   if (b->addr_string_range_end)
14108     {
14109       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14110       if (found)
14111         {
14112           make_cleanup (xfree, sals_end.sals);
14113           expanded_end = sals_end;
14114         }
14115     }
14116
14117   update_breakpoint_locations (b, expanded, expanded_end);
14118 }
14119
14120 /* Default method for creating SALs from an address string.  It basically
14121    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14122
14123 static void
14124 create_sals_from_address_default (char **arg,
14125                                   struct linespec_result *canonical,
14126                                   enum bptype type_wanted,
14127                                   char *addr_start, char **copy_arg)
14128 {
14129   parse_breakpoint_sals (arg, canonical);
14130 }
14131
14132 /* Call create_breakpoints_sal for the given arguments.  This is the default
14133    function for the `create_breakpoints_sal' method of
14134    breakpoint_ops.  */
14135
14136 static void
14137 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14138                                 struct linespec_result *canonical,
14139                                 struct linespec_sals *lsal,
14140                                 char *cond_string,
14141                                 char *extra_string,
14142                                 enum bptype type_wanted,
14143                                 enum bpdisp disposition,
14144                                 int thread,
14145                                 int task, int ignore_count,
14146                                 const struct breakpoint_ops *ops,
14147                                 int from_tty, int enabled,
14148                                 int internal, unsigned flags)
14149 {
14150   create_breakpoints_sal (gdbarch, canonical, cond_string,
14151                           extra_string,
14152                           type_wanted, disposition,
14153                           thread, task, ignore_count, ops, from_tty,
14154                           enabled, internal, flags);
14155 }
14156
14157 /* Decode the line represented by S by calling decode_line_full.  This is the
14158    default function for the `decode_linespec' method of breakpoint_ops.  */
14159
14160 static void
14161 decode_linespec_default (struct breakpoint *b, char **s,
14162                          struct symtabs_and_lines *sals)
14163 {
14164   struct linespec_result canonical;
14165
14166   init_linespec_result (&canonical);
14167   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14168                     (struct symtab *) NULL, 0,
14169                     &canonical, multiple_symbols_all,
14170                     b->filter);
14171
14172   /* We should get 0 or 1 resulting SALs.  */
14173   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14174
14175   if (VEC_length (linespec_sals, canonical.sals) > 0)
14176     {
14177       struct linespec_sals *lsal;
14178
14179       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14180       *sals = lsal->sals;
14181       /* Arrange it so the destructor does not free the
14182          contents.  */
14183       lsal->sals.sals = NULL;
14184     }
14185
14186   destroy_linespec_result (&canonical);
14187 }
14188
14189 /* Prepare the global context for a re-set of breakpoint B.  */
14190
14191 static struct cleanup *
14192 prepare_re_set_context (struct breakpoint *b)
14193 {
14194   struct cleanup *cleanups;
14195
14196   input_radix = b->input_radix;
14197   cleanups = save_current_space_and_thread ();
14198   if (b->pspace != NULL)
14199     switch_to_program_space_and_thread (b->pspace);
14200   set_language (b->language);
14201
14202   return cleanups;
14203 }
14204
14205 /* Reset a breakpoint given it's struct breakpoint * BINT.
14206    The value we return ends up being the return value from catch_errors.
14207    Unused in this case.  */
14208
14209 static int
14210 breakpoint_re_set_one (void *bint)
14211 {
14212   /* Get past catch_errs.  */
14213   struct breakpoint *b = (struct breakpoint *) bint;
14214   struct cleanup *cleanups;
14215
14216   cleanups = prepare_re_set_context (b);
14217   b->ops->re_set (b);
14218   do_cleanups (cleanups);
14219   return 0;
14220 }
14221
14222 /* Re-set all breakpoints after symbols have been re-loaded.  */
14223 void
14224 breakpoint_re_set (void)
14225 {
14226   struct breakpoint *b, *b_tmp;
14227   enum language save_language;
14228   int save_input_radix;
14229   struct cleanup *old_chain;
14230
14231   save_language = current_language->la_language;
14232   save_input_radix = input_radix;
14233   old_chain = save_current_program_space ();
14234
14235   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14236   {
14237     /* Format possible error msg.  */
14238     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14239                                 b->number);
14240     struct cleanup *cleanups = make_cleanup (xfree, message);
14241     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14242     do_cleanups (cleanups);
14243   }
14244   set_language (save_language);
14245   input_radix = save_input_radix;
14246
14247   jit_breakpoint_re_set ();
14248
14249   do_cleanups (old_chain);
14250
14251   create_overlay_event_breakpoint ();
14252   create_longjmp_master_breakpoint ();
14253   create_std_terminate_master_breakpoint ();
14254   create_exception_master_breakpoint ();
14255
14256   /* While we're at it, reset the skip list too.  */
14257   skip_re_set ();
14258 }
14259 \f
14260 /* Reset the thread number of this breakpoint:
14261
14262    - If the breakpoint is for all threads, leave it as-is.
14263    - Else, reset it to the current thread for inferior_ptid.  */
14264 void
14265 breakpoint_re_set_thread (struct breakpoint *b)
14266 {
14267   if (b->thread != -1)
14268     {
14269       if (in_thread_list (inferior_ptid))
14270         b->thread = pid_to_thread_id (inferior_ptid);
14271
14272       /* We're being called after following a fork.  The new fork is
14273          selected as current, and unless this was a vfork will have a
14274          different program space from the original thread.  Reset that
14275          as well.  */
14276       b->loc->pspace = current_program_space;
14277     }
14278 }
14279
14280 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14281    If from_tty is nonzero, it prints a message to that effect,
14282    which ends with a period (no newline).  */
14283
14284 void
14285 set_ignore_count (int bptnum, int count, int from_tty)
14286 {
14287   struct breakpoint *b;
14288
14289   if (count < 0)
14290     count = 0;
14291
14292   ALL_BREAKPOINTS (b)
14293     if (b->number == bptnum)
14294     {
14295       if (is_tracepoint (b))
14296         {
14297           if (from_tty && count != 0)
14298             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14299                              bptnum);
14300           return;
14301         }
14302       
14303       b->ignore_count = count;
14304       if (from_tty)
14305         {
14306           if (count == 0)
14307             printf_filtered (_("Will stop next time "
14308                                "breakpoint %d is reached."),
14309                              bptnum);
14310           else if (count == 1)
14311             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14312                              bptnum);
14313           else
14314             printf_filtered (_("Will ignore next %d "
14315                                "crossings of breakpoint %d."),
14316                              count, bptnum);
14317         }
14318       breakpoints_changed ();
14319       observer_notify_breakpoint_modified (b);
14320       return;
14321     }
14322
14323   error (_("No breakpoint number %d."), bptnum);
14324 }
14325
14326 /* Command to set ignore-count of breakpoint N to COUNT.  */
14327
14328 static void
14329 ignore_command (char *args, int from_tty)
14330 {
14331   char *p = args;
14332   int num;
14333
14334   if (p == 0)
14335     error_no_arg (_("a breakpoint number"));
14336
14337   num = get_number (&p);
14338   if (num == 0)
14339     error (_("bad breakpoint number: '%s'"), args);
14340   if (*p == 0)
14341     error (_("Second argument (specified ignore-count) is missing."));
14342
14343   set_ignore_count (num,
14344                     longest_to_int (value_as_long (parse_and_eval (p))),
14345                     from_tty);
14346   if (from_tty)
14347     printf_filtered ("\n");
14348 }
14349 \f
14350 /* Call FUNCTION on each of the breakpoints
14351    whose numbers are given in ARGS.  */
14352
14353 static void
14354 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14355                                                       void *),
14356                         void *data)
14357 {
14358   int num;
14359   struct breakpoint *b, *tmp;
14360   int match;
14361   struct get_number_or_range_state state;
14362
14363   if (args == 0)
14364     error_no_arg (_("one or more breakpoint numbers"));
14365
14366   init_number_or_range (&state, args);
14367
14368   while (!state.finished)
14369     {
14370       char *p = state.string;
14371
14372       match = 0;
14373
14374       num = get_number_or_range (&state);
14375       if (num == 0)
14376         {
14377           warning (_("bad breakpoint number at or near '%s'"), p);
14378         }
14379       else
14380         {
14381           ALL_BREAKPOINTS_SAFE (b, tmp)
14382             if (b->number == num)
14383               {
14384                 match = 1;
14385                 function (b, data);
14386                 break;
14387               }
14388           if (match == 0)
14389             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14390         }
14391     }
14392 }
14393
14394 static struct bp_location *
14395 find_location_by_number (char *number)
14396 {
14397   char *dot = strchr (number, '.');
14398   char *p1;
14399   int bp_num;
14400   int loc_num;
14401   struct breakpoint *b;
14402   struct bp_location *loc;  
14403
14404   *dot = '\0';
14405
14406   p1 = number;
14407   bp_num = get_number (&p1);
14408   if (bp_num == 0)
14409     error (_("Bad breakpoint number '%s'"), number);
14410
14411   ALL_BREAKPOINTS (b)
14412     if (b->number == bp_num)
14413       {
14414         break;
14415       }
14416
14417   if (!b || b->number != bp_num)
14418     error (_("Bad breakpoint number '%s'"), number);
14419   
14420   p1 = dot+1;
14421   loc_num = get_number (&p1);
14422   if (loc_num == 0)
14423     error (_("Bad breakpoint location number '%s'"), number);
14424
14425   --loc_num;
14426   loc = b->loc;
14427   for (;loc_num && loc; --loc_num, loc = loc->next)
14428     ;
14429   if (!loc)
14430     error (_("Bad breakpoint location number '%s'"), dot+1);
14431     
14432   return loc;  
14433 }
14434
14435
14436 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14437    If from_tty is nonzero, it prints a message to that effect,
14438    which ends with a period (no newline).  */
14439
14440 void
14441 disable_breakpoint (struct breakpoint *bpt)
14442 {
14443   /* Never disable a watchpoint scope breakpoint; we want to
14444      hit them when we leave scope so we can delete both the
14445      watchpoint and its scope breakpoint at that time.  */
14446   if (bpt->type == bp_watchpoint_scope)
14447     return;
14448
14449   /* You can't disable permanent breakpoints.  */
14450   if (bpt->enable_state == bp_permanent)
14451     return;
14452
14453   bpt->enable_state = bp_disabled;
14454
14455   /* Mark breakpoint locations modified.  */
14456   mark_breakpoint_modified (bpt);
14457
14458   if (target_supports_enable_disable_tracepoint ()
14459       && current_trace_status ()->running && is_tracepoint (bpt))
14460     {
14461       struct bp_location *location;
14462      
14463       for (location = bpt->loc; location; location = location->next)
14464         target_disable_tracepoint (location);
14465     }
14466
14467   update_global_location_list (0);
14468
14469   observer_notify_breakpoint_modified (bpt);
14470 }
14471
14472 /* A callback for iterate_over_related_breakpoints.  */
14473
14474 static void
14475 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14476 {
14477   disable_breakpoint (b);
14478 }
14479
14480 /* A callback for map_breakpoint_numbers that calls
14481    disable_breakpoint.  */
14482
14483 static void
14484 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14485 {
14486   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14487 }
14488
14489 static void
14490 disable_command (char *args, int from_tty)
14491 {
14492   if (args == 0)
14493     {
14494       struct breakpoint *bpt;
14495
14496       ALL_BREAKPOINTS (bpt)
14497         if (user_breakpoint_p (bpt))
14498           disable_breakpoint (bpt);
14499     }
14500   else if (strchr (args, '.'))
14501     {
14502       struct bp_location *loc = find_location_by_number (args);
14503       if (loc)
14504         {
14505           if (loc->enabled)
14506             {
14507               loc->enabled = 0;
14508               mark_breakpoint_location_modified (loc);
14509             }
14510           if (target_supports_enable_disable_tracepoint ()
14511               && current_trace_status ()->running && loc->owner
14512               && is_tracepoint (loc->owner))
14513             target_disable_tracepoint (loc);
14514         }
14515       update_global_location_list (0);
14516     }
14517   else
14518     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14519 }
14520
14521 static void
14522 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14523                         int count)
14524 {
14525   int target_resources_ok;
14526
14527   if (bpt->type == bp_hardware_breakpoint)
14528     {
14529       int i;
14530       i = hw_breakpoint_used_count ();
14531       target_resources_ok = 
14532         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14533                                             i + 1, 0);
14534       if (target_resources_ok == 0)
14535         error (_("No hardware breakpoint support in the target."));
14536       else if (target_resources_ok < 0)
14537         error (_("Hardware breakpoints used exceeds limit."));
14538     }
14539
14540   if (is_watchpoint (bpt))
14541     {
14542       /* Initialize it just to avoid a GCC false warning.  */
14543       enum enable_state orig_enable_state = 0;
14544       volatile struct gdb_exception e;
14545
14546       TRY_CATCH (e, RETURN_MASK_ALL)
14547         {
14548           struct watchpoint *w = (struct watchpoint *) bpt;
14549
14550           orig_enable_state = bpt->enable_state;
14551           bpt->enable_state = bp_enabled;
14552           update_watchpoint (w, 1 /* reparse */);
14553         }
14554       if (e.reason < 0)
14555         {
14556           bpt->enable_state = orig_enable_state;
14557           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14558                              bpt->number);
14559           return;
14560         }
14561     }
14562
14563   if (bpt->enable_state != bp_permanent)
14564     bpt->enable_state = bp_enabled;
14565
14566   bpt->enable_state = bp_enabled;
14567
14568   /* Mark breakpoint locations modified.  */
14569   mark_breakpoint_modified (bpt);
14570
14571   if (target_supports_enable_disable_tracepoint ()
14572       && current_trace_status ()->running && is_tracepoint (bpt))
14573     {
14574       struct bp_location *location;
14575
14576       for (location = bpt->loc; location; location = location->next)
14577         target_enable_tracepoint (location);
14578     }
14579
14580   bpt->disposition = disposition;
14581   bpt->enable_count = count;
14582   update_global_location_list (1);
14583   breakpoints_changed ();
14584   
14585   observer_notify_breakpoint_modified (bpt);
14586 }
14587
14588
14589 void
14590 enable_breakpoint (struct breakpoint *bpt)
14591 {
14592   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14593 }
14594
14595 static void
14596 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14597 {
14598   enable_breakpoint (bpt);
14599 }
14600
14601 /* A callback for map_breakpoint_numbers that calls
14602    enable_breakpoint.  */
14603
14604 static void
14605 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14606 {
14607   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14608 }
14609
14610 /* The enable command enables the specified breakpoints (or all defined
14611    breakpoints) so they once again become (or continue to be) effective
14612    in stopping the inferior.  */
14613
14614 static void
14615 enable_command (char *args, int from_tty)
14616 {
14617   if (args == 0)
14618     {
14619       struct breakpoint *bpt;
14620
14621       ALL_BREAKPOINTS (bpt)
14622         if (user_breakpoint_p (bpt))
14623           enable_breakpoint (bpt);
14624     }
14625   else if (strchr (args, '.'))
14626     {
14627       struct bp_location *loc = find_location_by_number (args);
14628       if (loc)
14629         {
14630           if (!loc->enabled)
14631             {
14632               loc->enabled = 1;
14633               mark_breakpoint_location_modified (loc);
14634             }
14635           if (target_supports_enable_disable_tracepoint ()
14636               && current_trace_status ()->running && loc->owner
14637               && is_tracepoint (loc->owner))
14638             target_enable_tracepoint (loc);
14639         }
14640       update_global_location_list (1);
14641     }
14642   else
14643     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14644 }
14645
14646 /* This struct packages up disposition data for application to multiple
14647    breakpoints.  */
14648
14649 struct disp_data
14650 {
14651   enum bpdisp disp;
14652   int count;
14653 };
14654
14655 static void
14656 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14657 {
14658   struct disp_data disp_data = *(struct disp_data *) arg;
14659
14660   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14661 }
14662
14663 static void
14664 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14665 {
14666   struct disp_data disp = { disp_disable, 1 };
14667
14668   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14669 }
14670
14671 static void
14672 enable_once_command (char *args, int from_tty)
14673 {
14674   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14675 }
14676
14677 static void
14678 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14679 {
14680   struct disp_data disp = { disp_disable, *(int *) countptr };
14681
14682   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14683 }
14684
14685 static void
14686 enable_count_command (char *args, int from_tty)
14687 {
14688   int count = get_number (&args);
14689
14690   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14691 }
14692
14693 static void
14694 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14695 {
14696   struct disp_data disp = { disp_del, 1 };
14697
14698   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14699 }
14700
14701 static void
14702 enable_delete_command (char *args, int from_tty)
14703 {
14704   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14705 }
14706 \f
14707 static void
14708 set_breakpoint_cmd (char *args, int from_tty)
14709 {
14710 }
14711
14712 static void
14713 show_breakpoint_cmd (char *args, int from_tty)
14714 {
14715 }
14716
14717 /* Invalidate last known value of any hardware watchpoint if
14718    the memory which that value represents has been written to by
14719    GDB itself.  */
14720
14721 static void
14722 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
14723                                       const bfd_byte *data)
14724 {
14725   struct breakpoint *bp;
14726
14727   ALL_BREAKPOINTS (bp)
14728     if (bp->enable_state == bp_enabled
14729         && bp->type == bp_hardware_watchpoint)
14730       {
14731         struct watchpoint *wp = (struct watchpoint *) bp;
14732
14733         if (wp->val_valid && wp->val)
14734           {
14735             struct bp_location *loc;
14736
14737             for (loc = bp->loc; loc != NULL; loc = loc->next)
14738               if (loc->loc_type == bp_loc_hardware_watchpoint
14739                   && loc->address + loc->length > addr
14740                   && addr + len > loc->address)
14741                 {
14742                   value_free (wp->val);
14743                   wp->val = NULL;
14744                   wp->val_valid = 0;
14745                 }
14746           }
14747       }
14748 }
14749
14750 /* Create and insert a raw software breakpoint at PC.  Return an
14751    identifier, which should be used to remove the breakpoint later.
14752    In general, places which call this should be using something on the
14753    breakpoint chain instead; this function should be eliminated
14754    someday.  */
14755
14756 void *
14757 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14758                                   struct address_space *aspace, CORE_ADDR pc)
14759 {
14760   struct bp_target_info *bp_tgt;
14761
14762   bp_tgt = XZALLOC (struct bp_target_info);
14763
14764   bp_tgt->placed_address_space = aspace;
14765   bp_tgt->placed_address = pc;
14766
14767   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14768     {
14769       /* Could not insert the breakpoint.  */
14770       xfree (bp_tgt);
14771       return NULL;
14772     }
14773
14774   return bp_tgt;
14775 }
14776
14777 /* Remove a breakpoint BP inserted by
14778    deprecated_insert_raw_breakpoint.  */
14779
14780 int
14781 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14782 {
14783   struct bp_target_info *bp_tgt = bp;
14784   int ret;
14785
14786   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14787   xfree (bp_tgt);
14788
14789   return ret;
14790 }
14791
14792 /* One (or perhaps two) breakpoints used for software single
14793    stepping.  */
14794
14795 static void *single_step_breakpoints[2];
14796 static struct gdbarch *single_step_gdbarch[2];
14797
14798 /* Create and insert a breakpoint for software single step.  */
14799
14800 void
14801 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14802                                struct address_space *aspace, 
14803                                CORE_ADDR next_pc)
14804 {
14805   void **bpt_p;
14806
14807   if (single_step_breakpoints[0] == NULL)
14808     {
14809       bpt_p = &single_step_breakpoints[0];
14810       single_step_gdbarch[0] = gdbarch;
14811     }
14812   else
14813     {
14814       gdb_assert (single_step_breakpoints[1] == NULL);
14815       bpt_p = &single_step_breakpoints[1];
14816       single_step_gdbarch[1] = gdbarch;
14817     }
14818
14819   /* NOTE drow/2006-04-11: A future improvement to this function would
14820      be to only create the breakpoints once, and actually put them on
14821      the breakpoint chain.  That would let us use set_raw_breakpoint.
14822      We could adjust the addresses each time they were needed.  Doing
14823      this requires corresponding changes elsewhere where single step
14824      breakpoints are handled, however.  So, for now, we use this.  */
14825
14826   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14827   if (*bpt_p == NULL)
14828     error (_("Could not insert single-step breakpoint at %s"),
14829              paddress (gdbarch, next_pc));
14830 }
14831
14832 /* Check if the breakpoints used for software single stepping
14833    were inserted or not.  */
14834
14835 int
14836 single_step_breakpoints_inserted (void)
14837 {
14838   return (single_step_breakpoints[0] != NULL
14839           || single_step_breakpoints[1] != NULL);
14840 }
14841
14842 /* Remove and delete any breakpoints used for software single step.  */
14843
14844 void
14845 remove_single_step_breakpoints (void)
14846 {
14847   gdb_assert (single_step_breakpoints[0] != NULL);
14848
14849   /* See insert_single_step_breakpoint for more about this deprecated
14850      call.  */
14851   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14852                                     single_step_breakpoints[0]);
14853   single_step_gdbarch[0] = NULL;
14854   single_step_breakpoints[0] = NULL;
14855
14856   if (single_step_breakpoints[1] != NULL)
14857     {
14858       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14859                                         single_step_breakpoints[1]);
14860       single_step_gdbarch[1] = NULL;
14861       single_step_breakpoints[1] = NULL;
14862     }
14863 }
14864
14865 /* Delete software single step breakpoints without removing them from
14866    the inferior.  This is intended to be used if the inferior's address
14867    space where they were inserted is already gone, e.g. after exit or
14868    exec.  */
14869
14870 void
14871 cancel_single_step_breakpoints (void)
14872 {
14873   int i;
14874
14875   for (i = 0; i < 2; i++)
14876     if (single_step_breakpoints[i])
14877       {
14878         xfree (single_step_breakpoints[i]);
14879         single_step_breakpoints[i] = NULL;
14880         single_step_gdbarch[i] = NULL;
14881       }
14882 }
14883
14884 /* Detach software single-step breakpoints from INFERIOR_PTID without
14885    removing them.  */
14886
14887 static void
14888 detach_single_step_breakpoints (void)
14889 {
14890   int i;
14891
14892   for (i = 0; i < 2; i++)
14893     if (single_step_breakpoints[i])
14894       target_remove_breakpoint (single_step_gdbarch[i],
14895                                 single_step_breakpoints[i]);
14896 }
14897
14898 /* Check whether a software single-step breakpoint is inserted at
14899    PC.  */
14900
14901 static int
14902 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14903                                         CORE_ADDR pc)
14904 {
14905   int i;
14906
14907   for (i = 0; i < 2; i++)
14908     {
14909       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14910       if (bp_tgt
14911           && breakpoint_address_match (bp_tgt->placed_address_space,
14912                                        bp_tgt->placed_address,
14913                                        aspace, pc))
14914         return 1;
14915     }
14916
14917   return 0;
14918 }
14919
14920 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14921    non-zero otherwise.  */
14922 static int
14923 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14924 {
14925   if (syscall_catchpoint_p (bp)
14926       && bp->enable_state != bp_disabled
14927       && bp->enable_state != bp_call_disabled)
14928     return 1;
14929   else
14930     return 0;
14931 }
14932
14933 int
14934 catch_syscall_enabled (void)
14935 {
14936   struct catch_syscall_inferior_data *inf_data
14937     = get_catch_syscall_inferior_data (current_inferior ());
14938
14939   return inf_data->total_syscalls_count != 0;
14940 }
14941
14942 int
14943 catching_syscall_number (int syscall_number)
14944 {
14945   struct breakpoint *bp;
14946
14947   ALL_BREAKPOINTS (bp)
14948     if (is_syscall_catchpoint_enabled (bp))
14949       {
14950         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14951
14952         if (c->syscalls_to_be_caught)
14953           {
14954             int i, iter;
14955             for (i = 0;
14956                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14957                  i++)
14958               if (syscall_number == iter)
14959                 return 1;
14960           }
14961         else
14962           return 1;
14963       }
14964
14965   return 0;
14966 }
14967
14968 /* Complete syscall names.  Used by "catch syscall".  */
14969 static VEC (char_ptr) *
14970 catch_syscall_completer (struct cmd_list_element *cmd,
14971                          char *text, char *word)
14972 {
14973   const char **list = get_syscall_names ();
14974   VEC (char_ptr) *retlist
14975     = (list == NULL) ? NULL : complete_on_enum (list, text, word);
14976
14977   xfree (list);
14978   return retlist;
14979 }
14980
14981 /* Tracepoint-specific operations.  */
14982
14983 /* Set tracepoint count to NUM.  */
14984 static void
14985 set_tracepoint_count (int num)
14986 {
14987   tracepoint_count = num;
14988   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14989 }
14990
14991 static void
14992 trace_command (char *arg, int from_tty)
14993 {
14994   struct breakpoint_ops *ops;
14995   const char *arg_cp = arg;
14996
14997   if (arg && probe_linespec_to_ops (&arg_cp))
14998     ops = &tracepoint_probe_breakpoint_ops;
14999   else
15000     ops = &tracepoint_breakpoint_ops;
15001
15002   if (create_breakpoint (get_current_arch (),
15003                          arg,
15004                          NULL, 0, NULL, 1 /* parse arg */,
15005                          0 /* tempflag */,
15006                          bp_tracepoint /* type_wanted */,
15007                          0 /* Ignore count */,
15008                          pending_break_support,
15009                          ops,
15010                          from_tty,
15011                          1 /* enabled */,
15012                          0 /* internal */, 0))
15013     set_tracepoint_count (breakpoint_count);
15014 }
15015
15016 static void
15017 ftrace_command (char *arg, int from_tty)
15018 {
15019   if (create_breakpoint (get_current_arch (),
15020                          arg,
15021                          NULL, 0, NULL, 1 /* parse arg */,
15022                          0 /* tempflag */,
15023                          bp_fast_tracepoint /* type_wanted */,
15024                          0 /* Ignore count */,
15025                          pending_break_support,
15026                          &tracepoint_breakpoint_ops,
15027                          from_tty,
15028                          1 /* enabled */,
15029                          0 /* internal */, 0))
15030     set_tracepoint_count (breakpoint_count);
15031 }
15032
15033 /* strace command implementation.  Creates a static tracepoint.  */
15034
15035 static void
15036 strace_command (char *arg, int from_tty)
15037 {
15038   struct breakpoint_ops *ops;
15039
15040   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15041      or with a normal static tracepoint.  */
15042   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15043     ops = &strace_marker_breakpoint_ops;
15044   else
15045     ops = &tracepoint_breakpoint_ops;
15046
15047   if (create_breakpoint (get_current_arch (),
15048                          arg,
15049                          NULL, 0, NULL, 1 /* parse arg */,
15050                          0 /* tempflag */,
15051                          bp_static_tracepoint /* type_wanted */,
15052                          0 /* Ignore count */,
15053                          pending_break_support,
15054                          ops,
15055                          from_tty,
15056                          1 /* enabled */,
15057                          0 /* internal */, 0))
15058     set_tracepoint_count (breakpoint_count);
15059 }
15060
15061 /* Set up a fake reader function that gets command lines from a linked
15062    list that was acquired during tracepoint uploading.  */
15063
15064 static struct uploaded_tp *this_utp;
15065 static int next_cmd;
15066
15067 static char *
15068 read_uploaded_action (void)
15069 {
15070   char *rslt;
15071
15072   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15073
15074   next_cmd++;
15075
15076   return rslt;
15077 }
15078
15079 /* Given information about a tracepoint as recorded on a target (which
15080    can be either a live system or a trace file), attempt to create an
15081    equivalent GDB tracepoint.  This is not a reliable process, since
15082    the target does not necessarily have all the information used when
15083    the tracepoint was originally defined.  */
15084   
15085 struct tracepoint *
15086 create_tracepoint_from_upload (struct uploaded_tp *utp)
15087 {
15088   char *addr_str, small_buf[100];
15089   struct tracepoint *tp;
15090
15091   if (utp->at_string)
15092     addr_str = utp->at_string;
15093   else
15094     {
15095       /* In the absence of a source location, fall back to raw
15096          address.  Since there is no way to confirm that the address
15097          means the same thing as when the trace was started, warn the
15098          user.  */
15099       warning (_("Uploaded tracepoint %d has no "
15100                  "source location, using raw address"),
15101                utp->number);
15102       sprintf (small_buf, "*%s", hex_string (utp->addr));
15103       addr_str = small_buf;
15104     }
15105
15106   /* There's not much we can do with a sequence of bytecodes.  */
15107   if (utp->cond && !utp->cond_string)
15108     warning (_("Uploaded tracepoint %d condition "
15109                "has no source form, ignoring it"),
15110              utp->number);
15111
15112   if (!create_breakpoint (get_current_arch (),
15113                           addr_str,
15114                           utp->cond_string, -1, NULL,
15115                           0 /* parse cond/thread */,
15116                           0 /* tempflag */,
15117                           utp->type /* type_wanted */,
15118                           0 /* Ignore count */,
15119                           pending_break_support,
15120                           &tracepoint_breakpoint_ops,
15121                           0 /* from_tty */,
15122                           utp->enabled /* enabled */,
15123                           0 /* internal */,
15124                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15125     return NULL;
15126
15127   set_tracepoint_count (breakpoint_count);
15128   
15129   /* Get the tracepoint we just created.  */
15130   tp = get_tracepoint (tracepoint_count);
15131   gdb_assert (tp != NULL);
15132
15133   if (utp->pass > 0)
15134     {
15135       sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
15136
15137       trace_pass_command (small_buf, 0);
15138     }
15139
15140   /* If we have uploaded versions of the original commands, set up a
15141      special-purpose "reader" function and call the usual command line
15142      reader, then pass the result to the breakpoint command-setting
15143      function.  */
15144   if (!VEC_empty (char_ptr, utp->cmd_strings))
15145     {
15146       struct command_line *cmd_list;
15147
15148       this_utp = utp;
15149       next_cmd = 0;
15150
15151       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15152
15153       breakpoint_set_commands (&tp->base, cmd_list);
15154     }
15155   else if (!VEC_empty (char_ptr, utp->actions)
15156            || !VEC_empty (char_ptr, utp->step_actions))
15157     warning (_("Uploaded tracepoint %d actions "
15158                "have no source form, ignoring them"),
15159              utp->number);
15160
15161   /* Copy any status information that might be available.  */
15162   tp->base.hit_count = utp->hit_count;
15163   tp->traceframe_usage = utp->traceframe_usage;
15164
15165   return tp;
15166 }
15167   
15168 /* Print information on tracepoint number TPNUM_EXP, or all if
15169    omitted.  */
15170
15171 static void
15172 tracepoints_info (char *args, int from_tty)
15173 {
15174   struct ui_out *uiout = current_uiout;
15175   int num_printed;
15176
15177   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15178
15179   if (num_printed == 0)
15180     {
15181       if (args == NULL || *args == '\0')
15182         ui_out_message (uiout, 0, "No tracepoints.\n");
15183       else
15184         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15185     }
15186
15187   default_collect_info ();
15188 }
15189
15190 /* The 'enable trace' command enables tracepoints.
15191    Not supported by all targets.  */
15192 static void
15193 enable_trace_command (char *args, int from_tty)
15194 {
15195   enable_command (args, from_tty);
15196 }
15197
15198 /* The 'disable trace' command disables tracepoints.
15199    Not supported by all targets.  */
15200 static void
15201 disable_trace_command (char *args, int from_tty)
15202 {
15203   disable_command (args, from_tty);
15204 }
15205
15206 /* Remove a tracepoint (or all if no argument).  */
15207 static void
15208 delete_trace_command (char *arg, int from_tty)
15209 {
15210   struct breakpoint *b, *b_tmp;
15211
15212   dont_repeat ();
15213
15214   if (arg == 0)
15215     {
15216       int breaks_to_delete = 0;
15217
15218       /* Delete all breakpoints if no argument.
15219          Do not delete internal or call-dummy breakpoints, these
15220          have to be deleted with an explicit breakpoint number 
15221          argument.  */
15222       ALL_TRACEPOINTS (b)
15223         if (is_tracepoint (b) && user_breakpoint_p (b))
15224           {
15225             breaks_to_delete = 1;
15226             break;
15227           }
15228
15229       /* Ask user only if there are some breakpoints to delete.  */
15230       if (!from_tty
15231           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15232         {
15233           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15234             if (is_tracepoint (b) && user_breakpoint_p (b))
15235               delete_breakpoint (b);
15236         }
15237     }
15238   else
15239     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15240 }
15241
15242 /* Helper function for trace_pass_command.  */
15243
15244 static void
15245 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15246 {
15247   tp->pass_count = count;
15248   observer_notify_tracepoint_modified (tp->base.number);
15249   if (from_tty)
15250     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15251                      tp->base.number, count);
15252 }
15253
15254 /* Set passcount for tracepoint.
15255
15256    First command argument is passcount, second is tracepoint number.
15257    If tracepoint number omitted, apply to most recently defined.
15258    Also accepts special argument "all".  */
15259
15260 static void
15261 trace_pass_command (char *args, int from_tty)
15262 {
15263   struct tracepoint *t1;
15264   unsigned int count;
15265
15266   if (args == 0 || *args == 0)
15267     error (_("passcount command requires an "
15268              "argument (count + optional TP num)"));
15269
15270   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15271
15272   while (*args && isspace ((int) *args))
15273     args++;
15274
15275   if (*args && strncasecmp (args, "all", 3) == 0)
15276     {
15277       struct breakpoint *b;
15278
15279       args += 3;                        /* Skip special argument "all".  */
15280       if (*args)
15281         error (_("Junk at end of arguments."));
15282
15283       ALL_TRACEPOINTS (b)
15284       {
15285         t1 = (struct tracepoint *) b;
15286         trace_pass_set_count (t1, count, from_tty);
15287       }
15288     }
15289   else if (*args == '\0')
15290     {
15291       t1 = get_tracepoint_by_number (&args, NULL, 1);
15292       if (t1)
15293         trace_pass_set_count (t1, count, from_tty);
15294     }
15295   else
15296     {
15297       struct get_number_or_range_state state;
15298
15299       init_number_or_range (&state, args);
15300       while (!state.finished)
15301         {
15302           t1 = get_tracepoint_by_number (&args, &state, 1);
15303           if (t1)
15304             trace_pass_set_count (t1, count, from_tty);
15305         }
15306     }
15307 }
15308
15309 struct tracepoint *
15310 get_tracepoint (int num)
15311 {
15312   struct breakpoint *t;
15313
15314   ALL_TRACEPOINTS (t)
15315     if (t->number == num)
15316       return (struct tracepoint *) t;
15317
15318   return NULL;
15319 }
15320
15321 /* Find the tracepoint with the given target-side number (which may be
15322    different from the tracepoint number after disconnecting and
15323    reconnecting).  */
15324
15325 struct tracepoint *
15326 get_tracepoint_by_number_on_target (int num)
15327 {
15328   struct breakpoint *b;
15329
15330   ALL_TRACEPOINTS (b)
15331     {
15332       struct tracepoint *t = (struct tracepoint *) b;
15333
15334       if (t->number_on_target == num)
15335         return t;
15336     }
15337
15338   return NULL;
15339 }
15340
15341 /* Utility: parse a tracepoint number and look it up in the list.
15342    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15343    If OPTIONAL_P is true, then if the argument is missing, the most
15344    recent tracepoint (tracepoint_count) is returned.  */
15345 struct tracepoint *
15346 get_tracepoint_by_number (char **arg,
15347                           struct get_number_or_range_state *state,
15348                           int optional_p)
15349 {
15350   extern int tracepoint_count;
15351   struct breakpoint *t;
15352   int tpnum;
15353   char *instring = arg == NULL ? NULL : *arg;
15354
15355   if (state)
15356     {
15357       gdb_assert (!state->finished);
15358       tpnum = get_number_or_range (state);
15359     }
15360   else if (arg == NULL || *arg == NULL || ! **arg)
15361     {
15362       if (optional_p)
15363         tpnum = tracepoint_count;
15364       else
15365         error_no_arg (_("tracepoint number"));
15366     }
15367   else
15368     tpnum = get_number (arg);
15369
15370   if (tpnum <= 0)
15371     {
15372       if (instring && *instring)
15373         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15374                          instring);
15375       else
15376         printf_filtered (_("Tracepoint argument missing "
15377                            "and no previous tracepoint\n"));
15378       return NULL;
15379     }
15380
15381   ALL_TRACEPOINTS (t)
15382     if (t->number == tpnum)
15383     {
15384       return (struct tracepoint *) t;
15385     }
15386
15387   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15388   return NULL;
15389 }
15390
15391 void
15392 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15393 {
15394   if (b->thread != -1)
15395     fprintf_unfiltered (fp, " thread %d", b->thread);
15396
15397   if (b->task != 0)
15398     fprintf_unfiltered (fp, " task %d", b->task);
15399
15400   fprintf_unfiltered (fp, "\n");
15401 }
15402
15403 /* Save information on user settable breakpoints (watchpoints, etc) to
15404    a new script file named FILENAME.  If FILTER is non-NULL, call it
15405    on each breakpoint and only include the ones for which it returns
15406    non-zero.  */
15407
15408 static void
15409 save_breakpoints (char *filename, int from_tty,
15410                   int (*filter) (const struct breakpoint *))
15411 {
15412   struct breakpoint *tp;
15413   int any = 0;
15414   char *pathname;
15415   struct cleanup *cleanup;
15416   struct ui_file *fp;
15417   int extra_trace_bits = 0;
15418
15419   if (filename == 0 || *filename == 0)
15420     error (_("Argument required (file name in which to save)"));
15421
15422   /* See if we have anything to save.  */
15423   ALL_BREAKPOINTS (tp)
15424   {
15425     /* Skip internal and momentary breakpoints.  */
15426     if (!user_breakpoint_p (tp))
15427       continue;
15428
15429     /* If we have a filter, only save the breakpoints it accepts.  */
15430     if (filter && !filter (tp))
15431       continue;
15432
15433     any = 1;
15434
15435     if (is_tracepoint (tp))
15436       {
15437         extra_trace_bits = 1;
15438
15439         /* We can stop searching.  */
15440         break;
15441       }
15442   }
15443
15444   if (!any)
15445     {
15446       warning (_("Nothing to save."));
15447       return;
15448     }
15449
15450   pathname = tilde_expand (filename);
15451   cleanup = make_cleanup (xfree, pathname);
15452   fp = gdb_fopen (pathname, "w");
15453   if (!fp)
15454     error (_("Unable to open file '%s' for saving (%s)"),
15455            filename, safe_strerror (errno));
15456   make_cleanup_ui_file_delete (fp);
15457
15458   if (extra_trace_bits)
15459     save_trace_state_variables (fp);
15460
15461   ALL_BREAKPOINTS (tp)
15462   {
15463     /* Skip internal and momentary breakpoints.  */
15464     if (!user_breakpoint_p (tp))
15465       continue;
15466
15467     /* If we have a filter, only save the breakpoints it accepts.  */
15468     if (filter && !filter (tp))
15469       continue;
15470
15471     tp->ops->print_recreate (tp, fp);
15472
15473     /* Note, we can't rely on tp->number for anything, as we can't
15474        assume the recreated breakpoint numbers will match.  Use $bpnum
15475        instead.  */
15476
15477     if (tp->cond_string)
15478       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15479
15480     if (tp->ignore_count)
15481       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15482
15483     if (tp->commands)
15484       {
15485         volatile struct gdb_exception ex;       
15486
15487         fprintf_unfiltered (fp, "  commands\n");
15488         
15489         ui_out_redirect (current_uiout, fp);
15490         TRY_CATCH (ex, RETURN_MASK_ALL)
15491           {
15492             print_command_lines (current_uiout, tp->commands->commands, 2);
15493           }
15494         ui_out_redirect (current_uiout, NULL);
15495
15496         if (ex.reason < 0)
15497           throw_exception (ex);
15498
15499         fprintf_unfiltered (fp, "  end\n");
15500       }
15501
15502     if (tp->enable_state == bp_disabled)
15503       fprintf_unfiltered (fp, "disable\n");
15504
15505     /* If this is a multi-location breakpoint, check if the locations
15506        should be individually disabled.  Watchpoint locations are
15507        special, and not user visible.  */
15508     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15509       {
15510         struct bp_location *loc;
15511         int n = 1;
15512
15513         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15514           if (!loc->enabled)
15515             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15516       }
15517   }
15518
15519   if (extra_trace_bits && *default_collect)
15520     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15521
15522   do_cleanups (cleanup);
15523   if (from_tty)
15524     printf_filtered (_("Saved to file '%s'.\n"), filename);
15525 }
15526
15527 /* The `save breakpoints' command.  */
15528
15529 static void
15530 save_breakpoints_command (char *args, int from_tty)
15531 {
15532   save_breakpoints (args, from_tty, NULL);
15533 }
15534
15535 /* The `save tracepoints' command.  */
15536
15537 static void
15538 save_tracepoints_command (char *args, int from_tty)
15539 {
15540   save_breakpoints (args, from_tty, is_tracepoint);
15541 }
15542
15543 /* Create a vector of all tracepoints.  */
15544
15545 VEC(breakpoint_p) *
15546 all_tracepoints (void)
15547 {
15548   VEC(breakpoint_p) *tp_vec = 0;
15549   struct breakpoint *tp;
15550
15551   ALL_TRACEPOINTS (tp)
15552   {
15553     VEC_safe_push (breakpoint_p, tp_vec, tp);
15554   }
15555
15556   return tp_vec;
15557 }
15558
15559 \f
15560 /* This help string is used for the break, hbreak, tbreak and thbreak
15561    commands.  It is defined as a macro to prevent duplication.
15562    COMMAND should be a string constant containing the name of the
15563    command.  */
15564 #define BREAK_ARGS_HELP(command) \
15565 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15566 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15567 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15568 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15569 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15570 If a line number is specified, break at start of code for that line.\n\
15571 If a function is specified, break at start of code for that function.\n\
15572 If an address is specified, break at that exact address.\n\
15573 With no LOCATION, uses current execution address of the selected\n\
15574 stack frame.  This is useful for breaking on return to a stack frame.\n\
15575 \n\
15576 THREADNUM is the number from \"info threads\".\n\
15577 CONDITION is a boolean expression.\n\
15578 \n\
15579 Multiple breakpoints at one place are permitted, and useful if their\n\
15580 conditions are different.\n\
15581 \n\
15582 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15583
15584 /* List of subcommands for "catch".  */
15585 static struct cmd_list_element *catch_cmdlist;
15586
15587 /* List of subcommands for "tcatch".  */
15588 static struct cmd_list_element *tcatch_cmdlist;
15589
15590 void
15591 add_catch_command (char *name, char *docstring,
15592                    void (*sfunc) (char *args, int from_tty,
15593                                   struct cmd_list_element *command),
15594                    completer_ftype *completer,
15595                    void *user_data_catch,
15596                    void *user_data_tcatch)
15597 {
15598   struct cmd_list_element *command;
15599
15600   command = add_cmd (name, class_breakpoint, NULL, docstring,
15601                      &catch_cmdlist);
15602   set_cmd_sfunc (command, sfunc);
15603   set_cmd_context (command, user_data_catch);
15604   set_cmd_completer (command, completer);
15605
15606   command = add_cmd (name, class_breakpoint, NULL, docstring,
15607                      &tcatch_cmdlist);
15608   set_cmd_sfunc (command, sfunc);
15609   set_cmd_context (command, user_data_tcatch);
15610   set_cmd_completer (command, completer);
15611 }
15612
15613 static void
15614 clear_syscall_counts (struct inferior *inf)
15615 {
15616   struct catch_syscall_inferior_data *inf_data
15617     = get_catch_syscall_inferior_data (inf);
15618
15619   inf_data->total_syscalls_count = 0;
15620   inf_data->any_syscall_count = 0;
15621   VEC_free (int, inf_data->syscalls_counts);
15622 }
15623
15624 static void
15625 save_command (char *arg, int from_tty)
15626 {
15627   printf_unfiltered (_("\"save\" must be followed by "
15628                        "the name of a save subcommand.\n"));
15629   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15630 }
15631
15632 struct breakpoint *
15633 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15634                           void *data)
15635 {
15636   struct breakpoint *b, *b_tmp;
15637
15638   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15639     {
15640       if ((*callback) (b, data))
15641         return b;
15642     }
15643
15644   return NULL;
15645 }
15646
15647 /* Zero if any of the breakpoint's locations could be a location where
15648    functions have been inlined, nonzero otherwise.  */
15649
15650 static int
15651 is_non_inline_function (struct breakpoint *b)
15652 {
15653   /* The shared library event breakpoint is set on the address of a
15654      non-inline function.  */
15655   if (b->type == bp_shlib_event)
15656     return 1;
15657
15658   return 0;
15659 }
15660
15661 /* Nonzero if the specified PC cannot be a location where functions
15662    have been inlined.  */
15663
15664 int
15665 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15666                            const struct target_waitstatus *ws)
15667 {
15668   struct breakpoint *b;
15669   struct bp_location *bl;
15670
15671   ALL_BREAKPOINTS (b)
15672     {
15673       if (!is_non_inline_function (b))
15674         continue;
15675
15676       for (bl = b->loc; bl != NULL; bl = bl->next)
15677         {
15678           if (!bl->shlib_disabled
15679               && bpstat_check_location (bl, aspace, pc, ws))
15680             return 1;
15681         }
15682     }
15683
15684   return 0;
15685 }
15686
15687 void
15688 initialize_breakpoint_ops (void)
15689 {
15690   static int initialized = 0;
15691
15692   struct breakpoint_ops *ops;
15693
15694   if (initialized)
15695     return;
15696   initialized = 1;
15697
15698   /* The breakpoint_ops structure to be inherit by all kinds of
15699      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15700      internal and momentary breakpoints, etc.).  */
15701   ops = &bkpt_base_breakpoint_ops;
15702   *ops = base_breakpoint_ops;
15703   ops->re_set = bkpt_re_set;
15704   ops->insert_location = bkpt_insert_location;
15705   ops->remove_location = bkpt_remove_location;
15706   ops->breakpoint_hit = bkpt_breakpoint_hit;
15707   ops->create_sals_from_address = bkpt_create_sals_from_address;
15708   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15709   ops->decode_linespec = bkpt_decode_linespec;
15710
15711   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15712   ops = &bkpt_breakpoint_ops;
15713   *ops = bkpt_base_breakpoint_ops;
15714   ops->re_set = bkpt_re_set;
15715   ops->resources_needed = bkpt_resources_needed;
15716   ops->print_it = bkpt_print_it;
15717   ops->print_mention = bkpt_print_mention;
15718   ops->print_recreate = bkpt_print_recreate;
15719
15720   /* Ranged breakpoints.  */
15721   ops = &ranged_breakpoint_ops;
15722   *ops = bkpt_breakpoint_ops;
15723   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15724   ops->resources_needed = resources_needed_ranged_breakpoint;
15725   ops->print_it = print_it_ranged_breakpoint;
15726   ops->print_one = print_one_ranged_breakpoint;
15727   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15728   ops->print_mention = print_mention_ranged_breakpoint;
15729   ops->print_recreate = print_recreate_ranged_breakpoint;
15730
15731   /* Internal breakpoints.  */
15732   ops = &internal_breakpoint_ops;
15733   *ops = bkpt_base_breakpoint_ops;
15734   ops->re_set = internal_bkpt_re_set;
15735   ops->check_status = internal_bkpt_check_status;
15736   ops->print_it = internal_bkpt_print_it;
15737   ops->print_mention = internal_bkpt_print_mention;
15738
15739   /* Momentary breakpoints.  */
15740   ops = &momentary_breakpoint_ops;
15741   *ops = bkpt_base_breakpoint_ops;
15742   ops->re_set = momentary_bkpt_re_set;
15743   ops->check_status = momentary_bkpt_check_status;
15744   ops->print_it = momentary_bkpt_print_it;
15745   ops->print_mention = momentary_bkpt_print_mention;
15746
15747   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15748   ops = &longjmp_breakpoint_ops;
15749   *ops = momentary_breakpoint_ops;
15750   ops->dtor = longjmp_bkpt_dtor;
15751
15752   /* Probe breakpoints.  */
15753   ops = &bkpt_probe_breakpoint_ops;
15754   *ops = bkpt_breakpoint_ops;
15755   ops->insert_location = bkpt_probe_insert_location;
15756   ops->remove_location = bkpt_probe_remove_location;
15757   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15758   ops->decode_linespec = bkpt_probe_decode_linespec;
15759
15760   /* GNU v3 exception catchpoints.  */
15761   ops = &gnu_v3_exception_catchpoint_ops;
15762   *ops = bkpt_breakpoint_ops;
15763   ops->print_it = print_it_exception_catchpoint;
15764   ops->print_one = print_one_exception_catchpoint;
15765   ops->print_mention = print_mention_exception_catchpoint;
15766   ops->print_recreate = print_recreate_exception_catchpoint;
15767
15768   /* Watchpoints.  */
15769   ops = &watchpoint_breakpoint_ops;
15770   *ops = base_breakpoint_ops;
15771   ops->dtor = dtor_watchpoint;
15772   ops->re_set = re_set_watchpoint;
15773   ops->insert_location = insert_watchpoint;
15774   ops->remove_location = remove_watchpoint;
15775   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15776   ops->check_status = check_status_watchpoint;
15777   ops->resources_needed = resources_needed_watchpoint;
15778   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15779   ops->print_it = print_it_watchpoint;
15780   ops->print_mention = print_mention_watchpoint;
15781   ops->print_recreate = print_recreate_watchpoint;
15782
15783   /* Masked watchpoints.  */
15784   ops = &masked_watchpoint_breakpoint_ops;
15785   *ops = watchpoint_breakpoint_ops;
15786   ops->insert_location = insert_masked_watchpoint;
15787   ops->remove_location = remove_masked_watchpoint;
15788   ops->resources_needed = resources_needed_masked_watchpoint;
15789   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15790   ops->print_it = print_it_masked_watchpoint;
15791   ops->print_one_detail = print_one_detail_masked_watchpoint;
15792   ops->print_mention = print_mention_masked_watchpoint;
15793   ops->print_recreate = print_recreate_masked_watchpoint;
15794
15795   /* Tracepoints.  */
15796   ops = &tracepoint_breakpoint_ops;
15797   *ops = base_breakpoint_ops;
15798   ops->re_set = tracepoint_re_set;
15799   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15800   ops->print_one_detail = tracepoint_print_one_detail;
15801   ops->print_mention = tracepoint_print_mention;
15802   ops->print_recreate = tracepoint_print_recreate;
15803   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15804   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15805   ops->decode_linespec = tracepoint_decode_linespec;
15806
15807   /* Probe tracepoints.  */
15808   ops = &tracepoint_probe_breakpoint_ops;
15809   *ops = tracepoint_breakpoint_ops;
15810   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15811   ops->decode_linespec = tracepoint_probe_decode_linespec;
15812
15813   /* Static tracepoints with marker (`-m').  */
15814   ops = &strace_marker_breakpoint_ops;
15815   *ops = tracepoint_breakpoint_ops;
15816   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15817   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15818   ops->decode_linespec = strace_marker_decode_linespec;
15819
15820   /* Fork catchpoints.  */
15821   ops = &catch_fork_breakpoint_ops;
15822   *ops = base_breakpoint_ops;
15823   ops->insert_location = insert_catch_fork;
15824   ops->remove_location = remove_catch_fork;
15825   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15826   ops->print_it = print_it_catch_fork;
15827   ops->print_one = print_one_catch_fork;
15828   ops->print_mention = print_mention_catch_fork;
15829   ops->print_recreate = print_recreate_catch_fork;
15830
15831   /* Vfork catchpoints.  */
15832   ops = &catch_vfork_breakpoint_ops;
15833   *ops = base_breakpoint_ops;
15834   ops->insert_location = insert_catch_vfork;
15835   ops->remove_location = remove_catch_vfork;
15836   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15837   ops->print_it = print_it_catch_vfork;
15838   ops->print_one = print_one_catch_vfork;
15839   ops->print_mention = print_mention_catch_vfork;
15840   ops->print_recreate = print_recreate_catch_vfork;
15841
15842   /* Exec catchpoints.  */
15843   ops = &catch_exec_breakpoint_ops;
15844   *ops = base_breakpoint_ops;
15845   ops->dtor = dtor_catch_exec;
15846   ops->insert_location = insert_catch_exec;
15847   ops->remove_location = remove_catch_exec;
15848   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15849   ops->print_it = print_it_catch_exec;
15850   ops->print_one = print_one_catch_exec;
15851   ops->print_mention = print_mention_catch_exec;
15852   ops->print_recreate = print_recreate_catch_exec;
15853
15854   /* Syscall catchpoints.  */
15855   ops = &catch_syscall_breakpoint_ops;
15856   *ops = base_breakpoint_ops;
15857   ops->dtor = dtor_catch_syscall;
15858   ops->insert_location = insert_catch_syscall;
15859   ops->remove_location = remove_catch_syscall;
15860   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15861   ops->print_it = print_it_catch_syscall;
15862   ops->print_one = print_one_catch_syscall;
15863   ops->print_mention = print_mention_catch_syscall;
15864   ops->print_recreate = print_recreate_catch_syscall;
15865
15866   /* Solib-related catchpoints.  */
15867   ops = &catch_solib_breakpoint_ops;
15868   *ops = base_breakpoint_ops;
15869   ops->dtor = dtor_catch_solib;
15870   ops->insert_location = insert_catch_solib;
15871   ops->remove_location = remove_catch_solib;
15872   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15873   ops->check_status = check_status_catch_solib;
15874   ops->print_it = print_it_catch_solib;
15875   ops->print_one = print_one_catch_solib;
15876   ops->print_mention = print_mention_catch_solib;
15877   ops->print_recreate = print_recreate_catch_solib;
15878
15879   ops = &dprintf_breakpoint_ops;
15880   *ops = bkpt_base_breakpoint_ops;
15881   ops->re_set = bkpt_re_set;
15882   ops->resources_needed = bkpt_resources_needed;
15883   ops->print_it = bkpt_print_it;
15884   ops->print_mention = bkpt_print_mention;
15885   ops->print_recreate = bkpt_print_recreate;
15886 }
15887
15888 /* Chain containing all defined "enable breakpoint" subcommands.  */
15889
15890 static struct cmd_list_element *enablebreaklist = NULL;
15891
15892 void
15893 _initialize_breakpoint (void)
15894 {
15895   struct cmd_list_element *c;
15896
15897   initialize_breakpoint_ops ();
15898
15899   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15900   observer_attach_inferior_exit (clear_syscall_counts);
15901   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15902
15903   breakpoint_objfile_key
15904     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15905
15906   catch_syscall_inferior_data
15907     = register_inferior_data_with_cleanup (NULL,
15908                                            catch_syscall_inferior_data_cleanup);
15909
15910   breakpoint_chain = 0;
15911   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15912      before a breakpoint is set.  */
15913   breakpoint_count = 0;
15914
15915   tracepoint_count = 0;
15916
15917   add_com ("ignore", class_breakpoint, ignore_command, _("\
15918 Set ignore-count of breakpoint number N to COUNT.\n\
15919 Usage is `ignore N COUNT'."));
15920   if (xdb_commands)
15921     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15922
15923   add_com ("commands", class_breakpoint, commands_command, _("\
15924 Set commands to be executed when a breakpoint is hit.\n\
15925 Give breakpoint number as argument after \"commands\".\n\
15926 With no argument, the targeted breakpoint is the last one set.\n\
15927 The commands themselves follow starting on the next line.\n\
15928 Type a line containing \"end\" to indicate the end of them.\n\
15929 Give \"silent\" as the first line to make the breakpoint silent;\n\
15930 then no output is printed when it is hit, except what the commands print."));
15931
15932   c = add_com ("condition", class_breakpoint, condition_command, _("\
15933 Specify breakpoint number N to break only if COND is true.\n\
15934 Usage is `condition N COND', where N is an integer and COND is an\n\
15935 expression to be evaluated whenever breakpoint N is reached."));
15936   set_cmd_completer (c, condition_completer);
15937
15938   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15939 Set a temporary breakpoint.\n\
15940 Like \"break\" except the breakpoint is only temporary,\n\
15941 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15942 by using \"enable delete\" on the breakpoint number.\n\
15943 \n"
15944 BREAK_ARGS_HELP ("tbreak")));
15945   set_cmd_completer (c, location_completer);
15946
15947   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15948 Set a hardware assisted breakpoint.\n\
15949 Like \"break\" except the breakpoint requires hardware support,\n\
15950 some target hardware may not have this support.\n\
15951 \n"
15952 BREAK_ARGS_HELP ("hbreak")));
15953   set_cmd_completer (c, location_completer);
15954
15955   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15956 Set a temporary hardware assisted breakpoint.\n\
15957 Like \"hbreak\" except the breakpoint is only temporary,\n\
15958 so it will be deleted when hit.\n\
15959 \n"
15960 BREAK_ARGS_HELP ("thbreak")));
15961   set_cmd_completer (c, location_completer);
15962
15963   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15964 Enable some breakpoints.\n\
15965 Give breakpoint numbers (separated by spaces) as arguments.\n\
15966 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15967 This is used to cancel the effect of the \"disable\" command.\n\
15968 With a subcommand you can enable temporarily."),
15969                   &enablelist, "enable ", 1, &cmdlist);
15970   if (xdb_commands)
15971     add_com ("ab", class_breakpoint, enable_command, _("\
15972 Enable some breakpoints.\n\
15973 Give breakpoint numbers (separated by spaces) as arguments.\n\
15974 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15975 This is used to cancel the effect of the \"disable\" command.\n\
15976 With a subcommand you can enable temporarily."));
15977
15978   add_com_alias ("en", "enable", class_breakpoint, 1);
15979
15980   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15981 Enable some breakpoints.\n\
15982 Give breakpoint numbers (separated by spaces) as arguments.\n\
15983 This is used to cancel the effect of the \"disable\" command.\n\
15984 May be abbreviated to simply \"enable\".\n"),
15985                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15986
15987   add_cmd ("once", no_class, enable_once_command, _("\
15988 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15989 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15990            &enablebreaklist);
15991
15992   add_cmd ("delete", no_class, enable_delete_command, _("\
15993 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15994 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15995            &enablebreaklist);
15996
15997   add_cmd ("count", no_class, enable_count_command, _("\
15998 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15999 If a breakpoint is hit while enabled in this fashion,\n\
16000 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16001            &enablebreaklist);
16002
16003   add_cmd ("delete", no_class, enable_delete_command, _("\
16004 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16005 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16006            &enablelist);
16007
16008   add_cmd ("once", no_class, enable_once_command, _("\
16009 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16010 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16011            &enablelist);
16012
16013   add_cmd ("count", no_class, enable_count_command, _("\
16014 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16015 If a breakpoint is hit while enabled in this fashion,\n\
16016 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16017            &enablelist);
16018
16019   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16020 Disable some breakpoints.\n\
16021 Arguments are breakpoint numbers with spaces in between.\n\
16022 To disable all breakpoints, give no argument.\n\
16023 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16024                   &disablelist, "disable ", 1, &cmdlist);
16025   add_com_alias ("dis", "disable", class_breakpoint, 1);
16026   add_com_alias ("disa", "disable", class_breakpoint, 1);
16027   if (xdb_commands)
16028     add_com ("sb", class_breakpoint, disable_command, _("\
16029 Disable some breakpoints.\n\
16030 Arguments are breakpoint numbers with spaces in between.\n\
16031 To disable all breakpoints, give no argument.\n\
16032 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16033
16034   add_cmd ("breakpoints", class_alias, disable_command, _("\
16035 Disable some breakpoints.\n\
16036 Arguments are breakpoint numbers with spaces in between.\n\
16037 To disable all breakpoints, give no argument.\n\
16038 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16039 This command may be abbreviated \"disable\"."),
16040            &disablelist);
16041
16042   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16043 Delete some breakpoints or auto-display expressions.\n\
16044 Arguments are breakpoint numbers with spaces in between.\n\
16045 To delete all breakpoints, give no argument.\n\
16046 \n\
16047 Also a prefix command for deletion of other GDB objects.\n\
16048 The \"unset\" command is also an alias for \"delete\"."),
16049                   &deletelist, "delete ", 1, &cmdlist);
16050   add_com_alias ("d", "delete", class_breakpoint, 1);
16051   add_com_alias ("del", "delete", class_breakpoint, 1);
16052   if (xdb_commands)
16053     add_com ("db", class_breakpoint, delete_command, _("\
16054 Delete some breakpoints.\n\
16055 Arguments are breakpoint numbers with spaces in between.\n\
16056 To delete all breakpoints, give no argument.\n"));
16057
16058   add_cmd ("breakpoints", class_alias, delete_command, _("\
16059 Delete some breakpoints or auto-display expressions.\n\
16060 Arguments are breakpoint numbers with spaces in between.\n\
16061 To delete all breakpoints, give no argument.\n\
16062 This command may be abbreviated \"delete\"."),
16063            &deletelist);
16064
16065   add_com ("clear", class_breakpoint, clear_command, _("\
16066 Clear breakpoint at specified line or function.\n\
16067 Argument may be line number, function name, or \"*\" and an address.\n\
16068 If line number is specified, all breakpoints in that line are cleared.\n\
16069 If function is specified, breakpoints at beginning of function are cleared.\n\
16070 If an address is specified, breakpoints at that address are cleared.\n\
16071 \n\
16072 With no argument, clears all breakpoints in the line that the selected frame\n\
16073 is executing in.\n\
16074 \n\
16075 See also the \"delete\" command which clears breakpoints by number."));
16076   add_com_alias ("cl", "clear", class_breakpoint, 1);
16077
16078   c = add_com ("break", class_breakpoint, break_command, _("\
16079 Set breakpoint at specified line or function.\n"
16080 BREAK_ARGS_HELP ("break")));
16081   set_cmd_completer (c, location_completer);
16082
16083   add_com_alias ("b", "break", class_run, 1);
16084   add_com_alias ("br", "break", class_run, 1);
16085   add_com_alias ("bre", "break", class_run, 1);
16086   add_com_alias ("brea", "break", class_run, 1);
16087
16088   if (xdb_commands)
16089    add_com_alias ("ba", "break", class_breakpoint, 1);
16090
16091   if (dbx_commands)
16092     {
16093       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16094 Break in function/address or break at a line in the current file."),
16095                              &stoplist, "stop ", 1, &cmdlist);
16096       add_cmd ("in", class_breakpoint, stopin_command,
16097                _("Break in function or address."), &stoplist);
16098       add_cmd ("at", class_breakpoint, stopat_command,
16099                _("Break at a line in the current file."), &stoplist);
16100       add_com ("status", class_info, breakpoints_info, _("\
16101 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16102 The \"Type\" column indicates one of:\n\
16103 \tbreakpoint     - normal breakpoint\n\
16104 \twatchpoint     - watchpoint\n\
16105 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16106 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16107 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16108 address and file/line number respectively.\n\
16109 \n\
16110 Convenience variable \"$_\" and default examine address for \"x\"\n\
16111 are set to the address of the last breakpoint listed unless the command\n\
16112 is prefixed with \"server \".\n\n\
16113 Convenience variable \"$bpnum\" contains the number of the last\n\
16114 breakpoint set."));
16115     }
16116
16117   add_info ("breakpoints", breakpoints_info, _("\
16118 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16119 The \"Type\" column indicates one of:\n\
16120 \tbreakpoint     - normal breakpoint\n\
16121 \twatchpoint     - watchpoint\n\
16122 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16123 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16124 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16125 address and file/line number respectively.\n\
16126 \n\
16127 Convenience variable \"$_\" and default examine address for \"x\"\n\
16128 are set to the address of the last breakpoint listed unless the command\n\
16129 is prefixed with \"server \".\n\n\
16130 Convenience variable \"$bpnum\" contains the number of the last\n\
16131 breakpoint set."));
16132
16133   add_info_alias ("b", "breakpoints", 1);
16134
16135   if (xdb_commands)
16136     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16137 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16138 The \"Type\" column indicates one of:\n\
16139 \tbreakpoint     - normal breakpoint\n\
16140 \twatchpoint     - watchpoint\n\
16141 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16142 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16143 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16144 address and file/line number respectively.\n\
16145 \n\
16146 Convenience variable \"$_\" and default examine address for \"x\"\n\
16147 are set to the address of the last breakpoint listed unless the command\n\
16148 is prefixed with \"server \".\n\n\
16149 Convenience variable \"$bpnum\" contains the number of the last\n\
16150 breakpoint set."));
16151
16152   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16153 Status of all breakpoints, or breakpoint number NUMBER.\n\
16154 The \"Type\" column indicates one of:\n\
16155 \tbreakpoint     - normal breakpoint\n\
16156 \twatchpoint     - watchpoint\n\
16157 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16158 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16159 \tuntil          - internal breakpoint used by the \"until\" command\n\
16160 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16161 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16162 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16163 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16164 address and file/line number respectively.\n\
16165 \n\
16166 Convenience variable \"$_\" and default examine address for \"x\"\n\
16167 are set to the address of the last breakpoint listed unless the command\n\
16168 is prefixed with \"server \".\n\n\
16169 Convenience variable \"$bpnum\" contains the number of the last\n\
16170 breakpoint set."),
16171            &maintenanceinfolist);
16172
16173   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16174 Set catchpoints to catch events."),
16175                   &catch_cmdlist, "catch ",
16176                   0/*allow-unknown*/, &cmdlist);
16177
16178   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16179 Set temporary catchpoints to catch events."),
16180                   &tcatch_cmdlist, "tcatch ",
16181                   0/*allow-unknown*/, &cmdlist);
16182
16183   /* Add catch and tcatch sub-commands.  */
16184   add_catch_command ("catch", _("\
16185 Catch an exception, when caught."),
16186                      catch_catch_command,
16187                      NULL,
16188                      CATCH_PERMANENT,
16189                      CATCH_TEMPORARY);
16190   add_catch_command ("throw", _("\
16191 Catch an exception, when thrown."),
16192                      catch_throw_command,
16193                      NULL,
16194                      CATCH_PERMANENT,
16195                      CATCH_TEMPORARY);
16196   add_catch_command ("fork", _("Catch calls to fork."),
16197                      catch_fork_command_1,
16198                      NULL,
16199                      (void *) (uintptr_t) catch_fork_permanent,
16200                      (void *) (uintptr_t) catch_fork_temporary);
16201   add_catch_command ("vfork", _("Catch calls to vfork."),
16202                      catch_fork_command_1,
16203                      NULL,
16204                      (void *) (uintptr_t) catch_vfork_permanent,
16205                      (void *) (uintptr_t) catch_vfork_temporary);
16206   add_catch_command ("exec", _("Catch calls to exec."),
16207                      catch_exec_command_1,
16208                      NULL,
16209                      CATCH_PERMANENT,
16210                      CATCH_TEMPORARY);
16211   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16212 Usage: catch load [REGEX]\n\
16213 If REGEX is given, only stop for libraries matching the regular expression."),
16214                      catch_load_command_1,
16215                      NULL,
16216                      CATCH_PERMANENT,
16217                      CATCH_TEMPORARY);
16218   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16219 Usage: catch unload [REGEX]\n\
16220 If REGEX is given, only stop for libraries matching the regular expression."),
16221                      catch_unload_command_1,
16222                      NULL,
16223                      CATCH_PERMANENT,
16224                      CATCH_TEMPORARY);
16225   add_catch_command ("syscall", _("\
16226 Catch system calls by their names and/or numbers.\n\
16227 Arguments say which system calls to catch.  If no arguments\n\
16228 are given, every system call will be caught.\n\
16229 Arguments, if given, should be one or more system call names\n\
16230 (if your system supports that), or system call numbers."),
16231                      catch_syscall_command_1,
16232                      catch_syscall_completer,
16233                      CATCH_PERMANENT,
16234                      CATCH_TEMPORARY);
16235
16236   c = add_com ("watch", class_breakpoint, watch_command, _("\
16237 Set a watchpoint for an expression.\n\
16238 Usage: watch [-l|-location] EXPRESSION\n\
16239 A watchpoint stops execution of your program whenever the value of\n\
16240 an expression changes.\n\
16241 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16242 the memory to which it refers."));
16243   set_cmd_completer (c, expression_completer);
16244
16245   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16246 Set a read watchpoint for an expression.\n\
16247 Usage: rwatch [-l|-location] EXPRESSION\n\
16248 A watchpoint stops execution of your program whenever the value of\n\
16249 an expression is read.\n\
16250 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16251 the memory to which it refers."));
16252   set_cmd_completer (c, expression_completer);
16253
16254   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16255 Set a watchpoint for an expression.\n\
16256 Usage: awatch [-l|-location] EXPRESSION\n\
16257 A watchpoint stops execution of your program whenever the value of\n\
16258 an expression is either read or written.\n\
16259 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16260 the memory to which it refers."));
16261   set_cmd_completer (c, expression_completer);
16262
16263   add_info ("watchpoints", watchpoints_info, _("\
16264 Status of specified watchpoints (all watchpoints if no argument)."));
16265
16266   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16267      respond to changes - contrary to the description.  */
16268   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16269                             &can_use_hw_watchpoints, _("\
16270 Set debugger's willingness to use watchpoint hardware."), _("\
16271 Show debugger's willingness to use watchpoint hardware."), _("\
16272 If zero, gdb will not use hardware for new watchpoints, even if\n\
16273 such is available.  (However, any hardware watchpoints that were\n\
16274 created before setting this to nonzero, will continue to use watchpoint\n\
16275 hardware.)"),
16276                             NULL,
16277                             show_can_use_hw_watchpoints,
16278                             &setlist, &showlist);
16279
16280   can_use_hw_watchpoints = 1;
16281
16282   /* Tracepoint manipulation commands.  */
16283
16284   c = add_com ("trace", class_breakpoint, trace_command, _("\
16285 Set a tracepoint at specified line or function.\n\
16286 \n"
16287 BREAK_ARGS_HELP ("trace") "\n\
16288 Do \"help tracepoints\" for info on other tracepoint commands."));
16289   set_cmd_completer (c, location_completer);
16290
16291   add_com_alias ("tp", "trace", class_alias, 0);
16292   add_com_alias ("tr", "trace", class_alias, 1);
16293   add_com_alias ("tra", "trace", class_alias, 1);
16294   add_com_alias ("trac", "trace", class_alias, 1);
16295
16296   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16297 Set a fast tracepoint at specified line or function.\n\
16298 \n"
16299 BREAK_ARGS_HELP ("ftrace") "\n\
16300 Do \"help tracepoints\" for info on other tracepoint commands."));
16301   set_cmd_completer (c, location_completer);
16302
16303   c = add_com ("strace", class_breakpoint, strace_command, _("\
16304 Set a static tracepoint at specified line, function or marker.\n\
16305 \n\
16306 strace [LOCATION] [if CONDITION]\n\
16307 LOCATION may be a line number, function name, \"*\" and an address,\n\
16308 or -m MARKER_ID.\n\
16309 If a line number is specified, probe the marker at start of code\n\
16310 for that line.  If a function is specified, probe the marker at start\n\
16311 of code for that function.  If an address is specified, probe the marker\n\
16312 at that exact address.  If a marker id is specified, probe the marker\n\
16313 with that name.  With no LOCATION, uses current execution address of\n\
16314 the selected stack frame.\n\
16315 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16316 This collects arbitrary user data passed in the probe point call to the\n\
16317 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16318 by printing the $_sdata variable like any other convenience variable.\n\
16319 \n\
16320 CONDITION is a boolean expression.\n\
16321 \n\
16322 Multiple tracepoints at one place are permitted, and useful if their\n\
16323 conditions are different.\n\
16324 \n\
16325 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16326 Do \"help tracepoints\" for info on other tracepoint commands."));
16327   set_cmd_completer (c, location_completer);
16328
16329   add_info ("tracepoints", tracepoints_info, _("\
16330 Status of specified tracepoints (all tracepoints if no argument).\n\
16331 Convenience variable \"$tpnum\" contains the number of the\n\
16332 last tracepoint set."));
16333
16334   add_info_alias ("tp", "tracepoints", 1);
16335
16336   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16337 Delete specified tracepoints.\n\
16338 Arguments are tracepoint numbers, separated by spaces.\n\
16339 No argument means delete all tracepoints."),
16340            &deletelist);
16341
16342   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16343 Disable specified tracepoints.\n\
16344 Arguments are tracepoint numbers, separated by spaces.\n\
16345 No argument means disable all tracepoints."),
16346            &disablelist);
16347   deprecate_cmd (c, "disable");
16348
16349   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16350 Enable specified tracepoints.\n\
16351 Arguments are tracepoint numbers, separated by spaces.\n\
16352 No argument means enable all tracepoints."),
16353            &enablelist);
16354   deprecate_cmd (c, "enable");
16355
16356   add_com ("passcount", class_trace, trace_pass_command, _("\
16357 Set the passcount for a tracepoint.\n\
16358 The trace will end when the tracepoint has been passed 'count' times.\n\
16359 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16360 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16361
16362   add_prefix_cmd ("save", class_breakpoint, save_command,
16363                   _("Save breakpoint definitions as a script."),
16364                   &save_cmdlist, "save ",
16365                   0/*allow-unknown*/, &cmdlist);
16366
16367   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16368 Save current breakpoint definitions as a script.\n\
16369 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16370 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16371 session to restore them."),
16372                &save_cmdlist);
16373   set_cmd_completer (c, filename_completer);
16374
16375   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16376 Save current tracepoint definitions as a script.\n\
16377 Use the 'source' command in another debug session to restore them."),
16378                &save_cmdlist);
16379   set_cmd_completer (c, filename_completer);
16380
16381   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16382   deprecate_cmd (c, "save tracepoints");
16383
16384   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16385 Breakpoint specific settings\n\
16386 Configure various breakpoint-specific variables such as\n\
16387 pending breakpoint behavior"),
16388                   &breakpoint_set_cmdlist, "set breakpoint ",
16389                   0/*allow-unknown*/, &setlist);
16390   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16391 Breakpoint specific settings\n\
16392 Configure various breakpoint-specific variables such as\n\
16393 pending breakpoint behavior"),
16394                   &breakpoint_show_cmdlist, "show breakpoint ",
16395                   0/*allow-unknown*/, &showlist);
16396
16397   add_setshow_auto_boolean_cmd ("pending", no_class,
16398                                 &pending_break_support, _("\
16399 Set debugger's behavior regarding pending breakpoints."), _("\
16400 Show debugger's behavior regarding pending breakpoints."), _("\
16401 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16402 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16403 an error.  If auto, an unrecognized breakpoint location results in a\n\
16404 user-query to see if a pending breakpoint should be created."),
16405                                 NULL,
16406                                 show_pending_break_support,
16407                                 &breakpoint_set_cmdlist,
16408                                 &breakpoint_show_cmdlist);
16409
16410   pending_break_support = AUTO_BOOLEAN_AUTO;
16411
16412   add_setshow_boolean_cmd ("auto-hw", no_class,
16413                            &automatic_hardware_breakpoints, _("\
16414 Set automatic usage of hardware breakpoints."), _("\
16415 Show automatic usage of hardware breakpoints."), _("\
16416 If set, the debugger will automatically use hardware breakpoints for\n\
16417 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16418 a warning will be emitted for such breakpoints."),
16419                            NULL,
16420                            show_automatic_hardware_breakpoints,
16421                            &breakpoint_set_cmdlist,
16422                            &breakpoint_show_cmdlist);
16423
16424   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16425                                 &always_inserted_mode, _("\
16426 Set mode for inserting breakpoints."), _("\
16427 Show mode for inserting breakpoints."), _("\
16428 When this mode is off, breakpoints are inserted in inferior when it is\n\
16429 resumed, and removed when execution stops.  When this mode is on,\n\
16430 breakpoints are inserted immediately and removed only when the user\n\
16431 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16432 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16433 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16434 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16435 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16436                                 NULL,
16437                                 &show_always_inserted_mode,
16438                                 &breakpoint_set_cmdlist,
16439                                 &breakpoint_show_cmdlist);
16440
16441   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16442                         condition_evaluation_enums,
16443                         &condition_evaluation_mode_1, _("\
16444 Set mode of breakpoint condition evaluation."), _("\
16445 Show mode of breakpoint condition evaluation."), _("\
16446 When this is set to \"host\", breakpoint conditions will be\n\
16447 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16448 breakpoint conditions will be downloaded to the target (if the target\n\
16449 supports such feature) and conditions will be evaluated on the target's side.\n\
16450 If this is set to \"auto\" (default), this will be automatically set to\n\
16451 \"target\" if it supports condition evaluation, otherwise it will\n\
16452 be set to \"gdb\""),
16453                            &set_condition_evaluation_mode,
16454                            &show_condition_evaluation_mode,
16455                            &breakpoint_set_cmdlist,
16456                            &breakpoint_show_cmdlist);
16457
16458   add_com ("break-range", class_breakpoint, break_range_command, _("\
16459 Set a breakpoint for an address range.\n\
16460 break-range START-LOCATION, END-LOCATION\n\
16461 where START-LOCATION and END-LOCATION can be one of the following:\n\
16462   LINENUM, for that line in the current file,\n\
16463   FILE:LINENUM, for that line in that file,\n\
16464   +OFFSET, for that number of lines after the current line\n\
16465            or the start of the range\n\
16466   FUNCTION, for the first line in that function,\n\
16467   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16468   *ADDRESS, for the instruction at that address.\n\
16469 \n\
16470 The breakpoint will stop execution of the inferior whenever it executes\n\
16471 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16472 range (including START-LOCATION and END-LOCATION)."));
16473
16474   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16475 Set a dynamic printf at specified line or function.\n\
16476 dprintf location,format string,arg1,arg2,...\n\
16477 location may be a line number, function name, or \"*\" and an address.\n\
16478 If a line number is specified, break at start of code for that line.\n\
16479 If a function is specified, break at start of code for that function.\n\
16480 "));
16481   set_cmd_completer (c, location_completer);
16482
16483   add_setshow_enum_cmd ("dprintf-style", class_support,
16484                         dprintf_style_enums, &dprintf_style, _("\
16485 Set the style of usage for dynamic printf."), _("\
16486 Show the style of usage for dynamic printf."), _("\
16487 This setting chooses how GDB will do a dynamic printf.\n\
16488 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16489 console, as with the \"printf\" command.\n\
16490 If the value is \"call\", the print is done by calling a function in your\n\
16491 program; by default printf(), but you can choose a different function or\n\
16492 output stream by setting dprintf-function and dprintf-channel."),
16493                         update_dprintf_commands, NULL,
16494                         &setlist, &showlist);
16495
16496   dprintf_function = xstrdup ("printf");
16497   add_setshow_string_cmd ("dprintf-function", class_support,
16498                           &dprintf_function, _("\
16499 Set the function to use for dynamic printf"), _("\
16500 Show the function to use for dynamic printf"), NULL,
16501                           update_dprintf_commands, NULL,
16502                           &setlist, &showlist);
16503
16504   dprintf_channel = xstrdup ("");
16505   add_setshow_string_cmd ("dprintf-channel", class_support,
16506                           &dprintf_channel, _("\
16507 Set the channel to use for dynamic printf"), _("\
16508 Show the channel to use for dynamic printf"), NULL,
16509                           update_dprintf_commands, NULL,
16510                           &setlist, &showlist);
16511
16512   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16513                            &disconnected_dprintf, _("\
16514 Set whether dprintf continues after GDB disconnects."), _("\
16515 Show whether dprintf continues after GDB disconnects."), _("\
16516 Use this to let dprintf commands continue to hit and produce output\n\
16517 even if GDB disconnects or detaches from the target."),
16518                            NULL,
16519                            NULL,
16520                            &setlist, &showlist);
16521
16522   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16523 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16524 (target agent only) This is useful for formatted output in user-defined commands."));
16525
16526   automatic_hardware_breakpoints = 1;
16527
16528   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16529 }