* breakpoint.c (breakpoint_cond_eval): Fix and enhance comment.
[platform/upstream/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_RETHROW,
90   EX_EVENT_CATCH
91 };
92
93 /* Prototypes for local functions.  */
94
95 static void enable_delete_command (char *, int);
96
97 static void enable_once_command (char *, int);
98
99 static void enable_count_command (char *, int);
100
101 static void disable_command (char *, int);
102
103 static void enable_command (char *, int);
104
105 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
106                                                       void *),
107                                     void *);
108
109 static void ignore_command (char *, int);
110
111 static int breakpoint_re_set_one (void *);
112
113 static void breakpoint_re_set_default (struct breakpoint *);
114
115 static void create_sals_from_address_default (char **,
116                                               struct linespec_result *,
117                                               enum bptype, char *,
118                                               char **);
119
120 static void create_breakpoints_sal_default (struct gdbarch *,
121                                             struct linespec_result *,
122                                             char *, char *, enum bptype,
123                                             enum bpdisp, int, int,
124                                             int,
125                                             const struct breakpoint_ops *,
126                                             int, int, int, unsigned);
127
128 static void decode_linespec_default (struct breakpoint *, char **,
129                                      struct symtabs_and_lines *);
130
131 static void clear_command (char *, int);
132
133 static void catch_command (char *, int);
134
135 static int can_use_hardware_watchpoint (struct value *);
136
137 static void break_command_1 (char *, int, int);
138
139 static void mention (struct breakpoint *);
140
141 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
142                                                                enum bptype,
143                                                                const struct breakpoint_ops *);
144 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
145                                                        const struct symtab_and_line *);
146
147 /* This function is used in gdbtk sources and thus can not be made
148    static.  */
149 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
150                                        struct symtab_and_line,
151                                        enum bptype,
152                                        const struct breakpoint_ops *);
153
154 static struct breakpoint *
155   momentary_breakpoint_from_master (struct breakpoint *orig,
156                                     enum bptype type,
157                                     const struct breakpoint_ops *ops);
158
159 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
160
161 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
162                                             CORE_ADDR bpaddr,
163                                             enum bptype bptype);
164
165 static void describe_other_breakpoints (struct gdbarch *,
166                                         struct program_space *, CORE_ADDR,
167                                         struct obj_section *, int);
168
169 static int breakpoint_address_match (struct address_space *aspace1,
170                                      CORE_ADDR addr1,
171                                      struct address_space *aspace2,
172                                      CORE_ADDR addr2);
173
174 static int watchpoint_locations_match (struct bp_location *loc1,
175                                        struct bp_location *loc2);
176
177 static int breakpoint_location_address_match (struct bp_location *bl,
178                                               struct address_space *aspace,
179                                               CORE_ADDR addr);
180
181 static void breakpoints_info (char *, int);
182
183 static void watchpoints_info (char *, int);
184
185 static int breakpoint_1 (char *, int, 
186                          int (*) (const struct breakpoint *));
187
188 static int breakpoint_cond_eval (void *);
189
190 static void cleanup_executing_breakpoints (void *);
191
192 static void commands_command (char *, int);
193
194 static void condition_command (char *, int);
195
196 typedef enum
197   {
198     mark_inserted,
199     mark_uninserted
200   }
201 insertion_state_t;
202
203 static int remove_breakpoint (struct bp_location *, insertion_state_t);
204 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
205
206 static enum print_stop_action print_bp_stop_message (bpstat bs);
207
208 static int watchpoint_check (void *);
209
210 static void maintenance_info_breakpoints (char *, int);
211
212 static int hw_breakpoint_used_count (void);
213
214 static int hw_watchpoint_use_count (struct breakpoint *);
215
216 static int hw_watchpoint_used_count_others (struct breakpoint *except,
217                                             enum bptype type,
218                                             int *other_type_used);
219
220 static void hbreak_command (char *, int);
221
222 static void thbreak_command (char *, int);
223
224 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
225                                     int count);
226
227 static void stop_command (char *arg, int from_tty);
228
229 static void stopin_command (char *arg, int from_tty);
230
231 static void stopat_command (char *arg, int from_tty);
232
233 static void tcatch_command (char *arg, int from_tty);
234
235 static void detach_single_step_breakpoints (void);
236
237 static int single_step_breakpoint_inserted_here_p (struct address_space *,
238                                                    CORE_ADDR pc);
239
240 static void free_bp_location (struct bp_location *loc);
241 static void incref_bp_location (struct bp_location *loc);
242 static void decref_bp_location (struct bp_location **loc);
243
244 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
245
246 static void update_global_location_list (int);
247
248 static void update_global_location_list_nothrow (int);
249
250 static int is_hardware_watchpoint (const struct breakpoint *bpt);
251
252 static void insert_breakpoint_locations (void);
253
254 static int syscall_catchpoint_p (struct breakpoint *b);
255
256 static void tracepoints_info (char *, int);
257
258 static void delete_trace_command (char *, int);
259
260 static void enable_trace_command (char *, int);
261
262 static void disable_trace_command (char *, int);
263
264 static void trace_pass_command (char *, int);
265
266 static void set_tracepoint_count (int num);
267
268 static int is_masked_watchpoint (const struct breakpoint *b);
269
270 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
271
272 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
273    otherwise.  */
274
275 static int strace_marker_p (struct breakpoint *b);
276
277 /* The abstract base class all breakpoint_ops structures inherit
278    from.  */
279 struct breakpoint_ops base_breakpoint_ops;
280
281 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
282    that are implemented on top of software or hardware breakpoints
283    (user breakpoints, internal and momentary breakpoints, etc.).  */
284 static struct breakpoint_ops bkpt_base_breakpoint_ops;
285
286 /* Internal breakpoints class type.  */
287 static struct breakpoint_ops internal_breakpoint_ops;
288
289 /* Momentary breakpoints class type.  */
290 static struct breakpoint_ops momentary_breakpoint_ops;
291
292 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
293 static struct breakpoint_ops longjmp_breakpoint_ops;
294
295 /* The breakpoint_ops structure to be used in regular user created
296    breakpoints.  */
297 struct breakpoint_ops bkpt_breakpoint_ops;
298
299 /* Breakpoints set on probes.  */
300 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
301
302 /* Dynamic printf class type.  */
303 struct breakpoint_ops dprintf_breakpoint_ops;
304
305 /* The style in which to perform a dynamic printf.  This is a user
306    option because different output options have different tradeoffs;
307    if GDB does the printing, there is better error handling if there
308    is a problem with any of the arguments, but using an inferior
309    function lets you have special-purpose printers and sending of
310    output to the same place as compiled-in print functions.  */
311
312 static const char dprintf_style_gdb[] = "gdb";
313 static const char dprintf_style_call[] = "call";
314 static const char dprintf_style_agent[] = "agent";
315 static const char *const dprintf_style_enums[] = {
316   dprintf_style_gdb,
317   dprintf_style_call,
318   dprintf_style_agent,
319   NULL
320 };
321 static const char *dprintf_style = dprintf_style_gdb;
322
323 /* The function to use for dynamic printf if the preferred style is to
324    call into the inferior.  The value is simply a string that is
325    copied into the command, so it can be anything that GDB can
326    evaluate to a callable address, not necessarily a function name.  */
327
328 static char *dprintf_function = "";
329
330 /* The channel to use for dynamic printf if the preferred style is to
331    call into the inferior; if a nonempty string, it will be passed to
332    the call as the first argument, with the format string as the
333    second.  As with the dprintf function, this can be anything that
334    GDB knows how to evaluate, so in addition to common choices like
335    "stderr", this could be an app-specific expression like
336    "mystreams[curlogger]".  */
337
338 static char *dprintf_channel = "";
339
340 /* True if dprintf commands should continue to operate even if GDB
341    has disconnected.  */
342 static int disconnected_dprintf = 1;
343
344 /* A reference-counted struct command_line.  This lets multiple
345    breakpoints share a single command list.  */
346 struct counted_command_line
347 {
348   /* The reference count.  */
349   int refc;
350
351   /* The command list.  */
352   struct command_line *commands;
353 };
354
355 struct command_line *
356 breakpoint_commands (struct breakpoint *b)
357 {
358   return b->commands ? b->commands->commands : NULL;
359 }
360
361 /* Flag indicating that a command has proceeded the inferior past the
362    current breakpoint.  */
363
364 static int breakpoint_proceeded;
365
366 const char *
367 bpdisp_text (enum bpdisp disp)
368 {
369   /* NOTE: the following values are a part of MI protocol and
370      represent values of 'disp' field returned when inferior stops at
371      a breakpoint.  */
372   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
373
374   return bpdisps[(int) disp];
375 }
376
377 /* Prototypes for exported functions.  */
378 /* If FALSE, gdb will not use hardware support for watchpoints, even
379    if such is available.  */
380 static int can_use_hw_watchpoints;
381
382 static void
383 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
384                              struct cmd_list_element *c,
385                              const char *value)
386 {
387   fprintf_filtered (file,
388                     _("Debugger's willingness to use "
389                       "watchpoint hardware is %s.\n"),
390                     value);
391 }
392
393 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
394    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
395    for unrecognized breakpoint locations.
396    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
397 static enum auto_boolean pending_break_support;
398 static void
399 show_pending_break_support (struct ui_file *file, int from_tty,
400                             struct cmd_list_element *c,
401                             const char *value)
402 {
403   fprintf_filtered (file,
404                     _("Debugger's behavior regarding "
405                       "pending breakpoints is %s.\n"),
406                     value);
407 }
408
409 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
410    set with "break" but falling in read-only memory.
411    If 0, gdb will warn about such breakpoints, but won't automatically
412    use hardware breakpoints.  */
413 static int automatic_hardware_breakpoints;
414 static void
415 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
416                                      struct cmd_list_element *c,
417                                      const char *value)
418 {
419   fprintf_filtered (file,
420                     _("Automatic usage of hardware breakpoints is %s.\n"),
421                     value);
422 }
423
424 /* If on, gdb will keep breakpoints inserted even as inferior is
425    stopped, and immediately insert any new breakpoints.  If off, gdb
426    will insert breakpoints into inferior only when resuming it, and
427    will remove breakpoints upon stop.  If auto, GDB will behave as ON
428    if in non-stop mode, and as OFF if all-stop mode.*/
429
430 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
431
432 static void
433 show_always_inserted_mode (struct ui_file *file, int from_tty,
434                      struct cmd_list_element *c, const char *value)
435 {
436   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
437     fprintf_filtered (file,
438                       _("Always inserted breakpoint "
439                         "mode is %s (currently %s).\n"),
440                       value,
441                       breakpoints_always_inserted_mode () ? "on" : "off");
442   else
443     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
444                       value);
445 }
446
447 int
448 breakpoints_always_inserted_mode (void)
449 {
450   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
451           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
452 }
453
454 static const char condition_evaluation_both[] = "host or target";
455
456 /* Modes for breakpoint condition evaluation.  */
457 static const char condition_evaluation_auto[] = "auto";
458 static const char condition_evaluation_host[] = "host";
459 static const char condition_evaluation_target[] = "target";
460 static const char *const condition_evaluation_enums[] = {
461   condition_evaluation_auto,
462   condition_evaluation_host,
463   condition_evaluation_target,
464   NULL
465 };
466
467 /* Global that holds the current mode for breakpoint condition evaluation.  */
468 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
469
470 /* Global that we use to display information to the user (gets its value from
471    condition_evaluation_mode_1.  */
472 static const char *condition_evaluation_mode = condition_evaluation_auto;
473
474 /* Translate a condition evaluation mode MODE into either "host"
475    or "target".  This is used mostly to translate from "auto" to the
476    real setting that is being used.  It returns the translated
477    evaluation mode.  */
478
479 static const char *
480 translate_condition_evaluation_mode (const char *mode)
481 {
482   if (mode == condition_evaluation_auto)
483     {
484       if (target_supports_evaluation_of_breakpoint_conditions ())
485         return condition_evaluation_target;
486       else
487         return condition_evaluation_host;
488     }
489   else
490     return mode;
491 }
492
493 /* Discovers what condition_evaluation_auto translates to.  */
494
495 static const char *
496 breakpoint_condition_evaluation_mode (void)
497 {
498   return translate_condition_evaluation_mode (condition_evaluation_mode);
499 }
500
501 /* Return true if GDB should evaluate breakpoint conditions or false
502    otherwise.  */
503
504 static int
505 gdb_evaluates_breakpoint_condition_p (void)
506 {
507   const char *mode = breakpoint_condition_evaluation_mode ();
508
509   return (mode == condition_evaluation_host);
510 }
511
512 void _initialize_breakpoint (void);
513
514 /* Are we executing breakpoint commands?  */
515 static int executing_breakpoint_commands;
516
517 /* Are overlay event breakpoints enabled? */
518 static int overlay_events_enabled;
519
520 /* See description in breakpoint.h. */
521 int target_exact_watchpoints = 0;
522
523 /* Walk the following statement or block through all breakpoints.
524    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
525    current breakpoint.  */
526
527 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
528
529 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
530         for (B = breakpoint_chain;      \
531              B ? (TMP=B->next, 1): 0;   \
532              B = TMP)
533
534 /* Similar iterator for the low-level breakpoints.  SAFE variant is
535    not provided so update_global_location_list must not be called
536    while executing the block of ALL_BP_LOCATIONS.  */
537
538 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
539         for (BP_TMP = bp_location;                                      \
540              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
541              BP_TMP++)
542
543 /* Iterates through locations with address ADDRESS for the currently selected
544    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
545    to where the loop should start from.
546    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
547    appropriate location to start with.  */
548
549 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
550         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
551              BP_LOCP_TMP = BP_LOCP_START;                               \
552              BP_LOCP_START                                              \
553              && (BP_LOCP_TMP < bp_location + bp_location_count          \
554              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
555              BP_LOCP_TMP++)
556
557 /* Iterator for tracepoints only.  */
558
559 #define ALL_TRACEPOINTS(B)  \
560   for (B = breakpoint_chain; B; B = B->next)  \
561     if (is_tracepoint (B))
562
563 /* Chains of all breakpoints defined.  */
564
565 struct breakpoint *breakpoint_chain;
566
567 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
568
569 static struct bp_location **bp_location;
570
571 /* Number of elements of BP_LOCATION.  */
572
573 static unsigned bp_location_count;
574
575 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
576    ADDRESS for the current elements of BP_LOCATION which get a valid
577    result from bp_location_has_shadow.  You can use it for roughly
578    limiting the subrange of BP_LOCATION to scan for shadow bytes for
579    an address you need to read.  */
580
581 static CORE_ADDR bp_location_placed_address_before_address_max;
582
583 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
584    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
585    BP_LOCATION which get a valid result from bp_location_has_shadow.
586    You can use it for roughly limiting the subrange of BP_LOCATION to
587    scan for shadow bytes for an address you need to read.  */
588
589 static CORE_ADDR bp_location_shadow_len_after_address_max;
590
591 /* The locations that no longer correspond to any breakpoint, unlinked
592    from bp_location array, but for which a hit may still be reported
593    by a target.  */
594 VEC(bp_location_p) *moribund_locations = NULL;
595
596 /* Number of last breakpoint made.  */
597
598 static int breakpoint_count;
599
600 /* The value of `breakpoint_count' before the last command that
601    created breakpoints.  If the last (break-like) command created more
602    than one breakpoint, then the difference between BREAKPOINT_COUNT
603    and PREV_BREAKPOINT_COUNT is more than one.  */
604 static int prev_breakpoint_count;
605
606 /* Number of last tracepoint made.  */
607
608 static int tracepoint_count;
609
610 static struct cmd_list_element *breakpoint_set_cmdlist;
611 static struct cmd_list_element *breakpoint_show_cmdlist;
612 struct cmd_list_element *save_cmdlist;
613
614 /* Return whether a breakpoint is an active enabled breakpoint.  */
615 static int
616 breakpoint_enabled (struct breakpoint *b)
617 {
618   return (b->enable_state == bp_enabled);
619 }
620
621 /* Set breakpoint count to NUM.  */
622
623 static void
624 set_breakpoint_count (int num)
625 {
626   prev_breakpoint_count = breakpoint_count;
627   breakpoint_count = num;
628   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
629 }
630
631 /* Used by `start_rbreak_breakpoints' below, to record the current
632    breakpoint count before "rbreak" creates any breakpoint.  */
633 static int rbreak_start_breakpoint_count;
634
635 /* Called at the start an "rbreak" command to record the first
636    breakpoint made.  */
637
638 void
639 start_rbreak_breakpoints (void)
640 {
641   rbreak_start_breakpoint_count = breakpoint_count;
642 }
643
644 /* Called at the end of an "rbreak" command to record the last
645    breakpoint made.  */
646
647 void
648 end_rbreak_breakpoints (void)
649 {
650   prev_breakpoint_count = rbreak_start_breakpoint_count;
651 }
652
653 /* Used in run_command to zero the hit count when a new run starts.  */
654
655 void
656 clear_breakpoint_hit_counts (void)
657 {
658   struct breakpoint *b;
659
660   ALL_BREAKPOINTS (b)
661     b->hit_count = 0;
662 }
663
664 /* Allocate a new counted_command_line with reference count of 1.
665    The new structure owns COMMANDS.  */
666
667 static struct counted_command_line *
668 alloc_counted_command_line (struct command_line *commands)
669 {
670   struct counted_command_line *result
671     = xmalloc (sizeof (struct counted_command_line));
672
673   result->refc = 1;
674   result->commands = commands;
675   return result;
676 }
677
678 /* Increment reference count.  This does nothing if CMD is NULL.  */
679
680 static void
681 incref_counted_command_line (struct counted_command_line *cmd)
682 {
683   if (cmd)
684     ++cmd->refc;
685 }
686
687 /* Decrement reference count.  If the reference count reaches 0,
688    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
689    nothing if *CMDP is NULL.  */
690
691 static void
692 decref_counted_command_line (struct counted_command_line **cmdp)
693 {
694   if (*cmdp)
695     {
696       if (--(*cmdp)->refc == 0)
697         {
698           free_command_lines (&(*cmdp)->commands);
699           xfree (*cmdp);
700         }
701       *cmdp = NULL;
702     }
703 }
704
705 /* A cleanup function that calls decref_counted_command_line.  */
706
707 static void
708 do_cleanup_counted_command_line (void *arg)
709 {
710   decref_counted_command_line (arg);
711 }
712
713 /* Create a cleanup that calls decref_counted_command_line on the
714    argument.  */
715
716 static struct cleanup *
717 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
718 {
719   return make_cleanup (do_cleanup_counted_command_line, cmdp);
720 }
721
722 \f
723 /* Return the breakpoint with the specified number, or NULL
724    if the number does not refer to an existing breakpoint.  */
725
726 struct breakpoint *
727 get_breakpoint (int num)
728 {
729   struct breakpoint *b;
730
731   ALL_BREAKPOINTS (b)
732     if (b->number == num)
733       return b;
734   
735   return NULL;
736 }
737
738 \f
739
740 /* Mark locations as "conditions have changed" in case the target supports
741    evaluating conditions on its side.  */
742
743 static void
744 mark_breakpoint_modified (struct breakpoint *b)
745 {
746   struct bp_location *loc;
747
748   /* This is only meaningful if the target is
749      evaluating conditions and if the user has
750      opted for condition evaluation on the target's
751      side.  */
752   if (gdb_evaluates_breakpoint_condition_p ()
753       || !target_supports_evaluation_of_breakpoint_conditions ())
754     return;
755
756   if (!is_breakpoint (b))
757     return;
758
759   for (loc = b->loc; loc; loc = loc->next)
760     loc->condition_changed = condition_modified;
761 }
762
763 /* Mark location as "conditions have changed" in case the target supports
764    evaluating conditions on its side.  */
765
766 static void
767 mark_breakpoint_location_modified (struct bp_location *loc)
768 {
769   /* This is only meaningful if the target is
770      evaluating conditions and if the user has
771      opted for condition evaluation on the target's
772      side.  */
773   if (gdb_evaluates_breakpoint_condition_p ()
774       || !target_supports_evaluation_of_breakpoint_conditions ())
775
776     return;
777
778   if (!is_breakpoint (loc->owner))
779     return;
780
781   loc->condition_changed = condition_modified;
782 }
783
784 /* Sets the condition-evaluation mode using the static global
785    condition_evaluation_mode.  */
786
787 static void
788 set_condition_evaluation_mode (char *args, int from_tty,
789                                struct cmd_list_element *c)
790 {
791   const char *old_mode, *new_mode;
792
793   if ((condition_evaluation_mode_1 == condition_evaluation_target)
794       && !target_supports_evaluation_of_breakpoint_conditions ())
795     {
796       condition_evaluation_mode_1 = condition_evaluation_mode;
797       warning (_("Target does not support breakpoint condition evaluation.\n"
798                  "Using host evaluation mode instead."));
799       return;
800     }
801
802   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
803   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
804
805   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
806      settings was "auto".  */
807   condition_evaluation_mode = condition_evaluation_mode_1;
808
809   /* Only update the mode if the user picked a different one.  */
810   if (new_mode != old_mode)
811     {
812       struct bp_location *loc, **loc_tmp;
813       /* If the user switched to a different evaluation mode, we
814          need to synch the changes with the target as follows:
815
816          "host" -> "target": Send all (valid) conditions to the target.
817          "target" -> "host": Remove all the conditions from the target.
818       */
819
820       if (new_mode == condition_evaluation_target)
821         {
822           /* Mark everything modified and synch conditions with the
823              target.  */
824           ALL_BP_LOCATIONS (loc, loc_tmp)
825             mark_breakpoint_location_modified (loc);
826         }
827       else
828         {
829           /* Manually mark non-duplicate locations to synch conditions
830              with the target.  We do this to remove all the conditions the
831              target knows about.  */
832           ALL_BP_LOCATIONS (loc, loc_tmp)
833             if (is_breakpoint (loc->owner) && loc->inserted)
834               loc->needs_update = 1;
835         }
836
837       /* Do the update.  */
838       update_global_location_list (1);
839     }
840
841   return;
842 }
843
844 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
845    what "auto" is translating to.  */
846
847 static void
848 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
849                                 struct cmd_list_element *c, const char *value)
850 {
851   if (condition_evaluation_mode == condition_evaluation_auto)
852     fprintf_filtered (file,
853                       _("Breakpoint condition evaluation "
854                         "mode is %s (currently %s).\n"),
855                       value,
856                       breakpoint_condition_evaluation_mode ());
857   else
858     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
859                       value);
860 }
861
862 /* A comparison function for bp_location AP and BP that is used by
863    bsearch.  This comparison function only cares about addresses, unlike
864    the more general bp_location_compare function.  */
865
866 static int
867 bp_location_compare_addrs (const void *ap, const void *bp)
868 {
869   struct bp_location *a = *(void **) ap;
870   struct bp_location *b = *(void **) bp;
871
872   if (a->address == b->address)
873     return 0;
874   else
875     return ((a->address > b->address) - (a->address < b->address));
876 }
877
878 /* Helper function to skip all bp_locations with addresses
879    less than ADDRESS.  It returns the first bp_location that
880    is greater than or equal to ADDRESS.  If none is found, just
881    return NULL.  */
882
883 static struct bp_location **
884 get_first_locp_gte_addr (CORE_ADDR address)
885 {
886   struct bp_location dummy_loc;
887   struct bp_location *dummy_locp = &dummy_loc;
888   struct bp_location **locp_found = NULL;
889
890   /* Initialize the dummy location's address field.  */
891   memset (&dummy_loc, 0, sizeof (struct bp_location));
892   dummy_loc.address = address;
893
894   /* Find a close match to the first location at ADDRESS.  */
895   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
896                         sizeof (struct bp_location **),
897                         bp_location_compare_addrs);
898
899   /* Nothing was found, nothing left to do.  */
900   if (locp_found == NULL)
901     return NULL;
902
903   /* We may have found a location that is at ADDRESS but is not the first in the
904      location's list.  Go backwards (if possible) and locate the first one.  */
905   while ((locp_found - 1) >= bp_location
906          && (*(locp_found - 1))->address == address)
907     locp_found--;
908
909   return locp_found;
910 }
911
912 void
913 set_breakpoint_condition (struct breakpoint *b, char *exp,
914                           int from_tty)
915 {
916   xfree (b->cond_string);
917   b->cond_string = NULL;
918
919   if (is_watchpoint (b))
920     {
921       struct watchpoint *w = (struct watchpoint *) b;
922
923       xfree (w->cond_exp);
924       w->cond_exp = NULL;
925     }
926   else
927     {
928       struct bp_location *loc;
929
930       for (loc = b->loc; loc; loc = loc->next)
931         {
932           xfree (loc->cond);
933           loc->cond = NULL;
934
935           /* No need to free the condition agent expression
936              bytecode (if we have one).  We will handle this
937              when we go through update_global_location_list.  */
938         }
939     }
940
941   if (*exp == 0)
942     {
943       if (from_tty)
944         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
945     }
946   else
947     {
948       const char *arg = exp;
949
950       /* I don't know if it matters whether this is the string the user
951          typed in or the decompiled expression.  */
952       b->cond_string = xstrdup (arg);
953       b->condition_not_parsed = 0;
954
955       if (is_watchpoint (b))
956         {
957           struct watchpoint *w = (struct watchpoint *) b;
958
959           innermost_block = NULL;
960           arg = exp;
961           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
962           if (*arg)
963             error (_("Junk at end of expression"));
964           w->cond_exp_valid_block = innermost_block;
965         }
966       else
967         {
968           struct bp_location *loc;
969
970           for (loc = b->loc; loc; loc = loc->next)
971             {
972               arg = exp;
973               loc->cond =
974                 parse_exp_1 (&arg, loc->address,
975                              block_for_pc (loc->address), 0);
976               if (*arg)
977                 error (_("Junk at end of expression"));
978             }
979         }
980     }
981   mark_breakpoint_modified (b);
982
983   observer_notify_breakpoint_modified (b);
984 }
985
986 /* Completion for the "condition" command.  */
987
988 static VEC (char_ptr) *
989 condition_completer (struct cmd_list_element *cmd,
990                      const char *text, const char *word)
991 {
992   const char *space;
993
994   text = skip_spaces_const (text);
995   space = skip_to_space_const (text);
996   if (*space == '\0')
997     {
998       int len;
999       struct breakpoint *b;
1000       VEC (char_ptr) *result = NULL;
1001
1002       if (text[0] == '$')
1003         {
1004           /* We don't support completion of history indices.  */
1005           if (isdigit (text[1]))
1006             return NULL;
1007           return complete_internalvar (&text[1]);
1008         }
1009
1010       /* We're completing the breakpoint number.  */
1011       len = strlen (text);
1012
1013       ALL_BREAKPOINTS (b)
1014         {
1015           char number[50];
1016
1017           xsnprintf (number, sizeof (number), "%d", b->number);
1018
1019           if (strncmp (number, text, len) == 0)
1020             VEC_safe_push (char_ptr, result, xstrdup (number));
1021         }
1022
1023       return result;
1024     }
1025
1026   /* We're completing the expression part.  */
1027   text = skip_spaces_const (space);
1028   return expression_completer (cmd, text, word);
1029 }
1030
1031 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1032
1033 static void
1034 condition_command (char *arg, int from_tty)
1035 {
1036   struct breakpoint *b;
1037   char *p;
1038   int bnum;
1039
1040   if (arg == 0)
1041     error_no_arg (_("breakpoint number"));
1042
1043   p = arg;
1044   bnum = get_number (&p);
1045   if (bnum == 0)
1046     error (_("Bad breakpoint argument: '%s'"), arg);
1047
1048   ALL_BREAKPOINTS (b)
1049     if (b->number == bnum)
1050       {
1051         /* Check if this breakpoint has a Python object assigned to
1052            it, and if it has a definition of the "stop"
1053            method.  This method and conditions entered into GDB from
1054            the CLI are mutually exclusive.  */
1055         if (b->py_bp_object
1056             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1057           error (_("Cannot set a condition where a Python 'stop' "
1058                    "method has been defined in the breakpoint."));
1059         set_breakpoint_condition (b, p, from_tty);
1060
1061         if (is_breakpoint (b))
1062           update_global_location_list (1);
1063
1064         return;
1065       }
1066
1067   error (_("No breakpoint number %d."), bnum);
1068 }
1069
1070 /* Check that COMMAND do not contain commands that are suitable
1071    only for tracepoints and not suitable for ordinary breakpoints.
1072    Throw if any such commands is found.  */
1073
1074 static void
1075 check_no_tracepoint_commands (struct command_line *commands)
1076 {
1077   struct command_line *c;
1078
1079   for (c = commands; c; c = c->next)
1080     {
1081       int i;
1082
1083       if (c->control_type == while_stepping_control)
1084         error (_("The 'while-stepping' command can "
1085                  "only be used for tracepoints"));
1086
1087       for (i = 0; i < c->body_count; ++i)
1088         check_no_tracepoint_commands ((c->body_list)[i]);
1089
1090       /* Not that command parsing removes leading whitespace and comment
1091          lines and also empty lines.  So, we only need to check for
1092          command directly.  */
1093       if (strstr (c->line, "collect ") == c->line)
1094         error (_("The 'collect' command can only be used for tracepoints"));
1095
1096       if (strstr (c->line, "teval ") == c->line)
1097         error (_("The 'teval' command can only be used for tracepoints"));
1098     }
1099 }
1100
1101 /* Encapsulate tests for different types of tracepoints.  */
1102
1103 static int
1104 is_tracepoint_type (enum bptype type)
1105 {
1106   return (type == bp_tracepoint
1107           || type == bp_fast_tracepoint
1108           || type == bp_static_tracepoint);
1109 }
1110
1111 int
1112 is_tracepoint (const struct breakpoint *b)
1113 {
1114   return is_tracepoint_type (b->type);
1115 }
1116
1117 /* A helper function that validates that COMMANDS are valid for a
1118    breakpoint.  This function will throw an exception if a problem is
1119    found.  */
1120
1121 static void
1122 validate_commands_for_breakpoint (struct breakpoint *b,
1123                                   struct command_line *commands)
1124 {
1125   if (is_tracepoint (b))
1126     {
1127       struct tracepoint *t = (struct tracepoint *) b;
1128       struct command_line *c;
1129       struct command_line *while_stepping = 0;
1130
1131       /* Reset the while-stepping step count.  The previous commands
1132          might have included a while-stepping action, while the new
1133          ones might not.  */
1134       t->step_count = 0;
1135
1136       /* We need to verify that each top-level element of commands is
1137          valid for tracepoints, that there's at most one
1138          while-stepping element, and that the while-stepping's body
1139          has valid tracing commands excluding nested while-stepping.
1140          We also need to validate the tracepoint action line in the
1141          context of the tracepoint --- validate_actionline actually
1142          has side effects, like setting the tracepoint's
1143          while-stepping STEP_COUNT, in addition to checking if the
1144          collect/teval actions parse and make sense in the
1145          tracepoint's context.  */
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           validate_actionline (c->line, b);
1165         }
1166       if (while_stepping)
1167         {
1168           struct command_line *c2;
1169
1170           gdb_assert (while_stepping->body_count == 1);
1171           c2 = while_stepping->body_list[0];
1172           for (; c2; c2 = c2->next)
1173             {
1174               if (c2->control_type == while_stepping_control)
1175                 error (_("The 'while-stepping' command cannot be nested"));
1176             }
1177         }
1178     }
1179   else
1180     {
1181       check_no_tracepoint_commands (commands);
1182     }
1183 }
1184
1185 /* Return a vector of all the static tracepoints set at ADDR.  The
1186    caller is responsible for releasing the vector.  */
1187
1188 VEC(breakpoint_p) *
1189 static_tracepoints_here (CORE_ADDR addr)
1190 {
1191   struct breakpoint *b;
1192   VEC(breakpoint_p) *found = 0;
1193   struct bp_location *loc;
1194
1195   ALL_BREAKPOINTS (b)
1196     if (b->type == bp_static_tracepoint)
1197       {
1198         for (loc = b->loc; loc; loc = loc->next)
1199           if (loc->address == addr)
1200             VEC_safe_push(breakpoint_p, found, b);
1201       }
1202
1203   return found;
1204 }
1205
1206 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1207    validate that only allowed commands are included.  */
1208
1209 void
1210 breakpoint_set_commands (struct breakpoint *b, 
1211                          struct command_line *commands)
1212 {
1213   validate_commands_for_breakpoint (b, commands);
1214
1215   decref_counted_command_line (&b->commands);
1216   b->commands = alloc_counted_command_line (commands);
1217   observer_notify_breakpoint_modified (b);
1218 }
1219
1220 /* Set the internal `silent' flag on the breakpoint.  Note that this
1221    is not the same as the "silent" that may appear in the breakpoint's
1222    commands.  */
1223
1224 void
1225 breakpoint_set_silent (struct breakpoint *b, int silent)
1226 {
1227   int old_silent = b->silent;
1228
1229   b->silent = silent;
1230   if (old_silent != silent)
1231     observer_notify_breakpoint_modified (b);
1232 }
1233
1234 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1235    breakpoint work for any thread.  */
1236
1237 void
1238 breakpoint_set_thread (struct breakpoint *b, int thread)
1239 {
1240   int old_thread = b->thread;
1241
1242   b->thread = thread;
1243   if (old_thread != thread)
1244     observer_notify_breakpoint_modified (b);
1245 }
1246
1247 /* Set the task for this breakpoint.  If TASK is 0, make the
1248    breakpoint work for any task.  */
1249
1250 void
1251 breakpoint_set_task (struct breakpoint *b, int task)
1252 {
1253   int old_task = b->task;
1254
1255   b->task = task;
1256   if (old_task != task)
1257     observer_notify_breakpoint_modified (b);
1258 }
1259
1260 void
1261 check_tracepoint_command (char *line, void *closure)
1262 {
1263   struct breakpoint *b = closure;
1264
1265   validate_actionline (line, b);
1266 }
1267
1268 /* A structure used to pass information through
1269    map_breakpoint_numbers.  */
1270
1271 struct commands_info
1272 {
1273   /* True if the command was typed at a tty.  */
1274   int from_tty;
1275
1276   /* The breakpoint range spec.  */
1277   char *arg;
1278
1279   /* Non-NULL if the body of the commands are being read from this
1280      already-parsed command.  */
1281   struct command_line *control;
1282
1283   /* The command lines read from the user, or NULL if they have not
1284      yet been read.  */
1285   struct counted_command_line *cmd;
1286 };
1287
1288 /* A callback for map_breakpoint_numbers that sets the commands for
1289    commands_command.  */
1290
1291 static void
1292 do_map_commands_command (struct breakpoint *b, void *data)
1293 {
1294   struct commands_info *info = data;
1295
1296   if (info->cmd == NULL)
1297     {
1298       struct command_line *l;
1299
1300       if (info->control != NULL)
1301         l = copy_command_lines (info->control->body_list[0]);
1302       else
1303         {
1304           struct cleanup *old_chain;
1305           char *str;
1306
1307           str = xstrprintf (_("Type commands for breakpoint(s) "
1308                               "%s, one per line."),
1309                             info->arg);
1310
1311           old_chain = make_cleanup (xfree, str);
1312
1313           l = read_command_lines (str,
1314                                   info->from_tty, 1,
1315                                   (is_tracepoint (b)
1316                                    ? check_tracepoint_command : 0),
1317                                   b);
1318
1319           do_cleanups (old_chain);
1320         }
1321
1322       info->cmd = alloc_counted_command_line (l);
1323     }
1324
1325   /* If a breakpoint was on the list more than once, we don't need to
1326      do anything.  */
1327   if (b->commands != info->cmd)
1328     {
1329       validate_commands_for_breakpoint (b, info->cmd->commands);
1330       incref_counted_command_line (info->cmd);
1331       decref_counted_command_line (&b->commands);
1332       b->commands = info->cmd;
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         int 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       const 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       if (!can_use_hw_watchpoints)
1804         {
1805           if (b->base.ops->works_in_software_mode (&b->base))
1806             b->base.type = bp_watchpoint;
1807           else
1808             error (_("Can't set read/access watchpoint when "
1809                      "hardware watchpoints are disabled."));
1810         }
1811     }
1812   else if (within_current_scope && b->exp)
1813     {
1814       int pc = 0;
1815       struct value *val_chain, *v, *result, *next;
1816       struct program_space *frame_pspace;
1817
1818       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1819
1820       /* Avoid setting b->val if it's already set.  The meaning of
1821          b->val is 'the last value' user saw, and we should update
1822          it only if we reported that last value to user.  As it
1823          happens, the code that reports it updates b->val directly.
1824          We don't keep track of the memory value for masked
1825          watchpoints.  */
1826       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1827         {
1828           b->val = v;
1829           b->val_valid = 1;
1830         }
1831
1832       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1833
1834       /* Look at each value on the value chain.  */
1835       for (v = val_chain; v; v = value_next (v))
1836         {
1837           /* If it's a memory location, and GDB actually needed
1838              its contents to evaluate the expression, then we
1839              must watch it.  If the first value returned is
1840              still lazy, that means an error occurred reading it;
1841              watch it anyway in case it becomes readable.  */
1842           if (VALUE_LVAL (v) == lval_memory
1843               && (v == val_chain || ! value_lazy (v)))
1844             {
1845               struct type *vtype = check_typedef (value_type (v));
1846
1847               /* We only watch structs and arrays if user asked
1848                  for it explicitly, never if they just happen to
1849                  appear in the middle of some value chain.  */
1850               if (v == result
1851                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1852                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1853                 {
1854                   CORE_ADDR addr;
1855                   int type;
1856                   struct bp_location *loc, **tmp;
1857
1858                   addr = value_address (v);
1859                   type = hw_write;
1860                   if (b->base.type == bp_read_watchpoint)
1861                     type = hw_read;
1862                   else if (b->base.type == bp_access_watchpoint)
1863                     type = hw_access;
1864
1865                   loc = allocate_bp_location (&b->base);
1866                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1867                     ;
1868                   *tmp = loc;
1869                   loc->gdbarch = get_type_arch (value_type (v));
1870
1871                   loc->pspace = frame_pspace;
1872                   loc->address = addr;
1873                   loc->length = TYPE_LENGTH (value_type (v));
1874                   loc->watchpoint_type = type;
1875                 }
1876             }
1877         }
1878
1879       /* Change the type of breakpoint between hardware assisted or
1880          an ordinary watchpoint depending on the hardware support
1881          and free hardware slots.  REPARSE is set when the inferior
1882          is started.  */
1883       if (reparse)
1884         {
1885           int reg_cnt;
1886           enum bp_loc_type loc_type;
1887           struct bp_location *bl;
1888
1889           reg_cnt = can_use_hardware_watchpoint (val_chain);
1890
1891           if (reg_cnt)
1892             {
1893               int i, target_resources_ok, other_type_used;
1894               enum bptype type;
1895
1896               /* Use an exact watchpoint when there's only one memory region to be
1897                  watched, and only one debug register is needed to watch it.  */
1898               b->exact = target_exact_watchpoints && reg_cnt == 1;
1899
1900               /* We need to determine how many resources are already
1901                  used for all other hardware watchpoints plus this one
1902                  to see if we still have enough resources to also fit
1903                  this watchpoint in as well.  */
1904
1905               /* If this is a software watchpoint, we try to turn it
1906                  to a hardware one -- count resources as if B was of
1907                  hardware watchpoint type.  */
1908               type = b->base.type;
1909               if (type == bp_watchpoint)
1910                 type = bp_hardware_watchpoint;
1911
1912               /* This watchpoint may or may not have been placed on
1913                  the list yet at this point (it won't be in the list
1914                  if we're trying to create it for the first time,
1915                  through watch_command), so always account for it
1916                  manually.  */
1917
1918               /* Count resources used by all watchpoints except B.  */
1919               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1920
1921               /* Add in the resources needed for B.  */
1922               i += hw_watchpoint_use_count (&b->base);
1923
1924               target_resources_ok
1925                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1926               if (target_resources_ok <= 0)
1927                 {
1928                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1929
1930                   if (target_resources_ok == 0 && !sw_mode)
1931                     error (_("Target does not support this type of "
1932                              "hardware watchpoint."));
1933                   else if (target_resources_ok < 0 && !sw_mode)
1934                     error (_("There are not enough available hardware "
1935                              "resources for this watchpoint."));
1936
1937                   /* Downgrade to software watchpoint.  */
1938                   b->base.type = bp_watchpoint;
1939                 }
1940               else
1941                 {
1942                   /* If this was a software watchpoint, we've just
1943                      found we have enough resources to turn it to a
1944                      hardware watchpoint.  Otherwise, this is a
1945                      nop.  */
1946                   b->base.type = type;
1947                 }
1948             }
1949           else if (!b->base.ops->works_in_software_mode (&b->base))
1950             {
1951               if (!can_use_hw_watchpoints)
1952                 error (_("Can't set read/access watchpoint when "
1953                          "hardware watchpoints are disabled."));
1954               else
1955                 error (_("Expression cannot be implemented with "
1956                          "read/access watchpoint."));
1957             }
1958           else
1959             b->base.type = bp_watchpoint;
1960
1961           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1962                       : bp_loc_hardware_watchpoint);
1963           for (bl = b->base.loc; bl; bl = bl->next)
1964             bl->loc_type = loc_type;
1965         }
1966
1967       for (v = val_chain; v; v = next)
1968         {
1969           next = value_next (v);
1970           if (v != b->val)
1971             value_free (v);
1972         }
1973
1974       /* If a software watchpoint is not watching any memory, then the
1975          above left it without any location set up.  But,
1976          bpstat_stop_status requires a location to be able to report
1977          stops, so make sure there's at least a dummy one.  */
1978       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1979         {
1980           struct breakpoint *base = &b->base;
1981           base->loc = allocate_bp_location (base);
1982           base->loc->pspace = frame_pspace;
1983           base->loc->address = -1;
1984           base->loc->length = -1;
1985           base->loc->watchpoint_type = -1;
1986         }
1987     }
1988   else if (!within_current_scope)
1989     {
1990       printf_filtered (_("\
1991 Watchpoint %d deleted because the program has left the block\n\
1992 in which its expression is valid.\n"),
1993                        b->base.number);
1994       watchpoint_del_at_next_stop (b);
1995     }
1996
1997   /* Restore the selected frame.  */
1998   if (frame_saved)
1999     select_frame (frame_find_by_id (saved_frame_id));
2000 }
2001
2002
2003 /* Returns 1 iff breakpoint location should be
2004    inserted in the inferior.  We don't differentiate the type of BL's owner
2005    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2006    breakpoint_ops is not defined, because in insert_bp_location,
2007    tracepoint's insert_location will not be called.  */
2008 static int
2009 should_be_inserted (struct bp_location *bl)
2010 {
2011   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2012     return 0;
2013
2014   if (bl->owner->disposition == disp_del_at_next_stop)
2015     return 0;
2016
2017   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2018     return 0;
2019
2020   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2021     return 0;
2022
2023   /* This is set for example, when we're attached to the parent of a
2024      vfork, and have detached from the child.  The child is running
2025      free, and we expect it to do an exec or exit, at which point the
2026      OS makes the parent schedulable again (and the target reports
2027      that the vfork is done).  Until the child is done with the shared
2028      memory region, do not insert breakpoints in the parent, otherwise
2029      the child could still trip on the parent's breakpoints.  Since
2030      the parent is blocked anyway, it won't miss any breakpoint.  */
2031   if (bl->pspace->breakpoints_not_allowed)
2032     return 0;
2033
2034   return 1;
2035 }
2036
2037 /* Same as should_be_inserted but does the check assuming
2038    that the location is not duplicated.  */
2039
2040 static int
2041 unduplicated_should_be_inserted (struct bp_location *bl)
2042 {
2043   int result;
2044   const int save_duplicate = bl->duplicate;
2045
2046   bl->duplicate = 0;
2047   result = should_be_inserted (bl);
2048   bl->duplicate = save_duplicate;
2049   return result;
2050 }
2051
2052 /* Parses a conditional described by an expression COND into an
2053    agent expression bytecode suitable for evaluation
2054    by the bytecode interpreter.  Return NULL if there was
2055    any error during parsing.  */
2056
2057 static struct agent_expr *
2058 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2059 {
2060   struct agent_expr *aexpr = NULL;
2061   volatile struct gdb_exception ex;
2062
2063   if (!cond)
2064     return NULL;
2065
2066   /* We don't want to stop processing, so catch any errors
2067      that may show up.  */
2068   TRY_CATCH (ex, RETURN_MASK_ERROR)
2069     {
2070       aexpr = gen_eval_for_expr (scope, cond);
2071     }
2072
2073   if (ex.reason < 0)
2074     {
2075       /* If we got here, it means the condition could not be parsed to a valid
2076          bytecode expression and thus can't be evaluated on the target's side.
2077          It's no use iterating through the conditions.  */
2078       return NULL;
2079     }
2080
2081   /* We have a valid agent expression.  */
2082   return aexpr;
2083 }
2084
2085 /* Based on location BL, create a list of breakpoint conditions to be
2086    passed on to the target.  If we have duplicated locations with different
2087    conditions, we will add such conditions to the list.  The idea is that the
2088    target will evaluate the list of conditions and will only notify GDB when
2089    one of them is true.  */
2090
2091 static void
2092 build_target_condition_list (struct bp_location *bl)
2093 {
2094   struct bp_location **locp = NULL, **loc2p;
2095   int null_condition_or_parse_error = 0;
2096   int modified = bl->needs_update;
2097   struct bp_location *loc;
2098
2099   /* This is only meaningful if the target is
2100      evaluating conditions and if the user has
2101      opted for condition evaluation on the target's
2102      side.  */
2103   if (gdb_evaluates_breakpoint_condition_p ()
2104       || !target_supports_evaluation_of_breakpoint_conditions ())
2105     return;
2106
2107   /* Do a first pass to check for locations with no assigned
2108      conditions or conditions that fail to parse to a valid agent expression
2109      bytecode.  If any of these happen, then it's no use to send conditions
2110      to the target since this location will always trigger and generate a
2111      response back to GDB.  */
2112   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2113     {
2114       loc = (*loc2p);
2115       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2116         {
2117           if (modified)
2118             {
2119               struct agent_expr *aexpr;
2120
2121               /* Re-parse the conditions since something changed.  In that
2122                  case we already freed the condition bytecodes (see
2123                  force_breakpoint_reinsertion).  We just
2124                  need to parse the condition to bytecodes again.  */
2125               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2126               loc->cond_bytecode = aexpr;
2127
2128               /* Check if we managed to parse the conditional expression
2129                  correctly.  If not, we will not send this condition
2130                  to the target.  */
2131               if (aexpr)
2132                 continue;
2133             }
2134
2135           /* If we have a NULL bytecode expression, it means something
2136              went wrong or we have a null condition expression.  */
2137           if (!loc->cond_bytecode)
2138             {
2139               null_condition_or_parse_error = 1;
2140               break;
2141             }
2142         }
2143     }
2144
2145   /* If any of these happened, it means we will have to evaluate the conditions
2146      for the location's address on gdb's side.  It is no use keeping bytecodes
2147      for all the other duplicate locations, thus we free all of them here.
2148
2149      This is so we have a finer control over which locations' conditions are
2150      being evaluated by GDB or the remote stub.  */
2151   if (null_condition_or_parse_error)
2152     {
2153       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2154         {
2155           loc = (*loc2p);
2156           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2157             {
2158               /* Only go as far as the first NULL bytecode is
2159                  located.  */
2160               if (!loc->cond_bytecode)
2161                 return;
2162
2163               free_agent_expr (loc->cond_bytecode);
2164               loc->cond_bytecode = NULL;
2165             }
2166         }
2167     }
2168
2169   /* No NULL conditions or failed bytecode generation.  Build a condition list
2170      for this location's address.  */
2171   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2172     {
2173       loc = (*loc2p);
2174       if (loc->cond
2175           && is_breakpoint (loc->owner)
2176           && loc->pspace->num == bl->pspace->num
2177           && loc->owner->enable_state == bp_enabled
2178           && loc->enabled)
2179         /* Add the condition to the vector.  This will be used later to send the
2180            conditions to the target.  */
2181         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2182                        loc->cond_bytecode);
2183     }
2184
2185   return;
2186 }
2187
2188 /* Parses a command described by string CMD into an agent expression
2189    bytecode suitable for evaluation by the bytecode interpreter.
2190    Return NULL if there was any error during parsing.  */
2191
2192 static struct agent_expr *
2193 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2194 {
2195   struct cleanup *old_cleanups = 0;
2196   struct expression *expr, **argvec;
2197   struct agent_expr *aexpr = NULL;
2198   volatile struct gdb_exception ex;
2199   const char *cmdrest;
2200   const char *format_start, *format_end;
2201   struct format_piece *fpieces;
2202   int nargs;
2203   struct gdbarch *gdbarch = get_current_arch ();
2204
2205   if (!cmd)
2206     return NULL;
2207
2208   cmdrest = cmd;
2209
2210   if (*cmdrest == ',')
2211     ++cmdrest;
2212   cmdrest = skip_spaces_const (cmdrest);
2213
2214   if (*cmdrest++ != '"')
2215     error (_("No format string following the location"));
2216
2217   format_start = cmdrest;
2218
2219   fpieces = parse_format_string (&cmdrest);
2220
2221   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2222
2223   format_end = cmdrest;
2224
2225   if (*cmdrest++ != '"')
2226     error (_("Bad format string, non-terminated '\"'."));
2227   
2228   cmdrest = skip_spaces_const (cmdrest);
2229
2230   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2231     error (_("Invalid argument syntax"));
2232
2233   if (*cmdrest == ',')
2234     cmdrest++;
2235   cmdrest = skip_spaces_const (cmdrest);
2236
2237   /* For each argument, make an expression.  */
2238
2239   argvec = (struct expression **) alloca (strlen (cmd)
2240                                          * sizeof (struct expression *));
2241
2242   nargs = 0;
2243   while (*cmdrest != '\0')
2244     {
2245       const char *cmd1;
2246
2247       cmd1 = cmdrest;
2248       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2249       argvec[nargs++] = expr;
2250       cmdrest = cmd1;
2251       if (*cmdrest == ',')
2252         ++cmdrest;
2253     }
2254
2255   /* We don't want to stop processing, so catch any errors
2256      that may show up.  */
2257   TRY_CATCH (ex, RETURN_MASK_ERROR)
2258     {
2259       aexpr = gen_printf (scope, gdbarch, 0, 0,
2260                           format_start, format_end - format_start,
2261                           fpieces, nargs, argvec);
2262     }
2263
2264   do_cleanups (old_cleanups);
2265
2266   if (ex.reason < 0)
2267     {
2268       /* If we got here, it means the command could not be parsed to a valid
2269          bytecode expression and thus can't be evaluated on the target's side.
2270          It's no use iterating through the other commands.  */
2271       return NULL;
2272     }
2273
2274   /* We have a valid agent expression, return it.  */
2275   return aexpr;
2276 }
2277
2278 /* Based on location BL, create a list of breakpoint commands to be
2279    passed on to the target.  If we have duplicated locations with
2280    different commands, we will add any such to the list.  */
2281
2282 static void
2283 build_target_command_list (struct bp_location *bl)
2284 {
2285   struct bp_location **locp = NULL, **loc2p;
2286   int null_command_or_parse_error = 0;
2287   int modified = bl->needs_update;
2288   struct bp_location *loc;
2289
2290   /* For now, limit to agent-style dprintf breakpoints.  */
2291   if (bl->owner->type != bp_dprintf
2292       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2293     return;
2294
2295   if (!target_can_run_breakpoint_commands ())
2296     return;
2297
2298   /* Do a first pass to check for locations with no assigned
2299      conditions or conditions that fail to parse to a valid agent expression
2300      bytecode.  If any of these happen, then it's no use to send conditions
2301      to the target since this location will always trigger and generate a
2302      response back to GDB.  */
2303   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2304     {
2305       loc = (*loc2p);
2306       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2307         {
2308           if (modified)
2309             {
2310               struct agent_expr *aexpr;
2311
2312               /* Re-parse the commands since something changed.  In that
2313                  case we already freed the command bytecodes (see
2314                  force_breakpoint_reinsertion).  We just
2315                  need to parse the command to bytecodes again.  */
2316               aexpr = parse_cmd_to_aexpr (bl->address,
2317                                           loc->owner->extra_string);
2318               loc->cmd_bytecode = aexpr;
2319
2320               if (!aexpr)
2321                 continue;
2322             }
2323
2324           /* If we have a NULL bytecode expression, it means something
2325              went wrong or we have a null command expression.  */
2326           if (!loc->cmd_bytecode)
2327             {
2328               null_command_or_parse_error = 1;
2329               break;
2330             }
2331         }
2332     }
2333
2334   /* If anything failed, then we're not doing target-side commands,
2335      and so clean up.  */
2336   if (null_command_or_parse_error)
2337     {
2338       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2339         {
2340           loc = (*loc2p);
2341           if (is_breakpoint (loc->owner)
2342               && loc->pspace->num == bl->pspace->num)
2343             {
2344               /* Only go as far as the first NULL bytecode is
2345                  located.  */
2346               if (loc->cmd_bytecode == NULL)
2347                 return;
2348
2349               free_agent_expr (loc->cmd_bytecode);
2350               loc->cmd_bytecode = NULL;
2351             }
2352         }
2353     }
2354
2355   /* No NULL commands or failed bytecode generation.  Build a command list
2356      for this location's address.  */
2357   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2358     {
2359       loc = (*loc2p);
2360       if (loc->owner->extra_string
2361           && is_breakpoint (loc->owner)
2362           && loc->pspace->num == bl->pspace->num
2363           && loc->owner->enable_state == bp_enabled
2364           && loc->enabled)
2365         /* Add the command to the vector.  This will be used later
2366            to send the commands to the target.  */
2367         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2368                        loc->cmd_bytecode);
2369     }
2370
2371   bl->target_info.persist = 0;
2372   /* Maybe flag this location as persistent.  */
2373   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2374     bl->target_info.persist = 1;
2375 }
2376
2377 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2378    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2379    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2380    Returns 0 for success, 1 if the bp_location type is not supported or
2381    -1 for failure.
2382
2383    NOTE drow/2003-09-09: This routine could be broken down to an
2384    object-style method for each breakpoint or catchpoint type.  */
2385 static int
2386 insert_bp_location (struct bp_location *bl,
2387                     struct ui_file *tmp_error_stream,
2388                     int *disabled_breaks,
2389                     int *hw_breakpoint_error,
2390                     int *hw_bp_error_explained_already)
2391 {
2392   int val = 0;
2393   char *hw_bp_err_string = NULL;
2394   struct gdb_exception e;
2395
2396   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2397     return 0;
2398
2399   /* Note we don't initialize bl->target_info, as that wipes out
2400      the breakpoint location's shadow_contents if the breakpoint
2401      is still inserted at that location.  This in turn breaks
2402      target_read_memory which depends on these buffers when
2403      a memory read is requested at the breakpoint location:
2404      Once the target_info has been wiped, we fail to see that
2405      we have a breakpoint inserted at that address and thus
2406      read the breakpoint instead of returning the data saved in
2407      the breakpoint location's shadow contents.  */
2408   bl->target_info.placed_address = bl->address;
2409   bl->target_info.placed_address_space = bl->pspace->aspace;
2410   bl->target_info.length = bl->length;
2411
2412   /* When working with target-side conditions, we must pass all the conditions
2413      for the same breakpoint address down to the target since GDB will not
2414      insert those locations.  With a list of breakpoint conditions, the target
2415      can decide when to stop and notify GDB.  */
2416
2417   if (is_breakpoint (bl->owner))
2418     {
2419       build_target_condition_list (bl);
2420       build_target_command_list (bl);
2421       /* Reset the modification marker.  */
2422       bl->needs_update = 0;
2423     }
2424
2425   if (bl->loc_type == bp_loc_software_breakpoint
2426       || bl->loc_type == bp_loc_hardware_breakpoint)
2427     {
2428       if (bl->owner->type != bp_hardware_breakpoint)
2429         {
2430           /* If the explicitly specified breakpoint type
2431              is not hardware breakpoint, check the memory map to see
2432              if the breakpoint address is in read only memory or not.
2433
2434              Two important cases are:
2435              - location type is not hardware breakpoint, memory
2436              is readonly.  We change the type of the location to
2437              hardware breakpoint.
2438              - location type is hardware breakpoint, memory is
2439              read-write.  This means we've previously made the
2440              location hardware one, but then the memory map changed,
2441              so we undo.
2442              
2443              When breakpoints are removed, remove_breakpoints will use
2444              location types we've just set here, the only possible
2445              problem is that memory map has changed during running
2446              program, but it's not going to work anyway with current
2447              gdb.  */
2448           struct mem_region *mr 
2449             = lookup_mem_region (bl->target_info.placed_address);
2450           
2451           if (mr)
2452             {
2453               if (automatic_hardware_breakpoints)
2454                 {
2455                   enum bp_loc_type new_type;
2456                   
2457                   if (mr->attrib.mode != MEM_RW)
2458                     new_type = bp_loc_hardware_breakpoint;
2459                   else 
2460                     new_type = bp_loc_software_breakpoint;
2461                   
2462                   if (new_type != bl->loc_type)
2463                     {
2464                       static int said = 0;
2465
2466                       bl->loc_type = new_type;
2467                       if (!said)
2468                         {
2469                           fprintf_filtered (gdb_stdout,
2470                                             _("Note: automatically using "
2471                                               "hardware breakpoints for "
2472                                               "read-only addresses.\n"));
2473                           said = 1;
2474                         }
2475                     }
2476                 }
2477               else if (bl->loc_type == bp_loc_software_breakpoint
2478                        && mr->attrib.mode != MEM_RW)        
2479                 warning (_("cannot set software breakpoint "
2480                            "at readonly address %s"),
2481                          paddress (bl->gdbarch, bl->address));
2482             }
2483         }
2484         
2485       /* First check to see if we have to handle an overlay.  */
2486       if (overlay_debugging == ovly_off
2487           || bl->section == NULL
2488           || !(section_is_overlay (bl->section)))
2489         {
2490           /* No overlay handling: just set the breakpoint.  */
2491           TRY_CATCH (e, RETURN_MASK_ALL)
2492             {
2493               val = bl->owner->ops->insert_location (bl);
2494             }
2495           if (e.reason < 0)
2496             {
2497               val = 1;
2498               hw_bp_err_string = (char *) e.message;
2499             }
2500         }
2501       else
2502         {
2503           /* This breakpoint is in an overlay section.
2504              Shall we set a breakpoint at the LMA?  */
2505           if (!overlay_events_enabled)
2506             {
2507               /* Yes -- overlay event support is not active, 
2508                  so we must try to set a breakpoint at the LMA.
2509                  This will not work for a hardware breakpoint.  */
2510               if (bl->loc_type == bp_loc_hardware_breakpoint)
2511                 warning (_("hardware breakpoint %d not supported in overlay!"),
2512                          bl->owner->number);
2513               else
2514                 {
2515                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2516                                                              bl->section);
2517                   /* Set a software (trap) breakpoint at the LMA.  */
2518                   bl->overlay_target_info = bl->target_info;
2519                   bl->overlay_target_info.placed_address = addr;
2520                   val = target_insert_breakpoint (bl->gdbarch,
2521                                                   &bl->overlay_target_info);
2522                   if (val != 0)
2523                     fprintf_unfiltered (tmp_error_stream,
2524                                         "Overlay breakpoint %d "
2525                                         "failed: in ROM?\n",
2526                                         bl->owner->number);
2527                 }
2528             }
2529           /* Shall we set a breakpoint at the VMA? */
2530           if (section_is_mapped (bl->section))
2531             {
2532               /* Yes.  This overlay section is mapped into memory.  */
2533               TRY_CATCH (e, RETURN_MASK_ALL)
2534                 {
2535                   val = bl->owner->ops->insert_location (bl);
2536                 }
2537               if (e.reason < 0)
2538                 {
2539                   val = 1;
2540                   hw_bp_err_string = (char *) e.message;
2541                 }
2542             }
2543           else
2544             {
2545               /* No.  This breakpoint will not be inserted.  
2546                  No error, but do not mark the bp as 'inserted'.  */
2547               return 0;
2548             }
2549         }
2550
2551       if (val)
2552         {
2553           /* Can't set the breakpoint.  */
2554           if (solib_name_from_address (bl->pspace, bl->address))
2555             {
2556               /* See also: disable_breakpoints_in_shlibs.  */
2557               val = 0;
2558               bl->shlib_disabled = 1;
2559               observer_notify_breakpoint_modified (bl->owner);
2560               if (!*disabled_breaks)
2561                 {
2562                   fprintf_unfiltered (tmp_error_stream, 
2563                                       "Cannot insert breakpoint %d.\n", 
2564                                       bl->owner->number);
2565                   fprintf_unfiltered (tmp_error_stream, 
2566                                       "Temporarily disabling shared "
2567                                       "library breakpoints:\n");
2568                 }
2569               *disabled_breaks = 1;
2570               fprintf_unfiltered (tmp_error_stream,
2571                                   "breakpoint #%d\n", bl->owner->number);
2572             }
2573           else
2574             {
2575               if (bl->loc_type == bp_loc_hardware_breakpoint)
2576                 {
2577                   *hw_breakpoint_error = 1;
2578                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2579                   fprintf_unfiltered (tmp_error_stream,
2580                                       "Cannot insert hardware breakpoint %d%s",
2581                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2582                   if (hw_bp_err_string)
2583                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2584                 }
2585               else
2586                 {
2587                   char *message = memory_error_message (TARGET_XFER_E_IO,
2588                                                         bl->gdbarch, bl->address);
2589                   struct cleanup *old_chain = make_cleanup (xfree, message);
2590
2591                   fprintf_unfiltered (tmp_error_stream, 
2592                                       "Cannot insert breakpoint %d.\n"
2593                                       "%s\n",
2594                                       bl->owner->number, message);
2595
2596                   do_cleanups (old_chain);
2597                 }
2598
2599             }
2600         }
2601       else
2602         bl->inserted = 1;
2603
2604       return val;
2605     }
2606
2607   else if (bl->loc_type == bp_loc_hardware_watchpoint
2608            /* NOTE drow/2003-09-08: This state only exists for removing
2609               watchpoints.  It's not clear that it's necessary...  */
2610            && bl->owner->disposition != disp_del_at_next_stop)
2611     {
2612       gdb_assert (bl->owner->ops != NULL
2613                   && bl->owner->ops->insert_location != NULL);
2614
2615       val = bl->owner->ops->insert_location (bl);
2616
2617       /* If trying to set a read-watchpoint, and it turns out it's not
2618          supported, try emulating one with an access watchpoint.  */
2619       if (val == 1 && bl->watchpoint_type == hw_read)
2620         {
2621           struct bp_location *loc, **loc_temp;
2622
2623           /* But don't try to insert it, if there's already another
2624              hw_access location that would be considered a duplicate
2625              of this one.  */
2626           ALL_BP_LOCATIONS (loc, loc_temp)
2627             if (loc != bl
2628                 && loc->watchpoint_type == hw_access
2629                 && watchpoint_locations_match (bl, loc))
2630               {
2631                 bl->duplicate = 1;
2632                 bl->inserted = 1;
2633                 bl->target_info = loc->target_info;
2634                 bl->watchpoint_type = hw_access;
2635                 val = 0;
2636                 break;
2637               }
2638
2639           if (val == 1)
2640             {
2641               bl->watchpoint_type = hw_access;
2642               val = bl->owner->ops->insert_location (bl);
2643
2644               if (val)
2645                 /* Back to the original value.  */
2646                 bl->watchpoint_type = hw_read;
2647             }
2648         }
2649
2650       bl->inserted = (val == 0);
2651     }
2652
2653   else if (bl->owner->type == bp_catchpoint)
2654     {
2655       gdb_assert (bl->owner->ops != NULL
2656                   && bl->owner->ops->insert_location != NULL);
2657
2658       val = bl->owner->ops->insert_location (bl);
2659       if (val)
2660         {
2661           bl->owner->enable_state = bp_disabled;
2662
2663           if (val == 1)
2664             warning (_("\
2665 Error inserting catchpoint %d: Your system does not support this type\n\
2666 of catchpoint."), bl->owner->number);
2667           else
2668             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2669         }
2670
2671       bl->inserted = (val == 0);
2672
2673       /* We've already printed an error message if there was a problem
2674          inserting this catchpoint, and we've disabled the catchpoint,
2675          so just return success.  */
2676       return 0;
2677     }
2678
2679   return 0;
2680 }
2681
2682 /* This function is called when program space PSPACE is about to be
2683    deleted.  It takes care of updating breakpoints to not reference
2684    PSPACE anymore.  */
2685
2686 void
2687 breakpoint_program_space_exit (struct program_space *pspace)
2688 {
2689   struct breakpoint *b, *b_temp;
2690   struct bp_location *loc, **loc_temp;
2691
2692   /* Remove any breakpoint that was set through this program space.  */
2693   ALL_BREAKPOINTS_SAFE (b, b_temp)
2694     {
2695       if (b->pspace == pspace)
2696         delete_breakpoint (b);
2697     }
2698
2699   /* Breakpoints set through other program spaces could have locations
2700      bound to PSPACE as well.  Remove those.  */
2701   ALL_BP_LOCATIONS (loc, loc_temp)
2702     {
2703       struct bp_location *tmp;
2704
2705       if (loc->pspace == pspace)
2706         {
2707           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2708           if (loc->owner->loc == loc)
2709             loc->owner->loc = loc->next;
2710           else
2711             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2712               if (tmp->next == loc)
2713                 {
2714                   tmp->next = loc->next;
2715                   break;
2716                 }
2717         }
2718     }
2719
2720   /* Now update the global location list to permanently delete the
2721      removed locations above.  */
2722   update_global_location_list (0);
2723 }
2724
2725 /* Make sure all breakpoints are inserted in inferior.
2726    Throws exception on any error.
2727    A breakpoint that is already inserted won't be inserted
2728    again, so calling this function twice is safe.  */
2729 void
2730 insert_breakpoints (void)
2731 {
2732   struct breakpoint *bpt;
2733
2734   ALL_BREAKPOINTS (bpt)
2735     if (is_hardware_watchpoint (bpt))
2736       {
2737         struct watchpoint *w = (struct watchpoint *) bpt;
2738
2739         update_watchpoint (w, 0 /* don't reparse.  */);
2740       }
2741
2742   update_global_location_list (1);
2743
2744   /* update_global_location_list does not insert breakpoints when
2745      always_inserted_mode is not enabled.  Explicitly insert them
2746      now.  */
2747   if (!breakpoints_always_inserted_mode ())
2748     insert_breakpoint_locations ();
2749 }
2750
2751 /* Invoke CALLBACK for each of bp_location.  */
2752
2753 void
2754 iterate_over_bp_locations (walk_bp_location_callback callback)
2755 {
2756   struct bp_location *loc, **loc_tmp;
2757
2758   ALL_BP_LOCATIONS (loc, loc_tmp)
2759     {
2760       callback (loc, NULL);
2761     }
2762 }
2763
2764 /* This is used when we need to synch breakpoint conditions between GDB and the
2765    target.  It is the case with deleting and disabling of breakpoints when using
2766    always-inserted mode.  */
2767
2768 static void
2769 update_inserted_breakpoint_locations (void)
2770 {
2771   struct bp_location *bl, **blp_tmp;
2772   int error_flag = 0;
2773   int val = 0;
2774   int disabled_breaks = 0;
2775   int hw_breakpoint_error = 0;
2776   int hw_bp_details_reported = 0;
2777
2778   struct ui_file *tmp_error_stream = mem_fileopen ();
2779   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2780
2781   /* Explicitly mark the warning -- this will only be printed if
2782      there was an error.  */
2783   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2784
2785   save_current_space_and_thread ();
2786
2787   ALL_BP_LOCATIONS (bl, blp_tmp)
2788     {
2789       /* We only want to update software breakpoints and hardware
2790          breakpoints.  */
2791       if (!is_breakpoint (bl->owner))
2792         continue;
2793
2794       /* We only want to update locations that are already inserted
2795          and need updating.  This is to avoid unwanted insertion during
2796          deletion of breakpoints.  */
2797       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2798         continue;
2799
2800       switch_to_program_space_and_thread (bl->pspace);
2801
2802       /* For targets that support global breakpoints, there's no need
2803          to select an inferior to insert breakpoint to.  In fact, even
2804          if we aren't attached to any process yet, we should still
2805          insert breakpoints.  */
2806       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2807           && ptid_equal (inferior_ptid, null_ptid))
2808         continue;
2809
2810       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2811                                     &hw_breakpoint_error, &hw_bp_details_reported);
2812       if (val)
2813         error_flag = val;
2814     }
2815
2816   if (error_flag)
2817     {
2818       target_terminal_ours_for_output ();
2819       error_stream (tmp_error_stream);
2820     }
2821
2822   do_cleanups (cleanups);
2823 }
2824
2825 /* Used when starting or continuing the program.  */
2826
2827 static void
2828 insert_breakpoint_locations (void)
2829 {
2830   struct breakpoint *bpt;
2831   struct bp_location *bl, **blp_tmp;
2832   int error_flag = 0;
2833   int val = 0;
2834   int disabled_breaks = 0;
2835   int hw_breakpoint_error = 0;
2836   int hw_bp_error_explained_already = 0;
2837
2838   struct ui_file *tmp_error_stream = mem_fileopen ();
2839   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2840   
2841   /* Explicitly mark the warning -- this will only be printed if
2842      there was an error.  */
2843   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2844
2845   save_current_space_and_thread ();
2846
2847   ALL_BP_LOCATIONS (bl, blp_tmp)
2848     {
2849       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2850         continue;
2851
2852       /* There is no point inserting thread-specific breakpoints if
2853          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2854          has BL->OWNER always non-NULL.  */
2855       if (bl->owner->thread != -1
2856           && !valid_thread_id (bl->owner->thread))
2857         continue;
2858
2859       switch_to_program_space_and_thread (bl->pspace);
2860
2861       /* For targets that support global breakpoints, there's no need
2862          to select an inferior to insert breakpoint to.  In fact, even
2863          if we aren't attached to any process yet, we should still
2864          insert breakpoints.  */
2865       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2866           && ptid_equal (inferior_ptid, null_ptid))
2867         continue;
2868
2869       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2870                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2871       if (val)
2872         error_flag = val;
2873     }
2874
2875   /* If we failed to insert all locations of a watchpoint, remove
2876      them, as half-inserted watchpoint is of limited use.  */
2877   ALL_BREAKPOINTS (bpt)  
2878     {
2879       int some_failed = 0;
2880       struct bp_location *loc;
2881
2882       if (!is_hardware_watchpoint (bpt))
2883         continue;
2884
2885       if (!breakpoint_enabled (bpt))
2886         continue;
2887
2888       if (bpt->disposition == disp_del_at_next_stop)
2889         continue;
2890       
2891       for (loc = bpt->loc; loc; loc = loc->next)
2892         if (!loc->inserted && should_be_inserted (loc))
2893           {
2894             some_failed = 1;
2895             break;
2896           }
2897       if (some_failed)
2898         {
2899           for (loc = bpt->loc; loc; loc = loc->next)
2900             if (loc->inserted)
2901               remove_breakpoint (loc, mark_uninserted);
2902
2903           hw_breakpoint_error = 1;
2904           fprintf_unfiltered (tmp_error_stream,
2905                               "Could not insert hardware watchpoint %d.\n", 
2906                               bpt->number);
2907           error_flag = -1;
2908         }
2909     }
2910
2911   if (error_flag)
2912     {
2913       /* If a hardware breakpoint or watchpoint was inserted, add a
2914          message about possibly exhausted resources.  */
2915       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2916         {
2917           fprintf_unfiltered (tmp_error_stream, 
2918                               "Could not insert hardware breakpoints:\n\
2919 You may have requested too many hardware breakpoints/watchpoints.\n");
2920         }
2921       target_terminal_ours_for_output ();
2922       error_stream (tmp_error_stream);
2923     }
2924
2925   do_cleanups (cleanups);
2926 }
2927
2928 /* Used when the program stops.
2929    Returns zero if successful, or non-zero if there was a problem
2930    removing a breakpoint location.  */
2931
2932 int
2933 remove_breakpoints (void)
2934 {
2935   struct bp_location *bl, **blp_tmp;
2936   int val = 0;
2937
2938   ALL_BP_LOCATIONS (bl, blp_tmp)
2939   {
2940     if (bl->inserted && !is_tracepoint (bl->owner))
2941       val |= remove_breakpoint (bl, mark_uninserted);
2942   }
2943   return val;
2944 }
2945
2946 /* When a thread exits, remove breakpoints that are related to
2947    that thread.  */
2948
2949 static void
2950 remove_threaded_breakpoints (struct thread_info *tp, int silent)
2951 {
2952   struct breakpoint *b, *b_tmp;
2953
2954   ALL_BREAKPOINTS_SAFE (b, b_tmp)
2955     {
2956       if (b->thread == tp->num && user_breakpoint_p (b))
2957         {
2958           b->disposition = disp_del_at_next_stop;
2959
2960           printf_filtered (_("\
2961 Thread-specific breakpoint %d deleted - thread %d no longer in the thread list.\n"),
2962                           b->number, tp->num);
2963
2964           /* Hide it from the user.  */
2965           b->number = 0;
2966        }
2967     }
2968 }
2969
2970 /* Remove breakpoints of process PID.  */
2971
2972 int
2973 remove_breakpoints_pid (int pid)
2974 {
2975   struct bp_location *bl, **blp_tmp;
2976   int val;
2977   struct inferior *inf = find_inferior_pid (pid);
2978
2979   ALL_BP_LOCATIONS (bl, blp_tmp)
2980   {
2981     if (bl->pspace != inf->pspace)
2982       continue;
2983
2984     if (bl->owner->type == bp_dprintf)
2985       continue;
2986
2987     if (bl->inserted)
2988       {
2989         val = remove_breakpoint (bl, mark_uninserted);
2990         if (val != 0)
2991           return val;
2992       }
2993   }
2994   return 0;
2995 }
2996
2997 int
2998 reattach_breakpoints (int pid)
2999 {
3000   struct cleanup *old_chain;
3001   struct bp_location *bl, **blp_tmp;
3002   int val;
3003   struct ui_file *tmp_error_stream;
3004   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3005   struct inferior *inf;
3006   struct thread_info *tp;
3007
3008   tp = any_live_thread_of_process (pid);
3009   if (tp == NULL)
3010     return 1;
3011
3012   inf = find_inferior_pid (pid);
3013   old_chain = save_inferior_ptid ();
3014
3015   inferior_ptid = tp->ptid;
3016
3017   tmp_error_stream = mem_fileopen ();
3018   make_cleanup_ui_file_delete (tmp_error_stream);
3019
3020   ALL_BP_LOCATIONS (bl, blp_tmp)
3021   {
3022     if (bl->pspace != inf->pspace)
3023       continue;
3024
3025     if (bl->inserted)
3026       {
3027         bl->inserted = 0;
3028         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3029         if (val != 0)
3030           {
3031             do_cleanups (old_chain);
3032             return val;
3033           }
3034       }
3035   }
3036   do_cleanups (old_chain);
3037   return 0;
3038 }
3039
3040 static int internal_breakpoint_number = -1;
3041
3042 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3043    If INTERNAL is non-zero, the breakpoint number will be populated
3044    from internal_breakpoint_number and that variable decremented.
3045    Otherwise the breakpoint number will be populated from
3046    breakpoint_count and that value incremented.  Internal breakpoints
3047    do not set the internal var bpnum.  */
3048 static void
3049 set_breakpoint_number (int internal, struct breakpoint *b)
3050 {
3051   if (internal)
3052     b->number = internal_breakpoint_number--;
3053   else
3054     {
3055       set_breakpoint_count (breakpoint_count + 1);
3056       b->number = breakpoint_count;
3057     }
3058 }
3059
3060 static struct breakpoint *
3061 create_internal_breakpoint (struct gdbarch *gdbarch,
3062                             CORE_ADDR address, enum bptype type,
3063                             const struct breakpoint_ops *ops)
3064 {
3065   struct symtab_and_line sal;
3066   struct breakpoint *b;
3067
3068   init_sal (&sal);              /* Initialize to zeroes.  */
3069
3070   sal.pc = address;
3071   sal.section = find_pc_overlay (sal.pc);
3072   sal.pspace = current_program_space;
3073
3074   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3075   b->number = internal_breakpoint_number--;
3076   b->disposition = disp_donttouch;
3077
3078   return b;
3079 }
3080
3081 static const char *const longjmp_names[] =
3082   {
3083     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3084   };
3085 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3086
3087 /* Per-objfile data private to breakpoint.c.  */
3088 struct breakpoint_objfile_data
3089 {
3090   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3091   struct minimal_symbol *overlay_msym;
3092
3093   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3094   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3095
3096   /* True if we have looked for longjmp probes.  */
3097   int longjmp_searched;
3098
3099   /* SystemTap probe points for longjmp (if any).  */
3100   VEC (probe_p) *longjmp_probes;
3101
3102   /* Minimal symbol for "std::terminate()" (if any).  */
3103   struct minimal_symbol *terminate_msym;
3104
3105   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3106   struct minimal_symbol *exception_msym;
3107
3108   /* True if we have looked for exception probes.  */
3109   int exception_searched;
3110
3111   /* SystemTap probe points for unwinding (if any).  */
3112   VEC (probe_p) *exception_probes;
3113 };
3114
3115 static const struct objfile_data *breakpoint_objfile_key;
3116
3117 /* Minimal symbol not found sentinel.  */
3118 static struct minimal_symbol msym_not_found;
3119
3120 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3121
3122 static int
3123 msym_not_found_p (const struct minimal_symbol *msym)
3124 {
3125   return msym == &msym_not_found;
3126 }
3127
3128 /* Return per-objfile data needed by breakpoint.c.
3129    Allocate the data if necessary.  */
3130
3131 static struct breakpoint_objfile_data *
3132 get_breakpoint_objfile_data (struct objfile *objfile)
3133 {
3134   struct breakpoint_objfile_data *bp_objfile_data;
3135
3136   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3137   if (bp_objfile_data == NULL)
3138     {
3139       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3140                                        sizeof (*bp_objfile_data));
3141
3142       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3143       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3144     }
3145   return bp_objfile_data;
3146 }
3147
3148 static void
3149 free_breakpoint_probes (struct objfile *obj, void *data)
3150 {
3151   struct breakpoint_objfile_data *bp_objfile_data = data;
3152
3153   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3154   VEC_free (probe_p, bp_objfile_data->exception_probes);
3155 }
3156
3157 static void
3158 create_overlay_event_breakpoint (void)
3159 {
3160   struct objfile *objfile;
3161   const char *const func_name = "_ovly_debug_event";
3162
3163   ALL_OBJFILES (objfile)
3164     {
3165       struct breakpoint *b;
3166       struct breakpoint_objfile_data *bp_objfile_data;
3167       CORE_ADDR addr;
3168
3169       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3170
3171       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3172         continue;
3173
3174       if (bp_objfile_data->overlay_msym == NULL)
3175         {
3176           struct minimal_symbol *m;
3177
3178           m = lookup_minimal_symbol_text (func_name, objfile);
3179           if (m == NULL)
3180             {
3181               /* Avoid future lookups in this objfile.  */
3182               bp_objfile_data->overlay_msym = &msym_not_found;
3183               continue;
3184             }
3185           bp_objfile_data->overlay_msym = m;
3186         }
3187
3188       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3189       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3190                                       bp_overlay_event,
3191                                       &internal_breakpoint_ops);
3192       b->addr_string = xstrdup (func_name);
3193
3194       if (overlay_debugging == ovly_auto)
3195         {
3196           b->enable_state = bp_enabled;
3197           overlay_events_enabled = 1;
3198         }
3199       else
3200        {
3201          b->enable_state = bp_disabled;
3202          overlay_events_enabled = 0;
3203        }
3204     }
3205   update_global_location_list (1);
3206 }
3207
3208 static void
3209 create_longjmp_master_breakpoint (void)
3210 {
3211   struct program_space *pspace;
3212   struct cleanup *old_chain;
3213
3214   old_chain = save_current_program_space ();
3215
3216   ALL_PSPACES (pspace)
3217   {
3218     struct objfile *objfile;
3219
3220     set_current_program_space (pspace);
3221
3222     ALL_OBJFILES (objfile)
3223     {
3224       int i;
3225       struct gdbarch *gdbarch;
3226       struct breakpoint_objfile_data *bp_objfile_data;
3227
3228       gdbarch = get_objfile_arch (objfile);
3229
3230       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3231
3232       if (!bp_objfile_data->longjmp_searched)
3233         {
3234           VEC (probe_p) *ret;
3235
3236           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3237           if (ret != NULL)
3238             {
3239               /* We are only interested in checking one element.  */
3240               struct probe *p = VEC_index (probe_p, ret, 0);
3241
3242               if (!can_evaluate_probe_arguments (p))
3243                 {
3244                   /* We cannot use the probe interface here, because it does
3245                      not know how to evaluate arguments.  */
3246                   VEC_free (probe_p, ret);
3247                   ret = NULL;
3248                 }
3249             }
3250           bp_objfile_data->longjmp_probes = ret;
3251           bp_objfile_data->longjmp_searched = 1;
3252         }
3253
3254       if (bp_objfile_data->longjmp_probes != NULL)
3255         {
3256           int i;
3257           struct probe *probe;
3258           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3259
3260           for (i = 0;
3261                VEC_iterate (probe_p,
3262                             bp_objfile_data->longjmp_probes,
3263                             i, probe);
3264                ++i)
3265             {
3266               struct breakpoint *b;
3267
3268               b = create_internal_breakpoint (gdbarch, probe->address,
3269                                               bp_longjmp_master,
3270                                               &internal_breakpoint_ops);
3271               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3272               b->enable_state = bp_disabled;
3273             }
3274
3275           continue;
3276         }
3277
3278       if (!gdbarch_get_longjmp_target_p (gdbarch))
3279         continue;
3280
3281       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3282         {
3283           struct breakpoint *b;
3284           const char *func_name;
3285           CORE_ADDR addr;
3286
3287           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3288             continue;
3289
3290           func_name = longjmp_names[i];
3291           if (bp_objfile_data->longjmp_msym[i] == NULL)
3292             {
3293               struct minimal_symbol *m;
3294
3295               m = lookup_minimal_symbol_text (func_name, objfile);
3296               if (m == NULL)
3297                 {
3298                   /* Prevent future lookups in this objfile.  */
3299                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3300                   continue;
3301                 }
3302               bp_objfile_data->longjmp_msym[i] = m;
3303             }
3304
3305           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3306           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3307                                           &internal_breakpoint_ops);
3308           b->addr_string = xstrdup (func_name);
3309           b->enable_state = bp_disabled;
3310         }
3311     }
3312   }
3313   update_global_location_list (1);
3314
3315   do_cleanups (old_chain);
3316 }
3317
3318 /* Create a master std::terminate breakpoint.  */
3319 static void
3320 create_std_terminate_master_breakpoint (void)
3321 {
3322   struct program_space *pspace;
3323   struct cleanup *old_chain;
3324   const char *const func_name = "std::terminate()";
3325
3326   old_chain = save_current_program_space ();
3327
3328   ALL_PSPACES (pspace)
3329   {
3330     struct objfile *objfile;
3331     CORE_ADDR addr;
3332
3333     set_current_program_space (pspace);
3334
3335     ALL_OBJFILES (objfile)
3336     {
3337       struct breakpoint *b;
3338       struct breakpoint_objfile_data *bp_objfile_data;
3339
3340       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3341
3342       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3343         continue;
3344
3345       if (bp_objfile_data->terminate_msym == NULL)
3346         {
3347           struct minimal_symbol *m;
3348
3349           m = lookup_minimal_symbol (func_name, NULL, objfile);
3350           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3351                             && MSYMBOL_TYPE (m) != mst_file_text))
3352             {
3353               /* Prevent future lookups in this objfile.  */
3354               bp_objfile_data->terminate_msym = &msym_not_found;
3355               continue;
3356             }
3357           bp_objfile_data->terminate_msym = m;
3358         }
3359
3360       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3361       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3362                                       bp_std_terminate_master,
3363                                       &internal_breakpoint_ops);
3364       b->addr_string = xstrdup (func_name);
3365       b->enable_state = bp_disabled;
3366     }
3367   }
3368
3369   update_global_location_list (1);
3370
3371   do_cleanups (old_chain);
3372 }
3373
3374 /* Install a master breakpoint on the unwinder's debug hook.  */
3375
3376 static void
3377 create_exception_master_breakpoint (void)
3378 {
3379   struct objfile *objfile;
3380   const char *const func_name = "_Unwind_DebugHook";
3381
3382   ALL_OBJFILES (objfile)
3383     {
3384       struct breakpoint *b;
3385       struct gdbarch *gdbarch;
3386       struct breakpoint_objfile_data *bp_objfile_data;
3387       CORE_ADDR addr;
3388
3389       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3390
3391       /* We prefer the SystemTap probe point if it exists.  */
3392       if (!bp_objfile_data->exception_searched)
3393         {
3394           VEC (probe_p) *ret;
3395
3396           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3397
3398           if (ret != NULL)
3399             {
3400               /* We are only interested in checking one element.  */
3401               struct probe *p = VEC_index (probe_p, ret, 0);
3402
3403               if (!can_evaluate_probe_arguments (p))
3404                 {
3405                   /* We cannot use the probe interface here, because it does
3406                      not know how to evaluate arguments.  */
3407                   VEC_free (probe_p, ret);
3408                   ret = NULL;
3409                 }
3410             }
3411           bp_objfile_data->exception_probes = ret;
3412           bp_objfile_data->exception_searched = 1;
3413         }
3414
3415       if (bp_objfile_data->exception_probes != NULL)
3416         {
3417           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3418           int i;
3419           struct probe *probe;
3420
3421           for (i = 0;
3422                VEC_iterate (probe_p,
3423                             bp_objfile_data->exception_probes,
3424                             i, probe);
3425                ++i)
3426             {
3427               struct breakpoint *b;
3428
3429               b = create_internal_breakpoint (gdbarch, probe->address,
3430                                               bp_exception_master,
3431                                               &internal_breakpoint_ops);
3432               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3433               b->enable_state = bp_disabled;
3434             }
3435
3436           continue;
3437         }
3438
3439       /* Otherwise, try the hook function.  */
3440
3441       if (msym_not_found_p (bp_objfile_data->exception_msym))
3442         continue;
3443
3444       gdbarch = get_objfile_arch (objfile);
3445
3446       if (bp_objfile_data->exception_msym == NULL)
3447         {
3448           struct minimal_symbol *debug_hook;
3449
3450           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3451           if (debug_hook == NULL)
3452             {
3453               bp_objfile_data->exception_msym = &msym_not_found;
3454               continue;
3455             }
3456
3457           bp_objfile_data->exception_msym = debug_hook;
3458         }
3459
3460       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3461       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3462                                                  &current_target);
3463       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3464                                       &internal_breakpoint_ops);
3465       b->addr_string = xstrdup (func_name);
3466       b->enable_state = bp_disabled;
3467     }
3468
3469   update_global_location_list (1);
3470 }
3471
3472 void
3473 update_breakpoints_after_exec (void)
3474 {
3475   struct breakpoint *b, *b_tmp;
3476   struct bp_location *bploc, **bplocp_tmp;
3477
3478   /* We're about to delete breakpoints from GDB's lists.  If the
3479      INSERTED flag is true, GDB will try to lift the breakpoints by
3480      writing the breakpoints' "shadow contents" back into memory.  The
3481      "shadow contents" are NOT valid after an exec, so GDB should not
3482      do that.  Instead, the target is responsible from marking
3483      breakpoints out as soon as it detects an exec.  We don't do that
3484      here instead, because there may be other attempts to delete
3485      breakpoints after detecting an exec and before reaching here.  */
3486   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3487     if (bploc->pspace == current_program_space)
3488       gdb_assert (!bploc->inserted);
3489
3490   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3491   {
3492     if (b->pspace != current_program_space)
3493       continue;
3494
3495     /* Solib breakpoints must be explicitly reset after an exec().  */
3496     if (b->type == bp_shlib_event)
3497       {
3498         delete_breakpoint (b);
3499         continue;
3500       }
3501
3502     /* JIT breakpoints must be explicitly reset after an exec().  */
3503     if (b->type == bp_jit_event)
3504       {
3505         delete_breakpoint (b);
3506         continue;
3507       }
3508
3509     /* Thread event breakpoints must be set anew after an exec(),
3510        as must overlay event and longjmp master breakpoints.  */
3511     if (b->type == bp_thread_event || b->type == bp_overlay_event
3512         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3513         || b->type == bp_exception_master)
3514       {
3515         delete_breakpoint (b);
3516         continue;
3517       }
3518
3519     /* Step-resume breakpoints are meaningless after an exec().  */
3520     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3521       {
3522         delete_breakpoint (b);
3523         continue;
3524       }
3525
3526     /* Longjmp and longjmp-resume breakpoints are also meaningless
3527        after an exec.  */
3528     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3529         || b->type == bp_longjmp_call_dummy
3530         || b->type == bp_exception || b->type == bp_exception_resume)
3531       {
3532         delete_breakpoint (b);
3533         continue;
3534       }
3535
3536     if (b->type == bp_catchpoint)
3537       {
3538         /* For now, none of the bp_catchpoint breakpoints need to
3539            do anything at this point.  In the future, if some of
3540            the catchpoints need to something, we will need to add
3541            a new method, and call this method from here.  */
3542         continue;
3543       }
3544
3545     /* bp_finish is a special case.  The only way we ought to be able
3546        to see one of these when an exec() has happened, is if the user
3547        caught a vfork, and then said "finish".  Ordinarily a finish just
3548        carries them to the call-site of the current callee, by setting
3549        a temporary bp there and resuming.  But in this case, the finish
3550        will carry them entirely through the vfork & exec.
3551
3552        We don't want to allow a bp_finish to remain inserted now.  But
3553        we can't safely delete it, 'cause finish_command has a handle to
3554        the bp on a bpstat, and will later want to delete it.  There's a
3555        chance (and I've seen it happen) that if we delete the bp_finish
3556        here, that its storage will get reused by the time finish_command
3557        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3558        We really must allow finish_command to delete a bp_finish.
3559
3560        In the absence of a general solution for the "how do we know
3561        it's safe to delete something others may have handles to?"
3562        problem, what we'll do here is just uninsert the bp_finish, and
3563        let finish_command delete it.
3564
3565        (We know the bp_finish is "doomed" in the sense that it's
3566        momentary, and will be deleted as soon as finish_command sees
3567        the inferior stopped.  So it doesn't matter that the bp's
3568        address is probably bogus in the new a.out, unlike e.g., the
3569        solib breakpoints.)  */
3570
3571     if (b->type == bp_finish)
3572       {
3573         continue;
3574       }
3575
3576     /* Without a symbolic address, we have little hope of the
3577        pre-exec() address meaning the same thing in the post-exec()
3578        a.out.  */
3579     if (b->addr_string == NULL)
3580       {
3581         delete_breakpoint (b);
3582         continue;
3583       }
3584   }
3585   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3586   create_overlay_event_breakpoint ();
3587   create_longjmp_master_breakpoint ();
3588   create_std_terminate_master_breakpoint ();
3589   create_exception_master_breakpoint ();
3590 }
3591
3592 int
3593 detach_breakpoints (ptid_t ptid)
3594 {
3595   struct bp_location *bl, **blp_tmp;
3596   int val = 0;
3597   struct cleanup *old_chain = save_inferior_ptid ();
3598   struct inferior *inf = current_inferior ();
3599
3600   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3601     error (_("Cannot detach breakpoints of inferior_ptid"));
3602
3603   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3604   inferior_ptid = ptid;
3605   ALL_BP_LOCATIONS (bl, blp_tmp)
3606   {
3607     if (bl->pspace != inf->pspace)
3608       continue;
3609
3610     /* This function must physically remove breakpoints locations
3611        from the specified ptid, without modifying the breakpoint
3612        package's state.  Locations of type bp_loc_other are only
3613        maintained at GDB side.  So, there is no need to remove
3614        these bp_loc_other locations.  Moreover, removing these
3615        would modify the breakpoint package's state.  */
3616     if (bl->loc_type == bp_loc_other)
3617       continue;
3618
3619     if (bl->inserted)
3620       val |= remove_breakpoint_1 (bl, mark_inserted);
3621   }
3622
3623   /* Detach single-step breakpoints as well.  */
3624   detach_single_step_breakpoints ();
3625
3626   do_cleanups (old_chain);
3627   return val;
3628 }
3629
3630 /* Remove the breakpoint location BL from the current address space.
3631    Note that this is used to detach breakpoints from a child fork.
3632    When we get here, the child isn't in the inferior list, and neither
3633    do we have objects to represent its address space --- we should
3634    *not* look at bl->pspace->aspace here.  */
3635
3636 static int
3637 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3638 {
3639   int val;
3640
3641   /* BL is never in moribund_locations by our callers.  */
3642   gdb_assert (bl->owner != NULL);
3643
3644   if (bl->owner->enable_state == bp_permanent)
3645     /* Permanent breakpoints cannot be inserted or removed.  */
3646     return 0;
3647
3648   /* The type of none suggests that owner is actually deleted.
3649      This should not ever happen.  */
3650   gdb_assert (bl->owner->type != bp_none);
3651
3652   if (bl->loc_type == bp_loc_software_breakpoint
3653       || bl->loc_type == bp_loc_hardware_breakpoint)
3654     {
3655       /* "Normal" instruction breakpoint: either the standard
3656          trap-instruction bp (bp_breakpoint), or a
3657          bp_hardware_breakpoint.  */
3658
3659       /* First check to see if we have to handle an overlay.  */
3660       if (overlay_debugging == ovly_off
3661           || bl->section == NULL
3662           || !(section_is_overlay (bl->section)))
3663         {
3664           /* No overlay handling: just remove the breakpoint.  */
3665           val = bl->owner->ops->remove_location (bl);
3666         }
3667       else
3668         {
3669           /* This breakpoint is in an overlay section.
3670              Did we set a breakpoint at the LMA?  */
3671           if (!overlay_events_enabled)
3672               {
3673                 /* Yes -- overlay event support is not active, so we
3674                    should have set a breakpoint at the LMA.  Remove it.  
3675                 */
3676                 /* Ignore any failures: if the LMA is in ROM, we will
3677                    have already warned when we failed to insert it.  */
3678                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3679                   target_remove_hw_breakpoint (bl->gdbarch,
3680                                                &bl->overlay_target_info);
3681                 else
3682                   target_remove_breakpoint (bl->gdbarch,
3683                                             &bl->overlay_target_info);
3684               }
3685           /* Did we set a breakpoint at the VMA? 
3686              If so, we will have marked the breakpoint 'inserted'.  */
3687           if (bl->inserted)
3688             {
3689               /* Yes -- remove it.  Previously we did not bother to
3690                  remove the breakpoint if the section had been
3691                  unmapped, but let's not rely on that being safe.  We
3692                  don't know what the overlay manager might do.  */
3693
3694               /* However, we should remove *software* breakpoints only
3695                  if the section is still mapped, or else we overwrite
3696                  wrong code with the saved shadow contents.  */
3697               if (bl->loc_type == bp_loc_hardware_breakpoint
3698                   || section_is_mapped (bl->section))
3699                 val = bl->owner->ops->remove_location (bl);
3700               else
3701                 val = 0;
3702             }
3703           else
3704             {
3705               /* No -- not inserted, so no need to remove.  No error.  */
3706               val = 0;
3707             }
3708         }
3709
3710       /* In some cases, we might not be able to remove a breakpoint
3711          in a shared library that has already been removed, but we
3712          have not yet processed the shlib unload event.  */
3713       if (val && solib_name_from_address (bl->pspace, bl->address))
3714         val = 0;
3715
3716       if (val)
3717         return val;
3718       bl->inserted = (is == mark_inserted);
3719     }
3720   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3721     {
3722       gdb_assert (bl->owner->ops != NULL
3723                   && bl->owner->ops->remove_location != NULL);
3724
3725       bl->inserted = (is == mark_inserted);
3726       bl->owner->ops->remove_location (bl);
3727
3728       /* Failure to remove any of the hardware watchpoints comes here.  */
3729       if ((is == mark_uninserted) && (bl->inserted))
3730         warning (_("Could not remove hardware watchpoint %d."),
3731                  bl->owner->number);
3732     }
3733   else if (bl->owner->type == bp_catchpoint
3734            && breakpoint_enabled (bl->owner)
3735            && !bl->duplicate)
3736     {
3737       gdb_assert (bl->owner->ops != NULL
3738                   && bl->owner->ops->remove_location != NULL);
3739
3740       val = bl->owner->ops->remove_location (bl);
3741       if (val)
3742         return val;
3743
3744       bl->inserted = (is == mark_inserted);
3745     }
3746
3747   return 0;
3748 }
3749
3750 static int
3751 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3752 {
3753   int ret;
3754   struct cleanup *old_chain;
3755
3756   /* BL is never in moribund_locations by our callers.  */
3757   gdb_assert (bl->owner != NULL);
3758
3759   if (bl->owner->enable_state == bp_permanent)
3760     /* Permanent breakpoints cannot be inserted or removed.  */
3761     return 0;
3762
3763   /* The type of none suggests that owner is actually deleted.
3764      This should not ever happen.  */
3765   gdb_assert (bl->owner->type != bp_none);
3766
3767   old_chain = save_current_space_and_thread ();
3768
3769   switch_to_program_space_and_thread (bl->pspace);
3770
3771   ret = remove_breakpoint_1 (bl, is);
3772
3773   do_cleanups (old_chain);
3774   return ret;
3775 }
3776
3777 /* Clear the "inserted" flag in all breakpoints.  */
3778
3779 void
3780 mark_breakpoints_out (void)
3781 {
3782   struct bp_location *bl, **blp_tmp;
3783
3784   ALL_BP_LOCATIONS (bl, blp_tmp)
3785     if (bl->pspace == current_program_space)
3786       bl->inserted = 0;
3787 }
3788
3789 /* Clear the "inserted" flag in all breakpoints and delete any
3790    breakpoints which should go away between runs of the program.
3791
3792    Plus other such housekeeping that has to be done for breakpoints
3793    between runs.
3794
3795    Note: this function gets called at the end of a run (by
3796    generic_mourn_inferior) and when a run begins (by
3797    init_wait_for_inferior).  */
3798
3799
3800
3801 void
3802 breakpoint_init_inferior (enum inf_context context)
3803 {
3804   struct breakpoint *b, *b_tmp;
3805   struct bp_location *bl, **blp_tmp;
3806   int ix;
3807   struct program_space *pspace = current_program_space;
3808
3809   /* If breakpoint locations are shared across processes, then there's
3810      nothing to do.  */
3811   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3812     return;
3813
3814   ALL_BP_LOCATIONS (bl, blp_tmp)
3815   {
3816     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3817     if (bl->pspace == pspace
3818         && bl->owner->enable_state != bp_permanent)
3819       bl->inserted = 0;
3820   }
3821
3822   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3823   {
3824     if (b->loc && b->loc->pspace != pspace)
3825       continue;
3826
3827     switch (b->type)
3828       {
3829       case bp_call_dummy:
3830       case bp_longjmp_call_dummy:
3831
3832         /* If the call dummy breakpoint is at the entry point it will
3833            cause problems when the inferior is rerun, so we better get
3834            rid of it.  */
3835
3836       case bp_watchpoint_scope:
3837
3838         /* Also get rid of scope breakpoints.  */
3839
3840       case bp_shlib_event:
3841
3842         /* Also remove solib event breakpoints.  Their addresses may
3843            have changed since the last time we ran the program.
3844            Actually we may now be debugging against different target;
3845            and so the solib backend that installed this breakpoint may
3846            not be used in by the target.  E.g.,
3847
3848            (gdb) file prog-linux
3849            (gdb) run               # native linux target
3850            ...
3851            (gdb) kill
3852            (gdb) file prog-win.exe
3853            (gdb) tar rem :9999     # remote Windows gdbserver.
3854         */
3855
3856       case bp_step_resume:
3857
3858         /* Also remove step-resume breakpoints.  */
3859
3860         delete_breakpoint (b);
3861         break;
3862
3863       case bp_watchpoint:
3864       case bp_hardware_watchpoint:
3865       case bp_read_watchpoint:
3866       case bp_access_watchpoint:
3867         {
3868           struct watchpoint *w = (struct watchpoint *) b;
3869
3870           /* Likewise for watchpoints on local expressions.  */
3871           if (w->exp_valid_block != NULL)
3872             delete_breakpoint (b);
3873           else if (context == inf_starting)
3874             {
3875               /* Reset val field to force reread of starting value in
3876                  insert_breakpoints.  */
3877               if (w->val)
3878                 value_free (w->val);
3879               w->val = NULL;
3880               w->val_valid = 0;
3881           }
3882         }
3883         break;
3884       default:
3885         break;
3886       }
3887   }
3888
3889   /* Get rid of the moribund locations.  */
3890   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3891     decref_bp_location (&bl);
3892   VEC_free (bp_location_p, moribund_locations);
3893 }
3894
3895 /* These functions concern about actual breakpoints inserted in the
3896    target --- to e.g. check if we need to do decr_pc adjustment or if
3897    we need to hop over the bkpt --- so we check for address space
3898    match, not program space.  */
3899
3900 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3901    exists at PC.  It returns ordinary_breakpoint_here if it's an
3902    ordinary breakpoint, or permanent_breakpoint_here if it's a
3903    permanent breakpoint.
3904    - When continuing from a location with an ordinary breakpoint, we
3905      actually single step once before calling insert_breakpoints.
3906    - When continuing from a location with a permanent breakpoint, we
3907      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3908      the target, to advance the PC past the breakpoint.  */
3909
3910 enum breakpoint_here
3911 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3912 {
3913   struct bp_location *bl, **blp_tmp;
3914   int any_breakpoint_here = 0;
3915
3916   ALL_BP_LOCATIONS (bl, blp_tmp)
3917     {
3918       if (bl->loc_type != bp_loc_software_breakpoint
3919           && bl->loc_type != bp_loc_hardware_breakpoint)
3920         continue;
3921
3922       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3923       if ((breakpoint_enabled (bl->owner)
3924            || bl->owner->enable_state == bp_permanent)
3925           && breakpoint_location_address_match (bl, aspace, pc))
3926         {
3927           if (overlay_debugging 
3928               && section_is_overlay (bl->section)
3929               && !section_is_mapped (bl->section))
3930             continue;           /* unmapped overlay -- can't be a match */
3931           else if (bl->owner->enable_state == bp_permanent)
3932             return permanent_breakpoint_here;
3933           else
3934             any_breakpoint_here = 1;
3935         }
3936     }
3937
3938   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3939 }
3940
3941 /* Return true if there's a moribund breakpoint at PC.  */
3942
3943 int
3944 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3945 {
3946   struct bp_location *loc;
3947   int ix;
3948
3949   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3950     if (breakpoint_location_address_match (loc, aspace, pc))
3951       return 1;
3952
3953   return 0;
3954 }
3955
3956 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3957    inserted using regular breakpoint_chain / bp_location array
3958    mechanism.  This does not check for single-step breakpoints, which
3959    are inserted and removed using direct target manipulation.  */
3960
3961 int
3962 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3963                                     CORE_ADDR pc)
3964 {
3965   struct bp_location *bl, **blp_tmp;
3966
3967   ALL_BP_LOCATIONS (bl, blp_tmp)
3968     {
3969       if (bl->loc_type != bp_loc_software_breakpoint
3970           && bl->loc_type != bp_loc_hardware_breakpoint)
3971         continue;
3972
3973       if (bl->inserted
3974           && breakpoint_location_address_match (bl, aspace, pc))
3975         {
3976           if (overlay_debugging 
3977               && section_is_overlay (bl->section)
3978               && !section_is_mapped (bl->section))
3979             continue;           /* unmapped overlay -- can't be a match */
3980           else
3981             return 1;
3982         }
3983     }
3984   return 0;
3985 }
3986
3987 /* Returns non-zero iff there's either regular breakpoint
3988    or a single step breakpoint inserted at PC.  */
3989
3990 int
3991 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3992 {
3993   if (regular_breakpoint_inserted_here_p (aspace, pc))
3994     return 1;
3995
3996   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3997     return 1;
3998
3999   return 0;
4000 }
4001
4002 /* This function returns non-zero iff there is a software breakpoint
4003    inserted at PC.  */
4004
4005 int
4006 software_breakpoint_inserted_here_p (struct address_space *aspace,
4007                                      CORE_ADDR pc)
4008 {
4009   struct bp_location *bl, **blp_tmp;
4010
4011   ALL_BP_LOCATIONS (bl, blp_tmp)
4012     {
4013       if (bl->loc_type != bp_loc_software_breakpoint)
4014         continue;
4015
4016       if (bl->inserted
4017           && breakpoint_address_match (bl->pspace->aspace, bl->address,
4018                                        aspace, pc))
4019         {
4020           if (overlay_debugging 
4021               && section_is_overlay (bl->section)
4022               && !section_is_mapped (bl->section))
4023             continue;           /* unmapped overlay -- can't be a match */
4024           else
4025             return 1;
4026         }
4027     }
4028
4029   /* Also check for software single-step breakpoints.  */
4030   if (single_step_breakpoint_inserted_here_p (aspace, pc))
4031     return 1;
4032
4033   return 0;
4034 }
4035
4036 int
4037 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4038                                        CORE_ADDR addr, ULONGEST len)
4039 {
4040   struct breakpoint *bpt;
4041
4042   ALL_BREAKPOINTS (bpt)
4043     {
4044       struct bp_location *loc;
4045
4046       if (bpt->type != bp_hardware_watchpoint
4047           && bpt->type != bp_access_watchpoint)
4048         continue;
4049
4050       if (!breakpoint_enabled (bpt))
4051         continue;
4052
4053       for (loc = bpt->loc; loc; loc = loc->next)
4054         if (loc->pspace->aspace == aspace && loc->inserted)
4055           {
4056             CORE_ADDR l, h;
4057
4058             /* Check for intersection.  */
4059             l = max (loc->address, addr);
4060             h = min (loc->address + loc->length, addr + len);
4061             if (l < h)
4062               return 1;
4063           }
4064     }
4065   return 0;
4066 }
4067
4068 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
4069    PC is valid for process/thread PTID.  */
4070
4071 int
4072 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4073                          ptid_t ptid)
4074 {
4075   struct bp_location *bl, **blp_tmp;
4076   /* The thread and task IDs associated to PTID, computed lazily.  */
4077   int thread = -1;
4078   int task = 0;
4079   
4080   ALL_BP_LOCATIONS (bl, blp_tmp)
4081     {
4082       if (bl->loc_type != bp_loc_software_breakpoint
4083           && bl->loc_type != bp_loc_hardware_breakpoint)
4084         continue;
4085
4086       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4087       if (!breakpoint_enabled (bl->owner)
4088           && bl->owner->enable_state != bp_permanent)
4089         continue;
4090
4091       if (!breakpoint_location_address_match (bl, aspace, pc))
4092         continue;
4093
4094       if (bl->owner->thread != -1)
4095         {
4096           /* This is a thread-specific breakpoint.  Check that ptid
4097              matches that thread.  If thread hasn't been computed yet,
4098              it is now time to do so.  */
4099           if (thread == -1)
4100             thread = pid_to_thread_id (ptid);
4101           if (bl->owner->thread != thread)
4102             continue;
4103         }
4104
4105       if (bl->owner->task != 0)
4106         {
4107           /* This is a task-specific breakpoint.  Check that ptid
4108              matches that task.  If task hasn't been computed yet,
4109              it is now time to do so.  */
4110           if (task == 0)
4111             task = ada_get_task_number (ptid);
4112           if (bl->owner->task != task)
4113             continue;
4114         }
4115
4116       if (overlay_debugging 
4117           && section_is_overlay (bl->section)
4118           && !section_is_mapped (bl->section))
4119         continue;           /* unmapped overlay -- can't be a match */
4120
4121       return 1;
4122     }
4123
4124   return 0;
4125 }
4126 \f
4127
4128 /* bpstat stuff.  External routines' interfaces are documented
4129    in breakpoint.h.  */
4130
4131 int
4132 is_catchpoint (struct breakpoint *ep)
4133 {
4134   return (ep->type == bp_catchpoint);
4135 }
4136
4137 /* Frees any storage that is part of a bpstat.  Does not walk the
4138    'next' chain.  */
4139
4140 static void
4141 bpstat_free (bpstat bs)
4142 {
4143   if (bs->old_val != NULL)
4144     value_free (bs->old_val);
4145   decref_counted_command_line (&bs->commands);
4146   decref_bp_location (&bs->bp_location_at);
4147   xfree (bs);
4148 }
4149
4150 /* Clear a bpstat so that it says we are not at any breakpoint.
4151    Also free any storage that is part of a bpstat.  */
4152
4153 void
4154 bpstat_clear (bpstat *bsp)
4155 {
4156   bpstat p;
4157   bpstat q;
4158
4159   if (bsp == 0)
4160     return;
4161   p = *bsp;
4162   while (p != NULL)
4163     {
4164       q = p->next;
4165       bpstat_free (p);
4166       p = q;
4167     }
4168   *bsp = NULL;
4169 }
4170
4171 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4172    is part of the bpstat is copied as well.  */
4173
4174 bpstat
4175 bpstat_copy (bpstat bs)
4176 {
4177   bpstat p = NULL;
4178   bpstat tmp;
4179   bpstat retval = NULL;
4180
4181   if (bs == NULL)
4182     return bs;
4183
4184   for (; bs != NULL; bs = bs->next)
4185     {
4186       tmp = (bpstat) xmalloc (sizeof (*tmp));
4187       memcpy (tmp, bs, sizeof (*tmp));
4188       incref_counted_command_line (tmp->commands);
4189       incref_bp_location (tmp->bp_location_at);
4190       if (bs->old_val != NULL)
4191         {
4192           tmp->old_val = value_copy (bs->old_val);
4193           release_value (tmp->old_val);
4194         }
4195
4196       if (p == NULL)
4197         /* This is the first thing in the chain.  */
4198         retval = tmp;
4199       else
4200         p->next = tmp;
4201       p = tmp;
4202     }
4203   p->next = NULL;
4204   return retval;
4205 }
4206
4207 /* Find the bpstat associated with this breakpoint.  */
4208
4209 bpstat
4210 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4211 {
4212   if (bsp == NULL)
4213     return NULL;
4214
4215   for (; bsp != NULL; bsp = bsp->next)
4216     {
4217       if (bsp->breakpoint_at == breakpoint)
4218         return bsp;
4219     }
4220   return NULL;
4221 }
4222
4223 /* See breakpoint.h.  */
4224
4225 enum bpstat_signal_value
4226 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4227 {
4228   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4229
4230   for (; bsp != NULL; bsp = bsp->next)
4231     {
4232       /* Ensure that, if we ever entered this loop, then we at least
4233          return BPSTAT_SIGNAL_HIDE.  */
4234       enum bpstat_signal_value newval;
4235
4236       if (bsp->breakpoint_at == NULL)
4237         {
4238           /* A moribund location can never explain a signal other than
4239              GDB_SIGNAL_TRAP.  */
4240           if (sig == GDB_SIGNAL_TRAP)
4241             newval = BPSTAT_SIGNAL_HIDE;
4242           else
4243             newval = BPSTAT_SIGNAL_NO;
4244         }
4245       else
4246         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4247                                                            sig);
4248
4249       if (newval > result)
4250         result = newval;
4251     }
4252
4253   return result;
4254 }
4255
4256 /* Put in *NUM the breakpoint number of the first breakpoint we are
4257    stopped at.  *BSP upon return is a bpstat which points to the
4258    remaining breakpoints stopped at (but which is not guaranteed to be
4259    good for anything but further calls to bpstat_num).
4260
4261    Return 0 if passed a bpstat which does not indicate any breakpoints.
4262    Return -1 if stopped at a breakpoint that has been deleted since
4263    we set it.
4264    Return 1 otherwise.  */
4265
4266 int
4267 bpstat_num (bpstat *bsp, int *num)
4268 {
4269   struct breakpoint *b;
4270
4271   if ((*bsp) == NULL)
4272     return 0;                   /* No more breakpoint values */
4273
4274   /* We assume we'll never have several bpstats that correspond to a
4275      single breakpoint -- otherwise, this function might return the
4276      same number more than once and this will look ugly.  */
4277   b = (*bsp)->breakpoint_at;
4278   *bsp = (*bsp)->next;
4279   if (b == NULL)
4280     return -1;                  /* breakpoint that's been deleted since */
4281
4282   *num = b->number;             /* We have its number */
4283   return 1;
4284 }
4285
4286 /* See breakpoint.h.  */
4287
4288 void
4289 bpstat_clear_actions (void)
4290 {
4291   struct thread_info *tp;
4292   bpstat bs;
4293
4294   if (ptid_equal (inferior_ptid, null_ptid))
4295     return;
4296
4297   tp = find_thread_ptid (inferior_ptid);
4298   if (tp == NULL)
4299     return;
4300
4301   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4302     {
4303       decref_counted_command_line (&bs->commands);
4304
4305       if (bs->old_val != NULL)
4306         {
4307           value_free (bs->old_val);
4308           bs->old_val = NULL;
4309         }
4310     }
4311 }
4312
4313 /* Called when a command is about to proceed the inferior.  */
4314
4315 static void
4316 breakpoint_about_to_proceed (void)
4317 {
4318   if (!ptid_equal (inferior_ptid, null_ptid))
4319     {
4320       struct thread_info *tp = inferior_thread ();
4321
4322       /* Allow inferior function calls in breakpoint commands to not
4323          interrupt the command list.  When the call finishes
4324          successfully, the inferior will be standing at the same
4325          breakpoint as if nothing happened.  */
4326       if (tp->control.in_infcall)
4327         return;
4328     }
4329
4330   breakpoint_proceeded = 1;
4331 }
4332
4333 /* Stub for cleaning up our state if we error-out of a breakpoint
4334    command.  */
4335 static void
4336 cleanup_executing_breakpoints (void *ignore)
4337 {
4338   executing_breakpoint_commands = 0;
4339 }
4340
4341 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4342    or its equivalent.  */
4343
4344 static int
4345 command_line_is_silent (struct command_line *cmd)
4346 {
4347   return cmd && (strcmp ("silent", cmd->line) == 0
4348                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4349 }
4350
4351 /* Execute all the commands associated with all the breakpoints at
4352    this location.  Any of these commands could cause the process to
4353    proceed beyond this point, etc.  We look out for such changes by
4354    checking the global "breakpoint_proceeded" after each command.
4355
4356    Returns true if a breakpoint command resumed the inferior.  In that
4357    case, it is the caller's responsibility to recall it again with the
4358    bpstat of the current thread.  */
4359
4360 static int
4361 bpstat_do_actions_1 (bpstat *bsp)
4362 {
4363   bpstat bs;
4364   struct cleanup *old_chain;
4365   int again = 0;
4366
4367   /* Avoid endless recursion if a `source' command is contained
4368      in bs->commands.  */
4369   if (executing_breakpoint_commands)
4370     return 0;
4371
4372   executing_breakpoint_commands = 1;
4373   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4374
4375   prevent_dont_repeat ();
4376
4377   /* This pointer will iterate over the list of bpstat's.  */
4378   bs = *bsp;
4379
4380   breakpoint_proceeded = 0;
4381   for (; bs != NULL; bs = bs->next)
4382     {
4383       struct counted_command_line *ccmd;
4384       struct command_line *cmd;
4385       struct cleanup *this_cmd_tree_chain;
4386
4387       /* Take ownership of the BSP's command tree, if it has one.
4388
4389          The command tree could legitimately contain commands like
4390          'step' and 'next', which call clear_proceed_status, which
4391          frees stop_bpstat's command tree.  To make sure this doesn't
4392          free the tree we're executing out from under us, we need to
4393          take ownership of the tree ourselves.  Since a given bpstat's
4394          commands are only executed once, we don't need to copy it; we
4395          can clear the pointer in the bpstat, and make sure we free
4396          the tree when we're done.  */
4397       ccmd = bs->commands;
4398       bs->commands = NULL;
4399       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4400       cmd = ccmd ? ccmd->commands : NULL;
4401       if (command_line_is_silent (cmd))
4402         {
4403           /* The action has been already done by bpstat_stop_status.  */
4404           cmd = cmd->next;
4405         }
4406
4407       while (cmd != NULL)
4408         {
4409           execute_control_command (cmd);
4410
4411           if (breakpoint_proceeded)
4412             break;
4413           else
4414             cmd = cmd->next;
4415         }
4416
4417       /* We can free this command tree now.  */
4418       do_cleanups (this_cmd_tree_chain);
4419
4420       if (breakpoint_proceeded)
4421         {
4422           if (target_can_async_p ())
4423             /* If we are in async mode, then the target might be still
4424                running, not stopped at any breakpoint, so nothing for
4425                us to do here -- just return to the event loop.  */
4426             ;
4427           else
4428             /* In sync mode, when execute_control_command returns
4429                we're already standing on the next breakpoint.
4430                Breakpoint commands for that stop were not run, since
4431                execute_command does not run breakpoint commands --
4432                only command_line_handler does, but that one is not
4433                involved in execution of breakpoint commands.  So, we
4434                can now execute breakpoint commands.  It should be
4435                noted that making execute_command do bpstat actions is
4436                not an option -- in this case we'll have recursive
4437                invocation of bpstat for each breakpoint with a
4438                command, and can easily blow up GDB stack.  Instead, we
4439                return true, which will trigger the caller to recall us
4440                with the new stop_bpstat.  */
4441             again = 1;
4442           break;
4443         }
4444     }
4445   do_cleanups (old_chain);
4446   return again;
4447 }
4448
4449 void
4450 bpstat_do_actions (void)
4451 {
4452   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4453
4454   /* Do any commands attached to breakpoint we are stopped at.  */
4455   while (!ptid_equal (inferior_ptid, null_ptid)
4456          && target_has_execution
4457          && !is_exited (inferior_ptid)
4458          && !is_executing (inferior_ptid))
4459     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4460        and only return when it is stopped at the next breakpoint, we
4461        keep doing breakpoint actions until it returns false to
4462        indicate the inferior was not resumed.  */
4463     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4464       break;
4465
4466   discard_cleanups (cleanup_if_error);
4467 }
4468
4469 /* Print out the (old or new) value associated with a watchpoint.  */
4470
4471 static void
4472 watchpoint_value_print (struct value *val, struct ui_file *stream)
4473 {
4474   if (val == NULL)
4475     fprintf_unfiltered (stream, _("<unreadable>"));
4476   else
4477     {
4478       struct value_print_options opts;
4479       get_user_print_options (&opts);
4480       value_print (val, stream, &opts);
4481     }
4482 }
4483
4484 /* Generic routine for printing messages indicating why we
4485    stopped.  The behavior of this function depends on the value
4486    'print_it' in the bpstat structure.  Under some circumstances we
4487    may decide not to print anything here and delegate the task to
4488    normal_stop().  */
4489
4490 static enum print_stop_action
4491 print_bp_stop_message (bpstat bs)
4492 {
4493   switch (bs->print_it)
4494     {
4495     case print_it_noop:
4496       /* Nothing should be printed for this bpstat entry.  */
4497       return PRINT_UNKNOWN;
4498       break;
4499
4500     case print_it_done:
4501       /* We still want to print the frame, but we already printed the
4502          relevant messages.  */
4503       return PRINT_SRC_AND_LOC;
4504       break;
4505
4506     case print_it_normal:
4507       {
4508         struct breakpoint *b = bs->breakpoint_at;
4509
4510         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4511            which has since been deleted.  */
4512         if (b == NULL)
4513           return PRINT_UNKNOWN;
4514
4515         /* Normal case.  Call the breakpoint's print_it method.  */
4516         return b->ops->print_it (bs);
4517       }
4518       break;
4519
4520     default:
4521       internal_error (__FILE__, __LINE__,
4522                       _("print_bp_stop_message: unrecognized enum value"));
4523       break;
4524     }
4525 }
4526
4527 /* A helper function that prints a shared library stopped event.  */
4528
4529 static void
4530 print_solib_event (int is_catchpoint)
4531 {
4532   int any_deleted
4533     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4534   int any_added
4535     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4536
4537   if (!is_catchpoint)
4538     {
4539       if (any_added || any_deleted)
4540         ui_out_text (current_uiout,
4541                      _("Stopped due to shared library event:\n"));
4542       else
4543         ui_out_text (current_uiout,
4544                      _("Stopped due to shared library event (no "
4545                        "libraries added or removed)\n"));
4546     }
4547
4548   if (ui_out_is_mi_like_p (current_uiout))
4549     ui_out_field_string (current_uiout, "reason",
4550                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4551
4552   if (any_deleted)
4553     {
4554       struct cleanup *cleanup;
4555       char *name;
4556       int ix;
4557
4558       ui_out_text (current_uiout, _("  Inferior unloaded "));
4559       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4560                                                     "removed");
4561       for (ix = 0;
4562            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4563                         ix, name);
4564            ++ix)
4565         {
4566           if (ix > 0)
4567             ui_out_text (current_uiout, "    ");
4568           ui_out_field_string (current_uiout, "library", name);
4569           ui_out_text (current_uiout, "\n");
4570         }
4571
4572       do_cleanups (cleanup);
4573     }
4574
4575   if (any_added)
4576     {
4577       struct so_list *iter;
4578       int ix;
4579       struct cleanup *cleanup;
4580
4581       ui_out_text (current_uiout, _("  Inferior loaded "));
4582       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4583                                                     "added");
4584       for (ix = 0;
4585            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4586                         ix, iter);
4587            ++ix)
4588         {
4589           if (ix > 0)
4590             ui_out_text (current_uiout, "    ");
4591           ui_out_field_string (current_uiout, "library", iter->so_name);
4592           ui_out_text (current_uiout, "\n");
4593         }
4594
4595       do_cleanups (cleanup);
4596     }
4597 }
4598
4599 /* Print a message indicating what happened.  This is called from
4600    normal_stop().  The input to this routine is the head of the bpstat
4601    list - a list of the eventpoints that caused this stop.  KIND is
4602    the target_waitkind for the stopping event.  This
4603    routine calls the generic print routine for printing a message
4604    about reasons for stopping.  This will print (for example) the
4605    "Breakpoint n," part of the output.  The return value of this
4606    routine is one of:
4607
4608    PRINT_UNKNOWN: Means we printed nothing.
4609    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4610    code to print the location.  An example is 
4611    "Breakpoint 1, " which should be followed by
4612    the location.
4613    PRINT_SRC_ONLY: Means we printed something, but there is no need
4614    to also print the location part of the message.
4615    An example is the catch/throw messages, which
4616    don't require a location appended to the end.
4617    PRINT_NOTHING: We have done some printing and we don't need any 
4618    further info to be printed.  */
4619
4620 enum print_stop_action
4621 bpstat_print (bpstat bs, int kind)
4622 {
4623   int val;
4624
4625   /* Maybe another breakpoint in the chain caused us to stop.
4626      (Currently all watchpoints go on the bpstat whether hit or not.
4627      That probably could (should) be changed, provided care is taken
4628      with respect to bpstat_explains_signal).  */
4629   for (; bs; bs = bs->next)
4630     {
4631       val = print_bp_stop_message (bs);
4632       if (val == PRINT_SRC_ONLY 
4633           || val == PRINT_SRC_AND_LOC 
4634           || val == PRINT_NOTHING)
4635         return val;
4636     }
4637
4638   /* If we had hit a shared library event breakpoint,
4639      print_bp_stop_message would print out this message.  If we hit an
4640      OS-level shared library event, do the same thing.  */
4641   if (kind == TARGET_WAITKIND_LOADED)
4642     {
4643       print_solib_event (0);
4644       return PRINT_NOTHING;
4645     }
4646
4647   /* We reached the end of the chain, or we got a null BS to start
4648      with and nothing was printed.  */
4649   return PRINT_UNKNOWN;
4650 }
4651
4652 /* Evaluate the expression EXP and return 1 if value is zero.
4653    This returns the inverse of the condition because it is called
4654    from catch_errors which returns 0 if an exception happened, and if an
4655    exception happens we want execution to stop.
4656    The argument is a "struct expression *" that has been cast to a
4657    "void *" to make it pass through catch_errors.  */
4658
4659 static int
4660 breakpoint_cond_eval (void *exp)
4661 {
4662   struct value *mark = value_mark ();
4663   int i = !value_true (evaluate_expression ((struct expression *) exp));
4664
4665   value_free_to_mark (mark);
4666   return i;
4667 }
4668
4669 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4670
4671 static bpstat
4672 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4673 {
4674   bpstat bs;
4675
4676   bs = (bpstat) xmalloc (sizeof (*bs));
4677   bs->next = NULL;
4678   **bs_link_pointer = bs;
4679   *bs_link_pointer = &bs->next;
4680   bs->breakpoint_at = bl->owner;
4681   bs->bp_location_at = bl;
4682   incref_bp_location (bl);
4683   /* If the condition is false, etc., don't do the commands.  */
4684   bs->commands = NULL;
4685   bs->old_val = NULL;
4686   bs->print_it = print_it_normal;
4687   return bs;
4688 }
4689 \f
4690 /* The target has stopped with waitstatus WS.  Check if any hardware
4691    watchpoints have triggered, according to the target.  */
4692
4693 int
4694 watchpoints_triggered (struct target_waitstatus *ws)
4695 {
4696   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4697   CORE_ADDR addr;
4698   struct breakpoint *b;
4699
4700   if (!stopped_by_watchpoint)
4701     {
4702       /* We were not stopped by a watchpoint.  Mark all watchpoints
4703          as not triggered.  */
4704       ALL_BREAKPOINTS (b)
4705         if (is_hardware_watchpoint (b))
4706           {
4707             struct watchpoint *w = (struct watchpoint *) b;
4708
4709             w->watchpoint_triggered = watch_triggered_no;
4710           }
4711
4712       return 0;
4713     }
4714
4715   if (!target_stopped_data_address (&current_target, &addr))
4716     {
4717       /* We were stopped by a watchpoint, but we don't know where.
4718          Mark all watchpoints as unknown.  */
4719       ALL_BREAKPOINTS (b)
4720         if (is_hardware_watchpoint (b))
4721           {
4722             struct watchpoint *w = (struct watchpoint *) b;
4723
4724             w->watchpoint_triggered = watch_triggered_unknown;
4725           }
4726
4727       return 1;
4728     }
4729
4730   /* The target could report the data address.  Mark watchpoints
4731      affected by this data address as triggered, and all others as not
4732      triggered.  */
4733
4734   ALL_BREAKPOINTS (b)
4735     if (is_hardware_watchpoint (b))
4736       {
4737         struct watchpoint *w = (struct watchpoint *) b;
4738         struct bp_location *loc;
4739
4740         w->watchpoint_triggered = watch_triggered_no;
4741         for (loc = b->loc; loc; loc = loc->next)
4742           {
4743             if (is_masked_watchpoint (b))
4744               {
4745                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4746                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4747
4748                 if (newaddr == start)
4749                   {
4750                     w->watchpoint_triggered = watch_triggered_yes;
4751                     break;
4752                   }
4753               }
4754             /* Exact match not required.  Within range is sufficient.  */
4755             else if (target_watchpoint_addr_within_range (&current_target,
4756                                                          addr, loc->address,
4757                                                          loc->length))
4758               {
4759                 w->watchpoint_triggered = watch_triggered_yes;
4760                 break;
4761               }
4762           }
4763       }
4764
4765   return 1;
4766 }
4767
4768 /* Possible return values for watchpoint_check (this can't be an enum
4769    because of check_errors).  */
4770 /* The watchpoint has been deleted.  */
4771 #define WP_DELETED 1
4772 /* The value has changed.  */
4773 #define WP_VALUE_CHANGED 2
4774 /* The value has not changed.  */
4775 #define WP_VALUE_NOT_CHANGED 3
4776 /* Ignore this watchpoint, no matter if the value changed or not.  */
4777 #define WP_IGNORE 4
4778
4779 #define BP_TEMPFLAG 1
4780 #define BP_HARDWAREFLAG 2
4781
4782 /* Evaluate watchpoint condition expression and check if its value
4783    changed.
4784
4785    P should be a pointer to struct bpstat, but is defined as a void *
4786    in order for this function to be usable with catch_errors.  */
4787
4788 static int
4789 watchpoint_check (void *p)
4790 {
4791   bpstat bs = (bpstat) p;
4792   struct watchpoint *b;
4793   struct frame_info *fr;
4794   int within_current_scope;
4795
4796   /* BS is built from an existing struct breakpoint.  */
4797   gdb_assert (bs->breakpoint_at != NULL);
4798   b = (struct watchpoint *) bs->breakpoint_at;
4799
4800   /* If this is a local watchpoint, we only want to check if the
4801      watchpoint frame is in scope if the current thread is the thread
4802      that was used to create the watchpoint.  */
4803   if (!watchpoint_in_thread_scope (b))
4804     return WP_IGNORE;
4805
4806   if (b->exp_valid_block == NULL)
4807     within_current_scope = 1;
4808   else
4809     {
4810       struct frame_info *frame = get_current_frame ();
4811       struct gdbarch *frame_arch = get_frame_arch (frame);
4812       CORE_ADDR frame_pc = get_frame_pc (frame);
4813
4814       /* in_function_epilogue_p() returns a non-zero value if we're
4815          still in the function but the stack frame has already been
4816          invalidated.  Since we can't rely on the values of local
4817          variables after the stack has been destroyed, we are treating
4818          the watchpoint in that state as `not changed' without further
4819          checking.  Don't mark watchpoints as changed if the current
4820          frame is in an epilogue - even if they are in some other
4821          frame, our view of the stack is likely to be wrong and
4822          frame_find_by_id could error out.  */
4823       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4824         return WP_IGNORE;
4825
4826       fr = frame_find_by_id (b->watchpoint_frame);
4827       within_current_scope = (fr != NULL);
4828
4829       /* If we've gotten confused in the unwinder, we might have
4830          returned a frame that can't describe this variable.  */
4831       if (within_current_scope)
4832         {
4833           struct symbol *function;
4834
4835           function = get_frame_function (fr);
4836           if (function == NULL
4837               || !contained_in (b->exp_valid_block,
4838                                 SYMBOL_BLOCK_VALUE (function)))
4839             within_current_scope = 0;
4840         }
4841
4842       if (within_current_scope)
4843         /* If we end up stopping, the current frame will get selected
4844            in normal_stop.  So this call to select_frame won't affect
4845            the user.  */
4846         select_frame (fr);
4847     }
4848
4849   if (within_current_scope)
4850     {
4851       /* We use value_{,free_to_}mark because it could be a *long*
4852          time before we return to the command level and call
4853          free_all_values.  We can't call free_all_values because we
4854          might be in the middle of evaluating a function call.  */
4855
4856       int pc = 0;
4857       struct value *mark;
4858       struct value *new_val;
4859
4860       if (is_masked_watchpoint (&b->base))
4861         /* Since we don't know the exact trigger address (from
4862            stopped_data_address), just tell the user we've triggered
4863            a mask watchpoint.  */
4864         return WP_VALUE_CHANGED;
4865
4866       mark = value_mark ();
4867       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
4868
4869       /* We use value_equal_contents instead of value_equal because
4870          the latter coerces an array to a pointer, thus comparing just
4871          the address of the array instead of its contents.  This is
4872          not what we want.  */
4873       if ((b->val != NULL) != (new_val != NULL)
4874           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4875         {
4876           if (new_val != NULL)
4877             {
4878               release_value (new_val);
4879               value_free_to_mark (mark);
4880             }
4881           bs->old_val = b->val;
4882           b->val = new_val;
4883           b->val_valid = 1;
4884           return WP_VALUE_CHANGED;
4885         }
4886       else
4887         {
4888           /* Nothing changed.  */
4889           value_free_to_mark (mark);
4890           return WP_VALUE_NOT_CHANGED;
4891         }
4892     }
4893   else
4894     {
4895       struct ui_out *uiout = current_uiout;
4896
4897       /* This seems like the only logical thing to do because
4898          if we temporarily ignored the watchpoint, then when
4899          we reenter the block in which it is valid it contains
4900          garbage (in the case of a function, it may have two
4901          garbage values, one before and one after the prologue).
4902          So we can't even detect the first assignment to it and
4903          watch after that (since the garbage may or may not equal
4904          the first value assigned).  */
4905       /* We print all the stop information in
4906          breakpoint_ops->print_it, but in this case, by the time we
4907          call breakpoint_ops->print_it this bp will be deleted
4908          already.  So we have no choice but print the information
4909          here.  */
4910       if (ui_out_is_mi_like_p (uiout))
4911         ui_out_field_string
4912           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4913       ui_out_text (uiout, "\nWatchpoint ");
4914       ui_out_field_int (uiout, "wpnum", b->base.number);
4915       ui_out_text (uiout,
4916                    " deleted because the program has left the block in\n\
4917 which its expression is valid.\n");     
4918
4919       /* Make sure the watchpoint's commands aren't executed.  */
4920       decref_counted_command_line (&b->base.commands);
4921       watchpoint_del_at_next_stop (b);
4922
4923       return WP_DELETED;
4924     }
4925 }
4926
4927 /* Return true if it looks like target has stopped due to hitting
4928    breakpoint location BL.  This function does not check if we should
4929    stop, only if BL explains the stop.  */
4930
4931 static int
4932 bpstat_check_location (const struct bp_location *bl,
4933                        struct address_space *aspace, CORE_ADDR bp_addr,
4934                        const struct target_waitstatus *ws)
4935 {
4936   struct breakpoint *b = bl->owner;
4937
4938   /* BL is from an existing breakpoint.  */
4939   gdb_assert (b != NULL);
4940
4941   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4942 }
4943
4944 /* Determine if the watched values have actually changed, and we
4945    should stop.  If not, set BS->stop to 0.  */
4946
4947 static void
4948 bpstat_check_watchpoint (bpstat bs)
4949 {
4950   const struct bp_location *bl;
4951   struct watchpoint *b;
4952
4953   /* BS is built for existing struct breakpoint.  */
4954   bl = bs->bp_location_at;
4955   gdb_assert (bl != NULL);
4956   b = (struct watchpoint *) bs->breakpoint_at;
4957   gdb_assert (b != NULL);
4958
4959     {
4960       int must_check_value = 0;
4961       
4962       if (b->base.type == bp_watchpoint)
4963         /* For a software watchpoint, we must always check the
4964            watched value.  */
4965         must_check_value = 1;
4966       else if (b->watchpoint_triggered == watch_triggered_yes)
4967         /* We have a hardware watchpoint (read, write, or access)
4968            and the target earlier reported an address watched by
4969            this watchpoint.  */
4970         must_check_value = 1;
4971       else if (b->watchpoint_triggered == watch_triggered_unknown
4972                && b->base.type == bp_hardware_watchpoint)
4973         /* We were stopped by a hardware watchpoint, but the target could
4974            not report the data address.  We must check the watchpoint's
4975            value.  Access and read watchpoints are out of luck; without
4976            a data address, we can't figure it out.  */
4977         must_check_value = 1;
4978
4979       if (must_check_value)
4980         {
4981           char *message
4982             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4983                           b->base.number);
4984           struct cleanup *cleanups = make_cleanup (xfree, message);
4985           int e = catch_errors (watchpoint_check, bs, message,
4986                                 RETURN_MASK_ALL);
4987           do_cleanups (cleanups);
4988           switch (e)
4989             {
4990             case WP_DELETED:
4991               /* We've already printed what needs to be printed.  */
4992               bs->print_it = print_it_done;
4993               /* Stop.  */
4994               break;
4995             case WP_IGNORE:
4996               bs->print_it = print_it_noop;
4997               bs->stop = 0;
4998               break;
4999             case WP_VALUE_CHANGED:
5000               if (b->base.type == bp_read_watchpoint)
5001                 {
5002                   /* There are two cases to consider here:
5003
5004                      1. We're watching the triggered memory for reads.
5005                      In that case, trust the target, and always report
5006                      the watchpoint hit to the user.  Even though
5007                      reads don't cause value changes, the value may
5008                      have changed since the last time it was read, and
5009                      since we're not trapping writes, we will not see
5010                      those, and as such we should ignore our notion of
5011                      old value.
5012
5013                      2. We're watching the triggered memory for both
5014                      reads and writes.  There are two ways this may
5015                      happen:
5016
5017                      2.1. This is a target that can't break on data
5018                      reads only, but can break on accesses (reads or
5019                      writes), such as e.g., x86.  We detect this case
5020                      at the time we try to insert read watchpoints.
5021
5022                      2.2. Otherwise, the target supports read
5023                      watchpoints, but, the user set an access or write
5024                      watchpoint watching the same memory as this read
5025                      watchpoint.
5026
5027                      If we're watching memory writes as well as reads,
5028                      ignore watchpoint hits when we find that the
5029                      value hasn't changed, as reads don't cause
5030                      changes.  This still gives false positives when
5031                      the program writes the same value to memory as
5032                      what there was already in memory (we will confuse
5033                      it for a read), but it's much better than
5034                      nothing.  */
5035
5036                   int other_write_watchpoint = 0;
5037
5038                   if (bl->watchpoint_type == hw_read)
5039                     {
5040                       struct breakpoint *other_b;
5041
5042                       ALL_BREAKPOINTS (other_b)
5043                         if (other_b->type == bp_hardware_watchpoint
5044                             || other_b->type == bp_access_watchpoint)
5045                           {
5046                             struct watchpoint *other_w =
5047                               (struct watchpoint *) other_b;
5048
5049                             if (other_w->watchpoint_triggered
5050                                 == watch_triggered_yes)
5051                               {
5052                                 other_write_watchpoint = 1;
5053                                 break;
5054                               }
5055                           }
5056                     }
5057
5058                   if (other_write_watchpoint
5059                       || bl->watchpoint_type == hw_access)
5060                     {
5061                       /* We're watching the same memory for writes,
5062                          and the value changed since the last time we
5063                          updated it, so this trap must be for a write.
5064                          Ignore it.  */
5065                       bs->print_it = print_it_noop;
5066                       bs->stop = 0;
5067                     }
5068                 }
5069               break;
5070             case WP_VALUE_NOT_CHANGED:
5071               if (b->base.type == bp_hardware_watchpoint
5072                   || b->base.type == bp_watchpoint)
5073                 {
5074                   /* Don't stop: write watchpoints shouldn't fire if
5075                      the value hasn't changed.  */
5076                   bs->print_it = print_it_noop;
5077                   bs->stop = 0;
5078                 }
5079               /* Stop.  */
5080               break;
5081             default:
5082               /* Can't happen.  */
5083             case 0:
5084               /* Error from catch_errors.  */
5085               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5086               watchpoint_del_at_next_stop (b);
5087               /* We've already printed what needs to be printed.  */
5088               bs->print_it = print_it_done;
5089               break;
5090             }
5091         }
5092       else      /* must_check_value == 0 */
5093         {
5094           /* This is a case where some watchpoint(s) triggered, but
5095              not at the address of this watchpoint, or else no
5096              watchpoint triggered after all.  So don't print
5097              anything for this watchpoint.  */
5098           bs->print_it = print_it_noop;
5099           bs->stop = 0;
5100         }
5101     }
5102 }
5103
5104 /* For breakpoints that are currently marked as telling gdb to stop,
5105    check conditions (condition proper, frame, thread and ignore count)
5106    of breakpoint referred to by BS.  If we should not stop for this
5107    breakpoint, set BS->stop to 0.  */
5108
5109 static void
5110 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5111 {
5112   int thread_id = pid_to_thread_id (ptid);
5113   const struct bp_location *bl;
5114   struct breakpoint *b;
5115   int value_is_zero = 0;
5116   struct expression *cond;
5117
5118   gdb_assert (bs->stop);
5119
5120   /* BS is built for existing struct breakpoint.  */
5121   bl = bs->bp_location_at;
5122   gdb_assert (bl != NULL);
5123   b = bs->breakpoint_at;
5124   gdb_assert (b != NULL);
5125
5126   /* Even if the target evaluated the condition on its end and notified GDB, we
5127      need to do so again since GDB does not know if we stopped due to a
5128      breakpoint or a single step breakpoint.  */
5129
5130   if (frame_id_p (b->frame_id)
5131       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5132     {
5133       bs->stop = 0;
5134       return;
5135     }
5136
5137   /* Evaluate Python breakpoints that have a "stop" method implemented.  */
5138   if (b->py_bp_object)
5139     bs->stop = gdbpy_should_stop (b->py_bp_object);
5140
5141   if (is_watchpoint (b))
5142     {
5143       struct watchpoint *w = (struct watchpoint *) b;
5144
5145       cond = w->cond_exp;
5146     }
5147   else
5148     cond = bl->cond;
5149
5150   if (cond && b->disposition != disp_del_at_next_stop)
5151     {
5152       int within_current_scope = 1;
5153       struct watchpoint * w;
5154
5155       /* We use value_mark and value_free_to_mark because it could
5156          be a long time before we return to the command level and
5157          call free_all_values.  We can't call free_all_values
5158          because we might be in the middle of evaluating a
5159          function call.  */
5160       struct value *mark = value_mark ();
5161
5162       if (is_watchpoint (b))
5163         w = (struct watchpoint *) b;
5164       else
5165         w = NULL;
5166
5167       /* Need to select the frame, with all that implies so that
5168          the conditions will have the right context.  Because we
5169          use the frame, we will not see an inlined function's
5170          variables when we arrive at a breakpoint at the start
5171          of the inlined function; the current frame will be the
5172          call site.  */
5173       if (w == NULL || w->cond_exp_valid_block == NULL)
5174         select_frame (get_current_frame ());
5175       else
5176         {
5177           struct frame_info *frame;
5178
5179           /* For local watchpoint expressions, which particular
5180              instance of a local is being watched matters, so we
5181              keep track of the frame to evaluate the expression
5182              in.  To evaluate the condition however, it doesn't
5183              really matter which instantiation of the function
5184              where the condition makes sense triggers the
5185              watchpoint.  This allows an expression like "watch
5186              global if q > 10" set in `func', catch writes to
5187              global on all threads that call `func', or catch
5188              writes on all recursive calls of `func' by a single
5189              thread.  We simply always evaluate the condition in
5190              the innermost frame that's executing where it makes
5191              sense to evaluate the condition.  It seems
5192              intuitive.  */
5193           frame = block_innermost_frame (w->cond_exp_valid_block);
5194           if (frame != NULL)
5195             select_frame (frame);
5196           else
5197             within_current_scope = 0;
5198         }
5199       if (within_current_scope)
5200         value_is_zero
5201           = catch_errors (breakpoint_cond_eval, cond,
5202                           "Error in testing breakpoint condition:\n",
5203                           RETURN_MASK_ALL);
5204       else
5205         {
5206           warning (_("Watchpoint condition cannot be tested "
5207                      "in the current scope"));
5208           /* If we failed to set the right context for this
5209              watchpoint, unconditionally report it.  */
5210           value_is_zero = 0;
5211         }
5212       /* FIXME-someday, should give breakpoint #.  */
5213       value_free_to_mark (mark);
5214     }
5215
5216   if (cond && value_is_zero)
5217     {
5218       bs->stop = 0;
5219     }
5220   else if (b->thread != -1 && b->thread != thread_id)
5221     {
5222       bs->stop = 0;
5223     }
5224   else if (b->ignore_count > 0)
5225     {
5226       b->ignore_count--;
5227       bs->stop = 0;
5228       /* Increase the hit count even though we don't stop.  */
5229       ++(b->hit_count);
5230       observer_notify_breakpoint_modified (b);
5231     }   
5232 }
5233
5234
5235 /* Get a bpstat associated with having just stopped at address
5236    BP_ADDR in thread PTID.
5237
5238    Determine whether we stopped at a breakpoint, etc, or whether we
5239    don't understand this stop.  Result is a chain of bpstat's such
5240    that:
5241
5242    if we don't understand the stop, the result is a null pointer.
5243
5244    if we understand why we stopped, the result is not null.
5245
5246    Each element of the chain refers to a particular breakpoint or
5247    watchpoint at which we have stopped.  (We may have stopped for
5248    several reasons concurrently.)
5249
5250    Each element of the chain has valid next, breakpoint_at,
5251    commands, FIXME??? fields.  */
5252
5253 bpstat
5254 bpstat_stop_status (struct address_space *aspace,
5255                     CORE_ADDR bp_addr, ptid_t ptid,
5256                     const struct target_waitstatus *ws)
5257 {
5258   struct breakpoint *b = NULL;
5259   struct bp_location *bl;
5260   struct bp_location *loc;
5261   /* First item of allocated bpstat's.  */
5262   bpstat bs_head = NULL, *bs_link = &bs_head;
5263   /* Pointer to the last thing in the chain currently.  */
5264   bpstat bs;
5265   int ix;
5266   int need_remove_insert;
5267   int removed_any;
5268
5269   /* First, build the bpstat chain with locations that explain a
5270      target stop, while being careful to not set the target running,
5271      as that may invalidate locations (in particular watchpoint
5272      locations are recreated).  Resuming will happen here with
5273      breakpoint conditions or watchpoint expressions that include
5274      inferior function calls.  */
5275
5276   ALL_BREAKPOINTS (b)
5277     {
5278       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5279         continue;
5280
5281       for (bl = b->loc; bl != NULL; bl = bl->next)
5282         {
5283           /* For hardware watchpoints, we look only at the first
5284              location.  The watchpoint_check function will work on the
5285              entire expression, not the individual locations.  For
5286              read watchpoints, the watchpoints_triggered function has
5287              checked all locations already.  */
5288           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5289             break;
5290
5291           if (!bl->enabled || bl->shlib_disabled)
5292             continue;
5293
5294           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5295             continue;
5296
5297           /* Come here if it's a watchpoint, or if the break address
5298              matches.  */
5299
5300           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5301                                                    explain stop.  */
5302
5303           /* Assume we stop.  Should we find a watchpoint that is not
5304              actually triggered, or if the condition of the breakpoint
5305              evaluates as false, we'll reset 'stop' to 0.  */
5306           bs->stop = 1;
5307           bs->print = 1;
5308
5309           /* If this is a scope breakpoint, mark the associated
5310              watchpoint as triggered so that we will handle the
5311              out-of-scope event.  We'll get to the watchpoint next
5312              iteration.  */
5313           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5314             {
5315               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5316
5317               w->watchpoint_triggered = watch_triggered_yes;
5318             }
5319         }
5320     }
5321
5322   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5323     {
5324       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5325         {
5326           bs = bpstat_alloc (loc, &bs_link);
5327           /* For hits of moribund locations, we should just proceed.  */
5328           bs->stop = 0;
5329           bs->print = 0;
5330           bs->print_it = print_it_noop;
5331         }
5332     }
5333
5334   /* A bit of special processing for shlib breakpoints.  We need to
5335      process solib loading here, so that the lists of loaded and
5336      unloaded libraries are correct before we handle "catch load" and
5337      "catch unload".  */
5338   for (bs = bs_head; bs != NULL; bs = bs->next)
5339     {
5340       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5341         {
5342           handle_solib_event ();
5343           break;
5344         }
5345     }
5346
5347   /* Now go through the locations that caused the target to stop, and
5348      check whether we're interested in reporting this stop to higher
5349      layers, or whether we should resume the target transparently.  */
5350
5351   removed_any = 0;
5352
5353   for (bs = bs_head; bs != NULL; bs = bs->next)
5354     {
5355       if (!bs->stop)
5356         continue;
5357
5358       b = bs->breakpoint_at;
5359       b->ops->check_status (bs);
5360       if (bs->stop)
5361         {
5362           bpstat_check_breakpoint_conditions (bs, ptid);
5363
5364           if (bs->stop)
5365             {
5366               ++(b->hit_count);
5367               observer_notify_breakpoint_modified (b);
5368
5369               /* We will stop here.  */
5370               if (b->disposition == disp_disable)
5371                 {
5372                   --(b->enable_count);
5373                   if (b->enable_count <= 0
5374                       && b->enable_state != bp_permanent)
5375                     b->enable_state = bp_disabled;
5376                   removed_any = 1;
5377                 }
5378               if (b->silent)
5379                 bs->print = 0;
5380               bs->commands = b->commands;
5381               incref_counted_command_line (bs->commands);
5382               if (command_line_is_silent (bs->commands
5383                                           ? bs->commands->commands : NULL))
5384                 bs->print = 0;
5385
5386               b->ops->after_condition_true (bs);
5387             }
5388
5389         }
5390
5391       /* Print nothing for this entry if we don't stop or don't
5392          print.  */
5393       if (!bs->stop || !bs->print)
5394         bs->print_it = print_it_noop;
5395     }
5396
5397   /* If we aren't stopping, the value of some hardware watchpoint may
5398      not have changed, but the intermediate memory locations we are
5399      watching may have.  Don't bother if we're stopping; this will get
5400      done later.  */
5401   need_remove_insert = 0;
5402   if (! bpstat_causes_stop (bs_head))
5403     for (bs = bs_head; bs != NULL; bs = bs->next)
5404       if (!bs->stop
5405           && bs->breakpoint_at
5406           && is_hardware_watchpoint (bs->breakpoint_at))
5407         {
5408           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5409
5410           update_watchpoint (w, 0 /* don't reparse.  */);
5411           need_remove_insert = 1;
5412         }
5413
5414   if (need_remove_insert)
5415     update_global_location_list (1);
5416   else if (removed_any)
5417     update_global_location_list (0);
5418
5419   return bs_head;
5420 }
5421
5422 static void
5423 handle_jit_event (void)
5424 {
5425   struct frame_info *frame;
5426   struct gdbarch *gdbarch;
5427
5428   /* Switch terminal for any messages produced by
5429      breakpoint_re_set.  */
5430   target_terminal_ours_for_output ();
5431
5432   frame = get_current_frame ();
5433   gdbarch = get_frame_arch (frame);
5434
5435   jit_event_handler (gdbarch);
5436
5437   target_terminal_inferior ();
5438 }
5439
5440 /* Prepare WHAT final decision for infrun.  */
5441
5442 /* Decide what infrun needs to do with this bpstat.  */
5443
5444 struct bpstat_what
5445 bpstat_what (bpstat bs_head)
5446 {
5447   struct bpstat_what retval;
5448   int jit_event = 0;
5449   bpstat bs;
5450
5451   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5452   retval.call_dummy = STOP_NONE;
5453   retval.is_longjmp = 0;
5454
5455   for (bs = bs_head; bs != NULL; bs = bs->next)
5456     {
5457       /* Extract this BS's action.  After processing each BS, we check
5458          if its action overrides all we've seem so far.  */
5459       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5460       enum bptype bptype;
5461
5462       if (bs->breakpoint_at == NULL)
5463         {
5464           /* I suspect this can happen if it was a momentary
5465              breakpoint which has since been deleted.  */
5466           bptype = bp_none;
5467         }
5468       else
5469         bptype = bs->breakpoint_at->type;
5470
5471       switch (bptype)
5472         {
5473         case bp_none:
5474           break;
5475         case bp_breakpoint:
5476         case bp_hardware_breakpoint:
5477         case bp_until:
5478         case bp_finish:
5479         case bp_shlib_event:
5480           if (bs->stop)
5481             {
5482               if (bs->print)
5483                 this_action = BPSTAT_WHAT_STOP_NOISY;
5484               else
5485                 this_action = BPSTAT_WHAT_STOP_SILENT;
5486             }
5487           else
5488             this_action = BPSTAT_WHAT_SINGLE;
5489           break;
5490         case bp_watchpoint:
5491         case bp_hardware_watchpoint:
5492         case bp_read_watchpoint:
5493         case bp_access_watchpoint:
5494           if (bs->stop)
5495             {
5496               if (bs->print)
5497                 this_action = BPSTAT_WHAT_STOP_NOISY;
5498               else
5499                 this_action = BPSTAT_WHAT_STOP_SILENT;
5500             }
5501           else
5502             {
5503               /* There was a watchpoint, but we're not stopping.
5504                  This requires no further action.  */
5505             }
5506           break;
5507         case bp_longjmp:
5508         case bp_longjmp_call_dummy:
5509         case bp_exception:
5510           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5511           retval.is_longjmp = bptype != bp_exception;
5512           break;
5513         case bp_longjmp_resume:
5514         case bp_exception_resume:
5515           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5516           retval.is_longjmp = bptype == bp_longjmp_resume;
5517           break;
5518         case bp_step_resume:
5519           if (bs->stop)
5520             this_action = BPSTAT_WHAT_STEP_RESUME;
5521           else
5522             {
5523               /* It is for the wrong frame.  */
5524               this_action = BPSTAT_WHAT_SINGLE;
5525             }
5526           break;
5527         case bp_hp_step_resume:
5528           if (bs->stop)
5529             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5530           else
5531             {
5532               /* It is for the wrong frame.  */
5533               this_action = BPSTAT_WHAT_SINGLE;
5534             }
5535           break;
5536         case bp_watchpoint_scope:
5537         case bp_thread_event:
5538         case bp_overlay_event:
5539         case bp_longjmp_master:
5540         case bp_std_terminate_master:
5541         case bp_exception_master:
5542           this_action = BPSTAT_WHAT_SINGLE;
5543           break;
5544         case bp_catchpoint:
5545           if (bs->stop)
5546             {
5547               if (bs->print)
5548                 this_action = BPSTAT_WHAT_STOP_NOISY;
5549               else
5550                 this_action = BPSTAT_WHAT_STOP_SILENT;
5551             }
5552           else
5553             {
5554               /* There was a catchpoint, but we're not stopping.
5555                  This requires no further action.  */
5556             }
5557           break;
5558         case bp_jit_event:
5559           jit_event = 1;
5560           this_action = BPSTAT_WHAT_SINGLE;
5561           break;
5562         case bp_call_dummy:
5563           /* Make sure the action is stop (silent or noisy),
5564              so infrun.c pops the dummy frame.  */
5565           retval.call_dummy = STOP_STACK_DUMMY;
5566           this_action = BPSTAT_WHAT_STOP_SILENT;
5567           break;
5568         case bp_std_terminate:
5569           /* Make sure the action is stop (silent or noisy),
5570              so infrun.c pops the dummy frame.  */
5571           retval.call_dummy = STOP_STD_TERMINATE;
5572           this_action = BPSTAT_WHAT_STOP_SILENT;
5573           break;
5574         case bp_tracepoint:
5575         case bp_fast_tracepoint:
5576         case bp_static_tracepoint:
5577           /* Tracepoint hits should not be reported back to GDB, and
5578              if one got through somehow, it should have been filtered
5579              out already.  */
5580           internal_error (__FILE__, __LINE__,
5581                           _("bpstat_what: tracepoint encountered"));
5582           break;
5583         case bp_gnu_ifunc_resolver:
5584           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5585           this_action = BPSTAT_WHAT_SINGLE;
5586           break;
5587         case bp_gnu_ifunc_resolver_return:
5588           /* The breakpoint will be removed, execution will restart from the
5589              PC of the former breakpoint.  */
5590           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5591           break;
5592
5593         case bp_dprintf:
5594           if (bs->stop)
5595             this_action = BPSTAT_WHAT_STOP_SILENT;
5596           else
5597             this_action = BPSTAT_WHAT_SINGLE;
5598           break;
5599
5600         default:
5601           internal_error (__FILE__, __LINE__,
5602                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5603         }
5604
5605       retval.main_action = max (retval.main_action, this_action);
5606     }
5607
5608   /* These operations may affect the bs->breakpoint_at state so they are
5609      delayed after MAIN_ACTION is decided above.  */
5610
5611   if (jit_event)
5612     {
5613       if (debug_infrun)
5614         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5615
5616       handle_jit_event ();
5617     }
5618
5619   for (bs = bs_head; bs != NULL; bs = bs->next)
5620     {
5621       struct breakpoint *b = bs->breakpoint_at;
5622
5623       if (b == NULL)
5624         continue;
5625       switch (b->type)
5626         {
5627         case bp_gnu_ifunc_resolver:
5628           gnu_ifunc_resolver_stop (b);
5629           break;
5630         case bp_gnu_ifunc_resolver_return:
5631           gnu_ifunc_resolver_return_stop (b);
5632           break;
5633         }
5634     }
5635
5636   return retval;
5637 }
5638
5639 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5640    without hardware support).  This isn't related to a specific bpstat,
5641    just to things like whether watchpoints are set.  */
5642
5643 int
5644 bpstat_should_step (void)
5645 {
5646   struct breakpoint *b;
5647
5648   ALL_BREAKPOINTS (b)
5649     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5650       return 1;
5651   return 0;
5652 }
5653
5654 int
5655 bpstat_causes_stop (bpstat bs)
5656 {
5657   for (; bs != NULL; bs = bs->next)
5658     if (bs->stop)
5659       return 1;
5660
5661   return 0;
5662 }
5663
5664 \f
5665
5666 /* Compute a string of spaces suitable to indent the next line
5667    so it starts at the position corresponding to the table column
5668    named COL_NAME in the currently active table of UIOUT.  */
5669
5670 static char *
5671 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5672 {
5673   static char wrap_indent[80];
5674   int i, total_width, width, align;
5675   char *text;
5676
5677   total_width = 0;
5678   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5679     {
5680       if (strcmp (text, col_name) == 0)
5681         {
5682           gdb_assert (total_width < sizeof wrap_indent);
5683           memset (wrap_indent, ' ', total_width);
5684           wrap_indent[total_width] = 0;
5685
5686           return wrap_indent;
5687         }
5688
5689       total_width += width + 1;
5690     }
5691
5692   return NULL;
5693 }
5694
5695 /* Determine if the locations of this breakpoint will have their conditions
5696    evaluated by the target, host or a mix of both.  Returns the following:
5697
5698     "host": Host evals condition.
5699     "host or target": Host or Target evals condition.
5700     "target": Target evals condition.
5701 */
5702
5703 static const char *
5704 bp_condition_evaluator (struct breakpoint *b)
5705 {
5706   struct bp_location *bl;
5707   char host_evals = 0;
5708   char target_evals = 0;
5709
5710   if (!b)
5711     return NULL;
5712
5713   if (!is_breakpoint (b))
5714     return NULL;
5715
5716   if (gdb_evaluates_breakpoint_condition_p ()
5717       || !target_supports_evaluation_of_breakpoint_conditions ())
5718     return condition_evaluation_host;
5719
5720   for (bl = b->loc; bl; bl = bl->next)
5721     {
5722       if (bl->cond_bytecode)
5723         target_evals++;
5724       else
5725         host_evals++;
5726     }
5727
5728   if (host_evals && target_evals)
5729     return condition_evaluation_both;
5730   else if (target_evals)
5731     return condition_evaluation_target;
5732   else
5733     return condition_evaluation_host;
5734 }
5735
5736 /* Determine the breakpoint location's condition evaluator.  This is
5737    similar to bp_condition_evaluator, but for locations.  */
5738
5739 static const char *
5740 bp_location_condition_evaluator (struct bp_location *bl)
5741 {
5742   if (bl && !is_breakpoint (bl->owner))
5743     return NULL;
5744
5745   if (gdb_evaluates_breakpoint_condition_p ()
5746       || !target_supports_evaluation_of_breakpoint_conditions ())
5747     return condition_evaluation_host;
5748
5749   if (bl && bl->cond_bytecode)
5750     return condition_evaluation_target;
5751   else
5752     return condition_evaluation_host;
5753 }
5754
5755 /* Print the LOC location out of the list of B->LOC locations.  */
5756
5757 static void
5758 print_breakpoint_location (struct breakpoint *b,
5759                            struct bp_location *loc)
5760 {
5761   struct ui_out *uiout = current_uiout;
5762   struct cleanup *old_chain = save_current_program_space ();
5763
5764   if (loc != NULL && loc->shlib_disabled)
5765     loc = NULL;
5766
5767   if (loc != NULL)
5768     set_current_program_space (loc->pspace);
5769
5770   if (b->display_canonical)
5771     ui_out_field_string (uiout, "what", b->addr_string);
5772   else if (loc && loc->symtab)
5773     {
5774       struct symbol *sym 
5775         = find_pc_sect_function (loc->address, loc->section);
5776       if (sym)
5777         {
5778           ui_out_text (uiout, "in ");
5779           ui_out_field_string (uiout, "func",
5780                                SYMBOL_PRINT_NAME (sym));
5781           ui_out_text (uiout, " ");
5782           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5783           ui_out_text (uiout, "at ");
5784         }
5785       ui_out_field_string (uiout, "file",
5786                            symtab_to_filename_for_display (loc->symtab));
5787       ui_out_text (uiout, ":");
5788
5789       if (ui_out_is_mi_like_p (uiout))
5790         ui_out_field_string (uiout, "fullname",
5791                              symtab_to_fullname (loc->symtab));
5792       
5793       ui_out_field_int (uiout, "line", loc->line_number);
5794     }
5795   else if (loc)
5796     {
5797       struct ui_file *stb = mem_fileopen ();
5798       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5799
5800       print_address_symbolic (loc->gdbarch, loc->address, stb,
5801                               demangle, "");
5802       ui_out_field_stream (uiout, "at", stb);
5803
5804       do_cleanups (stb_chain);
5805     }
5806   else
5807     ui_out_field_string (uiout, "pending", b->addr_string);
5808
5809   if (loc && is_breakpoint (b)
5810       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5811       && bp_condition_evaluator (b) == condition_evaluation_both)
5812     {
5813       ui_out_text (uiout, " (");
5814       ui_out_field_string (uiout, "evaluated-by",
5815                            bp_location_condition_evaluator (loc));
5816       ui_out_text (uiout, ")");
5817     }
5818
5819   do_cleanups (old_chain);
5820 }
5821
5822 static const char *
5823 bptype_string (enum bptype type)
5824 {
5825   struct ep_type_description
5826     {
5827       enum bptype type;
5828       char *description;
5829     };
5830   static struct ep_type_description bptypes[] =
5831   {
5832     {bp_none, "?deleted?"},
5833     {bp_breakpoint, "breakpoint"},
5834     {bp_hardware_breakpoint, "hw breakpoint"},
5835     {bp_until, "until"},
5836     {bp_finish, "finish"},
5837     {bp_watchpoint, "watchpoint"},
5838     {bp_hardware_watchpoint, "hw watchpoint"},
5839     {bp_read_watchpoint, "read watchpoint"},
5840     {bp_access_watchpoint, "acc watchpoint"},
5841     {bp_longjmp, "longjmp"},
5842     {bp_longjmp_resume, "longjmp resume"},
5843     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5844     {bp_exception, "exception"},
5845     {bp_exception_resume, "exception resume"},
5846     {bp_step_resume, "step resume"},
5847     {bp_hp_step_resume, "high-priority step resume"},
5848     {bp_watchpoint_scope, "watchpoint scope"},
5849     {bp_call_dummy, "call dummy"},
5850     {bp_std_terminate, "std::terminate"},
5851     {bp_shlib_event, "shlib events"},
5852     {bp_thread_event, "thread events"},
5853     {bp_overlay_event, "overlay events"},
5854     {bp_longjmp_master, "longjmp master"},
5855     {bp_std_terminate_master, "std::terminate master"},
5856     {bp_exception_master, "exception master"},
5857     {bp_catchpoint, "catchpoint"},
5858     {bp_tracepoint, "tracepoint"},
5859     {bp_fast_tracepoint, "fast tracepoint"},
5860     {bp_static_tracepoint, "static tracepoint"},
5861     {bp_dprintf, "dprintf"},
5862     {bp_jit_event, "jit events"},
5863     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5864     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5865   };
5866
5867   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5868       || ((int) type != bptypes[(int) type].type))
5869     internal_error (__FILE__, __LINE__,
5870                     _("bptypes table does not describe type #%d."),
5871                     (int) type);
5872
5873   return bptypes[(int) type].description;
5874 }
5875
5876 /* For MI, output a field named 'thread-groups' with a list as the value.
5877    For CLI, prefix the list with the string 'inf'. */
5878
5879 static void
5880 output_thread_groups (struct ui_out *uiout,
5881                       const char *field_name,
5882                       VEC(int) *inf_num,
5883                       int mi_only)
5884 {
5885   struct cleanup *back_to;
5886   int is_mi = ui_out_is_mi_like_p (uiout);
5887   int inf;
5888   int i;
5889
5890   /* For backward compatibility, don't display inferiors in CLI unless
5891      there are several.  Always display them for MI. */
5892   if (!is_mi && mi_only)
5893     return;
5894
5895   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
5896
5897   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5898     {
5899       if (is_mi)
5900         {
5901           char mi_group[10];
5902
5903           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5904           ui_out_field_string (uiout, NULL, mi_group);
5905         }
5906       else
5907         {
5908           if (i == 0)
5909             ui_out_text (uiout, " inf ");
5910           else
5911             ui_out_text (uiout, ", ");
5912         
5913           ui_out_text (uiout, plongest (inf));
5914         }
5915     }
5916
5917   do_cleanups (back_to);
5918 }
5919
5920 /* Print B to gdb_stdout.  */
5921
5922 static void
5923 print_one_breakpoint_location (struct breakpoint *b,
5924                                struct bp_location *loc,
5925                                int loc_number,
5926                                struct bp_location **last_loc,
5927                                int allflag)
5928 {
5929   struct command_line *l;
5930   static char bpenables[] = "nynny";
5931
5932   struct ui_out *uiout = current_uiout;
5933   int header_of_multiple = 0;
5934   int part_of_multiple = (loc != NULL);
5935   struct value_print_options opts;
5936
5937   get_user_print_options (&opts);
5938
5939   gdb_assert (!loc || loc_number != 0);
5940   /* See comment in print_one_breakpoint concerning treatment of
5941      breakpoints with single disabled location.  */
5942   if (loc == NULL 
5943       && (b->loc != NULL 
5944           && (b->loc->next != NULL || !b->loc->enabled)))
5945     header_of_multiple = 1;
5946   if (loc == NULL)
5947     loc = b->loc;
5948
5949   annotate_record ();
5950
5951   /* 1 */
5952   annotate_field (0);
5953   if (part_of_multiple)
5954     {
5955       char *formatted;
5956       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5957       ui_out_field_string (uiout, "number", formatted);
5958       xfree (formatted);
5959     }
5960   else
5961     {
5962       ui_out_field_int (uiout, "number", b->number);
5963     }
5964
5965   /* 2 */
5966   annotate_field (1);
5967   if (part_of_multiple)
5968     ui_out_field_skip (uiout, "type");
5969   else
5970     ui_out_field_string (uiout, "type", bptype_string (b->type));
5971
5972   /* 3 */
5973   annotate_field (2);
5974   if (part_of_multiple)
5975     ui_out_field_skip (uiout, "disp");
5976   else
5977     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5978
5979
5980   /* 4 */
5981   annotate_field (3);
5982   if (part_of_multiple)
5983     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5984   else
5985     ui_out_field_fmt (uiout, "enabled", "%c", 
5986                       bpenables[(int) b->enable_state]);
5987   ui_out_spaces (uiout, 2);
5988
5989   
5990   /* 5 and 6 */
5991   if (b->ops != NULL && b->ops->print_one != NULL)
5992     {
5993       /* Although the print_one can possibly print all locations,
5994          calling it here is not likely to get any nice result.  So,
5995          make sure there's just one location.  */
5996       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5997       b->ops->print_one (b, last_loc);
5998     }
5999   else
6000     switch (b->type)
6001       {
6002       case bp_none:
6003         internal_error (__FILE__, __LINE__,
6004                         _("print_one_breakpoint: bp_none encountered\n"));
6005         break;
6006
6007       case bp_watchpoint:
6008       case bp_hardware_watchpoint:
6009       case bp_read_watchpoint:
6010       case bp_access_watchpoint:
6011         {
6012           struct watchpoint *w = (struct watchpoint *) b;
6013
6014           /* Field 4, the address, is omitted (which makes the columns
6015              not line up too nicely with the headers, but the effect
6016              is relatively readable).  */
6017           if (opts.addressprint)
6018             ui_out_field_skip (uiout, "addr");
6019           annotate_field (5);
6020           ui_out_field_string (uiout, "what", w->exp_string);
6021         }
6022         break;
6023
6024       case bp_breakpoint:
6025       case bp_hardware_breakpoint:
6026       case bp_until:
6027       case bp_finish:
6028       case bp_longjmp:
6029       case bp_longjmp_resume:
6030       case bp_longjmp_call_dummy:
6031       case bp_exception:
6032       case bp_exception_resume:
6033       case bp_step_resume:
6034       case bp_hp_step_resume:
6035       case bp_watchpoint_scope:
6036       case bp_call_dummy:
6037       case bp_std_terminate:
6038       case bp_shlib_event:
6039       case bp_thread_event:
6040       case bp_overlay_event:
6041       case bp_longjmp_master:
6042       case bp_std_terminate_master:
6043       case bp_exception_master:
6044       case bp_tracepoint:
6045       case bp_fast_tracepoint:
6046       case bp_static_tracepoint:
6047       case bp_dprintf:
6048       case bp_jit_event:
6049       case bp_gnu_ifunc_resolver:
6050       case bp_gnu_ifunc_resolver_return:
6051         if (opts.addressprint)
6052           {
6053             annotate_field (4);
6054             if (header_of_multiple)
6055               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6056             else if (b->loc == NULL || loc->shlib_disabled)
6057               ui_out_field_string (uiout, "addr", "<PENDING>");
6058             else
6059               ui_out_field_core_addr (uiout, "addr",
6060                                       loc->gdbarch, loc->address);
6061           }
6062         annotate_field (5);
6063         if (!header_of_multiple)
6064           print_breakpoint_location (b, loc);
6065         if (b->loc)
6066           *last_loc = b->loc;
6067         break;
6068       }
6069
6070
6071   if (loc != NULL && !header_of_multiple)
6072     {
6073       struct inferior *inf;
6074       VEC(int) *inf_num = NULL;
6075       int mi_only = 1;
6076
6077       ALL_INFERIORS (inf)
6078         {
6079           if (inf->pspace == loc->pspace)
6080             VEC_safe_push (int, inf_num, inf->num);
6081         }
6082
6083         /* For backward compatibility, don't display inferiors in CLI unless
6084            there are several.  Always display for MI. */
6085         if (allflag
6086             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6087                 && (number_of_program_spaces () > 1
6088                     || number_of_inferiors () > 1)
6089                 /* LOC is for existing B, it cannot be in
6090                    moribund_locations and thus having NULL OWNER.  */
6091                 && loc->owner->type != bp_catchpoint))
6092         mi_only = 0;
6093       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6094       VEC_free (int, inf_num);
6095     }
6096
6097   if (!part_of_multiple)
6098     {
6099       if (b->thread != -1)
6100         {
6101           /* FIXME: This seems to be redundant and lost here; see the
6102              "stop only in" line a little further down.  */
6103           ui_out_text (uiout, " thread ");
6104           ui_out_field_int (uiout, "thread", b->thread);
6105         }
6106       else if (b->task != 0)
6107         {
6108           ui_out_text (uiout, " task ");
6109           ui_out_field_int (uiout, "task", b->task);
6110         }
6111     }
6112
6113   ui_out_text (uiout, "\n");
6114
6115   if (!part_of_multiple)
6116     b->ops->print_one_detail (b, uiout);
6117
6118   if (part_of_multiple && frame_id_p (b->frame_id))
6119     {
6120       annotate_field (6);
6121       ui_out_text (uiout, "\tstop only in stack frame at ");
6122       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6123          the frame ID.  */
6124       ui_out_field_core_addr (uiout, "frame",
6125                               b->gdbarch, b->frame_id.stack_addr);
6126       ui_out_text (uiout, "\n");
6127     }
6128   
6129   if (!part_of_multiple && b->cond_string)
6130     {
6131       annotate_field (7);
6132       if (is_tracepoint (b))
6133         ui_out_text (uiout, "\ttrace only if ");
6134       else
6135         ui_out_text (uiout, "\tstop only if ");
6136       ui_out_field_string (uiout, "cond", b->cond_string);
6137
6138       /* Print whether the target is doing the breakpoint's condition
6139          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6140       if (is_breakpoint (b)
6141           && breakpoint_condition_evaluation_mode ()
6142           == condition_evaluation_target)
6143         {
6144           ui_out_text (uiout, " (");
6145           ui_out_field_string (uiout, "evaluated-by",
6146                                bp_condition_evaluator (b));
6147           ui_out_text (uiout, " evals)");
6148         }
6149       ui_out_text (uiout, "\n");
6150     }
6151
6152   if (!part_of_multiple && b->thread != -1)
6153     {
6154       /* FIXME should make an annotation for this.  */
6155       ui_out_text (uiout, "\tstop only in thread ");
6156       ui_out_field_int (uiout, "thread", b->thread);
6157       ui_out_text (uiout, "\n");
6158     }
6159   
6160   if (!part_of_multiple)
6161     {
6162       if (b->hit_count)
6163         {
6164           /* FIXME should make an annotation for this.  */
6165           if (is_catchpoint (b))
6166             ui_out_text (uiout, "\tcatchpoint");
6167           else if (is_tracepoint (b))
6168             ui_out_text (uiout, "\ttracepoint");
6169           else
6170             ui_out_text (uiout, "\tbreakpoint");
6171           ui_out_text (uiout, " already hit ");
6172           ui_out_field_int (uiout, "times", b->hit_count);
6173           if (b->hit_count == 1)
6174             ui_out_text (uiout, " time\n");
6175           else
6176             ui_out_text (uiout, " times\n");
6177         }
6178       else
6179         {
6180           /* Output the count also if it is zero, but only if this is mi.  */
6181           if (ui_out_is_mi_like_p (uiout))
6182             ui_out_field_int (uiout, "times", b->hit_count);
6183         }
6184     }
6185
6186   if (!part_of_multiple && b->ignore_count)
6187     {
6188       annotate_field (8);
6189       ui_out_text (uiout, "\tignore next ");
6190       ui_out_field_int (uiout, "ignore", b->ignore_count);
6191       ui_out_text (uiout, " hits\n");
6192     }
6193
6194   /* Note that an enable count of 1 corresponds to "enable once"
6195      behavior, which is reported by the combination of enablement and
6196      disposition, so we don't need to mention it here.  */
6197   if (!part_of_multiple && b->enable_count > 1)
6198     {
6199       annotate_field (8);
6200       ui_out_text (uiout, "\tdisable after ");
6201       /* Tweak the wording to clarify that ignore and enable counts
6202          are distinct, and have additive effect.  */
6203       if (b->ignore_count)
6204         ui_out_text (uiout, "additional ");
6205       else
6206         ui_out_text (uiout, "next ");
6207       ui_out_field_int (uiout, "enable", b->enable_count);
6208       ui_out_text (uiout, " hits\n");
6209     }
6210
6211   if (!part_of_multiple && is_tracepoint (b))
6212     {
6213       struct tracepoint *tp = (struct tracepoint *) b;
6214
6215       if (tp->traceframe_usage)
6216         {
6217           ui_out_text (uiout, "\ttrace buffer usage ");
6218           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6219           ui_out_text (uiout, " bytes\n");
6220         }
6221     }
6222
6223   l = b->commands ? b->commands->commands : NULL;
6224   if (!part_of_multiple && l)
6225     {
6226       struct cleanup *script_chain;
6227
6228       annotate_field (9);
6229       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6230       print_command_lines (uiout, l, 4);
6231       do_cleanups (script_chain);
6232     }
6233
6234   if (is_tracepoint (b))
6235     {
6236       struct tracepoint *t = (struct tracepoint *) b;
6237
6238       if (!part_of_multiple && t->pass_count)
6239         {
6240           annotate_field (10);
6241           ui_out_text (uiout, "\tpass count ");
6242           ui_out_field_int (uiout, "pass", t->pass_count);
6243           ui_out_text (uiout, " \n");
6244         }
6245
6246       /* Don't display it when tracepoint or tracepoint location is
6247          pending.   */
6248       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6249         {
6250           annotate_field (11);
6251
6252           if (ui_out_is_mi_like_p (uiout))
6253             ui_out_field_string (uiout, "installed",
6254                                  loc->inserted ? "y" : "n");
6255           else
6256             {
6257               if (loc->inserted)
6258                 ui_out_text (uiout, "\t");
6259               else
6260                 ui_out_text (uiout, "\tnot ");
6261               ui_out_text (uiout, "installed on target\n");
6262             }
6263         }
6264     }
6265
6266   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6267     {
6268       if (is_watchpoint (b))
6269         {
6270           struct watchpoint *w = (struct watchpoint *) b;
6271
6272           ui_out_field_string (uiout, "original-location", w->exp_string);
6273         }
6274       else if (b->addr_string)
6275         ui_out_field_string (uiout, "original-location", b->addr_string);
6276     }
6277 }
6278
6279 static void
6280 print_one_breakpoint (struct breakpoint *b,
6281                       struct bp_location **last_loc, 
6282                       int allflag)
6283 {
6284   struct cleanup *bkpt_chain;
6285   struct ui_out *uiout = current_uiout;
6286
6287   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6288
6289   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6290   do_cleanups (bkpt_chain);
6291
6292   /* If this breakpoint has custom print function,
6293      it's already printed.  Otherwise, print individual
6294      locations, if any.  */
6295   if (b->ops == NULL || b->ops->print_one == NULL)
6296     {
6297       /* If breakpoint has a single location that is disabled, we
6298          print it as if it had several locations, since otherwise it's
6299          hard to represent "breakpoint enabled, location disabled"
6300          situation.
6301
6302          Note that while hardware watchpoints have several locations
6303          internally, that's not a property exposed to user.  */
6304       if (b->loc 
6305           && !is_hardware_watchpoint (b)
6306           && (b->loc->next || !b->loc->enabled))
6307         {
6308           struct bp_location *loc;
6309           int n = 1;
6310
6311           for (loc = b->loc; loc; loc = loc->next, ++n)
6312             {
6313               struct cleanup *inner2 =
6314                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6315               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6316               do_cleanups (inner2);
6317             }
6318         }
6319     }
6320 }
6321
6322 static int
6323 breakpoint_address_bits (struct breakpoint *b)
6324 {
6325   int print_address_bits = 0;
6326   struct bp_location *loc;
6327
6328   for (loc = b->loc; loc; loc = loc->next)
6329     {
6330       int addr_bit;
6331
6332       /* Software watchpoints that aren't watching memory don't have
6333          an address to print.  */
6334       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6335         continue;
6336
6337       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6338       if (addr_bit > print_address_bits)
6339         print_address_bits = addr_bit;
6340     }
6341
6342   return print_address_bits;
6343 }
6344
6345 struct captured_breakpoint_query_args
6346   {
6347     int bnum;
6348   };
6349
6350 static int
6351 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6352 {
6353   struct captured_breakpoint_query_args *args = data;
6354   struct breakpoint *b;
6355   struct bp_location *dummy_loc = NULL;
6356
6357   ALL_BREAKPOINTS (b)
6358     {
6359       if (args->bnum == b->number)
6360         {
6361           print_one_breakpoint (b, &dummy_loc, 0);
6362           return GDB_RC_OK;
6363         }
6364     }
6365   return GDB_RC_NONE;
6366 }
6367
6368 enum gdb_rc
6369 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6370                       char **error_message)
6371 {
6372   struct captured_breakpoint_query_args args;
6373
6374   args.bnum = bnum;
6375   /* For the moment we don't trust print_one_breakpoint() to not throw
6376      an error.  */
6377   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6378                                  error_message, RETURN_MASK_ALL) < 0)
6379     return GDB_RC_FAIL;
6380   else
6381     return GDB_RC_OK;
6382 }
6383
6384 /* Return true if this breakpoint was set by the user, false if it is
6385    internal or momentary.  */
6386
6387 int
6388 user_breakpoint_p (struct breakpoint *b)
6389 {
6390   return b->number > 0;
6391 }
6392
6393 /* Print information on user settable breakpoint (watchpoint, etc)
6394    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6395    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6396    FILTER is non-NULL, call it on each breakpoint and only include the
6397    ones for which it returns non-zero.  Return the total number of
6398    breakpoints listed.  */
6399
6400 static int
6401 breakpoint_1 (char *args, int allflag, 
6402               int (*filter) (const struct breakpoint *))
6403 {
6404   struct breakpoint *b;
6405   struct bp_location *last_loc = NULL;
6406   int nr_printable_breakpoints;
6407   struct cleanup *bkpttbl_chain;
6408   struct value_print_options opts;
6409   int print_address_bits = 0;
6410   int print_type_col_width = 14;
6411   struct ui_out *uiout = current_uiout;
6412
6413   get_user_print_options (&opts);
6414
6415   /* Compute the number of rows in the table, as well as the size
6416      required for address fields.  */
6417   nr_printable_breakpoints = 0;
6418   ALL_BREAKPOINTS (b)
6419     {
6420       /* If we have a filter, only list the breakpoints it accepts.  */
6421       if (filter && !filter (b))
6422         continue;
6423
6424       /* If we have an "args" string, it is a list of breakpoints to 
6425          accept.  Skip the others.  */
6426       if (args != NULL && *args != '\0')
6427         {
6428           if (allflag && parse_and_eval_long (args) != b->number)
6429             continue;
6430           if (!allflag && !number_is_in_list (args, b->number))
6431             continue;
6432         }
6433
6434       if (allflag || user_breakpoint_p (b))
6435         {
6436           int addr_bit, type_len;
6437
6438           addr_bit = breakpoint_address_bits (b);
6439           if (addr_bit > print_address_bits)
6440             print_address_bits = addr_bit;
6441
6442           type_len = strlen (bptype_string (b->type));
6443           if (type_len > print_type_col_width)
6444             print_type_col_width = type_len;
6445
6446           nr_printable_breakpoints++;
6447         }
6448     }
6449
6450   if (opts.addressprint)
6451     bkpttbl_chain 
6452       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6453                                              nr_printable_breakpoints,
6454                                              "BreakpointTable");
6455   else
6456     bkpttbl_chain 
6457       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6458                                              nr_printable_breakpoints,
6459                                              "BreakpointTable");
6460
6461   if (nr_printable_breakpoints > 0)
6462     annotate_breakpoints_headers ();
6463   if (nr_printable_breakpoints > 0)
6464     annotate_field (0);
6465   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6466   if (nr_printable_breakpoints > 0)
6467     annotate_field (1);
6468   ui_out_table_header (uiout, print_type_col_width, ui_left,
6469                        "type", "Type");                         /* 2 */
6470   if (nr_printable_breakpoints > 0)
6471     annotate_field (2);
6472   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6473   if (nr_printable_breakpoints > 0)
6474     annotate_field (3);
6475   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6476   if (opts.addressprint)
6477     {
6478       if (nr_printable_breakpoints > 0)
6479         annotate_field (4);
6480       if (print_address_bits <= 32)
6481         ui_out_table_header (uiout, 10, ui_left, 
6482                              "addr", "Address");                /* 5 */
6483       else
6484         ui_out_table_header (uiout, 18, ui_left, 
6485                              "addr", "Address");                /* 5 */
6486     }
6487   if (nr_printable_breakpoints > 0)
6488     annotate_field (5);
6489   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6490   ui_out_table_body (uiout);
6491   if (nr_printable_breakpoints > 0)
6492     annotate_breakpoints_table ();
6493
6494   ALL_BREAKPOINTS (b)
6495     {
6496       QUIT;
6497       /* If we have a filter, only list the breakpoints it accepts.  */
6498       if (filter && !filter (b))
6499         continue;
6500
6501       /* If we have an "args" string, it is a list of breakpoints to 
6502          accept.  Skip the others.  */
6503
6504       if (args != NULL && *args != '\0')
6505         {
6506           if (allflag)  /* maintenance info breakpoint */
6507             {
6508               if (parse_and_eval_long (args) != b->number)
6509                 continue;
6510             }
6511           else          /* all others */
6512             {
6513               if (!number_is_in_list (args, b->number))
6514                 continue;
6515             }
6516         }
6517       /* We only print out user settable breakpoints unless the
6518          allflag is set.  */
6519       if (allflag || user_breakpoint_p (b))
6520         print_one_breakpoint (b, &last_loc, allflag);
6521     }
6522
6523   do_cleanups (bkpttbl_chain);
6524
6525   if (nr_printable_breakpoints == 0)
6526     {
6527       /* If there's a filter, let the caller decide how to report
6528          empty list.  */
6529       if (!filter)
6530         {
6531           if (args == NULL || *args == '\0')
6532             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6533           else
6534             ui_out_message (uiout, 0, 
6535                             "No breakpoint or watchpoint matching '%s'.\n",
6536                             args);
6537         }
6538     }
6539   else
6540     {
6541       if (last_loc && !server_command)
6542         set_next_address (last_loc->gdbarch, last_loc->address);
6543     }
6544
6545   /* FIXME?  Should this be moved up so that it is only called when
6546      there have been breakpoints? */
6547   annotate_breakpoints_table_end ();
6548
6549   return nr_printable_breakpoints;
6550 }
6551
6552 /* Display the value of default-collect in a way that is generally
6553    compatible with the breakpoint list.  */
6554
6555 static void
6556 default_collect_info (void)
6557 {
6558   struct ui_out *uiout = current_uiout;
6559
6560   /* If it has no value (which is frequently the case), say nothing; a
6561      message like "No default-collect." gets in user's face when it's
6562      not wanted.  */
6563   if (!*default_collect)
6564     return;
6565
6566   /* The following phrase lines up nicely with per-tracepoint collect
6567      actions.  */
6568   ui_out_text (uiout, "default collect ");
6569   ui_out_field_string (uiout, "default-collect", default_collect);
6570   ui_out_text (uiout, " \n");
6571 }
6572   
6573 static void
6574 breakpoints_info (char *args, int from_tty)
6575 {
6576   breakpoint_1 (args, 0, NULL);
6577
6578   default_collect_info ();
6579 }
6580
6581 static void
6582 watchpoints_info (char *args, int from_tty)
6583 {
6584   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6585   struct ui_out *uiout = current_uiout;
6586
6587   if (num_printed == 0)
6588     {
6589       if (args == NULL || *args == '\0')
6590         ui_out_message (uiout, 0, "No watchpoints.\n");
6591       else
6592         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6593     }
6594 }
6595
6596 static void
6597 maintenance_info_breakpoints (char *args, int from_tty)
6598 {
6599   breakpoint_1 (args, 1, NULL);
6600
6601   default_collect_info ();
6602 }
6603
6604 static int
6605 breakpoint_has_pc (struct breakpoint *b,
6606                    struct program_space *pspace,
6607                    CORE_ADDR pc, struct obj_section *section)
6608 {
6609   struct bp_location *bl = b->loc;
6610
6611   for (; bl; bl = bl->next)
6612     {
6613       if (bl->pspace == pspace
6614           && bl->address == pc
6615           && (!overlay_debugging || bl->section == section))
6616         return 1;         
6617     }
6618   return 0;
6619 }
6620
6621 /* Print a message describing any user-breakpoints set at PC.  This
6622    concerns with logical breakpoints, so we match program spaces, not
6623    address spaces.  */
6624
6625 static void
6626 describe_other_breakpoints (struct gdbarch *gdbarch,
6627                             struct program_space *pspace, CORE_ADDR pc,
6628                             struct obj_section *section, int thread)
6629 {
6630   int others = 0;
6631   struct breakpoint *b;
6632
6633   ALL_BREAKPOINTS (b)
6634     others += (user_breakpoint_p (b)
6635                && breakpoint_has_pc (b, pspace, pc, section));
6636   if (others > 0)
6637     {
6638       if (others == 1)
6639         printf_filtered (_("Note: breakpoint "));
6640       else /* if (others == ???) */
6641         printf_filtered (_("Note: breakpoints "));
6642       ALL_BREAKPOINTS (b)
6643         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6644           {
6645             others--;
6646             printf_filtered ("%d", b->number);
6647             if (b->thread == -1 && thread != -1)
6648               printf_filtered (" (all threads)");
6649             else if (b->thread != -1)
6650               printf_filtered (" (thread %d)", b->thread);
6651             printf_filtered ("%s%s ",
6652                              ((b->enable_state == bp_disabled
6653                                || b->enable_state == bp_call_disabled)
6654                               ? " (disabled)"
6655                               : b->enable_state == bp_permanent 
6656                               ? " (permanent)"
6657                               : ""),
6658                              (others > 1) ? "," 
6659                              : ((others == 1) ? " and" : ""));
6660           }
6661       printf_filtered (_("also set at pc "));
6662       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6663       printf_filtered (".\n");
6664     }
6665 }
6666 \f
6667
6668 /* Return true iff it is meaningful to use the address member of
6669    BPT.  For some breakpoint types, the address member is irrelevant
6670    and it makes no sense to attempt to compare it to other addresses
6671    (or use it for any other purpose either).
6672
6673    More specifically, each of the following breakpoint types will
6674    always have a zero valued address and we don't want to mark
6675    breakpoints of any of these types to be a duplicate of an actual
6676    breakpoint at address zero:
6677
6678       bp_watchpoint
6679       bp_catchpoint
6680
6681 */
6682
6683 static int
6684 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6685 {
6686   enum bptype type = bpt->type;
6687
6688   return (type != bp_watchpoint && type != bp_catchpoint);
6689 }
6690
6691 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6692    true if LOC1 and LOC2 represent the same watchpoint location.  */
6693
6694 static int
6695 watchpoint_locations_match (struct bp_location *loc1, 
6696                             struct bp_location *loc2)
6697 {
6698   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6699   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6700
6701   /* Both of them must exist.  */
6702   gdb_assert (w1 != NULL);
6703   gdb_assert (w2 != NULL);
6704
6705   /* If the target can evaluate the condition expression in hardware,
6706      then we we need to insert both watchpoints even if they are at
6707      the same place.  Otherwise the watchpoint will only trigger when
6708      the condition of whichever watchpoint was inserted evaluates to
6709      true, not giving a chance for GDB to check the condition of the
6710      other watchpoint.  */
6711   if ((w1->cond_exp
6712        && target_can_accel_watchpoint_condition (loc1->address, 
6713                                                  loc1->length,
6714                                                  loc1->watchpoint_type,
6715                                                  w1->cond_exp))
6716       || (w2->cond_exp
6717           && target_can_accel_watchpoint_condition (loc2->address, 
6718                                                     loc2->length,
6719                                                     loc2->watchpoint_type,
6720                                                     w2->cond_exp)))
6721     return 0;
6722
6723   /* Note that this checks the owner's type, not the location's.  In
6724      case the target does not support read watchpoints, but does
6725      support access watchpoints, we'll have bp_read_watchpoint
6726      watchpoints with hw_access locations.  Those should be considered
6727      duplicates of hw_read locations.  The hw_read locations will
6728      become hw_access locations later.  */
6729   return (loc1->owner->type == loc2->owner->type
6730           && loc1->pspace->aspace == loc2->pspace->aspace
6731           && loc1->address == loc2->address
6732           && loc1->length == loc2->length);
6733 }
6734
6735 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6736    same breakpoint location.  In most targets, this can only be true
6737    if ASPACE1 matches ASPACE2.  On targets that have global
6738    breakpoints, the address space doesn't really matter.  */
6739
6740 static int
6741 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6742                           struct address_space *aspace2, CORE_ADDR addr2)
6743 {
6744   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6745            || aspace1 == aspace2)
6746           && addr1 == addr2);
6747 }
6748
6749 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6750    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6751    matches ASPACE2.  On targets that have global breakpoints, the address
6752    space doesn't really matter.  */
6753
6754 static int
6755 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6756                                 int len1, struct address_space *aspace2,
6757                                 CORE_ADDR addr2)
6758 {
6759   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6760            || aspace1 == aspace2)
6761           && addr2 >= addr1 && addr2 < addr1 + len1);
6762 }
6763
6764 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6765    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6766    matches the breakpoint's address space.  On targets that have global
6767    breakpoints, the address space doesn't really matter.  */
6768
6769 static int
6770 breakpoint_location_address_match (struct bp_location *bl,
6771                                    struct address_space *aspace,
6772                                    CORE_ADDR addr)
6773 {
6774   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6775                                     aspace, addr)
6776           || (bl->length
6777               && breakpoint_address_match_range (bl->pspace->aspace,
6778                                                  bl->address, bl->length,
6779                                                  aspace, addr)));
6780 }
6781
6782 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6783    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6784    true, otherwise returns false.  */
6785
6786 static int
6787 tracepoint_locations_match (struct bp_location *loc1,
6788                             struct bp_location *loc2)
6789 {
6790   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6791     /* Since tracepoint locations are never duplicated with others', tracepoint
6792        locations at the same address of different tracepoints are regarded as
6793        different locations.  */
6794     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6795   else
6796     return 0;
6797 }
6798
6799 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6800    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6801    represent the same location.  */
6802
6803 static int
6804 breakpoint_locations_match (struct bp_location *loc1, 
6805                             struct bp_location *loc2)
6806 {
6807   int hw_point1, hw_point2;
6808
6809   /* Both of them must not be in moribund_locations.  */
6810   gdb_assert (loc1->owner != NULL);
6811   gdb_assert (loc2->owner != NULL);
6812
6813   hw_point1 = is_hardware_watchpoint (loc1->owner);
6814   hw_point2 = is_hardware_watchpoint (loc2->owner);
6815
6816   if (hw_point1 != hw_point2)
6817     return 0;
6818   else if (hw_point1)
6819     return watchpoint_locations_match (loc1, loc2);
6820   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6821     return tracepoint_locations_match (loc1, loc2);
6822   else
6823     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6824     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6825                                      loc2->pspace->aspace, loc2->address)
6826             && loc1->length == loc2->length);
6827 }
6828
6829 static void
6830 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6831                                int bnum, int have_bnum)
6832 {
6833   /* The longest string possibly returned by hex_string_custom
6834      is 50 chars.  These must be at least that big for safety.  */
6835   char astr1[64];
6836   char astr2[64];
6837
6838   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6839   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6840   if (have_bnum)
6841     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6842              bnum, astr1, astr2);
6843   else
6844     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6845 }
6846
6847 /* Adjust a breakpoint's address to account for architectural
6848    constraints on breakpoint placement.  Return the adjusted address.
6849    Note: Very few targets require this kind of adjustment.  For most
6850    targets, this function is simply the identity function.  */
6851
6852 static CORE_ADDR
6853 adjust_breakpoint_address (struct gdbarch *gdbarch,
6854                            CORE_ADDR bpaddr, enum bptype bptype)
6855 {
6856   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6857     {
6858       /* Very few targets need any kind of breakpoint adjustment.  */
6859       return bpaddr;
6860     }
6861   else if (bptype == bp_watchpoint
6862            || bptype == bp_hardware_watchpoint
6863            || bptype == bp_read_watchpoint
6864            || bptype == bp_access_watchpoint
6865            || bptype == bp_catchpoint)
6866     {
6867       /* Watchpoints and the various bp_catch_* eventpoints should not
6868          have their addresses modified.  */
6869       return bpaddr;
6870     }
6871   else
6872     {
6873       CORE_ADDR adjusted_bpaddr;
6874
6875       /* Some targets have architectural constraints on the placement
6876          of breakpoint instructions.  Obtain the adjusted address.  */
6877       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6878
6879       /* An adjusted breakpoint address can significantly alter
6880          a user's expectations.  Print a warning if an adjustment
6881          is required.  */
6882       if (adjusted_bpaddr != bpaddr)
6883         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6884
6885       return adjusted_bpaddr;
6886     }
6887 }
6888
6889 void
6890 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6891                   struct breakpoint *owner)
6892 {
6893   memset (loc, 0, sizeof (*loc));
6894
6895   gdb_assert (ops != NULL);
6896
6897   loc->ops = ops;
6898   loc->owner = owner;
6899   loc->cond = NULL;
6900   loc->cond_bytecode = NULL;
6901   loc->shlib_disabled = 0;
6902   loc->enabled = 1;
6903
6904   switch (owner->type)
6905     {
6906     case bp_breakpoint:
6907     case bp_until:
6908     case bp_finish:
6909     case bp_longjmp:
6910     case bp_longjmp_resume:
6911     case bp_longjmp_call_dummy:
6912     case bp_exception:
6913     case bp_exception_resume:
6914     case bp_step_resume:
6915     case bp_hp_step_resume:
6916     case bp_watchpoint_scope:
6917     case bp_call_dummy:
6918     case bp_std_terminate:
6919     case bp_shlib_event:
6920     case bp_thread_event:
6921     case bp_overlay_event:
6922     case bp_jit_event:
6923     case bp_longjmp_master:
6924     case bp_std_terminate_master:
6925     case bp_exception_master:
6926     case bp_gnu_ifunc_resolver:
6927     case bp_gnu_ifunc_resolver_return:
6928     case bp_dprintf:
6929       loc->loc_type = bp_loc_software_breakpoint;
6930       mark_breakpoint_location_modified (loc);
6931       break;
6932     case bp_hardware_breakpoint:
6933       loc->loc_type = bp_loc_hardware_breakpoint;
6934       mark_breakpoint_location_modified (loc);
6935       break;
6936     case bp_hardware_watchpoint:
6937     case bp_read_watchpoint:
6938     case bp_access_watchpoint:
6939       loc->loc_type = bp_loc_hardware_watchpoint;
6940       break;
6941     case bp_watchpoint:
6942     case bp_catchpoint:
6943     case bp_tracepoint:
6944     case bp_fast_tracepoint:
6945     case bp_static_tracepoint:
6946       loc->loc_type = bp_loc_other;
6947       break;
6948     default:
6949       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6950     }
6951
6952   loc->refc = 1;
6953 }
6954
6955 /* Allocate a struct bp_location.  */
6956
6957 static struct bp_location *
6958 allocate_bp_location (struct breakpoint *bpt)
6959 {
6960   return bpt->ops->allocate_location (bpt);
6961 }
6962
6963 static void
6964 free_bp_location (struct bp_location *loc)
6965 {
6966   loc->ops->dtor (loc);
6967   xfree (loc);
6968 }
6969
6970 /* Increment reference count.  */
6971
6972 static void
6973 incref_bp_location (struct bp_location *bl)
6974 {
6975   ++bl->refc;
6976 }
6977
6978 /* Decrement reference count.  If the reference count reaches 0,
6979    destroy the bp_location.  Sets *BLP to NULL.  */
6980
6981 static void
6982 decref_bp_location (struct bp_location **blp)
6983 {
6984   gdb_assert ((*blp)->refc > 0);
6985
6986   if (--(*blp)->refc == 0)
6987     free_bp_location (*blp);
6988   *blp = NULL;
6989 }
6990
6991 /* Add breakpoint B at the end of the global breakpoint chain.  */
6992
6993 static void
6994 add_to_breakpoint_chain (struct breakpoint *b)
6995 {
6996   struct breakpoint *b1;
6997
6998   /* Add this breakpoint to the end of the chain so that a list of
6999      breakpoints will come out in order of increasing numbers.  */
7000
7001   b1 = breakpoint_chain;
7002   if (b1 == 0)
7003     breakpoint_chain = b;
7004   else
7005     {
7006       while (b1->next)
7007         b1 = b1->next;
7008       b1->next = b;
7009     }
7010 }
7011
7012 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7013
7014 static void
7015 init_raw_breakpoint_without_location (struct breakpoint *b,
7016                                       struct gdbarch *gdbarch,
7017                                       enum bptype bptype,
7018                                       const struct breakpoint_ops *ops)
7019 {
7020   memset (b, 0, sizeof (*b));
7021
7022   gdb_assert (ops != NULL);
7023
7024   b->ops = ops;
7025   b->type = bptype;
7026   b->gdbarch = gdbarch;
7027   b->language = current_language->la_language;
7028   b->input_radix = input_radix;
7029   b->thread = -1;
7030   b->enable_state = bp_enabled;
7031   b->next = 0;
7032   b->silent = 0;
7033   b->ignore_count = 0;
7034   b->commands = NULL;
7035   b->frame_id = null_frame_id;
7036   b->condition_not_parsed = 0;
7037   b->py_bp_object = NULL;
7038   b->related_breakpoint = b;
7039 }
7040
7041 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7042    that has type BPTYPE and has no locations as yet.  */
7043
7044 static struct breakpoint *
7045 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7046                                      enum bptype bptype,
7047                                      const struct breakpoint_ops *ops)
7048 {
7049   struct breakpoint *b = XNEW (struct breakpoint);
7050
7051   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7052   add_to_breakpoint_chain (b);
7053   return b;
7054 }
7055
7056 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7057    resolutions should be made as the user specified the location explicitly
7058    enough.  */
7059
7060 static void
7061 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7062 {
7063   gdb_assert (loc->owner != NULL);
7064
7065   if (loc->owner->type == bp_breakpoint
7066       || loc->owner->type == bp_hardware_breakpoint
7067       || is_tracepoint (loc->owner))
7068     {
7069       int is_gnu_ifunc;
7070       const char *function_name;
7071       CORE_ADDR func_addr;
7072
7073       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7074                                           &func_addr, NULL, &is_gnu_ifunc);
7075
7076       if (is_gnu_ifunc && !explicit_loc)
7077         {
7078           struct breakpoint *b = loc->owner;
7079
7080           gdb_assert (loc->pspace == current_program_space);
7081           if (gnu_ifunc_resolve_name (function_name,
7082                                       &loc->requested_address))
7083             {
7084               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7085               loc->address = adjust_breakpoint_address (loc->gdbarch,
7086                                                         loc->requested_address,
7087                                                         b->type);
7088             }
7089           else if (b->type == bp_breakpoint && b->loc == loc
7090                    && loc->next == NULL && b->related_breakpoint == b)
7091             {
7092               /* Create only the whole new breakpoint of this type but do not
7093                  mess more complicated breakpoints with multiple locations.  */
7094               b->type = bp_gnu_ifunc_resolver;
7095               /* Remember the resolver's address for use by the return
7096                  breakpoint.  */
7097               loc->related_address = func_addr;
7098             }
7099         }
7100
7101       if (function_name)
7102         loc->function_name = xstrdup (function_name);
7103     }
7104 }
7105
7106 /* Attempt to determine architecture of location identified by SAL.  */
7107 struct gdbarch *
7108 get_sal_arch (struct symtab_and_line sal)
7109 {
7110   if (sal.section)
7111     return get_objfile_arch (sal.section->objfile);
7112   if (sal.symtab)
7113     return get_objfile_arch (sal.symtab->objfile);
7114
7115   return NULL;
7116 }
7117
7118 /* Low level routine for partially initializing a breakpoint of type
7119    BPTYPE.  The newly created breakpoint's address, section, source
7120    file name, and line number are provided by SAL.
7121
7122    It is expected that the caller will complete the initialization of
7123    the newly created breakpoint struct as well as output any status
7124    information regarding the creation of a new breakpoint.  */
7125
7126 static void
7127 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7128                      struct symtab_and_line sal, enum bptype bptype,
7129                      const struct breakpoint_ops *ops)
7130 {
7131   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7132
7133   add_location_to_breakpoint (b, &sal);
7134
7135   if (bptype != bp_catchpoint)
7136     gdb_assert (sal.pspace != NULL);
7137
7138   /* Store the program space that was used to set the breakpoint,
7139      except for ordinary breakpoints, which are independent of the
7140      program space.  */
7141   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7142     b->pspace = sal.pspace;
7143 }
7144
7145 /* set_raw_breakpoint is a low level routine for allocating and
7146    partially initializing a breakpoint of type BPTYPE.  The newly
7147    created breakpoint's address, section, source file name, and line
7148    number are provided by SAL.  The newly created and partially
7149    initialized breakpoint is added to the breakpoint chain and
7150    is also returned as the value of this function.
7151
7152    It is expected that the caller will complete the initialization of
7153    the newly created breakpoint struct as well as output any status
7154    information regarding the creation of a new breakpoint.  In
7155    particular, set_raw_breakpoint does NOT set the breakpoint
7156    number!  Care should be taken to not allow an error to occur
7157    prior to completing the initialization of the breakpoint.  If this
7158    should happen, a bogus breakpoint will be left on the chain.  */
7159
7160 struct breakpoint *
7161 set_raw_breakpoint (struct gdbarch *gdbarch,
7162                     struct symtab_and_line sal, enum bptype bptype,
7163                     const struct breakpoint_ops *ops)
7164 {
7165   struct breakpoint *b = XNEW (struct breakpoint);
7166
7167   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7168   add_to_breakpoint_chain (b);
7169   return b;
7170 }
7171
7172
7173 /* Note that the breakpoint object B describes a permanent breakpoint
7174    instruction, hard-wired into the inferior's code.  */
7175 void
7176 make_breakpoint_permanent (struct breakpoint *b)
7177 {
7178   struct bp_location *bl;
7179
7180   b->enable_state = bp_permanent;
7181
7182   /* By definition, permanent breakpoints are already present in the
7183      code.  Mark all locations as inserted.  For now,
7184      make_breakpoint_permanent is called in just one place, so it's
7185      hard to say if it's reasonable to have permanent breakpoint with
7186      multiple locations or not, but it's easy to implement.  */
7187   for (bl = b->loc; bl; bl = bl->next)
7188     bl->inserted = 1;
7189 }
7190
7191 /* Call this routine when stepping and nexting to enable a breakpoint
7192    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7193    initiated the operation.  */
7194
7195 void
7196 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7197 {
7198   struct breakpoint *b, *b_tmp;
7199   int thread = tp->num;
7200
7201   /* To avoid having to rescan all objfile symbols at every step,
7202      we maintain a list of continually-inserted but always disabled
7203      longjmp "master" breakpoints.  Here, we simply create momentary
7204      clones of those and enable them for the requested thread.  */
7205   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7206     if (b->pspace == current_program_space
7207         && (b->type == bp_longjmp_master
7208             || b->type == bp_exception_master))
7209       {
7210         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7211         struct breakpoint *clone;
7212
7213         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7214            after their removal.  */
7215         clone = momentary_breakpoint_from_master (b, type,
7216                                                   &longjmp_breakpoint_ops);
7217         clone->thread = thread;
7218       }
7219
7220   tp->initiating_frame = frame;
7221 }
7222
7223 /* Delete all longjmp breakpoints from THREAD.  */
7224 void
7225 delete_longjmp_breakpoint (int thread)
7226 {
7227   struct breakpoint *b, *b_tmp;
7228
7229   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7230     if (b->type == bp_longjmp || b->type == bp_exception)
7231       {
7232         if (b->thread == thread)
7233           delete_breakpoint (b);
7234       }
7235 }
7236
7237 void
7238 delete_longjmp_breakpoint_at_next_stop (int thread)
7239 {
7240   struct breakpoint *b, *b_tmp;
7241
7242   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7243     if (b->type == bp_longjmp || b->type == bp_exception)
7244       {
7245         if (b->thread == thread)
7246           b->disposition = disp_del_at_next_stop;
7247       }
7248 }
7249
7250 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7251    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7252    pointer to any of them.  Return NULL if this system cannot place longjmp
7253    breakpoints.  */
7254
7255 struct breakpoint *
7256 set_longjmp_breakpoint_for_call_dummy (void)
7257 {
7258   struct breakpoint *b, *retval = NULL;
7259
7260   ALL_BREAKPOINTS (b)
7261     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7262       {
7263         struct breakpoint *new_b;
7264
7265         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7266                                                   &momentary_breakpoint_ops);
7267         new_b->thread = pid_to_thread_id (inferior_ptid);
7268
7269         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7270
7271         gdb_assert (new_b->related_breakpoint == new_b);
7272         if (retval == NULL)
7273           retval = new_b;
7274         new_b->related_breakpoint = retval;
7275         while (retval->related_breakpoint != new_b->related_breakpoint)
7276           retval = retval->related_breakpoint;
7277         retval->related_breakpoint = new_b;
7278       }
7279
7280   return retval;
7281 }
7282
7283 /* Verify all existing dummy frames and their associated breakpoints for
7284    THREAD.  Remove those which can no longer be found in the current frame
7285    stack.
7286
7287    You should call this function only at places where it is safe to currently
7288    unwind the whole stack.  Failed stack unwind would discard live dummy
7289    frames.  */
7290
7291 void
7292 check_longjmp_breakpoint_for_call_dummy (int thread)
7293 {
7294   struct breakpoint *b, *b_tmp;
7295
7296   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7297     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7298       {
7299         struct breakpoint *dummy_b = b->related_breakpoint;
7300
7301         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7302           dummy_b = dummy_b->related_breakpoint;
7303         if (dummy_b->type != bp_call_dummy
7304             || frame_find_by_id (dummy_b->frame_id) != NULL)
7305           continue;
7306         
7307         dummy_frame_discard (dummy_b->frame_id);
7308
7309         while (b->related_breakpoint != b)
7310           {
7311             if (b_tmp == b->related_breakpoint)
7312               b_tmp = b->related_breakpoint->next;
7313             delete_breakpoint (b->related_breakpoint);
7314           }
7315         delete_breakpoint (b);
7316       }
7317 }
7318
7319 void
7320 enable_overlay_breakpoints (void)
7321 {
7322   struct breakpoint *b;
7323
7324   ALL_BREAKPOINTS (b)
7325     if (b->type == bp_overlay_event)
7326     {
7327       b->enable_state = bp_enabled;
7328       update_global_location_list (1);
7329       overlay_events_enabled = 1;
7330     }
7331 }
7332
7333 void
7334 disable_overlay_breakpoints (void)
7335 {
7336   struct breakpoint *b;
7337
7338   ALL_BREAKPOINTS (b)
7339     if (b->type == bp_overlay_event)
7340     {
7341       b->enable_state = bp_disabled;
7342       update_global_location_list (0);
7343       overlay_events_enabled = 0;
7344     }
7345 }
7346
7347 /* Set an active std::terminate breakpoint for each std::terminate
7348    master breakpoint.  */
7349 void
7350 set_std_terminate_breakpoint (void)
7351 {
7352   struct breakpoint *b, *b_tmp;
7353
7354   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7355     if (b->pspace == current_program_space
7356         && b->type == bp_std_terminate_master)
7357       {
7358         momentary_breakpoint_from_master (b, bp_std_terminate,
7359                                           &momentary_breakpoint_ops);
7360       }
7361 }
7362
7363 /* Delete all the std::terminate breakpoints.  */
7364 void
7365 delete_std_terminate_breakpoint (void)
7366 {
7367   struct breakpoint *b, *b_tmp;
7368
7369   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7370     if (b->type == bp_std_terminate)
7371       delete_breakpoint (b);
7372 }
7373
7374 struct breakpoint *
7375 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7376 {
7377   struct breakpoint *b;
7378
7379   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7380                                   &internal_breakpoint_ops);
7381
7382   b->enable_state = bp_enabled;
7383   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7384   b->addr_string
7385     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7386
7387   update_global_location_list_nothrow (1);
7388
7389   return b;
7390 }
7391
7392 void
7393 remove_thread_event_breakpoints (void)
7394 {
7395   struct breakpoint *b, *b_tmp;
7396
7397   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7398     if (b->type == bp_thread_event
7399         && b->loc->pspace == current_program_space)
7400       delete_breakpoint (b);
7401 }
7402
7403 struct lang_and_radix
7404   {
7405     enum language lang;
7406     int radix;
7407   };
7408
7409 /* Create a breakpoint for JIT code registration and unregistration.  */
7410
7411 struct breakpoint *
7412 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7413 {
7414   struct breakpoint *b;
7415
7416   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7417                                   &internal_breakpoint_ops);
7418   update_global_location_list_nothrow (1);
7419   return b;
7420 }
7421
7422 /* Remove JIT code registration and unregistration breakpoint(s).  */
7423
7424 void
7425 remove_jit_event_breakpoints (void)
7426 {
7427   struct breakpoint *b, *b_tmp;
7428
7429   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7430     if (b->type == bp_jit_event
7431         && b->loc->pspace == current_program_space)
7432       delete_breakpoint (b);
7433 }
7434
7435 void
7436 remove_solib_event_breakpoints (void)
7437 {
7438   struct breakpoint *b, *b_tmp;
7439
7440   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7441     if (b->type == bp_shlib_event
7442         && b->loc->pspace == current_program_space)
7443       delete_breakpoint (b);
7444 }
7445
7446 struct breakpoint *
7447 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7448 {
7449   struct breakpoint *b;
7450
7451   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7452                                   &internal_breakpoint_ops);
7453   update_global_location_list_nothrow (1);
7454   return b;
7455 }
7456
7457 /* Disable any breakpoints that are on code in shared libraries.  Only
7458    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7459
7460 void
7461 disable_breakpoints_in_shlibs (void)
7462 {
7463   struct bp_location *loc, **locp_tmp;
7464
7465   ALL_BP_LOCATIONS (loc, locp_tmp)
7466   {
7467     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7468     struct breakpoint *b = loc->owner;
7469
7470     /* We apply the check to all breakpoints, including disabled for
7471        those with loc->duplicate set.  This is so that when breakpoint
7472        becomes enabled, or the duplicate is removed, gdb will try to
7473        insert all breakpoints.  If we don't set shlib_disabled here,
7474        we'll try to insert those breakpoints and fail.  */
7475     if (((b->type == bp_breakpoint)
7476          || (b->type == bp_jit_event)
7477          || (b->type == bp_hardware_breakpoint)
7478          || (is_tracepoint (b)))
7479         && loc->pspace == current_program_space
7480         && !loc->shlib_disabled
7481         && solib_name_from_address (loc->pspace, loc->address)
7482         )
7483       {
7484         loc->shlib_disabled = 1;
7485       }
7486   }
7487 }
7488
7489 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7490    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7491    disabled ones can just stay disabled.  */
7492
7493 static void
7494 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7495 {
7496   struct bp_location *loc, **locp_tmp;
7497   int disabled_shlib_breaks = 0;
7498
7499   /* SunOS a.out shared libraries are always mapped, so do not
7500      disable breakpoints; they will only be reported as unloaded
7501      through clear_solib when GDB discards its shared library
7502      list.  See clear_solib for more information.  */
7503   if (exec_bfd != NULL
7504       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7505     return;
7506
7507   ALL_BP_LOCATIONS (loc, locp_tmp)
7508   {
7509     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7510     struct breakpoint *b = loc->owner;
7511
7512     if (solib->pspace == loc->pspace
7513         && !loc->shlib_disabled
7514         && (((b->type == bp_breakpoint
7515               || b->type == bp_jit_event
7516               || b->type == bp_hardware_breakpoint)
7517              && (loc->loc_type == bp_loc_hardware_breakpoint
7518                  || loc->loc_type == bp_loc_software_breakpoint))
7519             || is_tracepoint (b))
7520         && solib_contains_address_p (solib, loc->address))
7521       {
7522         loc->shlib_disabled = 1;
7523         /* At this point, we cannot rely on remove_breakpoint
7524            succeeding so we must mark the breakpoint as not inserted
7525            to prevent future errors occurring in remove_breakpoints.  */
7526         loc->inserted = 0;
7527
7528         /* This may cause duplicate notifications for the same breakpoint.  */
7529         observer_notify_breakpoint_modified (b);
7530
7531         if (!disabled_shlib_breaks)
7532           {
7533             target_terminal_ours_for_output ();
7534             warning (_("Temporarily disabling breakpoints "
7535                        "for unloaded shared library \"%s\""),
7536                      solib->so_name);
7537           }
7538         disabled_shlib_breaks = 1;
7539       }
7540   }
7541 }
7542
7543 /* Disable any breakpoints and tracepoints in OBJFILE upon
7544    notification of free_objfile.  Only apply to enabled breakpoints,
7545    disabled ones can just stay disabled.  */
7546
7547 static void
7548 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7549 {
7550   struct breakpoint *b;
7551
7552   if (objfile == NULL)
7553     return;
7554
7555   /* If the file is a shared library not loaded by the user then
7556      solib_unloaded was notified and disable_breakpoints_in_unloaded_shlib
7557      was called.  In that case there is no need to take action again.  */
7558   if ((objfile->flags & OBJF_SHARED) && !(objfile->flags & OBJF_USERLOADED))
7559     return;
7560
7561   ALL_BREAKPOINTS (b)
7562     {
7563       struct bp_location *loc;
7564       int bp_modified = 0;
7565
7566       if (!is_breakpoint (b) && !is_tracepoint (b))
7567         continue;
7568
7569       for (loc = b->loc; loc != NULL; loc = loc->next)
7570         {
7571           CORE_ADDR loc_addr = loc->address;
7572
7573           if (loc->loc_type != bp_loc_hardware_breakpoint
7574               && loc->loc_type != bp_loc_software_breakpoint)
7575             continue;
7576
7577           if (loc->shlib_disabled != 0)
7578             continue;
7579
7580           if (objfile->pspace != loc->pspace)
7581             continue;
7582
7583           if (loc->loc_type != bp_loc_hardware_breakpoint
7584               && loc->loc_type != bp_loc_software_breakpoint)
7585             continue;
7586
7587           if (is_addr_in_objfile (loc_addr, objfile))
7588             {
7589               loc->shlib_disabled = 1;
7590               loc->inserted = 0;
7591
7592               mark_breakpoint_location_modified (loc);
7593
7594               bp_modified = 1;
7595             }
7596         }
7597
7598       if (bp_modified)
7599         observer_notify_breakpoint_modified (b);
7600     }
7601 }
7602
7603 /* FORK & VFORK catchpoints.  */
7604
7605 /* An instance of this type is used to represent a fork or vfork
7606    catchpoint.  It includes a "struct breakpoint" as a kind of base
7607    class; users downcast to "struct breakpoint *" when needed.  A
7608    breakpoint is really of this type iff its ops pointer points to
7609    CATCH_FORK_BREAKPOINT_OPS.  */
7610
7611 struct fork_catchpoint
7612 {
7613   /* The base class.  */
7614   struct breakpoint base;
7615
7616   /* Process id of a child process whose forking triggered this
7617      catchpoint.  This field is only valid immediately after this
7618      catchpoint has triggered.  */
7619   ptid_t forked_inferior_pid;
7620 };
7621
7622 /* Implement the "insert" breakpoint_ops method for fork
7623    catchpoints.  */
7624
7625 static int
7626 insert_catch_fork (struct bp_location *bl)
7627 {
7628   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7629 }
7630
7631 /* Implement the "remove" breakpoint_ops method for fork
7632    catchpoints.  */
7633
7634 static int
7635 remove_catch_fork (struct bp_location *bl)
7636 {
7637   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7638 }
7639
7640 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7641    catchpoints.  */
7642
7643 static int
7644 breakpoint_hit_catch_fork (const struct bp_location *bl,
7645                            struct address_space *aspace, CORE_ADDR bp_addr,
7646                            const struct target_waitstatus *ws)
7647 {
7648   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7649
7650   if (ws->kind != TARGET_WAITKIND_FORKED)
7651     return 0;
7652
7653   c->forked_inferior_pid = ws->value.related_pid;
7654   return 1;
7655 }
7656
7657 /* Implement the "print_it" breakpoint_ops method for fork
7658    catchpoints.  */
7659
7660 static enum print_stop_action
7661 print_it_catch_fork (bpstat bs)
7662 {
7663   struct ui_out *uiout = current_uiout;
7664   struct breakpoint *b = bs->breakpoint_at;
7665   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7666
7667   annotate_catchpoint (b->number);
7668   if (b->disposition == disp_del)
7669     ui_out_text (uiout, "\nTemporary catchpoint ");
7670   else
7671     ui_out_text (uiout, "\nCatchpoint ");
7672   if (ui_out_is_mi_like_p (uiout))
7673     {
7674       ui_out_field_string (uiout, "reason",
7675                            async_reason_lookup (EXEC_ASYNC_FORK));
7676       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7677     }
7678   ui_out_field_int (uiout, "bkptno", b->number);
7679   ui_out_text (uiout, " (forked process ");
7680   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7681   ui_out_text (uiout, "), ");
7682   return PRINT_SRC_AND_LOC;
7683 }
7684
7685 /* Implement the "print_one" breakpoint_ops method for fork
7686    catchpoints.  */
7687
7688 static void
7689 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7690 {
7691   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7692   struct value_print_options opts;
7693   struct ui_out *uiout = current_uiout;
7694
7695   get_user_print_options (&opts);
7696
7697   /* Field 4, the address, is omitted (which makes the columns not
7698      line up too nicely with the headers, but the effect is relatively
7699      readable).  */
7700   if (opts.addressprint)
7701     ui_out_field_skip (uiout, "addr");
7702   annotate_field (5);
7703   ui_out_text (uiout, "fork");
7704   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7705     {
7706       ui_out_text (uiout, ", process ");
7707       ui_out_field_int (uiout, "what",
7708                         ptid_get_pid (c->forked_inferior_pid));
7709       ui_out_spaces (uiout, 1);
7710     }
7711
7712   if (ui_out_is_mi_like_p (uiout))
7713     ui_out_field_string (uiout, "catch-type", "fork");
7714 }
7715
7716 /* Implement the "print_mention" breakpoint_ops method for fork
7717    catchpoints.  */
7718
7719 static void
7720 print_mention_catch_fork (struct breakpoint *b)
7721 {
7722   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7723 }
7724
7725 /* Implement the "print_recreate" breakpoint_ops method for fork
7726    catchpoints.  */
7727
7728 static void
7729 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7730 {
7731   fprintf_unfiltered (fp, "catch fork");
7732   print_recreate_thread (b, fp);
7733 }
7734
7735 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7736
7737 static struct breakpoint_ops catch_fork_breakpoint_ops;
7738
7739 /* Implement the "insert" breakpoint_ops method for vfork
7740    catchpoints.  */
7741
7742 static int
7743 insert_catch_vfork (struct bp_location *bl)
7744 {
7745   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7746 }
7747
7748 /* Implement the "remove" breakpoint_ops method for vfork
7749    catchpoints.  */
7750
7751 static int
7752 remove_catch_vfork (struct bp_location *bl)
7753 {
7754   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7755 }
7756
7757 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7758    catchpoints.  */
7759
7760 static int
7761 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7762                             struct address_space *aspace, CORE_ADDR bp_addr,
7763                             const struct target_waitstatus *ws)
7764 {
7765   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7766
7767   if (ws->kind != TARGET_WAITKIND_VFORKED)
7768     return 0;
7769
7770   c->forked_inferior_pid = ws->value.related_pid;
7771   return 1;
7772 }
7773
7774 /* Implement the "print_it" breakpoint_ops method for vfork
7775    catchpoints.  */
7776
7777 static enum print_stop_action
7778 print_it_catch_vfork (bpstat bs)
7779 {
7780   struct ui_out *uiout = current_uiout;
7781   struct breakpoint *b = bs->breakpoint_at;
7782   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7783
7784   annotate_catchpoint (b->number);
7785   if (b->disposition == disp_del)
7786     ui_out_text (uiout, "\nTemporary catchpoint ");
7787   else
7788     ui_out_text (uiout, "\nCatchpoint ");
7789   if (ui_out_is_mi_like_p (uiout))
7790     {
7791       ui_out_field_string (uiout, "reason",
7792                            async_reason_lookup (EXEC_ASYNC_VFORK));
7793       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7794     }
7795   ui_out_field_int (uiout, "bkptno", b->number);
7796   ui_out_text (uiout, " (vforked process ");
7797   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7798   ui_out_text (uiout, "), ");
7799   return PRINT_SRC_AND_LOC;
7800 }
7801
7802 /* Implement the "print_one" breakpoint_ops method for vfork
7803    catchpoints.  */
7804
7805 static void
7806 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7807 {
7808   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7809   struct value_print_options opts;
7810   struct ui_out *uiout = current_uiout;
7811
7812   get_user_print_options (&opts);
7813   /* Field 4, the address, is omitted (which makes the columns not
7814      line up too nicely with the headers, but the effect is relatively
7815      readable).  */
7816   if (opts.addressprint)
7817     ui_out_field_skip (uiout, "addr");
7818   annotate_field (5);
7819   ui_out_text (uiout, "vfork");
7820   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7821     {
7822       ui_out_text (uiout, ", process ");
7823       ui_out_field_int (uiout, "what",
7824                         ptid_get_pid (c->forked_inferior_pid));
7825       ui_out_spaces (uiout, 1);
7826     }
7827
7828   if (ui_out_is_mi_like_p (uiout))
7829     ui_out_field_string (uiout, "catch-type", "vfork");
7830 }
7831
7832 /* Implement the "print_mention" breakpoint_ops method for vfork
7833    catchpoints.  */
7834
7835 static void
7836 print_mention_catch_vfork (struct breakpoint *b)
7837 {
7838   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7839 }
7840
7841 /* Implement the "print_recreate" breakpoint_ops method for vfork
7842    catchpoints.  */
7843
7844 static void
7845 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7846 {
7847   fprintf_unfiltered (fp, "catch vfork");
7848   print_recreate_thread (b, fp);
7849 }
7850
7851 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7852
7853 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7854
7855 /* An instance of this type is used to represent an solib catchpoint.
7856    It includes a "struct breakpoint" as a kind of base class; users
7857    downcast to "struct breakpoint *" when needed.  A breakpoint is
7858    really of this type iff its ops pointer points to
7859    CATCH_SOLIB_BREAKPOINT_OPS.  */
7860
7861 struct solib_catchpoint
7862 {
7863   /* The base class.  */
7864   struct breakpoint base;
7865
7866   /* True for "catch load", false for "catch unload".  */
7867   unsigned char is_load;
7868
7869   /* Regular expression to match, if any.  COMPILED is only valid when
7870      REGEX is non-NULL.  */
7871   char *regex;
7872   regex_t compiled;
7873 };
7874
7875 static void
7876 dtor_catch_solib (struct breakpoint *b)
7877 {
7878   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7879
7880   if (self->regex)
7881     regfree (&self->compiled);
7882   xfree (self->regex);
7883
7884   base_breakpoint_ops.dtor (b);
7885 }
7886
7887 static int
7888 insert_catch_solib (struct bp_location *ignore)
7889 {
7890   return 0;
7891 }
7892
7893 static int
7894 remove_catch_solib (struct bp_location *ignore)
7895 {
7896   return 0;
7897 }
7898
7899 static int
7900 breakpoint_hit_catch_solib (const struct bp_location *bl,
7901                             struct address_space *aspace,
7902                             CORE_ADDR bp_addr,
7903                             const struct target_waitstatus *ws)
7904 {
7905   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7906   struct breakpoint *other;
7907
7908   if (ws->kind == TARGET_WAITKIND_LOADED)
7909     return 1;
7910
7911   ALL_BREAKPOINTS (other)
7912   {
7913     struct bp_location *other_bl;
7914
7915     if (other == bl->owner)
7916       continue;
7917
7918     if (other->type != bp_shlib_event)
7919       continue;
7920
7921     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7922       continue;
7923
7924     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7925       {
7926         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7927           return 1;
7928       }
7929   }
7930
7931   return 0;
7932 }
7933
7934 static void
7935 check_status_catch_solib (struct bpstats *bs)
7936 {
7937   struct solib_catchpoint *self
7938     = (struct solib_catchpoint *) bs->breakpoint_at;
7939   int ix;
7940
7941   if (self->is_load)
7942     {
7943       struct so_list *iter;
7944
7945       for (ix = 0;
7946            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7947                         ix, iter);
7948            ++ix)
7949         {
7950           if (!self->regex
7951               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7952             return;
7953         }
7954     }
7955   else
7956     {
7957       char *iter;
7958
7959       for (ix = 0;
7960            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7961                         ix, iter);
7962            ++ix)
7963         {
7964           if (!self->regex
7965               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7966             return;
7967         }
7968     }
7969
7970   bs->stop = 0;
7971   bs->print_it = print_it_noop;
7972 }
7973
7974 static enum print_stop_action
7975 print_it_catch_solib (bpstat bs)
7976 {
7977   struct breakpoint *b = bs->breakpoint_at;
7978   struct ui_out *uiout = current_uiout;
7979
7980   annotate_catchpoint (b->number);
7981   if (b->disposition == disp_del)
7982     ui_out_text (uiout, "\nTemporary catchpoint ");
7983   else
7984     ui_out_text (uiout, "\nCatchpoint ");
7985   ui_out_field_int (uiout, "bkptno", b->number);
7986   ui_out_text (uiout, "\n");
7987   if (ui_out_is_mi_like_p (uiout))
7988     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7989   print_solib_event (1);
7990   return PRINT_SRC_AND_LOC;
7991 }
7992
7993 static void
7994 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7995 {
7996   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7997   struct value_print_options opts;
7998   struct ui_out *uiout = current_uiout;
7999   char *msg;
8000
8001   get_user_print_options (&opts);
8002   /* Field 4, the address, is omitted (which makes the columns not
8003      line up too nicely with the headers, but the effect is relatively
8004      readable).  */
8005   if (opts.addressprint)
8006     {
8007       annotate_field (4);
8008       ui_out_field_skip (uiout, "addr");
8009     }
8010
8011   annotate_field (5);
8012   if (self->is_load)
8013     {
8014       if (self->regex)
8015         msg = xstrprintf (_("load of library matching %s"), self->regex);
8016       else
8017         msg = xstrdup (_("load of library"));
8018     }
8019   else
8020     {
8021       if (self->regex)
8022         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8023       else
8024         msg = xstrdup (_("unload of library"));
8025     }
8026   ui_out_field_string (uiout, "what", msg);
8027   xfree (msg);
8028
8029   if (ui_out_is_mi_like_p (uiout))
8030     ui_out_field_string (uiout, "catch-type",
8031                          self->is_load ? "load" : "unload");
8032 }
8033
8034 static void
8035 print_mention_catch_solib (struct breakpoint *b)
8036 {
8037   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8038
8039   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8040                    self->is_load ? "load" : "unload");
8041 }
8042
8043 static void
8044 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8045 {
8046   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8047
8048   fprintf_unfiltered (fp, "%s %s",
8049                       b->disposition == disp_del ? "tcatch" : "catch",
8050                       self->is_load ? "load" : "unload");
8051   if (self->regex)
8052     fprintf_unfiltered (fp, " %s", self->regex);
8053   fprintf_unfiltered (fp, "\n");
8054 }
8055
8056 static struct breakpoint_ops catch_solib_breakpoint_ops;
8057
8058 /* Shared helper function (MI and CLI) for creating and installing
8059    a shared object event catchpoint.  If IS_LOAD is non-zero then
8060    the events to be caught are load events, otherwise they are
8061    unload events.  If IS_TEMP is non-zero the catchpoint is a
8062    temporary one.  If ENABLED is non-zero the catchpoint is
8063    created in an enabled state.  */
8064
8065 void
8066 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8067 {
8068   struct solib_catchpoint *c;
8069   struct gdbarch *gdbarch = get_current_arch ();
8070   struct cleanup *cleanup;
8071
8072   if (!arg)
8073     arg = "";
8074   arg = skip_spaces (arg);
8075
8076   c = XCNEW (struct solib_catchpoint);
8077   cleanup = make_cleanup (xfree, c);
8078
8079   if (*arg != '\0')
8080     {
8081       int errcode;
8082
8083       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8084       if (errcode != 0)
8085         {
8086           char *err = get_regcomp_error (errcode, &c->compiled);
8087
8088           make_cleanup (xfree, err);
8089           error (_("Invalid regexp (%s): %s"), err, arg);
8090         }
8091       c->regex = xstrdup (arg);
8092     }
8093
8094   c->is_load = is_load;
8095   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8096                    &catch_solib_breakpoint_ops);
8097
8098   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8099
8100   discard_cleanups (cleanup);
8101   install_breakpoint (0, &c->base, 1);
8102 }
8103
8104 /* A helper function that does all the work for "catch load" and
8105    "catch unload".  */
8106
8107 static void
8108 catch_load_or_unload (char *arg, int from_tty, int is_load,
8109                       struct cmd_list_element *command)
8110 {
8111   int tempflag;
8112   const int enabled = 1;
8113
8114   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8115
8116   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8117 }
8118
8119 static void
8120 catch_load_command_1 (char *arg, int from_tty,
8121                       struct cmd_list_element *command)
8122 {
8123   catch_load_or_unload (arg, from_tty, 1, command);
8124 }
8125
8126 static void
8127 catch_unload_command_1 (char *arg, int from_tty,
8128                         struct cmd_list_element *command)
8129 {
8130   catch_load_or_unload (arg, from_tty, 0, command);
8131 }
8132
8133 /* An instance of this type is used to represent a syscall catchpoint.
8134    It includes a "struct breakpoint" as a kind of base class; users
8135    downcast to "struct breakpoint *" when needed.  A breakpoint is
8136    really of this type iff its ops pointer points to
8137    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8138
8139 struct syscall_catchpoint
8140 {
8141   /* The base class.  */
8142   struct breakpoint base;
8143
8144   /* Syscall numbers used for the 'catch syscall' feature.  If no
8145      syscall has been specified for filtering, its value is NULL.
8146      Otherwise, it holds a list of all syscalls to be caught.  The
8147      list elements are allocated with xmalloc.  */
8148   VEC(int) *syscalls_to_be_caught;
8149 };
8150
8151 /* Implement the "dtor" breakpoint_ops method for syscall
8152    catchpoints.  */
8153
8154 static void
8155 dtor_catch_syscall (struct breakpoint *b)
8156 {
8157   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8158
8159   VEC_free (int, c->syscalls_to_be_caught);
8160
8161   base_breakpoint_ops.dtor (b);
8162 }
8163
8164 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8165
8166 struct catch_syscall_inferior_data
8167 {
8168   /* We keep a count of the number of times the user has requested a
8169      particular syscall to be tracked, and pass this information to the
8170      target.  This lets capable targets implement filtering directly.  */
8171
8172   /* Number of times that "any" syscall is requested.  */
8173   int any_syscall_count;
8174
8175   /* Count of each system call.  */
8176   VEC(int) *syscalls_counts;
8177
8178   /* This counts all syscall catch requests, so we can readily determine
8179      if any catching is necessary.  */
8180   int total_syscalls_count;
8181 };
8182
8183 static struct catch_syscall_inferior_data*
8184 get_catch_syscall_inferior_data (struct inferior *inf)
8185 {
8186   struct catch_syscall_inferior_data *inf_data;
8187
8188   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8189   if (inf_data == NULL)
8190     {
8191       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8192       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8193     }
8194
8195   return inf_data;
8196 }
8197
8198 static void
8199 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8200 {
8201   xfree (arg);
8202 }
8203
8204
8205 /* Implement the "insert" breakpoint_ops method for syscall
8206    catchpoints.  */
8207
8208 static int
8209 insert_catch_syscall (struct bp_location *bl)
8210 {
8211   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8212   struct inferior *inf = current_inferior ();
8213   struct catch_syscall_inferior_data *inf_data
8214     = get_catch_syscall_inferior_data (inf);
8215
8216   ++inf_data->total_syscalls_count;
8217   if (!c->syscalls_to_be_caught)
8218     ++inf_data->any_syscall_count;
8219   else
8220     {
8221       int i, iter;
8222
8223       for (i = 0;
8224            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8225            i++)
8226         {
8227           int elem;
8228
8229           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8230             {
8231               int old_size = VEC_length (int, inf_data->syscalls_counts);
8232               uintptr_t vec_addr_offset
8233                 = old_size * ((uintptr_t) sizeof (int));
8234               uintptr_t vec_addr;
8235               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8236               vec_addr = ((uintptr_t) VEC_address (int,
8237                                                   inf_data->syscalls_counts)
8238                           + vec_addr_offset);
8239               memset ((void *) vec_addr, 0,
8240                       (iter + 1 - old_size) * sizeof (int));
8241             }
8242           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8243           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8244         }
8245     }
8246
8247   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8248                                         inf_data->total_syscalls_count != 0,
8249                                         inf_data->any_syscall_count,
8250                                         VEC_length (int,
8251                                                     inf_data->syscalls_counts),
8252                                         VEC_address (int,
8253                                                      inf_data->syscalls_counts));
8254 }
8255
8256 /* Implement the "remove" breakpoint_ops method for syscall
8257    catchpoints.  */
8258
8259 static int
8260 remove_catch_syscall (struct bp_location *bl)
8261 {
8262   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8263   struct inferior *inf = current_inferior ();
8264   struct catch_syscall_inferior_data *inf_data
8265     = get_catch_syscall_inferior_data (inf);
8266
8267   --inf_data->total_syscalls_count;
8268   if (!c->syscalls_to_be_caught)
8269     --inf_data->any_syscall_count;
8270   else
8271     {
8272       int i, iter;
8273
8274       for (i = 0;
8275            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8276            i++)
8277         {
8278           int elem;
8279           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8280             /* Shouldn't happen.  */
8281             continue;
8282           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8283           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8284         }
8285     }
8286
8287   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8288                                         inf_data->total_syscalls_count != 0,
8289                                         inf_data->any_syscall_count,
8290                                         VEC_length (int,
8291                                                     inf_data->syscalls_counts),
8292                                         VEC_address (int,
8293                                                      inf_data->syscalls_counts));
8294 }
8295
8296 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8297    catchpoints.  */
8298
8299 static int
8300 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8301                               struct address_space *aspace, CORE_ADDR bp_addr,
8302                               const struct target_waitstatus *ws)
8303 {
8304   /* We must check if we are catching specific syscalls in this
8305      breakpoint.  If we are, then we must guarantee that the called
8306      syscall is the same syscall we are catching.  */
8307   int syscall_number = 0;
8308   const struct syscall_catchpoint *c
8309     = (const struct syscall_catchpoint *) bl->owner;
8310
8311   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8312       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8313     return 0;
8314
8315   syscall_number = ws->value.syscall_number;
8316
8317   /* Now, checking if the syscall is the same.  */
8318   if (c->syscalls_to_be_caught)
8319     {
8320       int i, iter;
8321
8322       for (i = 0;
8323            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8324            i++)
8325         if (syscall_number == iter)
8326           break;
8327       /* Not the same.  */
8328       if (!iter)
8329         return 0;
8330     }
8331
8332   return 1;
8333 }
8334
8335 /* Implement the "print_it" breakpoint_ops method for syscall
8336    catchpoints.  */
8337
8338 static enum print_stop_action
8339 print_it_catch_syscall (bpstat bs)
8340 {
8341   struct ui_out *uiout = current_uiout;
8342   struct breakpoint *b = bs->breakpoint_at;
8343   /* These are needed because we want to know in which state a
8344      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8345      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8346      must print "called syscall" or "returned from syscall".  */
8347   ptid_t ptid;
8348   struct target_waitstatus last;
8349   struct syscall s;
8350
8351   get_last_target_status (&ptid, &last);
8352
8353   get_syscall_by_number (last.value.syscall_number, &s);
8354
8355   annotate_catchpoint (b->number);
8356
8357   if (b->disposition == disp_del)
8358     ui_out_text (uiout, "\nTemporary catchpoint ");
8359   else
8360     ui_out_text (uiout, "\nCatchpoint ");
8361   if (ui_out_is_mi_like_p (uiout))
8362     {
8363       ui_out_field_string (uiout, "reason",
8364                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8365                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8366                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8367       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8368     }
8369   ui_out_field_int (uiout, "bkptno", b->number);
8370
8371   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8372     ui_out_text (uiout, " (call to syscall ");
8373   else
8374     ui_out_text (uiout, " (returned from syscall ");
8375
8376   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8377     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8378   if (s.name != NULL)
8379     ui_out_field_string (uiout, "syscall-name", s.name);
8380
8381   ui_out_text (uiout, "), ");
8382
8383   return PRINT_SRC_AND_LOC;
8384 }
8385
8386 /* Implement the "print_one" breakpoint_ops method for syscall
8387    catchpoints.  */
8388
8389 static void
8390 print_one_catch_syscall (struct breakpoint *b,
8391                          struct bp_location **last_loc)
8392 {
8393   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8394   struct value_print_options opts;
8395   struct ui_out *uiout = current_uiout;
8396
8397   get_user_print_options (&opts);
8398   /* Field 4, the address, is omitted (which makes the columns not
8399      line up too nicely with the headers, but the effect is relatively
8400      readable).  */
8401   if (opts.addressprint)
8402     ui_out_field_skip (uiout, "addr");
8403   annotate_field (5);
8404
8405   if (c->syscalls_to_be_caught
8406       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8407     ui_out_text (uiout, "syscalls \"");
8408   else
8409     ui_out_text (uiout, "syscall \"");
8410
8411   if (c->syscalls_to_be_caught)
8412     {
8413       int i, iter;
8414       char *text = xstrprintf ("%s", "");
8415
8416       for (i = 0;
8417            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8418            i++)
8419         {
8420           char *x = text;
8421           struct syscall s;
8422           get_syscall_by_number (iter, &s);
8423
8424           if (s.name != NULL)
8425             text = xstrprintf ("%s%s, ", text, s.name);
8426           else
8427             text = xstrprintf ("%s%d, ", text, iter);
8428
8429           /* We have to xfree the last 'text' (now stored at 'x')
8430              because xstrprintf dynamically allocates new space for it
8431              on every call.  */
8432           xfree (x);
8433         }
8434       /* Remove the last comma.  */
8435       text[strlen (text) - 2] = '\0';
8436       ui_out_field_string (uiout, "what", text);
8437     }
8438   else
8439     ui_out_field_string (uiout, "what", "<any syscall>");
8440   ui_out_text (uiout, "\" ");
8441
8442   if (ui_out_is_mi_like_p (uiout))
8443     ui_out_field_string (uiout, "catch-type", "syscall");
8444 }
8445
8446 /* Implement the "print_mention" breakpoint_ops method for syscall
8447    catchpoints.  */
8448
8449 static void
8450 print_mention_catch_syscall (struct breakpoint *b)
8451 {
8452   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8453
8454   if (c->syscalls_to_be_caught)
8455     {
8456       int i, iter;
8457
8458       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8459         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8460       else
8461         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8462
8463       for (i = 0;
8464            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8465            i++)
8466         {
8467           struct syscall s;
8468           get_syscall_by_number (iter, &s);
8469
8470           if (s.name)
8471             printf_filtered (" '%s' [%d]", s.name, s.number);
8472           else
8473             printf_filtered (" %d", s.number);
8474         }
8475       printf_filtered (")");
8476     }
8477   else
8478     printf_filtered (_("Catchpoint %d (any syscall)"),
8479                      b->number);
8480 }
8481
8482 /* Implement the "print_recreate" breakpoint_ops method for syscall
8483    catchpoints.  */
8484
8485 static void
8486 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8487 {
8488   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8489
8490   fprintf_unfiltered (fp, "catch syscall");
8491
8492   if (c->syscalls_to_be_caught)
8493     {
8494       int i, iter;
8495
8496       for (i = 0;
8497            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8498            i++)
8499         {
8500           struct syscall s;
8501
8502           get_syscall_by_number (iter, &s);
8503           if (s.name)
8504             fprintf_unfiltered (fp, " %s", s.name);
8505           else
8506             fprintf_unfiltered (fp, " %d", s.number);
8507         }
8508     }
8509   print_recreate_thread (b, fp);
8510 }
8511
8512 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8513
8514 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8515
8516 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8517
8518 static int
8519 syscall_catchpoint_p (struct breakpoint *b)
8520 {
8521   return (b->ops == &catch_syscall_breakpoint_ops);
8522 }
8523
8524 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8525    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8526    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8527    the breakpoint_ops structure associated to the catchpoint.  */
8528
8529 void
8530 init_catchpoint (struct breakpoint *b,
8531                  struct gdbarch *gdbarch, int tempflag,
8532                  char *cond_string,
8533                  const struct breakpoint_ops *ops)
8534 {
8535   struct symtab_and_line sal;
8536
8537   init_sal (&sal);
8538   sal.pspace = current_program_space;
8539
8540   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8541
8542   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8543   b->disposition = tempflag ? disp_del : disp_donttouch;
8544 }
8545
8546 void
8547 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8548 {
8549   add_to_breakpoint_chain (b);
8550   set_breakpoint_number (internal, b);
8551   if (is_tracepoint (b))
8552     set_tracepoint_count (breakpoint_count);
8553   if (!internal)
8554     mention (b);
8555   observer_notify_breakpoint_created (b);
8556
8557   if (update_gll)
8558     update_global_location_list (1);
8559 }
8560
8561 static void
8562 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8563                                     int tempflag, char *cond_string,
8564                                     const struct breakpoint_ops *ops)
8565 {
8566   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8567
8568   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8569
8570   c->forked_inferior_pid = null_ptid;
8571
8572   install_breakpoint (0, &c->base, 1);
8573 }
8574
8575 /* Exec catchpoints.  */
8576
8577 /* An instance of this type is used to represent an exec catchpoint.
8578    It includes a "struct breakpoint" as a kind of base class; users
8579    downcast to "struct breakpoint *" when needed.  A breakpoint is
8580    really of this type iff its ops pointer points to
8581    CATCH_EXEC_BREAKPOINT_OPS.  */
8582
8583 struct exec_catchpoint
8584 {
8585   /* The base class.  */
8586   struct breakpoint base;
8587
8588   /* Filename of a program whose exec triggered this catchpoint.
8589      This field is only valid immediately after this catchpoint has
8590      triggered.  */
8591   char *exec_pathname;
8592 };
8593
8594 /* Implement the "dtor" breakpoint_ops method for exec
8595    catchpoints.  */
8596
8597 static void
8598 dtor_catch_exec (struct breakpoint *b)
8599 {
8600   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8601
8602   xfree (c->exec_pathname);
8603
8604   base_breakpoint_ops.dtor (b);
8605 }
8606
8607 static int
8608 insert_catch_exec (struct bp_location *bl)
8609 {
8610   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8611 }
8612
8613 static int
8614 remove_catch_exec (struct bp_location *bl)
8615 {
8616   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8617 }
8618
8619 static int
8620 breakpoint_hit_catch_exec (const struct bp_location *bl,
8621                            struct address_space *aspace, CORE_ADDR bp_addr,
8622                            const struct target_waitstatus *ws)
8623 {
8624   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8625
8626   if (ws->kind != TARGET_WAITKIND_EXECD)
8627     return 0;
8628
8629   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8630   return 1;
8631 }
8632
8633 static enum print_stop_action
8634 print_it_catch_exec (bpstat bs)
8635 {
8636   struct ui_out *uiout = current_uiout;
8637   struct breakpoint *b = bs->breakpoint_at;
8638   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8639
8640   annotate_catchpoint (b->number);
8641   if (b->disposition == disp_del)
8642     ui_out_text (uiout, "\nTemporary catchpoint ");
8643   else
8644     ui_out_text (uiout, "\nCatchpoint ");
8645   if (ui_out_is_mi_like_p (uiout))
8646     {
8647       ui_out_field_string (uiout, "reason",
8648                            async_reason_lookup (EXEC_ASYNC_EXEC));
8649       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8650     }
8651   ui_out_field_int (uiout, "bkptno", b->number);
8652   ui_out_text (uiout, " (exec'd ");
8653   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8654   ui_out_text (uiout, "), ");
8655
8656   return PRINT_SRC_AND_LOC;
8657 }
8658
8659 static void
8660 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8661 {
8662   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8663   struct value_print_options opts;
8664   struct ui_out *uiout = current_uiout;
8665
8666   get_user_print_options (&opts);
8667
8668   /* Field 4, the address, is omitted (which makes the columns
8669      not line up too nicely with the headers, but the effect
8670      is relatively readable).  */
8671   if (opts.addressprint)
8672     ui_out_field_skip (uiout, "addr");
8673   annotate_field (5);
8674   ui_out_text (uiout, "exec");
8675   if (c->exec_pathname != NULL)
8676     {
8677       ui_out_text (uiout, ", program \"");
8678       ui_out_field_string (uiout, "what", c->exec_pathname);
8679       ui_out_text (uiout, "\" ");
8680     }
8681
8682   if (ui_out_is_mi_like_p (uiout))
8683     ui_out_field_string (uiout, "catch-type", "exec");
8684 }
8685
8686 static void
8687 print_mention_catch_exec (struct breakpoint *b)
8688 {
8689   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8690 }
8691
8692 /* Implement the "print_recreate" breakpoint_ops method for exec
8693    catchpoints.  */
8694
8695 static void
8696 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8697 {
8698   fprintf_unfiltered (fp, "catch exec");
8699   print_recreate_thread (b, fp);
8700 }
8701
8702 static struct breakpoint_ops catch_exec_breakpoint_ops;
8703
8704 static void
8705 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8706                                  const struct breakpoint_ops *ops)
8707 {
8708   struct syscall_catchpoint *c;
8709   struct gdbarch *gdbarch = get_current_arch ();
8710
8711   c = XNEW (struct syscall_catchpoint);
8712   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8713   c->syscalls_to_be_caught = filter;
8714
8715   install_breakpoint (0, &c->base, 1);
8716 }
8717
8718 static int
8719 hw_breakpoint_used_count (void)
8720 {
8721   int i = 0;
8722   struct breakpoint *b;
8723   struct bp_location *bl;
8724
8725   ALL_BREAKPOINTS (b)
8726   {
8727     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8728       for (bl = b->loc; bl; bl = bl->next)
8729         {
8730           /* Special types of hardware breakpoints may use more than
8731              one register.  */
8732           i += b->ops->resources_needed (bl);
8733         }
8734   }
8735
8736   return i;
8737 }
8738
8739 /* Returns the resources B would use if it were a hardware
8740    watchpoint.  */
8741
8742 static int
8743 hw_watchpoint_use_count (struct breakpoint *b)
8744 {
8745   int i = 0;
8746   struct bp_location *bl;
8747
8748   if (!breakpoint_enabled (b))
8749     return 0;
8750
8751   for (bl = b->loc; bl; bl = bl->next)
8752     {
8753       /* Special types of hardware watchpoints may use more than
8754          one register.  */
8755       i += b->ops->resources_needed (bl);
8756     }
8757
8758   return i;
8759 }
8760
8761 /* Returns the sum the used resources of all hardware watchpoints of
8762    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8763    the sum of the used resources of all hardware watchpoints of other
8764    types _not_ TYPE.  */
8765
8766 static int
8767 hw_watchpoint_used_count_others (struct breakpoint *except,
8768                                  enum bptype type, int *other_type_used)
8769 {
8770   int i = 0;
8771   struct breakpoint *b;
8772
8773   *other_type_used = 0;
8774   ALL_BREAKPOINTS (b)
8775     {
8776       if (b == except)
8777         continue;
8778       if (!breakpoint_enabled (b))
8779         continue;
8780
8781       if (b->type == type)
8782         i += hw_watchpoint_use_count (b);
8783       else if (is_hardware_watchpoint (b))
8784         *other_type_used = 1;
8785     }
8786
8787   return i;
8788 }
8789
8790 void
8791 disable_watchpoints_before_interactive_call_start (void)
8792 {
8793   struct breakpoint *b;
8794
8795   ALL_BREAKPOINTS (b)
8796   {
8797     if (is_watchpoint (b) && breakpoint_enabled (b))
8798       {
8799         b->enable_state = bp_call_disabled;
8800         update_global_location_list (0);
8801       }
8802   }
8803 }
8804
8805 void
8806 enable_watchpoints_after_interactive_call_stop (void)
8807 {
8808   struct breakpoint *b;
8809
8810   ALL_BREAKPOINTS (b)
8811   {
8812     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8813       {
8814         b->enable_state = bp_enabled;
8815         update_global_location_list (1);
8816       }
8817   }
8818 }
8819
8820 void
8821 disable_breakpoints_before_startup (void)
8822 {
8823   current_program_space->executing_startup = 1;
8824   update_global_location_list (0);
8825 }
8826
8827 void
8828 enable_breakpoints_after_startup (void)
8829 {
8830   current_program_space->executing_startup = 0;
8831   breakpoint_re_set ();
8832 }
8833
8834
8835 /* Set a breakpoint that will evaporate an end of command
8836    at address specified by SAL.
8837    Restrict it to frame FRAME if FRAME is nonzero.  */
8838
8839 struct breakpoint *
8840 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8841                           struct frame_id frame_id, enum bptype type)
8842 {
8843   struct breakpoint *b;
8844
8845   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8846      tail-called one.  */
8847   gdb_assert (!frame_id_artificial_p (frame_id));
8848
8849   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8850   b->enable_state = bp_enabled;
8851   b->disposition = disp_donttouch;
8852   b->frame_id = frame_id;
8853
8854   /* If we're debugging a multi-threaded program, then we want
8855      momentary breakpoints to be active in only a single thread of
8856      control.  */
8857   if (in_thread_list (inferior_ptid))
8858     b->thread = pid_to_thread_id (inferior_ptid);
8859
8860   update_global_location_list_nothrow (1);
8861
8862   return b;
8863 }
8864
8865 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8866    The new breakpoint will have type TYPE, and use OPS as it
8867    breakpoint_ops.  */
8868
8869 static struct breakpoint *
8870 momentary_breakpoint_from_master (struct breakpoint *orig,
8871                                   enum bptype type,
8872                                   const struct breakpoint_ops *ops)
8873 {
8874   struct breakpoint *copy;
8875
8876   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8877   copy->loc = allocate_bp_location (copy);
8878   set_breakpoint_location_function (copy->loc, 1);
8879
8880   copy->loc->gdbarch = orig->loc->gdbarch;
8881   copy->loc->requested_address = orig->loc->requested_address;
8882   copy->loc->address = orig->loc->address;
8883   copy->loc->section = orig->loc->section;
8884   copy->loc->pspace = orig->loc->pspace;
8885   copy->loc->probe = orig->loc->probe;
8886   copy->loc->line_number = orig->loc->line_number;
8887   copy->loc->symtab = orig->loc->symtab;
8888   copy->frame_id = orig->frame_id;
8889   copy->thread = orig->thread;
8890   copy->pspace = orig->pspace;
8891
8892   copy->enable_state = bp_enabled;
8893   copy->disposition = disp_donttouch;
8894   copy->number = internal_breakpoint_number--;
8895
8896   update_global_location_list_nothrow (0);
8897   return copy;
8898 }
8899
8900 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8901    ORIG is NULL.  */
8902
8903 struct breakpoint *
8904 clone_momentary_breakpoint (struct breakpoint *orig)
8905 {
8906   /* If there's nothing to clone, then return nothing.  */
8907   if (orig == NULL)
8908     return NULL;
8909
8910   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8911 }
8912
8913 struct breakpoint *
8914 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8915                                 enum bptype type)
8916 {
8917   struct symtab_and_line sal;
8918
8919   sal = find_pc_line (pc, 0);
8920   sal.pc = pc;
8921   sal.section = find_pc_overlay (pc);
8922   sal.explicit_pc = 1;
8923
8924   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8925 }
8926 \f
8927
8928 /* Tell the user we have just set a breakpoint B.  */
8929
8930 static void
8931 mention (struct breakpoint *b)
8932 {
8933   b->ops->print_mention (b);
8934   if (ui_out_is_mi_like_p (current_uiout))
8935     return;
8936   printf_filtered ("\n");
8937 }
8938 \f
8939
8940 static struct bp_location *
8941 add_location_to_breakpoint (struct breakpoint *b,
8942                             const struct symtab_and_line *sal)
8943 {
8944   struct bp_location *loc, **tmp;
8945   CORE_ADDR adjusted_address;
8946   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8947
8948   if (loc_gdbarch == NULL)
8949     loc_gdbarch = b->gdbarch;
8950
8951   /* Adjust the breakpoint's address prior to allocating a location.
8952      Once we call allocate_bp_location(), that mostly uninitialized
8953      location will be placed on the location chain.  Adjustment of the
8954      breakpoint may cause target_read_memory() to be called and we do
8955      not want its scan of the location chain to find a breakpoint and
8956      location that's only been partially initialized.  */
8957   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8958                                                 sal->pc, b->type);
8959
8960   /* Sort the locations by their ADDRESS.  */
8961   loc = allocate_bp_location (b);
8962   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8963        tmp = &((*tmp)->next))
8964     ;
8965   loc->next = *tmp;
8966   *tmp = loc;
8967
8968   loc->requested_address = sal->pc;
8969   loc->address = adjusted_address;
8970   loc->pspace = sal->pspace;
8971   loc->probe = sal->probe;
8972   gdb_assert (loc->pspace != NULL);
8973   loc->section = sal->section;
8974   loc->gdbarch = loc_gdbarch;
8975   loc->line_number = sal->line;
8976   loc->symtab = sal->symtab;
8977
8978   set_breakpoint_location_function (loc,
8979                                     sal->explicit_pc || sal->explicit_line);
8980   return loc;
8981 }
8982 \f
8983
8984 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8985    return 0 otherwise.  */
8986
8987 static int
8988 bp_loc_is_permanent (struct bp_location *loc)
8989 {
8990   int len;
8991   CORE_ADDR addr;
8992   const gdb_byte *bpoint;
8993   gdb_byte *target_mem;
8994   struct cleanup *cleanup;
8995   int retval = 0;
8996
8997   gdb_assert (loc != NULL);
8998
8999   addr = loc->address;
9000   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
9001
9002   /* Software breakpoints unsupported?  */
9003   if (bpoint == NULL)
9004     return 0;
9005
9006   target_mem = alloca (len);
9007
9008   /* Enable the automatic memory restoration from breakpoints while
9009      we read the memory.  Otherwise we could say about our temporary
9010      breakpoints they are permanent.  */
9011   cleanup = save_current_space_and_thread ();
9012
9013   switch_to_program_space_and_thread (loc->pspace);
9014   make_show_memory_breakpoints_cleanup (0);
9015
9016   if (target_read_memory (loc->address, target_mem, len) == 0
9017       && memcmp (target_mem, bpoint, len) == 0)
9018     retval = 1;
9019
9020   do_cleanups (cleanup);
9021
9022   return retval;
9023 }
9024
9025 /* Build a command list for the dprintf corresponding to the current
9026    settings of the dprintf style options.  */
9027
9028 static void
9029 update_dprintf_command_list (struct breakpoint *b)
9030 {
9031   char *dprintf_args = b->extra_string;
9032   char *printf_line = NULL;
9033
9034   if (!dprintf_args)
9035     return;
9036
9037   dprintf_args = skip_spaces (dprintf_args);
9038
9039   /* Allow a comma, as it may have terminated a location, but don't
9040      insist on it.  */
9041   if (*dprintf_args == ',')
9042     ++dprintf_args;
9043   dprintf_args = skip_spaces (dprintf_args);
9044
9045   if (*dprintf_args != '"')
9046     error (_("Bad format string, missing '\"'."));
9047
9048   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9049     printf_line = xstrprintf ("printf %s", dprintf_args);
9050   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9051     {
9052       if (!dprintf_function)
9053         error (_("No function supplied for dprintf call"));
9054
9055       if (dprintf_channel && strlen (dprintf_channel) > 0)
9056         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9057                                   dprintf_function,
9058                                   dprintf_channel,
9059                                   dprintf_args);
9060       else
9061         printf_line = xstrprintf ("call (void) %s (%s)",
9062                                   dprintf_function,
9063                                   dprintf_args);
9064     }
9065   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9066     {
9067       if (target_can_run_breakpoint_commands ())
9068         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9069       else
9070         {
9071           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9072           printf_line = xstrprintf ("printf %s", dprintf_args);
9073         }
9074     }
9075   else
9076     internal_error (__FILE__, __LINE__,
9077                     _("Invalid dprintf style."));
9078
9079   gdb_assert (printf_line != NULL);
9080   /* Manufacture a printf sequence.  */
9081   {
9082     struct command_line *printf_cmd_line
9083       = xmalloc (sizeof (struct command_line));
9084
9085     printf_cmd_line = xmalloc (sizeof (struct command_line));
9086     printf_cmd_line->control_type = simple_control;
9087     printf_cmd_line->body_count = 0;
9088     printf_cmd_line->body_list = NULL;
9089     printf_cmd_line->next = NULL;
9090     printf_cmd_line->line = printf_line;
9091
9092     breakpoint_set_commands (b, printf_cmd_line);
9093   }
9094 }
9095
9096 /* Update all dprintf commands, making their command lists reflect
9097    current style settings.  */
9098
9099 static void
9100 update_dprintf_commands (char *args, int from_tty,
9101                          struct cmd_list_element *c)
9102 {
9103   struct breakpoint *b;
9104
9105   ALL_BREAKPOINTS (b)
9106     {
9107       if (b->type == bp_dprintf)
9108         update_dprintf_command_list (b);
9109     }
9110 }
9111
9112 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
9113    as textual description of the location, and COND_STRING
9114    as condition expression.  */
9115
9116 static void
9117 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9118                      struct symtabs_and_lines sals, char *addr_string,
9119                      char *filter, char *cond_string,
9120                      char *extra_string,
9121                      enum bptype type, enum bpdisp disposition,
9122                      int thread, int task, int ignore_count,
9123                      const struct breakpoint_ops *ops, int from_tty,
9124                      int enabled, int internal, unsigned flags,
9125                      int display_canonical)
9126 {
9127   int i;
9128
9129   if (type == bp_hardware_breakpoint)
9130     {
9131       int target_resources_ok;
9132
9133       i = hw_breakpoint_used_count ();
9134       target_resources_ok =
9135         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9136                                             i + 1, 0);
9137       if (target_resources_ok == 0)
9138         error (_("No hardware breakpoint support in the target."));
9139       else if (target_resources_ok < 0)
9140         error (_("Hardware breakpoints used exceeds limit."));
9141     }
9142
9143   gdb_assert (sals.nelts > 0);
9144
9145   for (i = 0; i < sals.nelts; ++i)
9146     {
9147       struct symtab_and_line sal = sals.sals[i];
9148       struct bp_location *loc;
9149
9150       if (from_tty)
9151         {
9152           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9153           if (!loc_gdbarch)
9154             loc_gdbarch = gdbarch;
9155
9156           describe_other_breakpoints (loc_gdbarch,
9157                                       sal.pspace, sal.pc, sal.section, thread);
9158         }
9159
9160       if (i == 0)
9161         {
9162           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9163           b->thread = thread;
9164           b->task = task;
9165
9166           b->cond_string = cond_string;
9167           b->extra_string = extra_string;
9168           b->ignore_count = ignore_count;
9169           b->enable_state = enabled ? bp_enabled : bp_disabled;
9170           b->disposition = disposition;
9171
9172           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9173             b->loc->inserted = 1;
9174
9175           if (type == bp_static_tracepoint)
9176             {
9177               struct tracepoint *t = (struct tracepoint *) b;
9178               struct static_tracepoint_marker marker;
9179
9180               if (strace_marker_p (b))
9181                 {
9182                   /* We already know the marker exists, otherwise, we
9183                      wouldn't see a sal for it.  */
9184                   char *p = &addr_string[3];
9185                   char *endp;
9186                   char *marker_str;
9187
9188                   p = skip_spaces (p);
9189
9190                   endp = skip_to_space (p);
9191
9192                   marker_str = savestring (p, endp - p);
9193                   t->static_trace_marker_id = marker_str;
9194
9195                   printf_filtered (_("Probed static tracepoint "
9196                                      "marker \"%s\"\n"),
9197                                    t->static_trace_marker_id);
9198                 }
9199               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9200                 {
9201                   t->static_trace_marker_id = xstrdup (marker.str_id);
9202                   release_static_tracepoint_marker (&marker);
9203
9204                   printf_filtered (_("Probed static tracepoint "
9205                                      "marker \"%s\"\n"),
9206                                    t->static_trace_marker_id);
9207                 }
9208               else
9209                 warning (_("Couldn't determine the static "
9210                            "tracepoint marker to probe"));
9211             }
9212
9213           loc = b->loc;
9214         }
9215       else
9216         {
9217           loc = add_location_to_breakpoint (b, &sal);
9218           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9219             loc->inserted = 1;
9220         }
9221
9222       if (bp_loc_is_permanent (loc))
9223         make_breakpoint_permanent (b);
9224
9225       if (b->cond_string)
9226         {
9227           const char *arg = b->cond_string;
9228
9229           loc->cond = parse_exp_1 (&arg, loc->address,
9230                                    block_for_pc (loc->address), 0);
9231           if (*arg)
9232               error (_("Garbage '%s' follows condition"), arg);
9233         }
9234
9235       /* Dynamic printf requires and uses additional arguments on the
9236          command line, otherwise it's an error.  */
9237       if (type == bp_dprintf)
9238         {
9239           if (b->extra_string)
9240             update_dprintf_command_list (b);
9241           else
9242             error (_("Format string required"));
9243         }
9244       else if (b->extra_string)
9245         error (_("Garbage '%s' at end of command"), b->extra_string);
9246     }
9247
9248   b->display_canonical = display_canonical;
9249   if (addr_string)
9250     b->addr_string = addr_string;
9251   else
9252     /* addr_string has to be used or breakpoint_re_set will delete
9253        me.  */
9254     b->addr_string
9255       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9256   b->filter = filter;
9257 }
9258
9259 static void
9260 create_breakpoint_sal (struct gdbarch *gdbarch,
9261                        struct symtabs_and_lines sals, char *addr_string,
9262                        char *filter, char *cond_string,
9263                        char *extra_string,
9264                        enum bptype type, enum bpdisp disposition,
9265                        int thread, int task, int ignore_count,
9266                        const struct breakpoint_ops *ops, int from_tty,
9267                        int enabled, int internal, unsigned flags,
9268                        int display_canonical)
9269 {
9270   struct breakpoint *b;
9271   struct cleanup *old_chain;
9272
9273   if (is_tracepoint_type (type))
9274     {
9275       struct tracepoint *t;
9276
9277       t = XCNEW (struct tracepoint);
9278       b = &t->base;
9279     }
9280   else
9281     b = XNEW (struct breakpoint);
9282
9283   old_chain = make_cleanup (xfree, b);
9284
9285   init_breakpoint_sal (b, gdbarch,
9286                        sals, addr_string,
9287                        filter, cond_string, extra_string,
9288                        type, disposition,
9289                        thread, task, ignore_count,
9290                        ops, from_tty,
9291                        enabled, internal, flags,
9292                        display_canonical);
9293   discard_cleanups (old_chain);
9294
9295   install_breakpoint (internal, b, 0);
9296 }
9297
9298 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9299    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9300    value.  COND_STRING, if not NULL, specified the condition to be
9301    used for all breakpoints.  Essentially the only case where
9302    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9303    function.  In that case, it's still not possible to specify
9304    separate conditions for different overloaded functions, so
9305    we take just a single condition string.
9306    
9307    NOTE: If the function succeeds, the caller is expected to cleanup
9308    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9309    array contents).  If the function fails (error() is called), the
9310    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9311    COND and SALS arrays and each of those arrays contents.  */
9312
9313 static void
9314 create_breakpoints_sal (struct gdbarch *gdbarch,
9315                         struct linespec_result *canonical,
9316                         char *cond_string, char *extra_string,
9317                         enum bptype type, enum bpdisp disposition,
9318                         int thread, int task, int ignore_count,
9319                         const struct breakpoint_ops *ops, int from_tty,
9320                         int enabled, int internal, unsigned flags)
9321 {
9322   int i;
9323   struct linespec_sals *lsal;
9324
9325   if (canonical->pre_expanded)
9326     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9327
9328   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9329     {
9330       /* Note that 'addr_string' can be NULL in the case of a plain
9331          'break', without arguments.  */
9332       char *addr_string = (canonical->addr_string
9333                            ? xstrdup (canonical->addr_string)
9334                            : NULL);
9335       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9336       struct cleanup *inner = make_cleanup (xfree, addr_string);
9337
9338       make_cleanup (xfree, filter_string);
9339       create_breakpoint_sal (gdbarch, lsal->sals,
9340                              addr_string,
9341                              filter_string,
9342                              cond_string, extra_string,
9343                              type, disposition,
9344                              thread, task, ignore_count, ops,
9345                              from_tty, enabled, internal, flags,
9346                              canonical->special_display);
9347       discard_cleanups (inner);
9348     }
9349 }
9350
9351 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9352    followed by conditionals.  On return, SALS contains an array of SAL
9353    addresses found.  ADDR_STRING contains a vector of (canonical)
9354    address strings.  ADDRESS points to the end of the SAL.
9355
9356    The array and the line spec strings are allocated on the heap, it is
9357    the caller's responsibility to free them.  */
9358
9359 static void
9360 parse_breakpoint_sals (char **address,
9361                        struct linespec_result *canonical)
9362 {
9363   /* If no arg given, or if first arg is 'if ', use the default
9364      breakpoint.  */
9365   if ((*address) == NULL
9366       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9367     {
9368       /* The last displayed codepoint, if it's valid, is our default breakpoint
9369          address.  */
9370       if (last_displayed_sal_is_valid ())
9371         {
9372           struct linespec_sals lsal;
9373           struct symtab_and_line sal;
9374           CORE_ADDR pc;
9375
9376           init_sal (&sal);              /* Initialize to zeroes.  */
9377           lsal.sals.sals = (struct symtab_and_line *)
9378             xmalloc (sizeof (struct symtab_and_line));
9379
9380           /* Set sal's pspace, pc, symtab, and line to the values
9381              corresponding to the last call to print_frame_info.
9382              Be sure to reinitialize LINE with NOTCURRENT == 0
9383              as the breakpoint line number is inappropriate otherwise.
9384              find_pc_line would adjust PC, re-set it back.  */
9385           get_last_displayed_sal (&sal);
9386           pc = sal.pc;
9387           sal = find_pc_line (pc, 0);
9388
9389           /* "break" without arguments is equivalent to "break *PC"
9390              where PC is the last displayed codepoint's address.  So
9391              make sure to set sal.explicit_pc to prevent GDB from
9392              trying to expand the list of sals to include all other
9393              instances with the same symtab and line.  */
9394           sal.pc = pc;
9395           sal.explicit_pc = 1;
9396
9397           lsal.sals.sals[0] = sal;
9398           lsal.sals.nelts = 1;
9399           lsal.canonical = NULL;
9400
9401           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9402         }
9403       else
9404         error (_("No default breakpoint address now."));
9405     }
9406   else
9407     {
9408       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9409
9410       /* Force almost all breakpoints to be in terms of the
9411          current_source_symtab (which is decode_line_1's default).
9412          This should produce the results we want almost all of the
9413          time while leaving default_breakpoint_* alone.
9414
9415          ObjC: However, don't match an Objective-C method name which
9416          may have a '+' or '-' succeeded by a '['.  */
9417       if (last_displayed_sal_is_valid ()
9418           && (!cursal.symtab
9419               || ((strchr ("+-", (*address)[0]) != NULL)
9420                   && ((*address)[1] != '['))))
9421         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9422                           get_last_displayed_symtab (),
9423                           get_last_displayed_line (),
9424                           canonical, NULL, NULL);
9425       else
9426         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9427                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9428     }
9429 }
9430
9431
9432 /* Convert each SAL into a real PC.  Verify that the PC can be
9433    inserted as a breakpoint.  If it can't throw an error.  */
9434
9435 static void
9436 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9437 {    
9438   int i;
9439
9440   for (i = 0; i < sals->nelts; i++)
9441     resolve_sal_pc (&sals->sals[i]);
9442 }
9443
9444 /* Fast tracepoints may have restrictions on valid locations.  For
9445    instance, a fast tracepoint using a jump instead of a trap will
9446    likely have to overwrite more bytes than a trap would, and so can
9447    only be placed where the instruction is longer than the jump, or a
9448    multi-instruction sequence does not have a jump into the middle of
9449    it, etc.  */
9450
9451 static void
9452 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9453                             struct symtabs_and_lines *sals)
9454 {
9455   int i, rslt;
9456   struct symtab_and_line *sal;
9457   char *msg;
9458   struct cleanup *old_chain;
9459
9460   for (i = 0; i < sals->nelts; i++)
9461     {
9462       struct gdbarch *sarch;
9463
9464       sal = &sals->sals[i];
9465
9466       sarch = get_sal_arch (*sal);
9467       /* We fall back to GDBARCH if there is no architecture
9468          associated with SAL.  */
9469       if (sarch == NULL)
9470         sarch = gdbarch;
9471       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9472                                                NULL, &msg);
9473       old_chain = make_cleanup (xfree, msg);
9474
9475       if (!rslt)
9476         error (_("May not have a fast tracepoint at 0x%s%s"),
9477                paddress (sarch, sal->pc), (msg ? msg : ""));
9478
9479       do_cleanups (old_chain);
9480     }
9481 }
9482
9483 /* Issue an invalid thread ID error.  */
9484
9485 static void ATTRIBUTE_NORETURN
9486 invalid_thread_id_error (int id)
9487 {
9488   error (_("Unknown thread %d."), id);
9489 }
9490
9491 /* Given TOK, a string specification of condition and thread, as
9492    accepted by the 'break' command, extract the condition
9493    string and thread number and set *COND_STRING and *THREAD.
9494    PC identifies the context at which the condition should be parsed.
9495    If no condition is found, *COND_STRING is set to NULL.
9496    If no thread is found, *THREAD is set to -1.  */
9497
9498 static void
9499 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9500                            char **cond_string, int *thread, int *task,
9501                            char **rest)
9502 {
9503   *cond_string = NULL;
9504   *thread = -1;
9505   *task = 0;
9506   *rest = NULL;
9507
9508   while (tok && *tok)
9509     {
9510       const char *end_tok;
9511       int toklen;
9512       const char *cond_start = NULL;
9513       const char *cond_end = NULL;
9514
9515       tok = skip_spaces_const (tok);
9516
9517       if ((*tok == '"' || *tok == ',') && rest)
9518         {
9519           *rest = savestring (tok, strlen (tok));
9520           return;
9521         }
9522
9523       end_tok = skip_to_space_const (tok);
9524
9525       toklen = end_tok - tok;
9526
9527       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9528         {
9529           struct expression *expr;
9530
9531           tok = cond_start = end_tok + 1;
9532           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9533           xfree (expr);
9534           cond_end = tok;
9535           *cond_string = savestring (cond_start, cond_end - cond_start);
9536         }
9537       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9538         {
9539           char *tmptok;
9540
9541           tok = end_tok + 1;
9542           *thread = strtol (tok, &tmptok, 0);
9543           if (tok == tmptok)
9544             error (_("Junk after thread keyword."));
9545           if (!valid_thread_id (*thread))
9546             invalid_thread_id_error (*thread);
9547           tok = tmptok;
9548         }
9549       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9550         {
9551           char *tmptok;
9552
9553           tok = end_tok + 1;
9554           *task = strtol (tok, &tmptok, 0);
9555           if (tok == tmptok)
9556             error (_("Junk after task keyword."));
9557           if (!valid_task_id (*task))
9558             error (_("Unknown task %d."), *task);
9559           tok = tmptok;
9560         }
9561       else if (rest)
9562         {
9563           *rest = savestring (tok, strlen (tok));
9564           return;
9565         }
9566       else
9567         error (_("Junk at end of arguments."));
9568     }
9569 }
9570
9571 /* Decode a static tracepoint marker spec.  */
9572
9573 static struct symtabs_and_lines
9574 decode_static_tracepoint_spec (char **arg_p)
9575 {
9576   VEC(static_tracepoint_marker_p) *markers = NULL;
9577   struct symtabs_and_lines sals;
9578   struct cleanup *old_chain;
9579   char *p = &(*arg_p)[3];
9580   char *endp;
9581   char *marker_str;
9582   int i;
9583
9584   p = skip_spaces (p);
9585
9586   endp = skip_to_space (p);
9587
9588   marker_str = savestring (p, endp - p);
9589   old_chain = make_cleanup (xfree, marker_str);
9590
9591   markers = target_static_tracepoint_markers_by_strid (marker_str);
9592   if (VEC_empty(static_tracepoint_marker_p, markers))
9593     error (_("No known static tracepoint marker named %s"), marker_str);
9594
9595   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9596   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9597
9598   for (i = 0; i < sals.nelts; i++)
9599     {
9600       struct static_tracepoint_marker *marker;
9601
9602       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9603
9604       init_sal (&sals.sals[i]);
9605
9606       sals.sals[i] = find_pc_line (marker->address, 0);
9607       sals.sals[i].pc = marker->address;
9608
9609       release_static_tracepoint_marker (marker);
9610     }
9611
9612   do_cleanups (old_chain);
9613
9614   *arg_p = endp;
9615   return sals;
9616 }
9617
9618 /* Set a breakpoint.  This function is shared between CLI and MI
9619    functions for setting a breakpoint.  This function has two major
9620    modes of operations, selected by the PARSE_ARG parameter.  If
9621    non-zero, the function will parse ARG, extracting location,
9622    condition, thread and extra string.  Otherwise, ARG is just the
9623    breakpoint's location, with condition, thread, and extra string
9624    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9625    If INTERNAL is non-zero, the breakpoint number will be allocated
9626    from the internal breakpoint count.  Returns true if any breakpoint
9627    was created; false otherwise.  */
9628
9629 int
9630 create_breakpoint (struct gdbarch *gdbarch,
9631                    char *arg, char *cond_string,
9632                    int thread, char *extra_string,
9633                    int parse_arg,
9634                    int tempflag, enum bptype type_wanted,
9635                    int ignore_count,
9636                    enum auto_boolean pending_break_support,
9637                    const struct breakpoint_ops *ops,
9638                    int from_tty, int enabled, int internal,
9639                    unsigned flags)
9640 {
9641   volatile struct gdb_exception e;
9642   char *copy_arg = NULL;
9643   char *addr_start = arg;
9644   struct linespec_result canonical;
9645   struct cleanup *old_chain;
9646   struct cleanup *bkpt_chain = NULL;
9647   int pending = 0;
9648   int task = 0;
9649   int prev_bkpt_count = breakpoint_count;
9650
9651   gdb_assert (ops != NULL);
9652
9653   init_linespec_result (&canonical);
9654
9655   TRY_CATCH (e, RETURN_MASK_ALL)
9656     {
9657       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9658                                      addr_start, &copy_arg);
9659     }
9660
9661   /* If caller is interested in rc value from parse, set value.  */
9662   switch (e.reason)
9663     {
9664     case GDB_NO_ERROR:
9665       if (VEC_empty (linespec_sals, canonical.sals))
9666         return 0;
9667       break;
9668     case RETURN_ERROR:
9669       switch (e.error)
9670         {
9671         case NOT_FOUND_ERROR:
9672
9673           /* If pending breakpoint support is turned off, throw
9674              error.  */
9675
9676           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9677             throw_exception (e);
9678
9679           exception_print (gdb_stderr, e);
9680
9681           /* If pending breakpoint support is auto query and the user
9682              selects no, then simply return the error code.  */
9683           if (pending_break_support == AUTO_BOOLEAN_AUTO
9684               && !nquery (_("Make %s pending on future shared library load? "),
9685                           bptype_string (type_wanted)))
9686             return 0;
9687
9688           /* At this point, either the user was queried about setting
9689              a pending breakpoint and selected yes, or pending
9690              breakpoint behavior is on and thus a pending breakpoint
9691              is defaulted on behalf of the user.  */
9692           {
9693             struct linespec_sals lsal;
9694
9695             copy_arg = xstrdup (addr_start);
9696             lsal.canonical = xstrdup (copy_arg);
9697             lsal.sals.nelts = 1;
9698             lsal.sals.sals = XNEW (struct symtab_and_line);
9699             init_sal (&lsal.sals.sals[0]);
9700             pending = 1;
9701             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9702           }
9703           break;
9704         default:
9705           throw_exception (e);
9706         }
9707       break;
9708     default:
9709       throw_exception (e);
9710     }
9711
9712   /* Create a chain of things that always need to be cleaned up.  */
9713   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9714
9715   /* ----------------------------- SNIP -----------------------------
9716      Anything added to the cleanup chain beyond this point is assumed
9717      to be part of a breakpoint.  If the breakpoint create succeeds
9718      then the memory is not reclaimed.  */
9719   bkpt_chain = make_cleanup (null_cleanup, 0);
9720
9721   /* Resolve all line numbers to PC's and verify that the addresses
9722      are ok for the target.  */
9723   if (!pending)
9724     {
9725       int ix;
9726       struct linespec_sals *iter;
9727
9728       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9729         breakpoint_sals_to_pc (&iter->sals);
9730     }
9731
9732   /* Fast tracepoints may have additional restrictions on location.  */
9733   if (!pending && type_wanted == bp_fast_tracepoint)
9734     {
9735       int ix;
9736       struct linespec_sals *iter;
9737
9738       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9739         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9740     }
9741
9742   /* Verify that condition can be parsed, before setting any
9743      breakpoints.  Allocate a separate condition expression for each
9744      breakpoint.  */
9745   if (!pending)
9746     {
9747       if (parse_arg)
9748         {
9749           char *rest;
9750           struct linespec_sals *lsal;
9751
9752           lsal = VEC_index (linespec_sals, canonical.sals, 0);
9753
9754           /* Here we only parse 'arg' to separate condition
9755              from thread number, so parsing in context of first
9756              sal is OK.  When setting the breakpoint we'll
9757              re-parse it in context of each sal.  */
9758
9759           find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9760                                      &thread, &task, &rest);
9761           if (cond_string)
9762             make_cleanup (xfree, cond_string);
9763           if (rest)
9764             make_cleanup (xfree, rest);
9765           if (rest)
9766             extra_string = rest;
9767         }
9768       else
9769         {
9770           if (*arg != '\0')
9771             error (_("Garbage '%s' at end of location"), arg);
9772
9773           /* Create a private copy of condition string.  */
9774           if (cond_string)
9775             {
9776               cond_string = xstrdup (cond_string);
9777               make_cleanup (xfree, cond_string);
9778             }
9779           /* Create a private copy of any extra string.  */
9780           if (extra_string)
9781             {
9782               extra_string = xstrdup (extra_string);
9783               make_cleanup (xfree, extra_string);
9784             }
9785         }
9786
9787       ops->create_breakpoints_sal (gdbarch, &canonical,
9788                                    cond_string, extra_string, type_wanted,
9789                                    tempflag ? disp_del : disp_donttouch,
9790                                    thread, task, ignore_count, ops,
9791                                    from_tty, enabled, internal, flags);
9792     }
9793   else
9794     {
9795       struct breakpoint *b;
9796
9797       make_cleanup (xfree, copy_arg);
9798
9799       if (is_tracepoint_type (type_wanted))
9800         {
9801           struct tracepoint *t;
9802
9803           t = XCNEW (struct tracepoint);
9804           b = &t->base;
9805         }
9806       else
9807         b = XNEW (struct breakpoint);
9808
9809       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9810
9811       b->addr_string = copy_arg;
9812       if (parse_arg)
9813         b->cond_string = NULL;
9814       else
9815         {
9816           /* Create a private copy of condition string.  */
9817           if (cond_string)
9818             {
9819               cond_string = xstrdup (cond_string);
9820               make_cleanup (xfree, cond_string);
9821             }
9822           b->cond_string = cond_string;
9823         }
9824       b->extra_string = NULL;
9825       b->ignore_count = ignore_count;
9826       b->disposition = tempflag ? disp_del : disp_donttouch;
9827       b->condition_not_parsed = 1;
9828       b->enable_state = enabled ? bp_enabled : bp_disabled;
9829       if ((type_wanted != bp_breakpoint
9830            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9831         b->pspace = current_program_space;
9832
9833       install_breakpoint (internal, b, 0);
9834     }
9835   
9836   if (VEC_length (linespec_sals, canonical.sals) > 1)
9837     {
9838       warning (_("Multiple breakpoints were set.\nUse the "
9839                  "\"delete\" command to delete unwanted breakpoints."));
9840       prev_breakpoint_count = prev_bkpt_count;
9841     }
9842
9843   /* That's it.  Discard the cleanups for data inserted into the
9844      breakpoint.  */
9845   discard_cleanups (bkpt_chain);
9846   /* But cleanup everything else.  */
9847   do_cleanups (old_chain);
9848
9849   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9850   update_global_location_list (1);
9851
9852   return 1;
9853 }
9854
9855 /* Set a breakpoint.
9856    ARG is a string describing breakpoint address,
9857    condition, and thread.
9858    FLAG specifies if a breakpoint is hardware on,
9859    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9860    and BP_TEMPFLAG.  */
9861
9862 static void
9863 break_command_1 (char *arg, int flag, int from_tty)
9864 {
9865   int tempflag = flag & BP_TEMPFLAG;
9866   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9867                              ? bp_hardware_breakpoint
9868                              : bp_breakpoint);
9869   struct breakpoint_ops *ops;
9870   const char *arg_cp = arg;
9871
9872   /* Matching breakpoints on probes.  */
9873   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9874     ops = &bkpt_probe_breakpoint_ops;
9875   else
9876     ops = &bkpt_breakpoint_ops;
9877
9878   create_breakpoint (get_current_arch (),
9879                      arg,
9880                      NULL, 0, NULL, 1 /* parse arg */,
9881                      tempflag, type_wanted,
9882                      0 /* Ignore count */,
9883                      pending_break_support,
9884                      ops,
9885                      from_tty,
9886                      1 /* enabled */,
9887                      0 /* internal */,
9888                      0);
9889 }
9890
9891 /* Helper function for break_command_1 and disassemble_command.  */
9892
9893 void
9894 resolve_sal_pc (struct symtab_and_line *sal)
9895 {
9896   CORE_ADDR pc;
9897
9898   if (sal->pc == 0 && sal->symtab != NULL)
9899     {
9900       if (!find_line_pc (sal->symtab, sal->line, &pc))
9901         error (_("No line %d in file \"%s\"."),
9902                sal->line, symtab_to_filename_for_display (sal->symtab));
9903       sal->pc = pc;
9904
9905       /* If this SAL corresponds to a breakpoint inserted using a line
9906          number, then skip the function prologue if necessary.  */
9907       if (sal->explicit_line)
9908         skip_prologue_sal (sal);
9909     }
9910
9911   if (sal->section == 0 && sal->symtab != NULL)
9912     {
9913       struct blockvector *bv;
9914       struct block *b;
9915       struct symbol *sym;
9916
9917       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9918       if (bv != NULL)
9919         {
9920           sym = block_linkage_function (b);
9921           if (sym != NULL)
9922             {
9923               fixup_symbol_section (sym, sal->symtab->objfile);
9924               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
9925             }
9926           else
9927             {
9928               /* It really is worthwhile to have the section, so we'll
9929                  just have to look harder. This case can be executed
9930                  if we have line numbers but no functions (as can
9931                  happen in assembly source).  */
9932
9933               struct bound_minimal_symbol msym;
9934               struct cleanup *old_chain = save_current_space_and_thread ();
9935
9936               switch_to_program_space_and_thread (sal->pspace);
9937
9938               msym = lookup_minimal_symbol_by_pc (sal->pc);
9939               if (msym.minsym)
9940                 sal->section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9941
9942               do_cleanups (old_chain);
9943             }
9944         }
9945     }
9946 }
9947
9948 void
9949 break_command (char *arg, int from_tty)
9950 {
9951   break_command_1 (arg, 0, from_tty);
9952 }
9953
9954 void
9955 tbreak_command (char *arg, int from_tty)
9956 {
9957   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9958 }
9959
9960 static void
9961 hbreak_command (char *arg, int from_tty)
9962 {
9963   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9964 }
9965
9966 static void
9967 thbreak_command (char *arg, int from_tty)
9968 {
9969   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9970 }
9971
9972 static void
9973 stop_command (char *arg, int from_tty)
9974 {
9975   printf_filtered (_("Specify the type of breakpoint to set.\n\
9976 Usage: stop in <function | address>\n\
9977        stop at <line>\n"));
9978 }
9979
9980 static void
9981 stopin_command (char *arg, int from_tty)
9982 {
9983   int badInput = 0;
9984
9985   if (arg == (char *) NULL)
9986     badInput = 1;
9987   else if (*arg != '*')
9988     {
9989       char *argptr = arg;
9990       int hasColon = 0;
9991
9992       /* Look for a ':'.  If this is a line number specification, then
9993          say it is bad, otherwise, it should be an address or
9994          function/method name.  */
9995       while (*argptr && !hasColon)
9996         {
9997           hasColon = (*argptr == ':');
9998           argptr++;
9999         }
10000
10001       if (hasColon)
10002         badInput = (*argptr != ':');    /* Not a class::method */
10003       else
10004         badInput = isdigit (*arg);      /* a simple line number */
10005     }
10006
10007   if (badInput)
10008     printf_filtered (_("Usage: stop in <function | address>\n"));
10009   else
10010     break_command_1 (arg, 0, from_tty);
10011 }
10012
10013 static void
10014 stopat_command (char *arg, int from_tty)
10015 {
10016   int badInput = 0;
10017
10018   if (arg == (char *) NULL || *arg == '*')      /* no line number */
10019     badInput = 1;
10020   else
10021     {
10022       char *argptr = arg;
10023       int hasColon = 0;
10024
10025       /* Look for a ':'.  If there is a '::' then get out, otherwise
10026          it is probably a line number.  */
10027       while (*argptr && !hasColon)
10028         {
10029           hasColon = (*argptr == ':');
10030           argptr++;
10031         }
10032
10033       if (hasColon)
10034         badInput = (*argptr == ':');    /* we have class::method */
10035       else
10036         badInput = !isdigit (*arg);     /* not a line number */
10037     }
10038
10039   if (badInput)
10040     printf_filtered (_("Usage: stop at <line>\n"));
10041   else
10042     break_command_1 (arg, 0, from_tty);
10043 }
10044
10045 /* The dynamic printf command is mostly like a regular breakpoint, but
10046    with a prewired command list consisting of a single output command,
10047    built from extra arguments supplied on the dprintf command
10048    line.  */
10049
10050 static void
10051 dprintf_command (char *arg, int from_tty)
10052 {
10053   create_breakpoint (get_current_arch (),
10054                      arg,
10055                      NULL, 0, NULL, 1 /* parse arg */,
10056                      0, bp_dprintf,
10057                      0 /* Ignore count */,
10058                      pending_break_support,
10059                      &dprintf_breakpoint_ops,
10060                      from_tty,
10061                      1 /* enabled */,
10062                      0 /* internal */,
10063                      0);
10064 }
10065
10066 static void
10067 agent_printf_command (char *arg, int from_tty)
10068 {
10069   error (_("May only run agent-printf on the target"));
10070 }
10071
10072 /* Implement the "breakpoint_hit" breakpoint_ops method for
10073    ranged breakpoints.  */
10074
10075 static int
10076 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10077                                   struct address_space *aspace,
10078                                   CORE_ADDR bp_addr,
10079                                   const struct target_waitstatus *ws)
10080 {
10081   if (ws->kind != TARGET_WAITKIND_STOPPED
10082       || ws->value.sig != GDB_SIGNAL_TRAP)
10083     return 0;
10084
10085   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10086                                          bl->length, aspace, bp_addr);
10087 }
10088
10089 /* Implement the "resources_needed" breakpoint_ops method for
10090    ranged breakpoints.  */
10091
10092 static int
10093 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10094 {
10095   return target_ranged_break_num_registers ();
10096 }
10097
10098 /* Implement the "print_it" breakpoint_ops method for
10099    ranged breakpoints.  */
10100
10101 static enum print_stop_action
10102 print_it_ranged_breakpoint (bpstat bs)
10103 {
10104   struct breakpoint *b = bs->breakpoint_at;
10105   struct bp_location *bl = b->loc;
10106   struct ui_out *uiout = current_uiout;
10107
10108   gdb_assert (b->type == bp_hardware_breakpoint);
10109
10110   /* Ranged breakpoints have only one location.  */
10111   gdb_assert (bl && bl->next == NULL);
10112
10113   annotate_breakpoint (b->number);
10114   if (b->disposition == disp_del)
10115     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10116   else
10117     ui_out_text (uiout, "\nRanged breakpoint ");
10118   if (ui_out_is_mi_like_p (uiout))
10119     {
10120       ui_out_field_string (uiout, "reason",
10121                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10122       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10123     }
10124   ui_out_field_int (uiout, "bkptno", b->number);
10125   ui_out_text (uiout, ", ");
10126
10127   return PRINT_SRC_AND_LOC;
10128 }
10129
10130 /* Implement the "print_one" breakpoint_ops method for
10131    ranged breakpoints.  */
10132
10133 static void
10134 print_one_ranged_breakpoint (struct breakpoint *b,
10135                              struct bp_location **last_loc)
10136 {
10137   struct bp_location *bl = b->loc;
10138   struct value_print_options opts;
10139   struct ui_out *uiout = current_uiout;
10140
10141   /* Ranged breakpoints have only one location.  */
10142   gdb_assert (bl && bl->next == NULL);
10143
10144   get_user_print_options (&opts);
10145
10146   if (opts.addressprint)
10147     /* We don't print the address range here, it will be printed later
10148        by print_one_detail_ranged_breakpoint.  */
10149     ui_out_field_skip (uiout, "addr");
10150   annotate_field (5);
10151   print_breakpoint_location (b, bl);
10152   *last_loc = bl;
10153 }
10154
10155 /* Implement the "print_one_detail" breakpoint_ops method for
10156    ranged breakpoints.  */
10157
10158 static void
10159 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10160                                     struct ui_out *uiout)
10161 {
10162   CORE_ADDR address_start, address_end;
10163   struct bp_location *bl = b->loc;
10164   struct ui_file *stb = mem_fileopen ();
10165   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10166
10167   gdb_assert (bl);
10168
10169   address_start = bl->address;
10170   address_end = address_start + bl->length - 1;
10171
10172   ui_out_text (uiout, "\taddress range: ");
10173   fprintf_unfiltered (stb, "[%s, %s]",
10174                       print_core_address (bl->gdbarch, address_start),
10175                       print_core_address (bl->gdbarch, address_end));
10176   ui_out_field_stream (uiout, "addr", stb);
10177   ui_out_text (uiout, "\n");
10178
10179   do_cleanups (cleanup);
10180 }
10181
10182 /* Implement the "print_mention" breakpoint_ops method for
10183    ranged breakpoints.  */
10184
10185 static void
10186 print_mention_ranged_breakpoint (struct breakpoint *b)
10187 {
10188   struct bp_location *bl = b->loc;
10189   struct ui_out *uiout = current_uiout;
10190
10191   gdb_assert (bl);
10192   gdb_assert (b->type == bp_hardware_breakpoint);
10193
10194   if (ui_out_is_mi_like_p (uiout))
10195     return;
10196
10197   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10198                    b->number, paddress (bl->gdbarch, bl->address),
10199                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10200 }
10201
10202 /* Implement the "print_recreate" breakpoint_ops method for
10203    ranged breakpoints.  */
10204
10205 static void
10206 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10207 {
10208   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10209                       b->addr_string_range_end);
10210   print_recreate_thread (b, fp);
10211 }
10212
10213 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10214
10215 static struct breakpoint_ops ranged_breakpoint_ops;
10216
10217 /* Find the address where the end of the breakpoint range should be
10218    placed, given the SAL of the end of the range.  This is so that if
10219    the user provides a line number, the end of the range is set to the
10220    last instruction of the given line.  */
10221
10222 static CORE_ADDR
10223 find_breakpoint_range_end (struct symtab_and_line sal)
10224 {
10225   CORE_ADDR end;
10226
10227   /* If the user provided a PC value, use it.  Otherwise,
10228      find the address of the end of the given location.  */
10229   if (sal.explicit_pc)
10230     end = sal.pc;
10231   else
10232     {
10233       int ret;
10234       CORE_ADDR start;
10235
10236       ret = find_line_pc_range (sal, &start, &end);
10237       if (!ret)
10238         error (_("Could not find location of the end of the range."));
10239
10240       /* find_line_pc_range returns the start of the next line.  */
10241       end--;
10242     }
10243
10244   return end;
10245 }
10246
10247 /* Implement the "break-range" CLI command.  */
10248
10249 static void
10250 break_range_command (char *arg, int from_tty)
10251 {
10252   char *arg_start, *addr_string_start, *addr_string_end;
10253   struct linespec_result canonical_start, canonical_end;
10254   int bp_count, can_use_bp, length;
10255   CORE_ADDR end;
10256   struct breakpoint *b;
10257   struct symtab_and_line sal_start, sal_end;
10258   struct cleanup *cleanup_bkpt;
10259   struct linespec_sals *lsal_start, *lsal_end;
10260
10261   /* We don't support software ranged breakpoints.  */
10262   if (target_ranged_break_num_registers () < 0)
10263     error (_("This target does not support hardware ranged breakpoints."));
10264
10265   bp_count = hw_breakpoint_used_count ();
10266   bp_count += target_ranged_break_num_registers ();
10267   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10268                                                    bp_count, 0);
10269   if (can_use_bp < 0)
10270     error (_("Hardware breakpoints used exceeds limit."));
10271
10272   arg = skip_spaces (arg);
10273   if (arg == NULL || arg[0] == '\0')
10274     error(_("No address range specified."));
10275
10276   init_linespec_result (&canonical_start);
10277
10278   arg_start = arg;
10279   parse_breakpoint_sals (&arg, &canonical_start);
10280
10281   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10282
10283   if (arg[0] != ',')
10284     error (_("Too few arguments."));
10285   else if (VEC_empty (linespec_sals, canonical_start.sals))
10286     error (_("Could not find location of the beginning of the range."));
10287
10288   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10289
10290   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10291       || lsal_start->sals.nelts != 1)
10292     error (_("Cannot create a ranged breakpoint with multiple locations."));
10293
10294   sal_start = lsal_start->sals.sals[0];
10295   addr_string_start = savestring (arg_start, arg - arg_start);
10296   make_cleanup (xfree, addr_string_start);
10297
10298   arg++;        /* Skip the comma.  */
10299   arg = skip_spaces (arg);
10300
10301   /* Parse the end location.  */
10302
10303   init_linespec_result (&canonical_end);
10304   arg_start = arg;
10305
10306   /* We call decode_line_full directly here instead of using
10307      parse_breakpoint_sals because we need to specify the start location's
10308      symtab and line as the default symtab and line for the end of the
10309      range.  This makes it possible to have ranges like "foo.c:27, +14",
10310      where +14 means 14 lines from the start location.  */
10311   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10312                     sal_start.symtab, sal_start.line,
10313                     &canonical_end, NULL, NULL);
10314
10315   make_cleanup_destroy_linespec_result (&canonical_end);
10316
10317   if (VEC_empty (linespec_sals, canonical_end.sals))
10318     error (_("Could not find location of the end of the range."));
10319
10320   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10321   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10322       || lsal_end->sals.nelts != 1)
10323     error (_("Cannot create a ranged breakpoint with multiple locations."));
10324
10325   sal_end = lsal_end->sals.sals[0];
10326   addr_string_end = savestring (arg_start, arg - arg_start);
10327   make_cleanup (xfree, addr_string_end);
10328
10329   end = find_breakpoint_range_end (sal_end);
10330   if (sal_start.pc > end)
10331     error (_("Invalid address range, end precedes start."));
10332
10333   length = end - sal_start.pc + 1;
10334   if (length < 0)
10335     /* Length overflowed.  */
10336     error (_("Address range too large."));
10337   else if (length == 1)
10338     {
10339       /* This range is simple enough to be handled by
10340          the `hbreak' command.  */
10341       hbreak_command (addr_string_start, 1);
10342
10343       do_cleanups (cleanup_bkpt);
10344
10345       return;
10346     }
10347
10348   /* Now set up the breakpoint.  */
10349   b = set_raw_breakpoint (get_current_arch (), sal_start,
10350                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10351   set_breakpoint_count (breakpoint_count + 1);
10352   b->number = breakpoint_count;
10353   b->disposition = disp_donttouch;
10354   b->addr_string = xstrdup (addr_string_start);
10355   b->addr_string_range_end = xstrdup (addr_string_end);
10356   b->loc->length = length;
10357
10358   do_cleanups (cleanup_bkpt);
10359
10360   mention (b);
10361   observer_notify_breakpoint_created (b);
10362   update_global_location_list (1);
10363 }
10364
10365 /*  Return non-zero if EXP is verified as constant.  Returned zero
10366     means EXP is variable.  Also the constant detection may fail for
10367     some constant expressions and in such case still falsely return
10368     zero.  */
10369
10370 static int
10371 watchpoint_exp_is_const (const struct expression *exp)
10372 {
10373   int i = exp->nelts;
10374
10375   while (i > 0)
10376     {
10377       int oplenp, argsp;
10378
10379       /* We are only interested in the descriptor of each element.  */
10380       operator_length (exp, i, &oplenp, &argsp);
10381       i -= oplenp;
10382
10383       switch (exp->elts[i].opcode)
10384         {
10385         case BINOP_ADD:
10386         case BINOP_SUB:
10387         case BINOP_MUL:
10388         case BINOP_DIV:
10389         case BINOP_REM:
10390         case BINOP_MOD:
10391         case BINOP_LSH:
10392         case BINOP_RSH:
10393         case BINOP_LOGICAL_AND:
10394         case BINOP_LOGICAL_OR:
10395         case BINOP_BITWISE_AND:
10396         case BINOP_BITWISE_IOR:
10397         case BINOP_BITWISE_XOR:
10398         case BINOP_EQUAL:
10399         case BINOP_NOTEQUAL:
10400         case BINOP_LESS:
10401         case BINOP_GTR:
10402         case BINOP_LEQ:
10403         case BINOP_GEQ:
10404         case BINOP_REPEAT:
10405         case BINOP_COMMA:
10406         case BINOP_EXP:
10407         case BINOP_MIN:
10408         case BINOP_MAX:
10409         case BINOP_INTDIV:
10410         case BINOP_CONCAT:
10411         case BINOP_IN:
10412         case BINOP_RANGE:
10413         case TERNOP_COND:
10414         case TERNOP_SLICE:
10415
10416         case OP_LONG:
10417         case OP_DOUBLE:
10418         case OP_DECFLOAT:
10419         case OP_LAST:
10420         case OP_COMPLEX:
10421         case OP_STRING:
10422         case OP_ARRAY:
10423         case OP_TYPE:
10424         case OP_TYPEOF:
10425         case OP_DECLTYPE:
10426         case OP_TYPEID:
10427         case OP_NAME:
10428         case OP_OBJC_NSSTRING:
10429
10430         case UNOP_NEG:
10431         case UNOP_LOGICAL_NOT:
10432         case UNOP_COMPLEMENT:
10433         case UNOP_ADDR:
10434         case UNOP_HIGH:
10435         case UNOP_CAST:
10436
10437         case UNOP_CAST_TYPE:
10438         case UNOP_REINTERPRET_CAST:
10439         case UNOP_DYNAMIC_CAST:
10440           /* Unary, binary and ternary operators: We have to check
10441              their operands.  If they are constant, then so is the
10442              result of that operation.  For instance, if A and B are
10443              determined to be constants, then so is "A + B".
10444
10445              UNOP_IND is one exception to the rule above, because the
10446              value of *ADDR is not necessarily a constant, even when
10447              ADDR is.  */
10448           break;
10449
10450         case OP_VAR_VALUE:
10451           /* Check whether the associated symbol is a constant.
10452
10453              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10454              possible that a buggy compiler could mark a variable as
10455              constant even when it is not, and TYPE_CONST would return
10456              true in this case, while SYMBOL_CLASS wouldn't.
10457
10458              We also have to check for function symbols because they
10459              are always constant.  */
10460           {
10461             struct symbol *s = exp->elts[i + 2].symbol;
10462
10463             if (SYMBOL_CLASS (s) != LOC_BLOCK
10464                 && SYMBOL_CLASS (s) != LOC_CONST
10465                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10466               return 0;
10467             break;
10468           }
10469
10470         /* The default action is to return 0 because we are using
10471            the optimistic approach here: If we don't know something,
10472            then it is not a constant.  */
10473         default:
10474           return 0;
10475         }
10476     }
10477
10478   return 1;
10479 }
10480
10481 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10482
10483 static void
10484 dtor_watchpoint (struct breakpoint *self)
10485 {
10486   struct watchpoint *w = (struct watchpoint *) self;
10487
10488   xfree (w->cond_exp);
10489   xfree (w->exp);
10490   xfree (w->exp_string);
10491   xfree (w->exp_string_reparse);
10492   value_free (w->val);
10493
10494   base_breakpoint_ops.dtor (self);
10495 }
10496
10497 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10498
10499 static void
10500 re_set_watchpoint (struct breakpoint *b)
10501 {
10502   struct watchpoint *w = (struct watchpoint *) b;
10503
10504   /* Watchpoint can be either on expression using entirely global
10505      variables, or it can be on local variables.
10506
10507      Watchpoints of the first kind are never auto-deleted, and even
10508      persist across program restarts.  Since they can use variables
10509      from shared libraries, we need to reparse expression as libraries
10510      are loaded and unloaded.
10511
10512      Watchpoints on local variables can also change meaning as result
10513      of solib event.  For example, if a watchpoint uses both a local
10514      and a global variables in expression, it's a local watchpoint,
10515      but unloading of a shared library will make the expression
10516      invalid.  This is not a very common use case, but we still
10517      re-evaluate expression, to avoid surprises to the user.
10518
10519      Note that for local watchpoints, we re-evaluate it only if
10520      watchpoints frame id is still valid.  If it's not, it means the
10521      watchpoint is out of scope and will be deleted soon.  In fact,
10522      I'm not sure we'll ever be called in this case.
10523
10524      If a local watchpoint's frame id is still valid, then
10525      w->exp_valid_block is likewise valid, and we can safely use it.
10526
10527      Don't do anything about disabled watchpoints, since they will be
10528      reevaluated again when enabled.  */
10529   update_watchpoint (w, 1 /* reparse */);
10530 }
10531
10532 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10533
10534 static int
10535 insert_watchpoint (struct bp_location *bl)
10536 {
10537   struct watchpoint *w = (struct watchpoint *) bl->owner;
10538   int length = w->exact ? 1 : bl->length;
10539
10540   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10541                                    w->cond_exp);
10542 }
10543
10544 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10545
10546 static int
10547 remove_watchpoint (struct bp_location *bl)
10548 {
10549   struct watchpoint *w = (struct watchpoint *) bl->owner;
10550   int length = w->exact ? 1 : bl->length;
10551
10552   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10553                                    w->cond_exp);
10554 }
10555
10556 static int
10557 breakpoint_hit_watchpoint (const struct bp_location *bl,
10558                            struct address_space *aspace, CORE_ADDR bp_addr,
10559                            const struct target_waitstatus *ws)
10560 {
10561   struct breakpoint *b = bl->owner;
10562   struct watchpoint *w = (struct watchpoint *) b;
10563
10564   /* Continuable hardware watchpoints are treated as non-existent if the
10565      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10566      some data address).  Otherwise gdb won't stop on a break instruction
10567      in the code (not from a breakpoint) when a hardware watchpoint has
10568      been defined.  Also skip watchpoints which we know did not trigger
10569      (did not match the data address).  */
10570   if (is_hardware_watchpoint (b)
10571       && w->watchpoint_triggered == watch_triggered_no)
10572     return 0;
10573
10574   return 1;
10575 }
10576
10577 static void
10578 check_status_watchpoint (bpstat bs)
10579 {
10580   gdb_assert (is_watchpoint (bs->breakpoint_at));
10581
10582   bpstat_check_watchpoint (bs);
10583 }
10584
10585 /* Implement the "resources_needed" breakpoint_ops method for
10586    hardware watchpoints.  */
10587
10588 static int
10589 resources_needed_watchpoint (const struct bp_location *bl)
10590 {
10591   struct watchpoint *w = (struct watchpoint *) bl->owner;
10592   int length = w->exact? 1 : bl->length;
10593
10594   return target_region_ok_for_hw_watchpoint (bl->address, length);
10595 }
10596
10597 /* Implement the "works_in_software_mode" breakpoint_ops method for
10598    hardware watchpoints.  */
10599
10600 static int
10601 works_in_software_mode_watchpoint (const struct breakpoint *b)
10602 {
10603   /* Read and access watchpoints only work with hardware support.  */
10604   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10605 }
10606
10607 static enum print_stop_action
10608 print_it_watchpoint (bpstat bs)
10609 {
10610   struct cleanup *old_chain;
10611   struct breakpoint *b;
10612   struct ui_file *stb;
10613   enum print_stop_action result;
10614   struct watchpoint *w;
10615   struct ui_out *uiout = current_uiout;
10616
10617   gdb_assert (bs->bp_location_at != NULL);
10618
10619   b = bs->breakpoint_at;
10620   w = (struct watchpoint *) b;
10621
10622   stb = mem_fileopen ();
10623   old_chain = make_cleanup_ui_file_delete (stb);
10624
10625   switch (b->type)
10626     {
10627     case bp_watchpoint:
10628     case bp_hardware_watchpoint:
10629       annotate_watchpoint (b->number);
10630       if (ui_out_is_mi_like_p (uiout))
10631         ui_out_field_string
10632           (uiout, "reason",
10633            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10634       mention (b);
10635       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10636       ui_out_text (uiout, "\nOld value = ");
10637       watchpoint_value_print (bs->old_val, stb);
10638       ui_out_field_stream (uiout, "old", stb);
10639       ui_out_text (uiout, "\nNew value = ");
10640       watchpoint_value_print (w->val, stb);
10641       ui_out_field_stream (uiout, "new", stb);
10642       ui_out_text (uiout, "\n");
10643       /* More than one watchpoint may have been triggered.  */
10644       result = PRINT_UNKNOWN;
10645       break;
10646
10647     case bp_read_watchpoint:
10648       if (ui_out_is_mi_like_p (uiout))
10649         ui_out_field_string
10650           (uiout, "reason",
10651            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10652       mention (b);
10653       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10654       ui_out_text (uiout, "\nValue = ");
10655       watchpoint_value_print (w->val, stb);
10656       ui_out_field_stream (uiout, "value", stb);
10657       ui_out_text (uiout, "\n");
10658       result = PRINT_UNKNOWN;
10659       break;
10660
10661     case bp_access_watchpoint:
10662       if (bs->old_val != NULL)
10663         {
10664           annotate_watchpoint (b->number);
10665           if (ui_out_is_mi_like_p (uiout))
10666             ui_out_field_string
10667               (uiout, "reason",
10668                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10669           mention (b);
10670           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10671           ui_out_text (uiout, "\nOld value = ");
10672           watchpoint_value_print (bs->old_val, stb);
10673           ui_out_field_stream (uiout, "old", stb);
10674           ui_out_text (uiout, "\nNew value = ");
10675         }
10676       else
10677         {
10678           mention (b);
10679           if (ui_out_is_mi_like_p (uiout))
10680             ui_out_field_string
10681               (uiout, "reason",
10682                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10683           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10684           ui_out_text (uiout, "\nValue = ");
10685         }
10686       watchpoint_value_print (w->val, stb);
10687       ui_out_field_stream (uiout, "new", stb);
10688       ui_out_text (uiout, "\n");
10689       result = PRINT_UNKNOWN;
10690       break;
10691     default:
10692       result = PRINT_UNKNOWN;
10693     }
10694
10695   do_cleanups (old_chain);
10696   return result;
10697 }
10698
10699 /* Implement the "print_mention" breakpoint_ops method for hardware
10700    watchpoints.  */
10701
10702 static void
10703 print_mention_watchpoint (struct breakpoint *b)
10704 {
10705   struct cleanup *ui_out_chain;
10706   struct watchpoint *w = (struct watchpoint *) b;
10707   struct ui_out *uiout = current_uiout;
10708
10709   switch (b->type)
10710     {
10711     case bp_watchpoint:
10712       ui_out_text (uiout, "Watchpoint ");
10713       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10714       break;
10715     case bp_hardware_watchpoint:
10716       ui_out_text (uiout, "Hardware watchpoint ");
10717       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10718       break;
10719     case bp_read_watchpoint:
10720       ui_out_text (uiout, "Hardware read watchpoint ");
10721       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10722       break;
10723     case bp_access_watchpoint:
10724       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10725       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10726       break;
10727     default:
10728       internal_error (__FILE__, __LINE__,
10729                       _("Invalid hardware watchpoint type."));
10730     }
10731
10732   ui_out_field_int (uiout, "number", b->number);
10733   ui_out_text (uiout, ": ");
10734   ui_out_field_string (uiout, "exp", w->exp_string);
10735   do_cleanups (ui_out_chain);
10736 }
10737
10738 /* Implement the "print_recreate" breakpoint_ops method for
10739    watchpoints.  */
10740
10741 static void
10742 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10743 {
10744   struct watchpoint *w = (struct watchpoint *) b;
10745
10746   switch (b->type)
10747     {
10748     case bp_watchpoint:
10749     case bp_hardware_watchpoint:
10750       fprintf_unfiltered (fp, "watch");
10751       break;
10752     case bp_read_watchpoint:
10753       fprintf_unfiltered (fp, "rwatch");
10754       break;
10755     case bp_access_watchpoint:
10756       fprintf_unfiltered (fp, "awatch");
10757       break;
10758     default:
10759       internal_error (__FILE__, __LINE__,
10760                       _("Invalid watchpoint type."));
10761     }
10762
10763   fprintf_unfiltered (fp, " %s", w->exp_string);
10764   print_recreate_thread (b, fp);
10765 }
10766
10767 /* Implement the "explains_signal" breakpoint_ops method for
10768    watchpoints.  */
10769
10770 static enum bpstat_signal_value
10771 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10772 {
10773   /* A software watchpoint cannot cause a signal other than
10774      GDB_SIGNAL_TRAP.  */
10775   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10776     return BPSTAT_SIGNAL_NO;
10777
10778   return BPSTAT_SIGNAL_HIDE;
10779 }
10780
10781 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10782
10783 static struct breakpoint_ops watchpoint_breakpoint_ops;
10784
10785 /* Implement the "insert" breakpoint_ops method for
10786    masked hardware watchpoints.  */
10787
10788 static int
10789 insert_masked_watchpoint (struct bp_location *bl)
10790 {
10791   struct watchpoint *w = (struct watchpoint *) bl->owner;
10792
10793   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10794                                         bl->watchpoint_type);
10795 }
10796
10797 /* Implement the "remove" breakpoint_ops method for
10798    masked hardware watchpoints.  */
10799
10800 static int
10801 remove_masked_watchpoint (struct bp_location *bl)
10802 {
10803   struct watchpoint *w = (struct watchpoint *) bl->owner;
10804
10805   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10806                                         bl->watchpoint_type);
10807 }
10808
10809 /* Implement the "resources_needed" breakpoint_ops method for
10810    masked hardware watchpoints.  */
10811
10812 static int
10813 resources_needed_masked_watchpoint (const struct bp_location *bl)
10814 {
10815   struct watchpoint *w = (struct watchpoint *) bl->owner;
10816
10817   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10818 }
10819
10820 /* Implement the "works_in_software_mode" breakpoint_ops method for
10821    masked hardware watchpoints.  */
10822
10823 static int
10824 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10825 {
10826   return 0;
10827 }
10828
10829 /* Implement the "print_it" breakpoint_ops method for
10830    masked hardware watchpoints.  */
10831
10832 static enum print_stop_action
10833 print_it_masked_watchpoint (bpstat bs)
10834 {
10835   struct breakpoint *b = bs->breakpoint_at;
10836   struct ui_out *uiout = current_uiout;
10837
10838   /* Masked watchpoints have only one location.  */
10839   gdb_assert (b->loc && b->loc->next == NULL);
10840
10841   switch (b->type)
10842     {
10843     case bp_hardware_watchpoint:
10844       annotate_watchpoint (b->number);
10845       if (ui_out_is_mi_like_p (uiout))
10846         ui_out_field_string
10847           (uiout, "reason",
10848            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10849       break;
10850
10851     case bp_read_watchpoint:
10852       if (ui_out_is_mi_like_p (uiout))
10853         ui_out_field_string
10854           (uiout, "reason",
10855            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10856       break;
10857
10858     case bp_access_watchpoint:
10859       if (ui_out_is_mi_like_p (uiout))
10860         ui_out_field_string
10861           (uiout, "reason",
10862            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10863       break;
10864     default:
10865       internal_error (__FILE__, __LINE__,
10866                       _("Invalid hardware watchpoint type."));
10867     }
10868
10869   mention (b);
10870   ui_out_text (uiout, _("\n\
10871 Check the underlying instruction at PC for the memory\n\
10872 address and value which triggered this watchpoint.\n"));
10873   ui_out_text (uiout, "\n");
10874
10875   /* More than one watchpoint may have been triggered.  */
10876   return PRINT_UNKNOWN;
10877 }
10878
10879 /* Implement the "print_one_detail" breakpoint_ops method for
10880    masked hardware watchpoints.  */
10881
10882 static void
10883 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10884                                     struct ui_out *uiout)
10885 {
10886   struct watchpoint *w = (struct watchpoint *) b;
10887
10888   /* Masked watchpoints have only one location.  */
10889   gdb_assert (b->loc && b->loc->next == NULL);
10890
10891   ui_out_text (uiout, "\tmask ");
10892   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10893   ui_out_text (uiout, "\n");
10894 }
10895
10896 /* Implement the "print_mention" breakpoint_ops method for
10897    masked hardware watchpoints.  */
10898
10899 static void
10900 print_mention_masked_watchpoint (struct breakpoint *b)
10901 {
10902   struct watchpoint *w = (struct watchpoint *) b;
10903   struct ui_out *uiout = current_uiout;
10904   struct cleanup *ui_out_chain;
10905
10906   switch (b->type)
10907     {
10908     case bp_hardware_watchpoint:
10909       ui_out_text (uiout, "Masked hardware watchpoint ");
10910       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10911       break;
10912     case bp_read_watchpoint:
10913       ui_out_text (uiout, "Masked hardware read watchpoint ");
10914       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10915       break;
10916     case bp_access_watchpoint:
10917       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10918       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10919       break;
10920     default:
10921       internal_error (__FILE__, __LINE__,
10922                       _("Invalid hardware watchpoint type."));
10923     }
10924
10925   ui_out_field_int (uiout, "number", b->number);
10926   ui_out_text (uiout, ": ");
10927   ui_out_field_string (uiout, "exp", w->exp_string);
10928   do_cleanups (ui_out_chain);
10929 }
10930
10931 /* Implement the "print_recreate" breakpoint_ops method for
10932    masked hardware watchpoints.  */
10933
10934 static void
10935 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10936 {
10937   struct watchpoint *w = (struct watchpoint *) b;
10938   char tmp[40];
10939
10940   switch (b->type)
10941     {
10942     case bp_hardware_watchpoint:
10943       fprintf_unfiltered (fp, "watch");
10944       break;
10945     case bp_read_watchpoint:
10946       fprintf_unfiltered (fp, "rwatch");
10947       break;
10948     case bp_access_watchpoint:
10949       fprintf_unfiltered (fp, "awatch");
10950       break;
10951     default:
10952       internal_error (__FILE__, __LINE__,
10953                       _("Invalid hardware watchpoint type."));
10954     }
10955
10956   sprintf_vma (tmp, w->hw_wp_mask);
10957   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10958   print_recreate_thread (b, fp);
10959 }
10960
10961 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10962
10963 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10964
10965 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10966
10967 static int
10968 is_masked_watchpoint (const struct breakpoint *b)
10969 {
10970   return b->ops == &masked_watchpoint_breakpoint_ops;
10971 }
10972
10973 /* accessflag:  hw_write:  watch write, 
10974                 hw_read:   watch read, 
10975                 hw_access: watch access (read or write) */
10976 static void
10977 watch_command_1 (const char *arg, int accessflag, int from_tty,
10978                  int just_location, int internal)
10979 {
10980   volatile struct gdb_exception e;
10981   struct breakpoint *b, *scope_breakpoint = NULL;
10982   struct expression *exp;
10983   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10984   struct value *val, *mark, *result;
10985   struct frame_info *frame;
10986   const char *exp_start = NULL;
10987   const char *exp_end = NULL;
10988   const char *tok, *end_tok;
10989   int toklen = -1;
10990   const char *cond_start = NULL;
10991   const char *cond_end = NULL;
10992   enum bptype bp_type;
10993   int thread = -1;
10994   int pc = 0;
10995   /* Flag to indicate whether we are going to use masks for
10996      the hardware watchpoint.  */
10997   int use_mask = 0;
10998   CORE_ADDR mask = 0;
10999   struct watchpoint *w;
11000   char *expression;
11001   struct cleanup *back_to;
11002
11003   /* Make sure that we actually have parameters to parse.  */
11004   if (arg != NULL && arg[0] != '\0')
11005     {
11006       const char *value_start;
11007
11008       exp_end = arg + strlen (arg);
11009
11010       /* Look for "parameter value" pairs at the end
11011          of the arguments string.  */
11012       for (tok = exp_end - 1; tok > arg; tok--)
11013         {
11014           /* Skip whitespace at the end of the argument list.  */
11015           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11016             tok--;
11017
11018           /* Find the beginning of the last token.
11019              This is the value of the parameter.  */
11020           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11021             tok--;
11022           value_start = tok + 1;
11023
11024           /* Skip whitespace.  */
11025           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11026             tok--;
11027
11028           end_tok = tok;
11029
11030           /* Find the beginning of the second to last token.
11031              This is the parameter itself.  */
11032           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11033             tok--;
11034           tok++;
11035           toklen = end_tok - tok + 1;
11036
11037           if (toklen == 6 && !strncmp (tok, "thread", 6))
11038             {
11039               /* At this point we've found a "thread" token, which means
11040                  the user is trying to set a watchpoint that triggers
11041                  only in a specific thread.  */
11042               char *endp;
11043
11044               if (thread != -1)
11045                 error(_("You can specify only one thread."));
11046
11047               /* Extract the thread ID from the next token.  */
11048               thread = strtol (value_start, &endp, 0);
11049
11050               /* Check if the user provided a valid numeric value for the
11051                  thread ID.  */
11052               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11053                 error (_("Invalid thread ID specification %s."), value_start);
11054
11055               /* Check if the thread actually exists.  */
11056               if (!valid_thread_id (thread))
11057                 invalid_thread_id_error (thread);
11058             }
11059           else if (toklen == 4 && !strncmp (tok, "mask", 4))
11060             {
11061               /* We've found a "mask" token, which means the user wants to
11062                  create a hardware watchpoint that is going to have the mask
11063                  facility.  */
11064               struct value *mask_value, *mark;
11065
11066               if (use_mask)
11067                 error(_("You can specify only one mask."));
11068
11069               use_mask = just_location = 1;
11070
11071               mark = value_mark ();
11072               mask_value = parse_to_comma_and_eval (&value_start);
11073               mask = value_as_address (mask_value);
11074               value_free_to_mark (mark);
11075             }
11076           else
11077             /* We didn't recognize what we found.  We should stop here.  */
11078             break;
11079
11080           /* Truncate the string and get rid of the "parameter value" pair before
11081              the arguments string is parsed by the parse_exp_1 function.  */
11082           exp_end = tok;
11083         }
11084     }
11085   else
11086     exp_end = arg;
11087
11088   /* Parse the rest of the arguments.  From here on out, everything
11089      is in terms of a newly allocated string instead of the original
11090      ARG.  */
11091   innermost_block = NULL;
11092   expression = savestring (arg, exp_end - arg);
11093   back_to = make_cleanup (xfree, expression);
11094   exp_start = arg = expression;
11095   exp = parse_exp_1 (&arg, 0, 0, 0);
11096   exp_end = arg;
11097   /* Remove trailing whitespace from the expression before saving it.
11098      This makes the eventual display of the expression string a bit
11099      prettier.  */
11100   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11101     --exp_end;
11102
11103   /* Checking if the expression is not constant.  */
11104   if (watchpoint_exp_is_const (exp))
11105     {
11106       int len;
11107
11108       len = exp_end - exp_start;
11109       while (len > 0 && isspace (exp_start[len - 1]))
11110         len--;
11111       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11112     }
11113
11114   exp_valid_block = innermost_block;
11115   mark = value_mark ();
11116   fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11117
11118   if (just_location)
11119     {
11120       int ret;
11121
11122       exp_valid_block = NULL;
11123       val = value_addr (result);
11124       release_value (val);
11125       value_free_to_mark (mark);
11126
11127       if (use_mask)
11128         {
11129           ret = target_masked_watch_num_registers (value_as_address (val),
11130                                                    mask);
11131           if (ret == -1)
11132             error (_("This target does not support masked watchpoints."));
11133           else if (ret == -2)
11134             error (_("Invalid mask or memory region."));
11135         }
11136     }
11137   else if (val != NULL)
11138     release_value (val);
11139
11140   tok = skip_spaces_const (arg);
11141   end_tok = skip_to_space_const (tok);
11142
11143   toklen = end_tok - tok;
11144   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11145     {
11146       struct expression *cond;
11147
11148       innermost_block = NULL;
11149       tok = cond_start = end_tok + 1;
11150       cond = parse_exp_1 (&tok, 0, 0, 0);
11151
11152       /* The watchpoint expression may not be local, but the condition
11153          may still be.  E.g.: `watch global if local > 0'.  */
11154       cond_exp_valid_block = innermost_block;
11155
11156       xfree (cond);
11157       cond_end = tok;
11158     }
11159   if (*tok)
11160     error (_("Junk at end of command."));
11161
11162   frame = block_innermost_frame (exp_valid_block);
11163
11164   /* If the expression is "local", then set up a "watchpoint scope"
11165      breakpoint at the point where we've left the scope of the watchpoint
11166      expression.  Create the scope breakpoint before the watchpoint, so
11167      that we will encounter it first in bpstat_stop_status.  */
11168   if (exp_valid_block && frame)
11169     {
11170       if (frame_id_p (frame_unwind_caller_id (frame)))
11171         {
11172           scope_breakpoint
11173             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11174                                           frame_unwind_caller_pc (frame),
11175                                           bp_watchpoint_scope,
11176                                           &momentary_breakpoint_ops);
11177
11178           scope_breakpoint->enable_state = bp_enabled;
11179
11180           /* Automatically delete the breakpoint when it hits.  */
11181           scope_breakpoint->disposition = disp_del;
11182
11183           /* Only break in the proper frame (help with recursion).  */
11184           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11185
11186           /* Set the address at which we will stop.  */
11187           scope_breakpoint->loc->gdbarch
11188             = frame_unwind_caller_arch (frame);
11189           scope_breakpoint->loc->requested_address
11190             = frame_unwind_caller_pc (frame);
11191           scope_breakpoint->loc->address
11192             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11193                                          scope_breakpoint->loc->requested_address,
11194                                          scope_breakpoint->type);
11195         }
11196     }
11197
11198   /* Now set up the breakpoint.  We create all watchpoints as hardware
11199      watchpoints here even if hardware watchpoints are turned off, a call
11200      to update_watchpoint later in this function will cause the type to
11201      drop back to bp_watchpoint (software watchpoint) if required.  */
11202
11203   if (accessflag == hw_read)
11204     bp_type = bp_read_watchpoint;
11205   else if (accessflag == hw_access)
11206     bp_type = bp_access_watchpoint;
11207   else
11208     bp_type = bp_hardware_watchpoint;
11209
11210   w = XCNEW (struct watchpoint);
11211   b = &w->base;
11212   if (use_mask)
11213     init_raw_breakpoint_without_location (b, NULL, bp_type,
11214                                           &masked_watchpoint_breakpoint_ops);
11215   else
11216     init_raw_breakpoint_without_location (b, NULL, bp_type,
11217                                           &watchpoint_breakpoint_ops);
11218   b->thread = thread;
11219   b->disposition = disp_donttouch;
11220   b->pspace = current_program_space;
11221   w->exp = exp;
11222   w->exp_valid_block = exp_valid_block;
11223   w->cond_exp_valid_block = cond_exp_valid_block;
11224   if (just_location)
11225     {
11226       struct type *t = value_type (val);
11227       CORE_ADDR addr = value_as_address (val);
11228       char *name;
11229
11230       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11231       name = type_to_string (t);
11232
11233       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11234                                           core_addr_to_string (addr));
11235       xfree (name);
11236
11237       w->exp_string = xstrprintf ("-location %.*s",
11238                                   (int) (exp_end - exp_start), exp_start);
11239
11240       /* The above expression is in C.  */
11241       b->language = language_c;
11242     }
11243   else
11244     w->exp_string = savestring (exp_start, exp_end - exp_start);
11245
11246   if (use_mask)
11247     {
11248       w->hw_wp_mask = mask;
11249     }
11250   else
11251     {
11252       w->val = val;
11253       w->val_valid = 1;
11254     }
11255
11256   if (cond_start)
11257     b->cond_string = savestring (cond_start, cond_end - cond_start);
11258   else
11259     b->cond_string = 0;
11260
11261   if (frame)
11262     {
11263       w->watchpoint_frame = get_frame_id (frame);
11264       w->watchpoint_thread = inferior_ptid;
11265     }
11266   else
11267     {
11268       w->watchpoint_frame = null_frame_id;
11269       w->watchpoint_thread = null_ptid;
11270     }
11271
11272   if (scope_breakpoint != NULL)
11273     {
11274       /* The scope breakpoint is related to the watchpoint.  We will
11275          need to act on them together.  */
11276       b->related_breakpoint = scope_breakpoint;
11277       scope_breakpoint->related_breakpoint = b;
11278     }
11279
11280   if (!just_location)
11281     value_free_to_mark (mark);
11282
11283   TRY_CATCH (e, RETURN_MASK_ALL)
11284     {
11285       /* Finally update the new watchpoint.  This creates the locations
11286          that should be inserted.  */
11287       update_watchpoint (w, 1);
11288     }
11289   if (e.reason < 0)
11290     {
11291       delete_breakpoint (b);
11292       throw_exception (e);
11293     }
11294
11295   install_breakpoint (internal, b, 1);
11296   do_cleanups (back_to);
11297 }
11298
11299 /* Return count of debug registers needed to watch the given expression.
11300    If the watchpoint cannot be handled in hardware return zero.  */
11301
11302 static int
11303 can_use_hardware_watchpoint (struct value *v)
11304 {
11305   int found_memory_cnt = 0;
11306   struct value *head = v;
11307
11308   /* Did the user specifically forbid us to use hardware watchpoints? */
11309   if (!can_use_hw_watchpoints)
11310     return 0;
11311
11312   /* Make sure that the value of the expression depends only upon
11313      memory contents, and values computed from them within GDB.  If we
11314      find any register references or function calls, we can't use a
11315      hardware watchpoint.
11316
11317      The idea here is that evaluating an expression generates a series
11318      of values, one holding the value of every subexpression.  (The
11319      expression a*b+c has five subexpressions: a, b, a*b, c, and
11320      a*b+c.)  GDB's values hold almost enough information to establish
11321      the criteria given above --- they identify memory lvalues,
11322      register lvalues, computed values, etcetera.  So we can evaluate
11323      the expression, and then scan the chain of values that leaves
11324      behind to decide whether we can detect any possible change to the
11325      expression's final value using only hardware watchpoints.
11326
11327      However, I don't think that the values returned by inferior
11328      function calls are special in any way.  So this function may not
11329      notice that an expression involving an inferior function call
11330      can't be watched with hardware watchpoints.  FIXME.  */
11331   for (; v; v = value_next (v))
11332     {
11333       if (VALUE_LVAL (v) == lval_memory)
11334         {
11335           if (v != head && value_lazy (v))
11336             /* A lazy memory lvalue in the chain is one that GDB never
11337                needed to fetch; we either just used its address (e.g.,
11338                `a' in `a.b') or we never needed it at all (e.g., `a'
11339                in `a,b').  This doesn't apply to HEAD; if that is
11340                lazy then it was not readable, but watch it anyway.  */
11341             ;
11342           else
11343             {
11344               /* Ahh, memory we actually used!  Check if we can cover
11345                  it with hardware watchpoints.  */
11346               struct type *vtype = check_typedef (value_type (v));
11347
11348               /* We only watch structs and arrays if user asked for it
11349                  explicitly, never if they just happen to appear in a
11350                  middle of some value chain.  */
11351               if (v == head
11352                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11353                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11354                 {
11355                   CORE_ADDR vaddr = value_address (v);
11356                   int len;
11357                   int num_regs;
11358
11359                   len = (target_exact_watchpoints
11360                          && is_scalar_type_recursive (vtype))?
11361                     1 : TYPE_LENGTH (value_type (v));
11362
11363                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11364                   if (!num_regs)
11365                     return 0;
11366                   else
11367                     found_memory_cnt += num_regs;
11368                 }
11369             }
11370         }
11371       else if (VALUE_LVAL (v) != not_lval
11372                && deprecated_value_modifiable (v) == 0)
11373         return 0;       /* These are values from the history (e.g., $1).  */
11374       else if (VALUE_LVAL (v) == lval_register)
11375         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11376     }
11377
11378   /* The expression itself looks suitable for using a hardware
11379      watchpoint, but give the target machine a chance to reject it.  */
11380   return found_memory_cnt;
11381 }
11382
11383 void
11384 watch_command_wrapper (char *arg, int from_tty, int internal)
11385 {
11386   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11387 }
11388
11389 /* A helper function that looks for the "-location" argument and then
11390    calls watch_command_1.  */
11391
11392 static void
11393 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11394 {
11395   int just_location = 0;
11396
11397   if (arg
11398       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11399           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11400     {
11401       arg = skip_spaces (arg);
11402       just_location = 1;
11403     }
11404
11405   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11406 }
11407
11408 static void
11409 watch_command (char *arg, int from_tty)
11410 {
11411   watch_maybe_just_location (arg, hw_write, from_tty);
11412 }
11413
11414 void
11415 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11416 {
11417   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11418 }
11419
11420 static void
11421 rwatch_command (char *arg, int from_tty)
11422 {
11423   watch_maybe_just_location (arg, hw_read, from_tty);
11424 }
11425
11426 void
11427 awatch_command_wrapper (char *arg, int from_tty, int internal)
11428 {
11429   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11430 }
11431
11432 static void
11433 awatch_command (char *arg, int from_tty)
11434 {
11435   watch_maybe_just_location (arg, hw_access, from_tty);
11436 }
11437 \f
11438
11439 /* Helper routines for the until_command routine in infcmd.c.  Here
11440    because it uses the mechanisms of breakpoints.  */
11441
11442 struct until_break_command_continuation_args
11443 {
11444   struct breakpoint *breakpoint;
11445   struct breakpoint *breakpoint2;
11446   int thread_num;
11447 };
11448
11449 /* This function is called by fetch_inferior_event via the
11450    cmd_continuation pointer, to complete the until command.  It takes
11451    care of cleaning up the temporary breakpoints set up by the until
11452    command.  */
11453 static void
11454 until_break_command_continuation (void *arg, int err)
11455 {
11456   struct until_break_command_continuation_args *a = arg;
11457
11458   delete_breakpoint (a->breakpoint);
11459   if (a->breakpoint2)
11460     delete_breakpoint (a->breakpoint2);
11461   delete_longjmp_breakpoint (a->thread_num);
11462 }
11463
11464 void
11465 until_break_command (char *arg, int from_tty, int anywhere)
11466 {
11467   struct symtabs_and_lines sals;
11468   struct symtab_and_line sal;
11469   struct frame_info *frame;
11470   struct gdbarch *frame_gdbarch;
11471   struct frame_id stack_frame_id;
11472   struct frame_id caller_frame_id;
11473   struct breakpoint *breakpoint;
11474   struct breakpoint *breakpoint2 = NULL;
11475   struct cleanup *old_chain;
11476   int thread;
11477   struct thread_info *tp;
11478
11479   clear_proceed_status ();
11480
11481   /* Set a breakpoint where the user wants it and at return from
11482      this function.  */
11483
11484   if (last_displayed_sal_is_valid ())
11485     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11486                           get_last_displayed_symtab (),
11487                           get_last_displayed_line ());
11488   else
11489     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11490                           (struct symtab *) NULL, 0);
11491
11492   if (sals.nelts != 1)
11493     error (_("Couldn't get information on specified line."));
11494
11495   sal = sals.sals[0];
11496   xfree (sals.sals);    /* malloc'd, so freed.  */
11497
11498   if (*arg)
11499     error (_("Junk at end of arguments."));
11500
11501   resolve_sal_pc (&sal);
11502
11503   tp = inferior_thread ();
11504   thread = tp->num;
11505
11506   old_chain = make_cleanup (null_cleanup, NULL);
11507
11508   /* Note linespec handling above invalidates the frame chain.
11509      Installing a breakpoint also invalidates the frame chain (as it
11510      may need to switch threads), so do any frame handling before
11511      that.  */
11512
11513   frame = get_selected_frame (NULL);
11514   frame_gdbarch = get_frame_arch (frame);
11515   stack_frame_id = get_stack_frame_id (frame);
11516   caller_frame_id = frame_unwind_caller_id (frame);
11517
11518   /* Keep within the current frame, or in frames called by the current
11519      one.  */
11520
11521   if (frame_id_p (caller_frame_id))
11522     {
11523       struct symtab_and_line sal2;
11524
11525       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11526       sal2.pc = frame_unwind_caller_pc (frame);
11527       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11528                                               sal2,
11529                                               caller_frame_id,
11530                                               bp_until);
11531       make_cleanup_delete_breakpoint (breakpoint2);
11532
11533       set_longjmp_breakpoint (tp, caller_frame_id);
11534       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11535     }
11536
11537   /* set_momentary_breakpoint could invalidate FRAME.  */
11538   frame = NULL;
11539
11540   if (anywhere)
11541     /* If the user told us to continue until a specified location,
11542        we don't specify a frame at which we need to stop.  */
11543     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11544                                            null_frame_id, bp_until);
11545   else
11546     /* Otherwise, specify the selected frame, because we want to stop
11547        only at the very same frame.  */
11548     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11549                                            stack_frame_id, bp_until);
11550   make_cleanup_delete_breakpoint (breakpoint);
11551
11552   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11553
11554   /* If we are running asynchronously, and proceed call above has
11555      actually managed to start the target, arrange for breakpoints to
11556      be deleted when the target stops.  Otherwise, we're already
11557      stopped and delete breakpoints via cleanup chain.  */
11558
11559   if (target_can_async_p () && is_running (inferior_ptid))
11560     {
11561       struct until_break_command_continuation_args *args;
11562       args = xmalloc (sizeof (*args));
11563
11564       args->breakpoint = breakpoint;
11565       args->breakpoint2 = breakpoint2;
11566       args->thread_num = thread;
11567
11568       discard_cleanups (old_chain);
11569       add_continuation (inferior_thread (),
11570                         until_break_command_continuation, args,
11571                         xfree);
11572     }
11573   else
11574     do_cleanups (old_chain);
11575 }
11576
11577 /* This function attempts to parse an optional "if <cond>" clause
11578    from the arg string.  If one is not found, it returns NULL.
11579
11580    Else, it returns a pointer to the condition string.  (It does not
11581    attempt to evaluate the string against a particular block.)  And,
11582    it updates arg to point to the first character following the parsed
11583    if clause in the arg string.  */
11584
11585 char *
11586 ep_parse_optional_if_clause (char **arg)
11587 {
11588   char *cond_string;
11589
11590   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11591     return NULL;
11592
11593   /* Skip the "if" keyword.  */
11594   (*arg) += 2;
11595
11596   /* Skip any extra leading whitespace, and record the start of the
11597      condition string.  */
11598   *arg = skip_spaces (*arg);
11599   cond_string = *arg;
11600
11601   /* Assume that the condition occupies the remainder of the arg
11602      string.  */
11603   (*arg) += strlen (cond_string);
11604
11605   return cond_string;
11606 }
11607
11608 /* Commands to deal with catching events, such as signals, exceptions,
11609    process start/exit, etc.  */
11610
11611 typedef enum
11612 {
11613   catch_fork_temporary, catch_vfork_temporary,
11614   catch_fork_permanent, catch_vfork_permanent
11615 }
11616 catch_fork_kind;
11617
11618 static void
11619 catch_fork_command_1 (char *arg, int from_tty, 
11620                       struct cmd_list_element *command)
11621 {
11622   struct gdbarch *gdbarch = get_current_arch ();
11623   char *cond_string = NULL;
11624   catch_fork_kind fork_kind;
11625   int tempflag;
11626
11627   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11628   tempflag = (fork_kind == catch_fork_temporary
11629               || fork_kind == catch_vfork_temporary);
11630
11631   if (!arg)
11632     arg = "";
11633   arg = skip_spaces (arg);
11634
11635   /* The allowed syntax is:
11636      catch [v]fork
11637      catch [v]fork if <cond>
11638
11639      First, check if there's an if clause.  */
11640   cond_string = ep_parse_optional_if_clause (&arg);
11641
11642   if ((*arg != '\0') && !isspace (*arg))
11643     error (_("Junk at end of arguments."));
11644
11645   /* If this target supports it, create a fork or vfork catchpoint
11646      and enable reporting of such events.  */
11647   switch (fork_kind)
11648     {
11649     case catch_fork_temporary:
11650     case catch_fork_permanent:
11651       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11652                                           &catch_fork_breakpoint_ops);
11653       break;
11654     case catch_vfork_temporary:
11655     case catch_vfork_permanent:
11656       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11657                                           &catch_vfork_breakpoint_ops);
11658       break;
11659     default:
11660       error (_("unsupported or unknown fork kind; cannot catch it"));
11661       break;
11662     }
11663 }
11664
11665 static void
11666 catch_exec_command_1 (char *arg, int from_tty, 
11667                       struct cmd_list_element *command)
11668 {
11669   struct exec_catchpoint *c;
11670   struct gdbarch *gdbarch = get_current_arch ();
11671   int tempflag;
11672   char *cond_string = NULL;
11673
11674   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11675
11676   if (!arg)
11677     arg = "";
11678   arg = skip_spaces (arg);
11679
11680   /* The allowed syntax is:
11681      catch exec
11682      catch exec if <cond>
11683
11684      First, check if there's an if clause.  */
11685   cond_string = ep_parse_optional_if_clause (&arg);
11686
11687   if ((*arg != '\0') && !isspace (*arg))
11688     error (_("Junk at end of arguments."));
11689
11690   c = XNEW (struct exec_catchpoint);
11691   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11692                    &catch_exec_breakpoint_ops);
11693   c->exec_pathname = NULL;
11694
11695   install_breakpoint (0, &c->base, 1);
11696 }
11697
11698 void
11699 init_ada_exception_breakpoint (struct breakpoint *b,
11700                                struct gdbarch *gdbarch,
11701                                struct symtab_and_line sal,
11702                                char *addr_string,
11703                                const struct breakpoint_ops *ops,
11704                                int tempflag,
11705                                int enabled,
11706                                int from_tty)
11707 {
11708   if (from_tty)
11709     {
11710       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11711       if (!loc_gdbarch)
11712         loc_gdbarch = gdbarch;
11713
11714       describe_other_breakpoints (loc_gdbarch,
11715                                   sal.pspace, sal.pc, sal.section, -1);
11716       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11717          version for exception catchpoints, because two catchpoints
11718          used for different exception names will use the same address.
11719          In this case, a "breakpoint ... also set at..." warning is
11720          unproductive.  Besides, the warning phrasing is also a bit
11721          inappropriate, we should use the word catchpoint, and tell
11722          the user what type of catchpoint it is.  The above is good
11723          enough for now, though.  */
11724     }
11725
11726   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11727
11728   b->enable_state = enabled ? bp_enabled : bp_disabled;
11729   b->disposition = tempflag ? disp_del : disp_donttouch;
11730   b->addr_string = addr_string;
11731   b->language = language_ada;
11732 }
11733
11734 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11735    filter list, or NULL if no filtering is required.  */
11736 static VEC(int) *
11737 catch_syscall_split_args (char *arg)
11738 {
11739   VEC(int) *result = NULL;
11740   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11741
11742   while (*arg != '\0')
11743     {
11744       int i, syscall_number;
11745       char *endptr;
11746       char cur_name[128];
11747       struct syscall s;
11748
11749       /* Skip whitespace.  */
11750       arg = skip_spaces (arg);
11751
11752       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11753         cur_name[i] = arg[i];
11754       cur_name[i] = '\0';
11755       arg += i;
11756
11757       /* Check if the user provided a syscall name or a number.  */
11758       syscall_number = (int) strtol (cur_name, &endptr, 0);
11759       if (*endptr == '\0')
11760         get_syscall_by_number (syscall_number, &s);
11761       else
11762         {
11763           /* We have a name.  Let's check if it's valid and convert it
11764              to a number.  */
11765           get_syscall_by_name (cur_name, &s);
11766
11767           if (s.number == UNKNOWN_SYSCALL)
11768             /* Here we have to issue an error instead of a warning,
11769                because GDB cannot do anything useful if there's no
11770                syscall number to be caught.  */
11771             error (_("Unknown syscall name '%s'."), cur_name);
11772         }
11773
11774       /* Ok, it's valid.  */
11775       VEC_safe_push (int, result, s.number);
11776     }
11777
11778   discard_cleanups (cleanup);
11779   return result;
11780 }
11781
11782 /* Implement the "catch syscall" command.  */
11783
11784 static void
11785 catch_syscall_command_1 (char *arg, int from_tty, 
11786                          struct cmd_list_element *command)
11787 {
11788   int tempflag;
11789   VEC(int) *filter;
11790   struct syscall s;
11791   struct gdbarch *gdbarch = get_current_arch ();
11792
11793   /* Checking if the feature if supported.  */
11794   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11795     error (_("The feature 'catch syscall' is not supported on \
11796 this architecture yet."));
11797
11798   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11799
11800   arg = skip_spaces (arg);
11801
11802   /* We need to do this first "dummy" translation in order
11803      to get the syscall XML file loaded or, most important,
11804      to display a warning to the user if there's no XML file
11805      for his/her architecture.  */
11806   get_syscall_by_number (0, &s);
11807
11808   /* The allowed syntax is:
11809      catch syscall
11810      catch syscall <name | number> [<name | number> ... <name | number>]
11811
11812      Let's check if there's a syscall name.  */
11813
11814   if (arg != NULL)
11815     filter = catch_syscall_split_args (arg);
11816   else
11817     filter = NULL;
11818
11819   create_syscall_event_catchpoint (tempflag, filter,
11820                                    &catch_syscall_breakpoint_ops);
11821 }
11822
11823 static void
11824 catch_command (char *arg, int from_tty)
11825 {
11826   error (_("Catch requires an event name."));
11827 }
11828 \f
11829
11830 static void
11831 tcatch_command (char *arg, int from_tty)
11832 {
11833   error (_("Catch requires an event name."));
11834 }
11835
11836 /* A qsort comparison function that sorts breakpoints in order.  */
11837
11838 static int
11839 compare_breakpoints (const void *a, const void *b)
11840 {
11841   const breakpoint_p *ba = a;
11842   uintptr_t ua = (uintptr_t) *ba;
11843   const breakpoint_p *bb = b;
11844   uintptr_t ub = (uintptr_t) *bb;
11845
11846   if ((*ba)->number < (*bb)->number)
11847     return -1;
11848   else if ((*ba)->number > (*bb)->number)
11849     return 1;
11850
11851   /* Now sort by address, in case we see, e..g, two breakpoints with
11852      the number 0.  */
11853   if (ua < ub)
11854     return -1;
11855   return ua > ub ? 1 : 0;
11856 }
11857
11858 /* Delete breakpoints by address or line.  */
11859
11860 static void
11861 clear_command (char *arg, int from_tty)
11862 {
11863   struct breakpoint *b, *prev;
11864   VEC(breakpoint_p) *found = 0;
11865   int ix;
11866   int default_match;
11867   struct symtabs_and_lines sals;
11868   struct symtab_and_line sal;
11869   int i;
11870   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11871
11872   if (arg)
11873     {
11874       sals = decode_line_with_current_source (arg,
11875                                               (DECODE_LINE_FUNFIRSTLINE
11876                                                | DECODE_LINE_LIST_MODE));
11877       make_cleanup (xfree, sals.sals);
11878       default_match = 0;
11879     }
11880   else
11881     {
11882       sals.sals = (struct symtab_and_line *)
11883         xmalloc (sizeof (struct symtab_and_line));
11884       make_cleanup (xfree, sals.sals);
11885       init_sal (&sal);          /* Initialize to zeroes.  */
11886
11887       /* Set sal's line, symtab, pc, and pspace to the values
11888          corresponding to the last call to print_frame_info.  If the
11889          codepoint is not valid, this will set all the fields to 0.  */
11890       get_last_displayed_sal (&sal);
11891       if (sal.symtab == 0)
11892         error (_("No source file specified."));
11893
11894       sals.sals[0] = sal;
11895       sals.nelts = 1;
11896
11897       default_match = 1;
11898     }
11899
11900   /* We don't call resolve_sal_pc here.  That's not as bad as it
11901      seems, because all existing breakpoints typically have both
11902      file/line and pc set.  So, if clear is given file/line, we can
11903      match this to existing breakpoint without obtaining pc at all.
11904
11905      We only support clearing given the address explicitly 
11906      present in breakpoint table.  Say, we've set breakpoint 
11907      at file:line.  There were several PC values for that file:line,
11908      due to optimization, all in one block.
11909
11910      We've picked one PC value.  If "clear" is issued with another
11911      PC corresponding to the same file:line, the breakpoint won't
11912      be cleared.  We probably can still clear the breakpoint, but 
11913      since the other PC value is never presented to user, user
11914      can only find it by guessing, and it does not seem important
11915      to support that.  */
11916
11917   /* For each line spec given, delete bps which correspond to it.  Do
11918      it in two passes, solely to preserve the current behavior that
11919      from_tty is forced true if we delete more than one
11920      breakpoint.  */
11921
11922   found = NULL;
11923   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11924   for (i = 0; i < sals.nelts; i++)
11925     {
11926       const char *sal_fullname;
11927
11928       /* If exact pc given, clear bpts at that pc.
11929          If line given (pc == 0), clear all bpts on specified line.
11930          If defaulting, clear all bpts on default line
11931          or at default pc.
11932
11933          defaulting    sal.pc != 0    tests to do
11934
11935          0              1             pc
11936          1              1             pc _and_ line
11937          0              0             line
11938          1              0             <can't happen> */
11939
11940       sal = sals.sals[i];
11941       sal_fullname = (sal.symtab == NULL
11942                       ? NULL : symtab_to_fullname (sal.symtab));
11943
11944       /* Find all matching breakpoints and add them to 'found'.  */
11945       ALL_BREAKPOINTS (b)
11946         {
11947           int match = 0;
11948           /* Are we going to delete b?  */
11949           if (b->type != bp_none && !is_watchpoint (b))
11950             {
11951               struct bp_location *loc = b->loc;
11952               for (; loc; loc = loc->next)
11953                 {
11954                   /* If the user specified file:line, don't allow a PC
11955                      match.  This matches historical gdb behavior.  */
11956                   int pc_match = (!sal.explicit_line
11957                                   && sal.pc
11958                                   && (loc->pspace == sal.pspace)
11959                                   && (loc->address == sal.pc)
11960                                   && (!section_is_overlay (loc->section)
11961                                       || loc->section == sal.section));
11962                   int line_match = 0;
11963
11964                   if ((default_match || sal.explicit_line)
11965                       && loc->symtab != NULL
11966                       && sal_fullname != NULL
11967                       && sal.pspace == loc->pspace
11968                       && loc->line_number == sal.line
11969                       && filename_cmp (symtab_to_fullname (loc->symtab),
11970                                        sal_fullname) == 0)
11971                     line_match = 1;
11972
11973                   if (pc_match || line_match)
11974                     {
11975                       match = 1;
11976                       break;
11977                     }
11978                 }
11979             }
11980
11981           if (match)
11982             VEC_safe_push(breakpoint_p, found, b);
11983         }
11984     }
11985
11986   /* Now go thru the 'found' chain and delete them.  */
11987   if (VEC_empty(breakpoint_p, found))
11988     {
11989       if (arg)
11990         error (_("No breakpoint at %s."), arg);
11991       else
11992         error (_("No breakpoint at this line."));
11993     }
11994
11995   /* Remove duplicates from the vec.  */
11996   qsort (VEC_address (breakpoint_p, found),
11997          VEC_length (breakpoint_p, found),
11998          sizeof (breakpoint_p),
11999          compare_breakpoints);
12000   prev = VEC_index (breakpoint_p, found, 0);
12001   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12002     {
12003       if (b == prev)
12004         {
12005           VEC_ordered_remove (breakpoint_p, found, ix);
12006           --ix;
12007         }
12008     }
12009
12010   if (VEC_length(breakpoint_p, found) > 1)
12011     from_tty = 1;       /* Always report if deleted more than one.  */
12012   if (from_tty)
12013     {
12014       if (VEC_length(breakpoint_p, found) == 1)
12015         printf_unfiltered (_("Deleted breakpoint "));
12016       else
12017         printf_unfiltered (_("Deleted breakpoints "));
12018     }
12019
12020   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12021     {
12022       if (from_tty)
12023         printf_unfiltered ("%d ", b->number);
12024       delete_breakpoint (b);
12025     }
12026   if (from_tty)
12027     putchar_unfiltered ('\n');
12028
12029   do_cleanups (cleanups);
12030 }
12031 \f
12032 /* Delete breakpoint in BS if they are `delete' breakpoints and
12033    all breakpoints that are marked for deletion, whether hit or not.
12034    This is called after any breakpoint is hit, or after errors.  */
12035
12036 void
12037 breakpoint_auto_delete (bpstat bs)
12038 {
12039   struct breakpoint *b, *b_tmp;
12040
12041   for (; bs; bs = bs->next)
12042     if (bs->breakpoint_at
12043         && bs->breakpoint_at->disposition == disp_del
12044         && bs->stop)
12045       delete_breakpoint (bs->breakpoint_at);
12046
12047   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12048   {
12049     if (b->disposition == disp_del_at_next_stop)
12050       delete_breakpoint (b);
12051   }
12052 }
12053
12054 /* A comparison function for bp_location AP and BP being interfaced to
12055    qsort.  Sort elements primarily by their ADDRESS (no matter what
12056    does breakpoint_address_is_meaningful say for its OWNER),
12057    secondarily by ordering first bp_permanent OWNERed elements and
12058    terciarily just ensuring the array is sorted stable way despite
12059    qsort being an unstable algorithm.  */
12060
12061 static int
12062 bp_location_compare (const void *ap, const void *bp)
12063 {
12064   struct bp_location *a = *(void **) ap;
12065   struct bp_location *b = *(void **) bp;
12066   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12067   int a_perm = a->owner->enable_state == bp_permanent;
12068   int b_perm = b->owner->enable_state == bp_permanent;
12069
12070   if (a->address != b->address)
12071     return (a->address > b->address) - (a->address < b->address);
12072
12073   /* Sort locations at the same address by their pspace number, keeping
12074      locations of the same inferior (in a multi-inferior environment)
12075      grouped.  */
12076
12077   if (a->pspace->num != b->pspace->num)
12078     return ((a->pspace->num > b->pspace->num)
12079             - (a->pspace->num < b->pspace->num));
12080
12081   /* Sort permanent breakpoints first.  */
12082   if (a_perm != b_perm)
12083     return (a_perm < b_perm) - (a_perm > b_perm);
12084
12085   /* Make the internal GDB representation stable across GDB runs
12086      where A and B memory inside GDB can differ.  Breakpoint locations of
12087      the same type at the same address can be sorted in arbitrary order.  */
12088
12089   if (a->owner->number != b->owner->number)
12090     return ((a->owner->number > b->owner->number)
12091             - (a->owner->number < b->owner->number));
12092
12093   return (a > b) - (a < b);
12094 }
12095
12096 /* Set bp_location_placed_address_before_address_max and
12097    bp_location_shadow_len_after_address_max according to the current
12098    content of the bp_location array.  */
12099
12100 static void
12101 bp_location_target_extensions_update (void)
12102 {
12103   struct bp_location *bl, **blp_tmp;
12104
12105   bp_location_placed_address_before_address_max = 0;
12106   bp_location_shadow_len_after_address_max = 0;
12107
12108   ALL_BP_LOCATIONS (bl, blp_tmp)
12109     {
12110       CORE_ADDR start, end, addr;
12111
12112       if (!bp_location_has_shadow (bl))
12113         continue;
12114
12115       start = bl->target_info.placed_address;
12116       end = start + bl->target_info.shadow_len;
12117
12118       gdb_assert (bl->address >= start);
12119       addr = bl->address - start;
12120       if (addr > bp_location_placed_address_before_address_max)
12121         bp_location_placed_address_before_address_max = addr;
12122
12123       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12124
12125       gdb_assert (bl->address < end);
12126       addr = end - bl->address;
12127       if (addr > bp_location_shadow_len_after_address_max)
12128         bp_location_shadow_len_after_address_max = addr;
12129     }
12130 }
12131
12132 /* Download tracepoint locations if they haven't been.  */
12133
12134 static void
12135 download_tracepoint_locations (void)
12136 {
12137   struct breakpoint *b;
12138   struct cleanup *old_chain;
12139
12140   if (!target_can_download_tracepoint ())
12141     return;
12142
12143   old_chain = save_current_space_and_thread ();
12144
12145   ALL_TRACEPOINTS (b)
12146     {
12147       struct bp_location *bl;
12148       struct tracepoint *t;
12149       int bp_location_downloaded = 0;
12150
12151       if ((b->type == bp_fast_tracepoint
12152            ? !may_insert_fast_tracepoints
12153            : !may_insert_tracepoints))
12154         continue;
12155
12156       for (bl = b->loc; bl; bl = bl->next)
12157         {
12158           /* In tracepoint, locations are _never_ duplicated, so
12159              should_be_inserted is equivalent to
12160              unduplicated_should_be_inserted.  */
12161           if (!should_be_inserted (bl) || bl->inserted)
12162             continue;
12163
12164           switch_to_program_space_and_thread (bl->pspace);
12165
12166           target_download_tracepoint (bl);
12167
12168           bl->inserted = 1;
12169           bp_location_downloaded = 1;
12170         }
12171       t = (struct tracepoint *) b;
12172       t->number_on_target = b->number;
12173       if (bp_location_downloaded)
12174         observer_notify_breakpoint_modified (b);
12175     }
12176
12177   do_cleanups (old_chain);
12178 }
12179
12180 /* Swap the insertion/duplication state between two locations.  */
12181
12182 static void
12183 swap_insertion (struct bp_location *left, struct bp_location *right)
12184 {
12185   const int left_inserted = left->inserted;
12186   const int left_duplicate = left->duplicate;
12187   const int left_needs_update = left->needs_update;
12188   const struct bp_target_info left_target_info = left->target_info;
12189
12190   /* Locations of tracepoints can never be duplicated.  */
12191   if (is_tracepoint (left->owner))
12192     gdb_assert (!left->duplicate);
12193   if (is_tracepoint (right->owner))
12194     gdb_assert (!right->duplicate);
12195
12196   left->inserted = right->inserted;
12197   left->duplicate = right->duplicate;
12198   left->needs_update = right->needs_update;
12199   left->target_info = right->target_info;
12200   right->inserted = left_inserted;
12201   right->duplicate = left_duplicate;
12202   right->needs_update = left_needs_update;
12203   right->target_info = left_target_info;
12204 }
12205
12206 /* Force the re-insertion of the locations at ADDRESS.  This is called
12207    once a new/deleted/modified duplicate location is found and we are evaluating
12208    conditions on the target's side.  Such conditions need to be updated on
12209    the target.  */
12210
12211 static void
12212 force_breakpoint_reinsertion (struct bp_location *bl)
12213 {
12214   struct bp_location **locp = NULL, **loc2p;
12215   struct bp_location *loc;
12216   CORE_ADDR address = 0;
12217   int pspace_num;
12218
12219   address = bl->address;
12220   pspace_num = bl->pspace->num;
12221
12222   /* This is only meaningful if the target is
12223      evaluating conditions and if the user has
12224      opted for condition evaluation on the target's
12225      side.  */
12226   if (gdb_evaluates_breakpoint_condition_p ()
12227       || !target_supports_evaluation_of_breakpoint_conditions ())
12228     return;
12229
12230   /* Flag all breakpoint locations with this address and
12231      the same program space as the location
12232      as "its condition has changed".  We need to
12233      update the conditions on the target's side.  */
12234   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12235     {
12236       loc = *loc2p;
12237
12238       if (!is_breakpoint (loc->owner)
12239           || pspace_num != loc->pspace->num)
12240         continue;
12241
12242       /* Flag the location appropriately.  We use a different state to
12243          let everyone know that we already updated the set of locations
12244          with addr bl->address and program space bl->pspace.  This is so
12245          we don't have to keep calling these functions just to mark locations
12246          that have already been marked.  */
12247       loc->condition_changed = condition_updated;
12248
12249       /* Free the agent expression bytecode as well.  We will compute
12250          it later on.  */
12251       if (loc->cond_bytecode)
12252         {
12253           free_agent_expr (loc->cond_bytecode);
12254           loc->cond_bytecode = NULL;
12255         }
12256     }
12257 }
12258
12259 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12260    into the inferior, only remove already-inserted locations that no
12261    longer should be inserted.  Functions that delete a breakpoint or
12262    breakpoints should pass false, so that deleting a breakpoint
12263    doesn't have the side effect of inserting the locations of other
12264    breakpoints that are marked not-inserted, but should_be_inserted
12265    returns true on them.
12266
12267    This behaviour is useful is situations close to tear-down -- e.g.,
12268    after an exec, while the target still has execution, but breakpoint
12269    shadows of the previous executable image should *NOT* be restored
12270    to the new image; or before detaching, where the target still has
12271    execution and wants to delete breakpoints from GDB's lists, and all
12272    breakpoints had already been removed from the inferior.  */
12273
12274 static void
12275 update_global_location_list (int should_insert)
12276 {
12277   struct breakpoint *b;
12278   struct bp_location **locp, *loc;
12279   struct cleanup *cleanups;
12280   /* Last breakpoint location address that was marked for update.  */
12281   CORE_ADDR last_addr = 0;
12282   /* Last breakpoint location program space that was marked for update.  */
12283   int last_pspace_num = -1;
12284
12285   /* Used in the duplicates detection below.  When iterating over all
12286      bp_locations, points to the first bp_location of a given address.
12287      Breakpoints and watchpoints of different types are never
12288      duplicates of each other.  Keep one pointer for each type of
12289      breakpoint/watchpoint, so we only need to loop over all locations
12290      once.  */
12291   struct bp_location *bp_loc_first;  /* breakpoint */
12292   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12293   struct bp_location *awp_loc_first; /* access watchpoint */
12294   struct bp_location *rwp_loc_first; /* read watchpoint */
12295
12296   /* Saved former bp_location array which we compare against the newly
12297      built bp_location from the current state of ALL_BREAKPOINTS.  */
12298   struct bp_location **old_location, **old_locp;
12299   unsigned old_location_count;
12300
12301   old_location = bp_location;
12302   old_location_count = bp_location_count;
12303   bp_location = NULL;
12304   bp_location_count = 0;
12305   cleanups = make_cleanup (xfree, old_location);
12306
12307   ALL_BREAKPOINTS (b)
12308     for (loc = b->loc; loc; loc = loc->next)
12309       bp_location_count++;
12310
12311   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12312   locp = bp_location;
12313   ALL_BREAKPOINTS (b)
12314     for (loc = b->loc; loc; loc = loc->next)
12315       *locp++ = loc;
12316   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12317          bp_location_compare);
12318
12319   bp_location_target_extensions_update ();
12320
12321   /* Identify bp_location instances that are no longer present in the
12322      new list, and therefore should be freed.  Note that it's not
12323      necessary that those locations should be removed from inferior --
12324      if there's another location at the same address (previously
12325      marked as duplicate), we don't need to remove/insert the
12326      location.
12327      
12328      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12329      and former bp_location array state respectively.  */
12330
12331   locp = bp_location;
12332   for (old_locp = old_location; old_locp < old_location + old_location_count;
12333        old_locp++)
12334     {
12335       struct bp_location *old_loc = *old_locp;
12336       struct bp_location **loc2p;
12337
12338       /* Tells if 'old_loc' is found among the new locations.  If
12339          not, we have to free it.  */
12340       int found_object = 0;
12341       /* Tells if the location should remain inserted in the target.  */
12342       int keep_in_target = 0;
12343       int removed = 0;
12344
12345       /* Skip LOCP entries which will definitely never be needed.
12346          Stop either at or being the one matching OLD_LOC.  */
12347       while (locp < bp_location + bp_location_count
12348              && (*locp)->address < old_loc->address)
12349         locp++;
12350
12351       for (loc2p = locp;
12352            (loc2p < bp_location + bp_location_count
12353             && (*loc2p)->address == old_loc->address);
12354            loc2p++)
12355         {
12356           /* Check if this is a new/duplicated location or a duplicated
12357              location that had its condition modified.  If so, we want to send
12358              its condition to the target if evaluation of conditions is taking
12359              place there.  */
12360           if ((*loc2p)->condition_changed == condition_modified
12361               && (last_addr != old_loc->address
12362                   || last_pspace_num != old_loc->pspace->num))
12363             {
12364               force_breakpoint_reinsertion (*loc2p);
12365               last_pspace_num = old_loc->pspace->num;
12366             }
12367
12368           if (*loc2p == old_loc)
12369             found_object = 1;
12370         }
12371
12372       /* We have already handled this address, update it so that we don't
12373          have to go through updates again.  */
12374       last_addr = old_loc->address;
12375
12376       /* Target-side condition evaluation: Handle deleted locations.  */
12377       if (!found_object)
12378         force_breakpoint_reinsertion (old_loc);
12379
12380       /* If this location is no longer present, and inserted, look if
12381          there's maybe a new location at the same address.  If so,
12382          mark that one inserted, and don't remove this one.  This is
12383          needed so that we don't have a time window where a breakpoint
12384          at certain location is not inserted.  */
12385
12386       if (old_loc->inserted)
12387         {
12388           /* If the location is inserted now, we might have to remove
12389              it.  */
12390
12391           if (found_object && should_be_inserted (old_loc))
12392             {
12393               /* The location is still present in the location list,
12394                  and still should be inserted.  Don't do anything.  */
12395               keep_in_target = 1;
12396             }
12397           else
12398             {
12399               /* This location still exists, but it won't be kept in the
12400                  target since it may have been disabled.  We proceed to
12401                  remove its target-side condition.  */
12402
12403               /* The location is either no longer present, or got
12404                  disabled.  See if there's another location at the
12405                  same address, in which case we don't need to remove
12406                  this one from the target.  */
12407
12408               /* OLD_LOC comes from existing struct breakpoint.  */
12409               if (breakpoint_address_is_meaningful (old_loc->owner))
12410                 {
12411                   for (loc2p = locp;
12412                        (loc2p < bp_location + bp_location_count
12413                         && (*loc2p)->address == old_loc->address);
12414                        loc2p++)
12415                     {
12416                       struct bp_location *loc2 = *loc2p;
12417
12418                       if (breakpoint_locations_match (loc2, old_loc))
12419                         {
12420                           /* Read watchpoint locations are switched to
12421                              access watchpoints, if the former are not
12422                              supported, but the latter are.  */
12423                           if (is_hardware_watchpoint (old_loc->owner))
12424                             {
12425                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12426                               loc2->watchpoint_type = old_loc->watchpoint_type;
12427                             }
12428
12429                           /* loc2 is a duplicated location. We need to check
12430                              if it should be inserted in case it will be
12431                              unduplicated.  */
12432                           if (loc2 != old_loc
12433                               && unduplicated_should_be_inserted (loc2))
12434                             {
12435                               swap_insertion (old_loc, loc2);
12436                               keep_in_target = 1;
12437                               break;
12438                             }
12439                         }
12440                     }
12441                 }
12442             }
12443
12444           if (!keep_in_target)
12445             {
12446               if (remove_breakpoint (old_loc, mark_uninserted))
12447                 {
12448                   /* This is just about all we can do.  We could keep
12449                      this location on the global list, and try to
12450                      remove it next time, but there's no particular
12451                      reason why we will succeed next time.
12452                      
12453                      Note that at this point, old_loc->owner is still
12454                      valid, as delete_breakpoint frees the breakpoint
12455                      only after calling us.  */
12456                   printf_filtered (_("warning: Error removing "
12457                                      "breakpoint %d\n"), 
12458                                    old_loc->owner->number);
12459                 }
12460               removed = 1;
12461             }
12462         }
12463
12464       if (!found_object)
12465         {
12466           if (removed && non_stop
12467               && breakpoint_address_is_meaningful (old_loc->owner)
12468               && !is_hardware_watchpoint (old_loc->owner))
12469             {
12470               /* This location was removed from the target.  In
12471                  non-stop mode, a race condition is possible where
12472                  we've removed a breakpoint, but stop events for that
12473                  breakpoint are already queued and will arrive later.
12474                  We apply an heuristic to be able to distinguish such
12475                  SIGTRAPs from other random SIGTRAPs: we keep this
12476                  breakpoint location for a bit, and will retire it
12477                  after we see some number of events.  The theory here
12478                  is that reporting of events should, "on the average",
12479                  be fair, so after a while we'll see events from all
12480                  threads that have anything of interest, and no longer
12481                  need to keep this breakpoint location around.  We
12482                  don't hold locations forever so to reduce chances of
12483                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12484                  SIGTRAP.
12485
12486                  The heuristic failing can be disastrous on
12487                  decr_pc_after_break targets.
12488
12489                  On decr_pc_after_break targets, like e.g., x86-linux,
12490                  if we fail to recognize a late breakpoint SIGTRAP,
12491                  because events_till_retirement has reached 0 too
12492                  soon, we'll fail to do the PC adjustment, and report
12493                  a random SIGTRAP to the user.  When the user resumes
12494                  the inferior, it will most likely immediately crash
12495                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12496                  corrupted, because of being resumed e.g., in the
12497                  middle of a multi-byte instruction, or skipped a
12498                  one-byte instruction.  This was actually seen happen
12499                  on native x86-linux, and should be less rare on
12500                  targets that do not support new thread events, like
12501                  remote, due to the heuristic depending on
12502                  thread_count.
12503
12504                  Mistaking a random SIGTRAP for a breakpoint trap
12505                  causes similar symptoms (PC adjustment applied when
12506                  it shouldn't), but then again, playing with SIGTRAPs
12507                  behind the debugger's back is asking for trouble.
12508
12509                  Since hardware watchpoint traps are always
12510                  distinguishable from other traps, so we don't need to
12511                  apply keep hardware watchpoint moribund locations
12512                  around.  We simply always ignore hardware watchpoint
12513                  traps we can no longer explain.  */
12514
12515               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12516               old_loc->owner = NULL;
12517
12518               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12519             }
12520           else
12521             {
12522               old_loc->owner = NULL;
12523               decref_bp_location (&old_loc);
12524             }
12525         }
12526     }
12527
12528   /* Rescan breakpoints at the same address and section, marking the
12529      first one as "first" and any others as "duplicates".  This is so
12530      that the bpt instruction is only inserted once.  If we have a
12531      permanent breakpoint at the same place as BPT, make that one the
12532      official one, and the rest as duplicates.  Permanent breakpoints
12533      are sorted first for the same address.
12534
12535      Do the same for hardware watchpoints, but also considering the
12536      watchpoint's type (regular/access/read) and length.  */
12537
12538   bp_loc_first = NULL;
12539   wp_loc_first = NULL;
12540   awp_loc_first = NULL;
12541   rwp_loc_first = NULL;
12542   ALL_BP_LOCATIONS (loc, locp)
12543     {
12544       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12545          non-NULL.  */
12546       struct bp_location **loc_first_p;
12547       b = loc->owner;
12548
12549       if (!unduplicated_should_be_inserted (loc)
12550           || !breakpoint_address_is_meaningful (b)
12551           /* Don't detect duplicate for tracepoint locations because they are
12552            never duplicated.  See the comments in field `duplicate' of
12553            `struct bp_location'.  */
12554           || is_tracepoint (b))
12555         {
12556           /* Clear the condition modification flag.  */
12557           loc->condition_changed = condition_unchanged;
12558           continue;
12559         }
12560
12561       /* Permanent breakpoint should always be inserted.  */
12562       if (b->enable_state == bp_permanent && ! loc->inserted)
12563         internal_error (__FILE__, __LINE__,
12564                         _("allegedly permanent breakpoint is not "
12565                         "actually inserted"));
12566
12567       if (b->type == bp_hardware_watchpoint)
12568         loc_first_p = &wp_loc_first;
12569       else if (b->type == bp_read_watchpoint)
12570         loc_first_p = &rwp_loc_first;
12571       else if (b->type == bp_access_watchpoint)
12572         loc_first_p = &awp_loc_first;
12573       else
12574         loc_first_p = &bp_loc_first;
12575
12576       if (*loc_first_p == NULL
12577           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12578           || !breakpoint_locations_match (loc, *loc_first_p))
12579         {
12580           *loc_first_p = loc;
12581           loc->duplicate = 0;
12582
12583           if (is_breakpoint (loc->owner) && loc->condition_changed)
12584             {
12585               loc->needs_update = 1;
12586               /* Clear the condition modification flag.  */
12587               loc->condition_changed = condition_unchanged;
12588             }
12589           continue;
12590         }
12591
12592
12593       /* This and the above ensure the invariant that the first location
12594          is not duplicated, and is the inserted one.
12595          All following are marked as duplicated, and are not inserted.  */
12596       if (loc->inserted)
12597         swap_insertion (loc, *loc_first_p);
12598       loc->duplicate = 1;
12599
12600       /* Clear the condition modification flag.  */
12601       loc->condition_changed = condition_unchanged;
12602
12603       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12604           && b->enable_state != bp_permanent)
12605         internal_error (__FILE__, __LINE__,
12606                         _("another breakpoint was inserted on top of "
12607                         "a permanent breakpoint"));
12608     }
12609
12610   if (breakpoints_always_inserted_mode ()
12611       && (have_live_inferiors ()
12612           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12613     {
12614       if (should_insert)
12615         insert_breakpoint_locations ();
12616       else
12617         {
12618           /* Though should_insert is false, we may need to update conditions
12619              on the target's side if it is evaluating such conditions.  We
12620              only update conditions for locations that are marked
12621              "needs_update".  */
12622           update_inserted_breakpoint_locations ();
12623         }
12624     }
12625
12626   if (should_insert)
12627     download_tracepoint_locations ();
12628
12629   do_cleanups (cleanups);
12630 }
12631
12632 void
12633 breakpoint_retire_moribund (void)
12634 {
12635   struct bp_location *loc;
12636   int ix;
12637
12638   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12639     if (--(loc->events_till_retirement) == 0)
12640       {
12641         decref_bp_location (&loc);
12642         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12643         --ix;
12644       }
12645 }
12646
12647 static void
12648 update_global_location_list_nothrow (int inserting)
12649 {
12650   volatile struct gdb_exception e;
12651
12652   TRY_CATCH (e, RETURN_MASK_ERROR)
12653     update_global_location_list (inserting);
12654 }
12655
12656 /* Clear BKP from a BPS.  */
12657
12658 static void
12659 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12660 {
12661   bpstat bs;
12662
12663   for (bs = bps; bs; bs = bs->next)
12664     if (bs->breakpoint_at == bpt)
12665       {
12666         bs->breakpoint_at = NULL;
12667         bs->old_val = NULL;
12668         /* bs->commands will be freed later.  */
12669       }
12670 }
12671
12672 /* Callback for iterate_over_threads.  */
12673 static int
12674 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12675 {
12676   struct breakpoint *bpt = data;
12677
12678   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12679   return 0;
12680 }
12681
12682 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12683    callbacks.  */
12684
12685 static void
12686 say_where (struct breakpoint *b)
12687 {
12688   struct value_print_options opts;
12689
12690   get_user_print_options (&opts);
12691
12692   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12693      single string.  */
12694   if (b->loc == NULL)
12695     {
12696       printf_filtered (_(" (%s) pending."), b->addr_string);
12697     }
12698   else
12699     {
12700       if (opts.addressprint || b->loc->symtab == NULL)
12701         {
12702           printf_filtered (" at ");
12703           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12704                           gdb_stdout);
12705         }
12706       if (b->loc->symtab != NULL)
12707         {
12708           /* If there is a single location, we can print the location
12709              more nicely.  */
12710           if (b->loc->next == NULL)
12711             printf_filtered (": file %s, line %d.",
12712                              symtab_to_filename_for_display (b->loc->symtab),
12713                              b->loc->line_number);
12714           else
12715             /* This is not ideal, but each location may have a
12716                different file name, and this at least reflects the
12717                real situation somewhat.  */
12718             printf_filtered (": %s.", b->addr_string);
12719         }
12720
12721       if (b->loc->next)
12722         {
12723           struct bp_location *loc = b->loc;
12724           int n = 0;
12725           for (; loc; loc = loc->next)
12726             ++n;
12727           printf_filtered (" (%d locations)", n);
12728         }
12729     }
12730 }
12731
12732 /* Default bp_location_ops methods.  */
12733
12734 static void
12735 bp_location_dtor (struct bp_location *self)
12736 {
12737   xfree (self->cond);
12738   if (self->cond_bytecode)
12739     free_agent_expr (self->cond_bytecode);
12740   xfree (self->function_name);
12741 }
12742
12743 static const struct bp_location_ops bp_location_ops =
12744 {
12745   bp_location_dtor
12746 };
12747
12748 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12749    inherit from.  */
12750
12751 static void
12752 base_breakpoint_dtor (struct breakpoint *self)
12753 {
12754   decref_counted_command_line (&self->commands);
12755   xfree (self->cond_string);
12756   xfree (self->extra_string);
12757   xfree (self->addr_string);
12758   xfree (self->filter);
12759   xfree (self->addr_string_range_end);
12760 }
12761
12762 static struct bp_location *
12763 base_breakpoint_allocate_location (struct breakpoint *self)
12764 {
12765   struct bp_location *loc;
12766
12767   loc = XNEW (struct bp_location);
12768   init_bp_location (loc, &bp_location_ops, self);
12769   return loc;
12770 }
12771
12772 static void
12773 base_breakpoint_re_set (struct breakpoint *b)
12774 {
12775   /* Nothing to re-set. */
12776 }
12777
12778 #define internal_error_pure_virtual_called() \
12779   gdb_assert_not_reached ("pure virtual function called")
12780
12781 static int
12782 base_breakpoint_insert_location (struct bp_location *bl)
12783 {
12784   internal_error_pure_virtual_called ();
12785 }
12786
12787 static int
12788 base_breakpoint_remove_location (struct bp_location *bl)
12789 {
12790   internal_error_pure_virtual_called ();
12791 }
12792
12793 static int
12794 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12795                                 struct address_space *aspace,
12796                                 CORE_ADDR bp_addr,
12797                                 const struct target_waitstatus *ws)
12798 {
12799   internal_error_pure_virtual_called ();
12800 }
12801
12802 static void
12803 base_breakpoint_check_status (bpstat bs)
12804 {
12805   /* Always stop.   */
12806 }
12807
12808 /* A "works_in_software_mode" breakpoint_ops method that just internal
12809    errors.  */
12810
12811 static int
12812 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12813 {
12814   internal_error_pure_virtual_called ();
12815 }
12816
12817 /* A "resources_needed" breakpoint_ops method that just internal
12818    errors.  */
12819
12820 static int
12821 base_breakpoint_resources_needed (const struct bp_location *bl)
12822 {
12823   internal_error_pure_virtual_called ();
12824 }
12825
12826 static enum print_stop_action
12827 base_breakpoint_print_it (bpstat bs)
12828 {
12829   internal_error_pure_virtual_called ();
12830 }
12831
12832 static void
12833 base_breakpoint_print_one_detail (const struct breakpoint *self,
12834                                   struct ui_out *uiout)
12835 {
12836   /* nothing */
12837 }
12838
12839 static void
12840 base_breakpoint_print_mention (struct breakpoint *b)
12841 {
12842   internal_error_pure_virtual_called ();
12843 }
12844
12845 static void
12846 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12847 {
12848   internal_error_pure_virtual_called ();
12849 }
12850
12851 static void
12852 base_breakpoint_create_sals_from_address (char **arg,
12853                                           struct linespec_result *canonical,
12854                                           enum bptype type_wanted,
12855                                           char *addr_start,
12856                                           char **copy_arg)
12857 {
12858   internal_error_pure_virtual_called ();
12859 }
12860
12861 static void
12862 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12863                                         struct linespec_result *c,
12864                                         char *cond_string,
12865                                         char *extra_string,
12866                                         enum bptype type_wanted,
12867                                         enum bpdisp disposition,
12868                                         int thread,
12869                                         int task, int ignore_count,
12870                                         const struct breakpoint_ops *o,
12871                                         int from_tty, int enabled,
12872                                         int internal, unsigned flags)
12873 {
12874   internal_error_pure_virtual_called ();
12875 }
12876
12877 static void
12878 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12879                                  struct symtabs_and_lines *sals)
12880 {
12881   internal_error_pure_virtual_called ();
12882 }
12883
12884 /* The default 'explains_signal' method.  */
12885
12886 static enum bpstat_signal_value
12887 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12888 {
12889   return BPSTAT_SIGNAL_HIDE;
12890 }
12891
12892 /* The default "after_condition_true" method.  */
12893
12894 static void
12895 base_breakpoint_after_condition_true (struct bpstats *bs)
12896 {
12897   /* Nothing to do.   */
12898 }
12899
12900 struct breakpoint_ops base_breakpoint_ops =
12901 {
12902   base_breakpoint_dtor,
12903   base_breakpoint_allocate_location,
12904   base_breakpoint_re_set,
12905   base_breakpoint_insert_location,
12906   base_breakpoint_remove_location,
12907   base_breakpoint_breakpoint_hit,
12908   base_breakpoint_check_status,
12909   base_breakpoint_resources_needed,
12910   base_breakpoint_works_in_software_mode,
12911   base_breakpoint_print_it,
12912   NULL,
12913   base_breakpoint_print_one_detail,
12914   base_breakpoint_print_mention,
12915   base_breakpoint_print_recreate,
12916   base_breakpoint_create_sals_from_address,
12917   base_breakpoint_create_breakpoints_sal,
12918   base_breakpoint_decode_linespec,
12919   base_breakpoint_explains_signal,
12920   base_breakpoint_after_condition_true,
12921 };
12922
12923 /* Default breakpoint_ops methods.  */
12924
12925 static void
12926 bkpt_re_set (struct breakpoint *b)
12927 {
12928   /* FIXME: is this still reachable?  */
12929   if (b->addr_string == NULL)
12930     {
12931       /* Anything without a string can't be re-set.  */
12932       delete_breakpoint (b);
12933       return;
12934     }
12935
12936   breakpoint_re_set_default (b);
12937 }
12938
12939 static int
12940 bkpt_insert_location (struct bp_location *bl)
12941 {
12942   if (bl->loc_type == bp_loc_hardware_breakpoint)
12943     return target_insert_hw_breakpoint (bl->gdbarch,
12944                                         &bl->target_info);
12945   else
12946     return target_insert_breakpoint (bl->gdbarch,
12947                                      &bl->target_info);
12948 }
12949
12950 static int
12951 bkpt_remove_location (struct bp_location *bl)
12952 {
12953   if (bl->loc_type == bp_loc_hardware_breakpoint)
12954     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12955   else
12956     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12957 }
12958
12959 static int
12960 bkpt_breakpoint_hit (const struct bp_location *bl,
12961                      struct address_space *aspace, CORE_ADDR bp_addr,
12962                      const struct target_waitstatus *ws)
12963 {
12964   if (ws->kind != TARGET_WAITKIND_STOPPED
12965       || ws->value.sig != GDB_SIGNAL_TRAP)
12966     return 0;
12967
12968   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12969                                  aspace, bp_addr))
12970     return 0;
12971
12972   if (overlay_debugging         /* unmapped overlay section */
12973       && section_is_overlay (bl->section)
12974       && !section_is_mapped (bl->section))
12975     return 0;
12976
12977   return 1;
12978 }
12979
12980 static int
12981 bkpt_resources_needed (const struct bp_location *bl)
12982 {
12983   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12984
12985   return 1;
12986 }
12987
12988 static enum print_stop_action
12989 bkpt_print_it (bpstat bs)
12990 {
12991   struct breakpoint *b;
12992   const struct bp_location *bl;
12993   int bp_temp;
12994   struct ui_out *uiout = current_uiout;
12995
12996   gdb_assert (bs->bp_location_at != NULL);
12997
12998   bl = bs->bp_location_at;
12999   b = bs->breakpoint_at;
13000
13001   bp_temp = b->disposition == disp_del;
13002   if (bl->address != bl->requested_address)
13003     breakpoint_adjustment_warning (bl->requested_address,
13004                                    bl->address,
13005                                    b->number, 1);
13006   annotate_breakpoint (b->number);
13007   if (bp_temp)
13008     ui_out_text (uiout, "\nTemporary breakpoint ");
13009   else
13010     ui_out_text (uiout, "\nBreakpoint ");
13011   if (ui_out_is_mi_like_p (uiout))
13012     {
13013       ui_out_field_string (uiout, "reason",
13014                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13015       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13016     }
13017   ui_out_field_int (uiout, "bkptno", b->number);
13018   ui_out_text (uiout, ", ");
13019
13020   return PRINT_SRC_AND_LOC;
13021 }
13022
13023 static void
13024 bkpt_print_mention (struct breakpoint *b)
13025 {
13026   if (ui_out_is_mi_like_p (current_uiout))
13027     return;
13028
13029   switch (b->type)
13030     {
13031     case bp_breakpoint:
13032     case bp_gnu_ifunc_resolver:
13033       if (b->disposition == disp_del)
13034         printf_filtered (_("Temporary breakpoint"));
13035       else
13036         printf_filtered (_("Breakpoint"));
13037       printf_filtered (_(" %d"), b->number);
13038       if (b->type == bp_gnu_ifunc_resolver)
13039         printf_filtered (_(" at gnu-indirect-function resolver"));
13040       break;
13041     case bp_hardware_breakpoint:
13042       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13043       break;
13044     case bp_dprintf:
13045       printf_filtered (_("Dprintf %d"), b->number);
13046       break;
13047     }
13048
13049   say_where (b);
13050 }
13051
13052 static void
13053 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13054 {
13055   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13056     fprintf_unfiltered (fp, "tbreak");
13057   else if (tp->type == bp_breakpoint)
13058     fprintf_unfiltered (fp, "break");
13059   else if (tp->type == bp_hardware_breakpoint
13060            && tp->disposition == disp_del)
13061     fprintf_unfiltered (fp, "thbreak");
13062   else if (tp->type == bp_hardware_breakpoint)
13063     fprintf_unfiltered (fp, "hbreak");
13064   else
13065     internal_error (__FILE__, __LINE__,
13066                     _("unhandled breakpoint type %d"), (int) tp->type);
13067
13068   fprintf_unfiltered (fp, " %s", tp->addr_string);
13069   print_recreate_thread (tp, fp);
13070 }
13071
13072 static void
13073 bkpt_create_sals_from_address (char **arg,
13074                                struct linespec_result *canonical,
13075                                enum bptype type_wanted,
13076                                char *addr_start, char **copy_arg)
13077 {
13078   create_sals_from_address_default (arg, canonical, type_wanted,
13079                                     addr_start, copy_arg);
13080 }
13081
13082 static void
13083 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13084                              struct linespec_result *canonical,
13085                              char *cond_string,
13086                              char *extra_string,
13087                              enum bptype type_wanted,
13088                              enum bpdisp disposition,
13089                              int thread,
13090                              int task, int ignore_count,
13091                              const struct breakpoint_ops *ops,
13092                              int from_tty, int enabled,
13093                              int internal, unsigned flags)
13094 {
13095   create_breakpoints_sal_default (gdbarch, canonical,
13096                                   cond_string, extra_string,
13097                                   type_wanted,
13098                                   disposition, thread, task,
13099                                   ignore_count, ops, from_tty,
13100                                   enabled, internal, flags);
13101 }
13102
13103 static void
13104 bkpt_decode_linespec (struct breakpoint *b, char **s,
13105                       struct symtabs_and_lines *sals)
13106 {
13107   decode_linespec_default (b, s, sals);
13108 }
13109
13110 /* Virtual table for internal breakpoints.  */
13111
13112 static void
13113 internal_bkpt_re_set (struct breakpoint *b)
13114 {
13115   switch (b->type)
13116     {
13117       /* Delete overlay event and longjmp master breakpoints; they
13118          will be reset later by breakpoint_re_set.  */
13119     case bp_overlay_event:
13120     case bp_longjmp_master:
13121     case bp_std_terminate_master:
13122     case bp_exception_master:
13123       delete_breakpoint (b);
13124       break;
13125
13126       /* This breakpoint is special, it's set up when the inferior
13127          starts and we really don't want to touch it.  */
13128     case bp_shlib_event:
13129
13130       /* Like bp_shlib_event, this breakpoint type is special.  Once
13131          it is set up, we do not want to touch it.  */
13132     case bp_thread_event:
13133       break;
13134     }
13135 }
13136
13137 static void
13138 internal_bkpt_check_status (bpstat bs)
13139 {
13140   if (bs->breakpoint_at->type == bp_shlib_event)
13141     {
13142       /* If requested, stop when the dynamic linker notifies GDB of
13143          events.  This allows the user to get control and place
13144          breakpoints in initializer routines for dynamically loaded
13145          objects (among other things).  */
13146       bs->stop = stop_on_solib_events;
13147       bs->print = stop_on_solib_events;
13148     }
13149   else
13150     bs->stop = 0;
13151 }
13152
13153 static enum print_stop_action
13154 internal_bkpt_print_it (bpstat bs)
13155 {
13156   struct breakpoint *b;
13157
13158   b = bs->breakpoint_at;
13159
13160   switch (b->type)
13161     {
13162     case bp_shlib_event:
13163       /* Did we stop because the user set the stop_on_solib_events
13164          variable?  (If so, we report this as a generic, "Stopped due
13165          to shlib event" message.) */
13166       print_solib_event (0);
13167       break;
13168
13169     case bp_thread_event:
13170       /* Not sure how we will get here.
13171          GDB should not stop for these breakpoints.  */
13172       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13173       break;
13174
13175     case bp_overlay_event:
13176       /* By analogy with the thread event, GDB should not stop for these.  */
13177       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13178       break;
13179
13180     case bp_longjmp_master:
13181       /* These should never be enabled.  */
13182       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13183       break;
13184
13185     case bp_std_terminate_master:
13186       /* These should never be enabled.  */
13187       printf_filtered (_("std::terminate Master Breakpoint: "
13188                          "gdb should not stop!\n"));
13189       break;
13190
13191     case bp_exception_master:
13192       /* These should never be enabled.  */
13193       printf_filtered (_("Exception Master Breakpoint: "
13194                          "gdb should not stop!\n"));
13195       break;
13196     }
13197
13198   return PRINT_NOTHING;
13199 }
13200
13201 static void
13202 internal_bkpt_print_mention (struct breakpoint *b)
13203 {
13204   /* Nothing to mention.  These breakpoints are internal.  */
13205 }
13206
13207 /* Virtual table for momentary breakpoints  */
13208
13209 static void
13210 momentary_bkpt_re_set (struct breakpoint *b)
13211 {
13212   /* Keep temporary breakpoints, which can be encountered when we step
13213      over a dlopen call and solib_add is resetting the breakpoints.
13214      Otherwise these should have been blown away via the cleanup chain
13215      or by breakpoint_init_inferior when we rerun the executable.  */
13216 }
13217
13218 static void
13219 momentary_bkpt_check_status (bpstat bs)
13220 {
13221   /* Nothing.  The point of these breakpoints is causing a stop.  */
13222 }
13223
13224 static enum print_stop_action
13225 momentary_bkpt_print_it (bpstat bs)
13226 {
13227   struct ui_out *uiout = current_uiout;
13228
13229   if (ui_out_is_mi_like_p (uiout))
13230     {
13231       struct breakpoint *b = bs->breakpoint_at;
13232
13233       switch (b->type)
13234         {
13235         case bp_finish:
13236           ui_out_field_string
13237             (uiout, "reason",
13238              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13239           break;
13240
13241         case bp_until:
13242           ui_out_field_string
13243             (uiout, "reason",
13244              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13245           break;
13246         }
13247     }
13248
13249   return PRINT_UNKNOWN;
13250 }
13251
13252 static void
13253 momentary_bkpt_print_mention (struct breakpoint *b)
13254 {
13255   /* Nothing to mention.  These breakpoints are internal.  */
13256 }
13257
13258 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13259
13260    It gets cleared already on the removal of the first one of such placed
13261    breakpoints.  This is OK as they get all removed altogether.  */
13262
13263 static void
13264 longjmp_bkpt_dtor (struct breakpoint *self)
13265 {
13266   struct thread_info *tp = find_thread_id (self->thread);
13267
13268   if (tp)
13269     tp->initiating_frame = null_frame_id;
13270
13271   momentary_breakpoint_ops.dtor (self);
13272 }
13273
13274 /* Specific methods for probe breakpoints.  */
13275
13276 static int
13277 bkpt_probe_insert_location (struct bp_location *bl)
13278 {
13279   int v = bkpt_insert_location (bl);
13280
13281   if (v == 0)
13282     {
13283       /* The insertion was successful, now let's set the probe's semaphore
13284          if needed.  */
13285       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13286     }
13287
13288   return v;
13289 }
13290
13291 static int
13292 bkpt_probe_remove_location (struct bp_location *bl)
13293 {
13294   /* Let's clear the semaphore before removing the location.  */
13295   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13296
13297   return bkpt_remove_location (bl);
13298 }
13299
13300 static void
13301 bkpt_probe_create_sals_from_address (char **arg,
13302                                      struct linespec_result *canonical,
13303                                      enum bptype type_wanted,
13304                                      char *addr_start, char **copy_arg)
13305 {
13306   struct linespec_sals lsal;
13307
13308   lsal.sals = parse_probes (arg, canonical);
13309
13310   *copy_arg = xstrdup (canonical->addr_string);
13311   lsal.canonical = xstrdup (*copy_arg);
13312
13313   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13314 }
13315
13316 static void
13317 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13318                             struct symtabs_and_lines *sals)
13319 {
13320   *sals = parse_probes (s, NULL);
13321   if (!sals->sals)
13322     error (_("probe not found"));
13323 }
13324
13325 /* The breakpoint_ops structure to be used in tracepoints.  */
13326
13327 static void
13328 tracepoint_re_set (struct breakpoint *b)
13329 {
13330   breakpoint_re_set_default (b);
13331 }
13332
13333 static int
13334 tracepoint_breakpoint_hit (const struct bp_location *bl,
13335                            struct address_space *aspace, CORE_ADDR bp_addr,
13336                            const struct target_waitstatus *ws)
13337 {
13338   /* By definition, the inferior does not report stops at
13339      tracepoints.  */
13340   return 0;
13341 }
13342
13343 static void
13344 tracepoint_print_one_detail (const struct breakpoint *self,
13345                              struct ui_out *uiout)
13346 {
13347   struct tracepoint *tp = (struct tracepoint *) self;
13348   if (tp->static_trace_marker_id)
13349     {
13350       gdb_assert (self->type == bp_static_tracepoint);
13351
13352       ui_out_text (uiout, "\tmarker id is ");
13353       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13354                            tp->static_trace_marker_id);
13355       ui_out_text (uiout, "\n");
13356     }
13357 }
13358
13359 static void
13360 tracepoint_print_mention (struct breakpoint *b)
13361 {
13362   if (ui_out_is_mi_like_p (current_uiout))
13363     return;
13364
13365   switch (b->type)
13366     {
13367     case bp_tracepoint:
13368       printf_filtered (_("Tracepoint"));
13369       printf_filtered (_(" %d"), b->number);
13370       break;
13371     case bp_fast_tracepoint:
13372       printf_filtered (_("Fast tracepoint"));
13373       printf_filtered (_(" %d"), b->number);
13374       break;
13375     case bp_static_tracepoint:
13376       printf_filtered (_("Static tracepoint"));
13377       printf_filtered (_(" %d"), b->number);
13378       break;
13379     default:
13380       internal_error (__FILE__, __LINE__,
13381                       _("unhandled tracepoint type %d"), (int) b->type);
13382     }
13383
13384   say_where (b);
13385 }
13386
13387 static void
13388 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13389 {
13390   struct tracepoint *tp = (struct tracepoint *) self;
13391
13392   if (self->type == bp_fast_tracepoint)
13393     fprintf_unfiltered (fp, "ftrace");
13394   if (self->type == bp_static_tracepoint)
13395     fprintf_unfiltered (fp, "strace");
13396   else if (self->type == bp_tracepoint)
13397     fprintf_unfiltered (fp, "trace");
13398   else
13399     internal_error (__FILE__, __LINE__,
13400                     _("unhandled tracepoint type %d"), (int) self->type);
13401
13402   fprintf_unfiltered (fp, " %s", self->addr_string);
13403   print_recreate_thread (self, fp);
13404
13405   if (tp->pass_count)
13406     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13407 }
13408
13409 static void
13410 tracepoint_create_sals_from_address (char **arg,
13411                                      struct linespec_result *canonical,
13412                                      enum bptype type_wanted,
13413                                      char *addr_start, char **copy_arg)
13414 {
13415   create_sals_from_address_default (arg, canonical, type_wanted,
13416                                     addr_start, copy_arg);
13417 }
13418
13419 static void
13420 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13421                                    struct linespec_result *canonical,
13422                                    char *cond_string,
13423                                    char *extra_string,
13424                                    enum bptype type_wanted,
13425                                    enum bpdisp disposition,
13426                                    int thread,
13427                                    int task, int ignore_count,
13428                                    const struct breakpoint_ops *ops,
13429                                    int from_tty, int enabled,
13430                                    int internal, unsigned flags)
13431 {
13432   create_breakpoints_sal_default (gdbarch, canonical,
13433                                   cond_string, extra_string,
13434                                   type_wanted,
13435                                   disposition, thread, task,
13436                                   ignore_count, ops, from_tty,
13437                                   enabled, internal, flags);
13438 }
13439
13440 static void
13441 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13442                             struct symtabs_and_lines *sals)
13443 {
13444   decode_linespec_default (b, s, sals);
13445 }
13446
13447 struct breakpoint_ops tracepoint_breakpoint_ops;
13448
13449 /* The breakpoint_ops structure to be use on tracepoints placed in a
13450    static probe.  */
13451
13452 static void
13453 tracepoint_probe_create_sals_from_address (char **arg,
13454                                            struct linespec_result *canonical,
13455                                            enum bptype type_wanted,
13456                                            char *addr_start, char **copy_arg)
13457 {
13458   /* We use the same method for breakpoint on probes.  */
13459   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13460                                        addr_start, copy_arg);
13461 }
13462
13463 static void
13464 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13465                                   struct symtabs_and_lines *sals)
13466 {
13467   /* We use the same method for breakpoint on probes.  */
13468   bkpt_probe_decode_linespec (b, s, sals);
13469 }
13470
13471 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13472
13473 /* Dprintf breakpoint_ops methods.  */
13474
13475 static void
13476 dprintf_re_set (struct breakpoint *b)
13477 {
13478   breakpoint_re_set_default (b);
13479
13480   /* This breakpoint could have been pending, and be resolved now, and
13481      if so, we should now have the extra string.  If we don't, the
13482      dprintf was malformed when created, but we couldn't tell because
13483      we can't extract the extra string until the location is
13484      resolved.  */
13485   if (b->loc != NULL && b->extra_string == NULL)
13486     error (_("Format string required"));
13487
13488   /* 1 - connect to target 1, that can run breakpoint commands.
13489      2 - create a dprintf, which resolves fine.
13490      3 - disconnect from target 1
13491      4 - connect to target 2, that can NOT run breakpoint commands.
13492
13493      After steps #3/#4, you'll want the dprintf command list to
13494      be updated, because target 1 and 2 may well return different
13495      answers for target_can_run_breakpoint_commands().
13496      Given absence of finer grained resetting, we get to do
13497      it all the time.  */
13498   if (b->extra_string != NULL)
13499     update_dprintf_command_list (b);
13500 }
13501
13502 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13503
13504 static void
13505 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13506 {
13507   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13508                       tp->extra_string);
13509   print_recreate_thread (tp, fp);
13510 }
13511
13512 /* Implement the "after_condition_true" breakpoint_ops method for
13513    dprintf.
13514
13515    dprintf's are implemented with regular commands in their command
13516    list, but we run the commands here instead of before presenting the
13517    stop to the user, as dprintf's don't actually cause a stop.  This
13518    also makes it so that the commands of multiple dprintfs at the same
13519    address are all handled.  */
13520
13521 static void
13522 dprintf_after_condition_true (struct bpstats *bs)
13523 {
13524   struct cleanup *old_chain;
13525   struct bpstats tmp_bs = { NULL };
13526   struct bpstats *tmp_bs_p = &tmp_bs;
13527
13528   /* dprintf's never cause a stop.  This wasn't set in the
13529      check_status hook instead because that would make the dprintf's
13530      condition not be evaluated.  */
13531   bs->stop = 0;
13532
13533   /* Run the command list here.  Take ownership of it instead of
13534      copying.  We never want these commands to run later in
13535      bpstat_do_actions, if a breakpoint that causes a stop happens to
13536      be set at same address as this dprintf, or even if running the
13537      commands here throws.  */
13538   tmp_bs.commands = bs->commands;
13539   bs->commands = NULL;
13540   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13541
13542   bpstat_do_actions_1 (&tmp_bs_p);
13543
13544   /* 'tmp_bs.commands' will usually be NULL by now, but
13545      bpstat_do_actions_1 may return early without processing the whole
13546      list.  */
13547   do_cleanups (old_chain);
13548 }
13549
13550 /* The breakpoint_ops structure to be used on static tracepoints with
13551    markers (`-m').  */
13552
13553 static void
13554 strace_marker_create_sals_from_address (char **arg,
13555                                         struct linespec_result *canonical,
13556                                         enum bptype type_wanted,
13557                                         char *addr_start, char **copy_arg)
13558 {
13559   struct linespec_sals lsal;
13560
13561   lsal.sals = decode_static_tracepoint_spec (arg);
13562
13563   *copy_arg = savestring (addr_start, *arg - addr_start);
13564
13565   canonical->addr_string = xstrdup (*copy_arg);
13566   lsal.canonical = xstrdup (*copy_arg);
13567   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13568 }
13569
13570 static void
13571 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13572                                       struct linespec_result *canonical,
13573                                       char *cond_string,
13574                                       char *extra_string,
13575                                       enum bptype type_wanted,
13576                                       enum bpdisp disposition,
13577                                       int thread,
13578                                       int task, int ignore_count,
13579                                       const struct breakpoint_ops *ops,
13580                                       int from_tty, int enabled,
13581                                       int internal, unsigned flags)
13582 {
13583   int i;
13584   struct linespec_sals *lsal = VEC_index (linespec_sals,
13585                                           canonical->sals, 0);
13586
13587   /* If the user is creating a static tracepoint by marker id
13588      (strace -m MARKER_ID), then store the sals index, so that
13589      breakpoint_re_set can try to match up which of the newly
13590      found markers corresponds to this one, and, don't try to
13591      expand multiple locations for each sal, given than SALS
13592      already should contain all sals for MARKER_ID.  */
13593
13594   for (i = 0; i < lsal->sals.nelts; ++i)
13595     {
13596       struct symtabs_and_lines expanded;
13597       struct tracepoint *tp;
13598       struct cleanup *old_chain;
13599       char *addr_string;
13600
13601       expanded.nelts = 1;
13602       expanded.sals = &lsal->sals.sals[i];
13603
13604       addr_string = xstrdup (canonical->addr_string);
13605       old_chain = make_cleanup (xfree, addr_string);
13606
13607       tp = XCNEW (struct tracepoint);
13608       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13609                            addr_string, NULL,
13610                            cond_string, extra_string,
13611                            type_wanted, disposition,
13612                            thread, task, ignore_count, ops,
13613                            from_tty, enabled, internal, flags,
13614                            canonical->special_display);
13615       /* Given that its possible to have multiple markers with
13616          the same string id, if the user is creating a static
13617          tracepoint by marker id ("strace -m MARKER_ID"), then
13618          store the sals index, so that breakpoint_re_set can
13619          try to match up which of the newly found markers
13620          corresponds to this one  */
13621       tp->static_trace_marker_id_idx = i;
13622
13623       install_breakpoint (internal, &tp->base, 0);
13624
13625       discard_cleanups (old_chain);
13626     }
13627 }
13628
13629 static void
13630 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13631                                struct symtabs_and_lines *sals)
13632 {
13633   struct tracepoint *tp = (struct tracepoint *) b;
13634
13635   *sals = decode_static_tracepoint_spec (s);
13636   if (sals->nelts > tp->static_trace_marker_id_idx)
13637     {
13638       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13639       sals->nelts = 1;
13640     }
13641   else
13642     error (_("marker %s not found"), tp->static_trace_marker_id);
13643 }
13644
13645 static struct breakpoint_ops strace_marker_breakpoint_ops;
13646
13647 static int
13648 strace_marker_p (struct breakpoint *b)
13649 {
13650   return b->ops == &strace_marker_breakpoint_ops;
13651 }
13652
13653 /* Delete a breakpoint and clean up all traces of it in the data
13654    structures.  */
13655
13656 void
13657 delete_breakpoint (struct breakpoint *bpt)
13658 {
13659   struct breakpoint *b;
13660
13661   gdb_assert (bpt != NULL);
13662
13663   /* Has this bp already been deleted?  This can happen because
13664      multiple lists can hold pointers to bp's.  bpstat lists are
13665      especial culprits.
13666
13667      One example of this happening is a watchpoint's scope bp.  When
13668      the scope bp triggers, we notice that the watchpoint is out of
13669      scope, and delete it.  We also delete its scope bp.  But the
13670      scope bp is marked "auto-deleting", and is already on a bpstat.
13671      That bpstat is then checked for auto-deleting bp's, which are
13672      deleted.
13673
13674      A real solution to this problem might involve reference counts in
13675      bp's, and/or giving them pointers back to their referencing
13676      bpstat's, and teaching delete_breakpoint to only free a bp's
13677      storage when no more references were extent.  A cheaper bandaid
13678      was chosen.  */
13679   if (bpt->type == bp_none)
13680     return;
13681
13682   /* At least avoid this stale reference until the reference counting
13683      of breakpoints gets resolved.  */
13684   if (bpt->related_breakpoint != bpt)
13685     {
13686       struct breakpoint *related;
13687       struct watchpoint *w;
13688
13689       if (bpt->type == bp_watchpoint_scope)
13690         w = (struct watchpoint *) bpt->related_breakpoint;
13691       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13692         w = (struct watchpoint *) bpt;
13693       else
13694         w = NULL;
13695       if (w != NULL)
13696         watchpoint_del_at_next_stop (w);
13697
13698       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13699       for (related = bpt; related->related_breakpoint != bpt;
13700            related = related->related_breakpoint);
13701       related->related_breakpoint = bpt->related_breakpoint;
13702       bpt->related_breakpoint = bpt;
13703     }
13704
13705   /* watch_command_1 creates a watchpoint but only sets its number if
13706      update_watchpoint succeeds in creating its bp_locations.  If there's
13707      a problem in that process, we'll be asked to delete the half-created
13708      watchpoint.  In that case, don't announce the deletion.  */
13709   if (bpt->number)
13710     observer_notify_breakpoint_deleted (bpt);
13711
13712   if (breakpoint_chain == bpt)
13713     breakpoint_chain = bpt->next;
13714
13715   ALL_BREAKPOINTS (b)
13716     if (b->next == bpt)
13717     {
13718       b->next = bpt->next;
13719       break;
13720     }
13721
13722   /* Be sure no bpstat's are pointing at the breakpoint after it's
13723      been freed.  */
13724   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13725      in all threads for now.  Note that we cannot just remove bpstats
13726      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13727      commands are associated with the bpstat; if we remove it here,
13728      then the later call to bpstat_do_actions (&stop_bpstat); in
13729      event-top.c won't do anything, and temporary breakpoints with
13730      commands won't work.  */
13731
13732   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13733
13734   /* Now that breakpoint is removed from breakpoint list, update the
13735      global location list.  This will remove locations that used to
13736      belong to this breakpoint.  Do this before freeing the breakpoint
13737      itself, since remove_breakpoint looks at location's owner.  It
13738      might be better design to have location completely
13739      self-contained, but it's not the case now.  */
13740   update_global_location_list (0);
13741
13742   bpt->ops->dtor (bpt);
13743   /* On the chance that someone will soon try again to delete this
13744      same bp, we mark it as deleted before freeing its storage.  */
13745   bpt->type = bp_none;
13746   xfree (bpt);
13747 }
13748
13749 static void
13750 do_delete_breakpoint_cleanup (void *b)
13751 {
13752   delete_breakpoint (b);
13753 }
13754
13755 struct cleanup *
13756 make_cleanup_delete_breakpoint (struct breakpoint *b)
13757 {
13758   return make_cleanup (do_delete_breakpoint_cleanup, b);
13759 }
13760
13761 /* Iterator function to call a user-provided callback function once
13762    for each of B and its related breakpoints.  */
13763
13764 static void
13765 iterate_over_related_breakpoints (struct breakpoint *b,
13766                                   void (*function) (struct breakpoint *,
13767                                                     void *),
13768                                   void *data)
13769 {
13770   struct breakpoint *related;
13771
13772   related = b;
13773   do
13774     {
13775       struct breakpoint *next;
13776
13777       /* FUNCTION may delete RELATED.  */
13778       next = related->related_breakpoint;
13779
13780       if (next == related)
13781         {
13782           /* RELATED is the last ring entry.  */
13783           function (related, data);
13784
13785           /* FUNCTION may have deleted it, so we'd never reach back to
13786              B.  There's nothing left to do anyway, so just break
13787              out.  */
13788           break;
13789         }
13790       else
13791         function (related, data);
13792
13793       related = next;
13794     }
13795   while (related != b);
13796 }
13797
13798 static void
13799 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13800 {
13801   delete_breakpoint (b);
13802 }
13803
13804 /* A callback for map_breakpoint_numbers that calls
13805    delete_breakpoint.  */
13806
13807 static void
13808 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13809 {
13810   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13811 }
13812
13813 void
13814 delete_command (char *arg, int from_tty)
13815 {
13816   struct breakpoint *b, *b_tmp;
13817
13818   dont_repeat ();
13819
13820   if (arg == 0)
13821     {
13822       int breaks_to_delete = 0;
13823
13824       /* Delete all breakpoints if no argument.  Do not delete
13825          internal breakpoints, these have to be deleted with an
13826          explicit breakpoint number argument.  */
13827       ALL_BREAKPOINTS (b)
13828         if (user_breakpoint_p (b))
13829           {
13830             breaks_to_delete = 1;
13831             break;
13832           }
13833
13834       /* Ask user only if there are some breakpoints to delete.  */
13835       if (!from_tty
13836           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13837         {
13838           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13839             if (user_breakpoint_p (b))
13840               delete_breakpoint (b);
13841         }
13842     }
13843   else
13844     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13845 }
13846
13847 static int
13848 all_locations_are_pending (struct bp_location *loc)
13849 {
13850   for (; loc; loc = loc->next)
13851     if (!loc->shlib_disabled
13852         && !loc->pspace->executing_startup)
13853       return 0;
13854   return 1;
13855 }
13856
13857 /* Subroutine of update_breakpoint_locations to simplify it.
13858    Return non-zero if multiple fns in list LOC have the same name.
13859    Null names are ignored.  */
13860
13861 static int
13862 ambiguous_names_p (struct bp_location *loc)
13863 {
13864   struct bp_location *l;
13865   htab_t htab = htab_create_alloc (13, htab_hash_string,
13866                                    (int (*) (const void *, 
13867                                              const void *)) streq,
13868                                    NULL, xcalloc, xfree);
13869
13870   for (l = loc; l != NULL; l = l->next)
13871     {
13872       const char **slot;
13873       const char *name = l->function_name;
13874
13875       /* Allow for some names to be NULL, ignore them.  */
13876       if (name == NULL)
13877         continue;
13878
13879       slot = (const char **) htab_find_slot (htab, (const void *) name,
13880                                              INSERT);
13881       /* NOTE: We can assume slot != NULL here because xcalloc never
13882          returns NULL.  */
13883       if (*slot != NULL)
13884         {
13885           htab_delete (htab);
13886           return 1;
13887         }
13888       *slot = name;
13889     }
13890
13891   htab_delete (htab);
13892   return 0;
13893 }
13894
13895 /* When symbols change, it probably means the sources changed as well,
13896    and it might mean the static tracepoint markers are no longer at
13897    the same address or line numbers they used to be at last we
13898    checked.  Losing your static tracepoints whenever you rebuild is
13899    undesirable.  This function tries to resync/rematch gdb static
13900    tracepoints with the markers on the target, for static tracepoints
13901    that have not been set by marker id.  Static tracepoint that have
13902    been set by marker id are reset by marker id in breakpoint_re_set.
13903    The heuristic is:
13904
13905    1) For a tracepoint set at a specific address, look for a marker at
13906    the old PC.  If one is found there, assume to be the same marker.
13907    If the name / string id of the marker found is different from the
13908    previous known name, assume that means the user renamed the marker
13909    in the sources, and output a warning.
13910
13911    2) For a tracepoint set at a given line number, look for a marker
13912    at the new address of the old line number.  If one is found there,
13913    assume to be the same marker.  If the name / string id of the
13914    marker found is different from the previous known name, assume that
13915    means the user renamed the marker in the sources, and output a
13916    warning.
13917
13918    3) If a marker is no longer found at the same address or line, it
13919    may mean the marker no longer exists.  But it may also just mean
13920    the code changed a bit.  Maybe the user added a few lines of code
13921    that made the marker move up or down (in line number terms).  Ask
13922    the target for info about the marker with the string id as we knew
13923    it.  If found, update line number and address in the matching
13924    static tracepoint.  This will get confused if there's more than one
13925    marker with the same ID (possible in UST, although unadvised
13926    precisely because it confuses tools).  */
13927
13928 static struct symtab_and_line
13929 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13930 {
13931   struct tracepoint *tp = (struct tracepoint *) b;
13932   struct static_tracepoint_marker marker;
13933   CORE_ADDR pc;
13934
13935   pc = sal.pc;
13936   if (sal.line)
13937     find_line_pc (sal.symtab, sal.line, &pc);
13938
13939   if (target_static_tracepoint_marker_at (pc, &marker))
13940     {
13941       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13942         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13943                  b->number,
13944                  tp->static_trace_marker_id, marker.str_id);
13945
13946       xfree (tp->static_trace_marker_id);
13947       tp->static_trace_marker_id = xstrdup (marker.str_id);
13948       release_static_tracepoint_marker (&marker);
13949
13950       return sal;
13951     }
13952
13953   /* Old marker wasn't found on target at lineno.  Try looking it up
13954      by string ID.  */
13955   if (!sal.explicit_pc
13956       && sal.line != 0
13957       && sal.symtab != NULL
13958       && tp->static_trace_marker_id != NULL)
13959     {
13960       VEC(static_tracepoint_marker_p) *markers;
13961
13962       markers
13963         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13964
13965       if (!VEC_empty(static_tracepoint_marker_p, markers))
13966         {
13967           struct symtab_and_line sal2;
13968           struct symbol *sym;
13969           struct static_tracepoint_marker *tpmarker;
13970           struct ui_out *uiout = current_uiout;
13971
13972           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13973
13974           xfree (tp->static_trace_marker_id);
13975           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13976
13977           warning (_("marker for static tracepoint %d (%s) not "
13978                      "found at previous line number"),
13979                    b->number, tp->static_trace_marker_id);
13980
13981           init_sal (&sal2);
13982
13983           sal2.pc = tpmarker->address;
13984
13985           sal2 = find_pc_line (tpmarker->address, 0);
13986           sym = find_pc_sect_function (tpmarker->address, NULL);
13987           ui_out_text (uiout, "Now in ");
13988           if (sym)
13989             {
13990               ui_out_field_string (uiout, "func",
13991                                    SYMBOL_PRINT_NAME (sym));
13992               ui_out_text (uiout, " at ");
13993             }
13994           ui_out_field_string (uiout, "file",
13995                                symtab_to_filename_for_display (sal2.symtab));
13996           ui_out_text (uiout, ":");
13997
13998           if (ui_out_is_mi_like_p (uiout))
13999             {
14000               const char *fullname = symtab_to_fullname (sal2.symtab);
14001
14002               ui_out_field_string (uiout, "fullname", fullname);
14003             }
14004
14005           ui_out_field_int (uiout, "line", sal2.line);
14006           ui_out_text (uiout, "\n");
14007
14008           b->loc->line_number = sal2.line;
14009           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14010
14011           xfree (b->addr_string);
14012           b->addr_string = xstrprintf ("%s:%d",
14013                                    symtab_to_filename_for_display (sal2.symtab),
14014                                        b->loc->line_number);
14015
14016           /* Might be nice to check if function changed, and warn if
14017              so.  */
14018
14019           release_static_tracepoint_marker (tpmarker);
14020         }
14021     }
14022   return sal;
14023 }
14024
14025 /* Returns 1 iff locations A and B are sufficiently same that
14026    we don't need to report breakpoint as changed.  */
14027
14028 static int
14029 locations_are_equal (struct bp_location *a, struct bp_location *b)
14030 {
14031   while (a && b)
14032     {
14033       if (a->address != b->address)
14034         return 0;
14035
14036       if (a->shlib_disabled != b->shlib_disabled)
14037         return 0;
14038
14039       if (a->enabled != b->enabled)
14040         return 0;
14041
14042       a = a->next;
14043       b = b->next;
14044     }
14045
14046   if ((a == NULL) != (b == NULL))
14047     return 0;
14048
14049   return 1;
14050 }
14051
14052 /* Create new breakpoint locations for B (a hardware or software breakpoint)
14053    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
14054    a ranged breakpoint.  */
14055
14056 void
14057 update_breakpoint_locations (struct breakpoint *b,
14058                              struct symtabs_and_lines sals,
14059                              struct symtabs_and_lines sals_end)
14060 {
14061   int i;
14062   struct bp_location *existing_locations = b->loc;
14063
14064   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14065     {
14066       /* Ranged breakpoints have only one start location and one end
14067          location.  */
14068       b->enable_state = bp_disabled;
14069       update_global_location_list (1);
14070       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14071                            "multiple locations found\n"),
14072                          b->number);
14073       return;
14074     }
14075
14076   /* If there's no new locations, and all existing locations are
14077      pending, don't do anything.  This optimizes the common case where
14078      all locations are in the same shared library, that was unloaded.
14079      We'd like to retain the location, so that when the library is
14080      loaded again, we don't loose the enabled/disabled status of the
14081      individual locations.  */
14082   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14083     return;
14084
14085   b->loc = NULL;
14086
14087   for (i = 0; i < sals.nelts; ++i)
14088     {
14089       struct bp_location *new_loc;
14090
14091       switch_to_program_space_and_thread (sals.sals[i].pspace);
14092
14093       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14094
14095       /* Reparse conditions, they might contain references to the
14096          old symtab.  */
14097       if (b->cond_string != NULL)
14098         {
14099           const char *s;
14100           volatile struct gdb_exception e;
14101
14102           s = b->cond_string;
14103           TRY_CATCH (e, RETURN_MASK_ERROR)
14104             {
14105               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14106                                            block_for_pc (sals.sals[i].pc), 
14107                                            0);
14108             }
14109           if (e.reason < 0)
14110             {
14111               warning (_("failed to reevaluate condition "
14112                          "for breakpoint %d: %s"), 
14113                        b->number, e.message);
14114               new_loc->enabled = 0;
14115             }
14116         }
14117
14118       if (sals_end.nelts)
14119         {
14120           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14121
14122           new_loc->length = end - sals.sals[0].pc + 1;
14123         }
14124     }
14125
14126   /* Update locations of permanent breakpoints.  */
14127   if (b->enable_state == bp_permanent)
14128     make_breakpoint_permanent (b);
14129
14130   /* If possible, carry over 'disable' status from existing
14131      breakpoints.  */
14132   {
14133     struct bp_location *e = existing_locations;
14134     /* If there are multiple breakpoints with the same function name,
14135        e.g. for inline functions, comparing function names won't work.
14136        Instead compare pc addresses; this is just a heuristic as things
14137        may have moved, but in practice it gives the correct answer
14138        often enough until a better solution is found.  */
14139     int have_ambiguous_names = ambiguous_names_p (b->loc);
14140
14141     for (; e; e = e->next)
14142       {
14143         if (!e->enabled && e->function_name)
14144           {
14145             struct bp_location *l = b->loc;
14146             if (have_ambiguous_names)
14147               {
14148                 for (; l; l = l->next)
14149                   if (breakpoint_locations_match (e, l))
14150                     {
14151                       l->enabled = 0;
14152                       break;
14153                     }
14154               }
14155             else
14156               {
14157                 for (; l; l = l->next)
14158                   if (l->function_name
14159                       && strcmp (e->function_name, l->function_name) == 0)
14160                     {
14161                       l->enabled = 0;
14162                       break;
14163                     }
14164               }
14165           }
14166       }
14167   }
14168
14169   if (!locations_are_equal (existing_locations, b->loc))
14170     observer_notify_breakpoint_modified (b);
14171
14172   update_global_location_list (1);
14173 }
14174
14175 /* Find the SaL locations corresponding to the given ADDR_STRING.
14176    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14177
14178 static struct symtabs_and_lines
14179 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14180 {
14181   char *s;
14182   struct symtabs_and_lines sals = {0};
14183   volatile struct gdb_exception e;
14184
14185   gdb_assert (b->ops != NULL);
14186   s = addr_string;
14187
14188   TRY_CATCH (e, RETURN_MASK_ERROR)
14189     {
14190       b->ops->decode_linespec (b, &s, &sals);
14191     }
14192   if (e.reason < 0)
14193     {
14194       int not_found_and_ok = 0;
14195       /* For pending breakpoints, it's expected that parsing will
14196          fail until the right shared library is loaded.  User has
14197          already told to create pending breakpoints and don't need
14198          extra messages.  If breakpoint is in bp_shlib_disabled
14199          state, then user already saw the message about that
14200          breakpoint being disabled, and don't want to see more
14201          errors.  */
14202       if (e.error == NOT_FOUND_ERROR
14203           && (b->condition_not_parsed 
14204               || (b->loc && b->loc->shlib_disabled)
14205               || (b->loc && b->loc->pspace->executing_startup)
14206               || b->enable_state == bp_disabled))
14207         not_found_and_ok = 1;
14208
14209       if (!not_found_and_ok)
14210         {
14211           /* We surely don't want to warn about the same breakpoint
14212              10 times.  One solution, implemented here, is disable
14213              the breakpoint on error.  Another solution would be to
14214              have separate 'warning emitted' flag.  Since this
14215              happens only when a binary has changed, I don't know
14216              which approach is better.  */
14217           b->enable_state = bp_disabled;
14218           throw_exception (e);
14219         }
14220     }
14221
14222   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14223     {
14224       int i;
14225
14226       for (i = 0; i < sals.nelts; ++i)
14227         resolve_sal_pc (&sals.sals[i]);
14228       if (b->condition_not_parsed && s && s[0])
14229         {
14230           char *cond_string, *extra_string;
14231           int thread, task;
14232
14233           find_condition_and_thread (s, sals.sals[0].pc,
14234                                      &cond_string, &thread, &task,
14235                                      &extra_string);
14236           if (cond_string)
14237             b->cond_string = cond_string;
14238           b->thread = thread;
14239           b->task = task;
14240           if (extra_string)
14241             b->extra_string = extra_string;
14242           b->condition_not_parsed = 0;
14243         }
14244
14245       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14246         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14247
14248       *found = 1;
14249     }
14250   else
14251     *found = 0;
14252
14253   return sals;
14254 }
14255
14256 /* The default re_set method, for typical hardware or software
14257    breakpoints.  Reevaluate the breakpoint and recreate its
14258    locations.  */
14259
14260 static void
14261 breakpoint_re_set_default (struct breakpoint *b)
14262 {
14263   int found;
14264   struct symtabs_and_lines sals, sals_end;
14265   struct symtabs_and_lines expanded = {0};
14266   struct symtabs_and_lines expanded_end = {0};
14267
14268   sals = addr_string_to_sals (b, b->addr_string, &found);
14269   if (found)
14270     {
14271       make_cleanup (xfree, sals.sals);
14272       expanded = sals;
14273     }
14274
14275   if (b->addr_string_range_end)
14276     {
14277       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14278       if (found)
14279         {
14280           make_cleanup (xfree, sals_end.sals);
14281           expanded_end = sals_end;
14282         }
14283     }
14284
14285   update_breakpoint_locations (b, expanded, expanded_end);
14286 }
14287
14288 /* Default method for creating SALs from an address string.  It basically
14289    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14290
14291 static void
14292 create_sals_from_address_default (char **arg,
14293                                   struct linespec_result *canonical,
14294                                   enum bptype type_wanted,
14295                                   char *addr_start, char **copy_arg)
14296 {
14297   parse_breakpoint_sals (arg, canonical);
14298 }
14299
14300 /* Call create_breakpoints_sal for the given arguments.  This is the default
14301    function for the `create_breakpoints_sal' method of
14302    breakpoint_ops.  */
14303
14304 static void
14305 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14306                                 struct linespec_result *canonical,
14307                                 char *cond_string,
14308                                 char *extra_string,
14309                                 enum bptype type_wanted,
14310                                 enum bpdisp disposition,
14311                                 int thread,
14312                                 int task, int ignore_count,
14313                                 const struct breakpoint_ops *ops,
14314                                 int from_tty, int enabled,
14315                                 int internal, unsigned flags)
14316 {
14317   create_breakpoints_sal (gdbarch, canonical, cond_string,
14318                           extra_string,
14319                           type_wanted, disposition,
14320                           thread, task, ignore_count, ops, from_tty,
14321                           enabled, internal, flags);
14322 }
14323
14324 /* Decode the line represented by S by calling decode_line_full.  This is the
14325    default function for the `decode_linespec' method of breakpoint_ops.  */
14326
14327 static void
14328 decode_linespec_default (struct breakpoint *b, char **s,
14329                          struct symtabs_and_lines *sals)
14330 {
14331   struct linespec_result canonical;
14332
14333   init_linespec_result (&canonical);
14334   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14335                     (struct symtab *) NULL, 0,
14336                     &canonical, multiple_symbols_all,
14337                     b->filter);
14338
14339   /* We should get 0 or 1 resulting SALs.  */
14340   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14341
14342   if (VEC_length (linespec_sals, canonical.sals) > 0)
14343     {
14344       struct linespec_sals *lsal;
14345
14346       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14347       *sals = lsal->sals;
14348       /* Arrange it so the destructor does not free the
14349          contents.  */
14350       lsal->sals.sals = NULL;
14351     }
14352
14353   destroy_linespec_result (&canonical);
14354 }
14355
14356 /* Prepare the global context for a re-set of breakpoint B.  */
14357
14358 static struct cleanup *
14359 prepare_re_set_context (struct breakpoint *b)
14360 {
14361   struct cleanup *cleanups;
14362
14363   input_radix = b->input_radix;
14364   cleanups = save_current_space_and_thread ();
14365   if (b->pspace != NULL)
14366     switch_to_program_space_and_thread (b->pspace);
14367   set_language (b->language);
14368
14369   return cleanups;
14370 }
14371
14372 /* Reset a breakpoint given it's struct breakpoint * BINT.
14373    The value we return ends up being the return value from catch_errors.
14374    Unused in this case.  */
14375
14376 static int
14377 breakpoint_re_set_one (void *bint)
14378 {
14379   /* Get past catch_errs.  */
14380   struct breakpoint *b = (struct breakpoint *) bint;
14381   struct cleanup *cleanups;
14382
14383   cleanups = prepare_re_set_context (b);
14384   b->ops->re_set (b);
14385   do_cleanups (cleanups);
14386   return 0;
14387 }
14388
14389 /* Re-set all breakpoints after symbols have been re-loaded.  */
14390 void
14391 breakpoint_re_set (void)
14392 {
14393   struct breakpoint *b, *b_tmp;
14394   enum language save_language;
14395   int save_input_radix;
14396   struct cleanup *old_chain;
14397
14398   save_language = current_language->la_language;
14399   save_input_radix = input_radix;
14400   old_chain = save_current_program_space ();
14401
14402   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14403   {
14404     /* Format possible error msg.  */
14405     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14406                                 b->number);
14407     struct cleanup *cleanups = make_cleanup (xfree, message);
14408     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14409     do_cleanups (cleanups);
14410   }
14411   set_language (save_language);
14412   input_radix = save_input_radix;
14413
14414   jit_breakpoint_re_set ();
14415
14416   do_cleanups (old_chain);
14417
14418   create_overlay_event_breakpoint ();
14419   create_longjmp_master_breakpoint ();
14420   create_std_terminate_master_breakpoint ();
14421   create_exception_master_breakpoint ();
14422 }
14423 \f
14424 /* Reset the thread number of this breakpoint:
14425
14426    - If the breakpoint is for all threads, leave it as-is.
14427    - Else, reset it to the current thread for inferior_ptid.  */
14428 void
14429 breakpoint_re_set_thread (struct breakpoint *b)
14430 {
14431   if (b->thread != -1)
14432     {
14433       if (in_thread_list (inferior_ptid))
14434         b->thread = pid_to_thread_id (inferior_ptid);
14435
14436       /* We're being called after following a fork.  The new fork is
14437          selected as current, and unless this was a vfork will have a
14438          different program space from the original thread.  Reset that
14439          as well.  */
14440       b->loc->pspace = current_program_space;
14441     }
14442 }
14443
14444 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14445    If from_tty is nonzero, it prints a message to that effect,
14446    which ends with a period (no newline).  */
14447
14448 void
14449 set_ignore_count (int bptnum, int count, int from_tty)
14450 {
14451   struct breakpoint *b;
14452
14453   if (count < 0)
14454     count = 0;
14455
14456   ALL_BREAKPOINTS (b)
14457     if (b->number == bptnum)
14458     {
14459       if (is_tracepoint (b))
14460         {
14461           if (from_tty && count != 0)
14462             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14463                              bptnum);
14464           return;
14465         }
14466       
14467       b->ignore_count = count;
14468       if (from_tty)
14469         {
14470           if (count == 0)
14471             printf_filtered (_("Will stop next time "
14472                                "breakpoint %d is reached."),
14473                              bptnum);
14474           else if (count == 1)
14475             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14476                              bptnum);
14477           else
14478             printf_filtered (_("Will ignore next %d "
14479                                "crossings of breakpoint %d."),
14480                              count, bptnum);
14481         }
14482       observer_notify_breakpoint_modified (b);
14483       return;
14484     }
14485
14486   error (_("No breakpoint number %d."), bptnum);
14487 }
14488
14489 /* Command to set ignore-count of breakpoint N to COUNT.  */
14490
14491 static void
14492 ignore_command (char *args, int from_tty)
14493 {
14494   char *p = args;
14495   int num;
14496
14497   if (p == 0)
14498     error_no_arg (_("a breakpoint number"));
14499
14500   num = get_number (&p);
14501   if (num == 0)
14502     error (_("bad breakpoint number: '%s'"), args);
14503   if (*p == 0)
14504     error (_("Second argument (specified ignore-count) is missing."));
14505
14506   set_ignore_count (num,
14507                     longest_to_int (value_as_long (parse_and_eval (p))),
14508                     from_tty);
14509   if (from_tty)
14510     printf_filtered ("\n");
14511 }
14512 \f
14513 /* Call FUNCTION on each of the breakpoints
14514    whose numbers are given in ARGS.  */
14515
14516 static void
14517 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14518                                                       void *),
14519                         void *data)
14520 {
14521   int num;
14522   struct breakpoint *b, *tmp;
14523   int match;
14524   struct get_number_or_range_state state;
14525
14526   if (args == 0)
14527     error_no_arg (_("one or more breakpoint numbers"));
14528
14529   init_number_or_range (&state, args);
14530
14531   while (!state.finished)
14532     {
14533       char *p = state.string;
14534
14535       match = 0;
14536
14537       num = get_number_or_range (&state);
14538       if (num == 0)
14539         {
14540           warning (_("bad breakpoint number at or near '%s'"), p);
14541         }
14542       else
14543         {
14544           ALL_BREAKPOINTS_SAFE (b, tmp)
14545             if (b->number == num)
14546               {
14547                 match = 1;
14548                 function (b, data);
14549                 break;
14550               }
14551           if (match == 0)
14552             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14553         }
14554     }
14555 }
14556
14557 static struct bp_location *
14558 find_location_by_number (char *number)
14559 {
14560   char *dot = strchr (number, '.');
14561   char *p1;
14562   int bp_num;
14563   int loc_num;
14564   struct breakpoint *b;
14565   struct bp_location *loc;  
14566
14567   *dot = '\0';
14568
14569   p1 = number;
14570   bp_num = get_number (&p1);
14571   if (bp_num == 0)
14572     error (_("Bad breakpoint number '%s'"), number);
14573
14574   ALL_BREAKPOINTS (b)
14575     if (b->number == bp_num)
14576       {
14577         break;
14578       }
14579
14580   if (!b || b->number != bp_num)
14581     error (_("Bad breakpoint number '%s'"), number);
14582   
14583   p1 = dot+1;
14584   loc_num = get_number (&p1);
14585   if (loc_num == 0)
14586     error (_("Bad breakpoint location number '%s'"), number);
14587
14588   --loc_num;
14589   loc = b->loc;
14590   for (;loc_num && loc; --loc_num, loc = loc->next)
14591     ;
14592   if (!loc)
14593     error (_("Bad breakpoint location number '%s'"), dot+1);
14594     
14595   return loc;  
14596 }
14597
14598
14599 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14600    If from_tty is nonzero, it prints a message to that effect,
14601    which ends with a period (no newline).  */
14602
14603 void
14604 disable_breakpoint (struct breakpoint *bpt)
14605 {
14606   /* Never disable a watchpoint scope breakpoint; we want to
14607      hit them when we leave scope so we can delete both the
14608      watchpoint and its scope breakpoint at that time.  */
14609   if (bpt->type == bp_watchpoint_scope)
14610     return;
14611
14612   /* You can't disable permanent breakpoints.  */
14613   if (bpt->enable_state == bp_permanent)
14614     return;
14615
14616   bpt->enable_state = bp_disabled;
14617
14618   /* Mark breakpoint locations modified.  */
14619   mark_breakpoint_modified (bpt);
14620
14621   if (target_supports_enable_disable_tracepoint ()
14622       && current_trace_status ()->running && is_tracepoint (bpt))
14623     {
14624       struct bp_location *location;
14625      
14626       for (location = bpt->loc; location; location = location->next)
14627         target_disable_tracepoint (location);
14628     }
14629
14630   update_global_location_list (0);
14631
14632   observer_notify_breakpoint_modified (bpt);
14633 }
14634
14635 /* A callback for iterate_over_related_breakpoints.  */
14636
14637 static void
14638 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14639 {
14640   disable_breakpoint (b);
14641 }
14642
14643 /* A callback for map_breakpoint_numbers that calls
14644    disable_breakpoint.  */
14645
14646 static void
14647 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14648 {
14649   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14650 }
14651
14652 static void
14653 disable_command (char *args, int from_tty)
14654 {
14655   if (args == 0)
14656     {
14657       struct breakpoint *bpt;
14658
14659       ALL_BREAKPOINTS (bpt)
14660         if (user_breakpoint_p (bpt))
14661           disable_breakpoint (bpt);
14662     }
14663   else
14664     {
14665       char *num = extract_arg (&args);
14666
14667       while (num)
14668         {
14669           if (strchr (num, '.'))
14670             {
14671               struct bp_location *loc = find_location_by_number (num);
14672
14673               if (loc)
14674                 {
14675                   if (loc->enabled)
14676                     {
14677                       loc->enabled = 0;
14678                       mark_breakpoint_location_modified (loc);
14679                     }
14680                   if (target_supports_enable_disable_tracepoint ()
14681                       && current_trace_status ()->running && loc->owner
14682                       && is_tracepoint (loc->owner))
14683                     target_disable_tracepoint (loc);
14684                 }
14685               update_global_location_list (0);
14686             }
14687           else
14688             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14689           num = extract_arg (&args);
14690         }
14691     }
14692 }
14693
14694 static void
14695 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14696                         int count)
14697 {
14698   int target_resources_ok;
14699
14700   if (bpt->type == bp_hardware_breakpoint)
14701     {
14702       int i;
14703       i = hw_breakpoint_used_count ();
14704       target_resources_ok = 
14705         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14706                                             i + 1, 0);
14707       if (target_resources_ok == 0)
14708         error (_("No hardware breakpoint support in the target."));
14709       else if (target_resources_ok < 0)
14710         error (_("Hardware breakpoints used exceeds limit."));
14711     }
14712
14713   if (is_watchpoint (bpt))
14714     {
14715       /* Initialize it just to avoid a GCC false warning.  */
14716       enum enable_state orig_enable_state = 0;
14717       volatile struct gdb_exception e;
14718
14719       TRY_CATCH (e, RETURN_MASK_ALL)
14720         {
14721           struct watchpoint *w = (struct watchpoint *) bpt;
14722
14723           orig_enable_state = bpt->enable_state;
14724           bpt->enable_state = bp_enabled;
14725           update_watchpoint (w, 1 /* reparse */);
14726         }
14727       if (e.reason < 0)
14728         {
14729           bpt->enable_state = orig_enable_state;
14730           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14731                              bpt->number);
14732           return;
14733         }
14734     }
14735
14736   if (bpt->enable_state != bp_permanent)
14737     bpt->enable_state = bp_enabled;
14738
14739   bpt->enable_state = bp_enabled;
14740
14741   /* Mark breakpoint locations modified.  */
14742   mark_breakpoint_modified (bpt);
14743
14744   if (target_supports_enable_disable_tracepoint ()
14745       && current_trace_status ()->running && is_tracepoint (bpt))
14746     {
14747       struct bp_location *location;
14748
14749       for (location = bpt->loc; location; location = location->next)
14750         target_enable_tracepoint (location);
14751     }
14752
14753   bpt->disposition = disposition;
14754   bpt->enable_count = count;
14755   update_global_location_list (1);
14756
14757   observer_notify_breakpoint_modified (bpt);
14758 }
14759
14760
14761 void
14762 enable_breakpoint (struct breakpoint *bpt)
14763 {
14764   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14765 }
14766
14767 static void
14768 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14769 {
14770   enable_breakpoint (bpt);
14771 }
14772
14773 /* A callback for map_breakpoint_numbers that calls
14774    enable_breakpoint.  */
14775
14776 static void
14777 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14778 {
14779   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14780 }
14781
14782 /* The enable command enables the specified breakpoints (or all defined
14783    breakpoints) so they once again become (or continue to be) effective
14784    in stopping the inferior.  */
14785
14786 static void
14787 enable_command (char *args, int from_tty)
14788 {
14789   if (args == 0)
14790     {
14791       struct breakpoint *bpt;
14792
14793       ALL_BREAKPOINTS (bpt)
14794         if (user_breakpoint_p (bpt))
14795           enable_breakpoint (bpt);
14796     }
14797   else
14798     {
14799       char *num = extract_arg (&args);
14800
14801       while (num)
14802         {
14803           if (strchr (num, '.'))
14804             {
14805               struct bp_location *loc = find_location_by_number (num);
14806
14807               if (loc)
14808                 {
14809                   if (!loc->enabled)
14810                     {
14811                       loc->enabled = 1;
14812                       mark_breakpoint_location_modified (loc);
14813                     }
14814                   if (target_supports_enable_disable_tracepoint ()
14815                       && current_trace_status ()->running && loc->owner
14816                       && is_tracepoint (loc->owner))
14817                     target_enable_tracepoint (loc);
14818                 }
14819               update_global_location_list (1);
14820             }
14821           else
14822             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
14823           num = extract_arg (&args);
14824         }
14825     }
14826 }
14827
14828 /* This struct packages up disposition data for application to multiple
14829    breakpoints.  */
14830
14831 struct disp_data
14832 {
14833   enum bpdisp disp;
14834   int count;
14835 };
14836
14837 static void
14838 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14839 {
14840   struct disp_data disp_data = *(struct disp_data *) arg;
14841
14842   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14843 }
14844
14845 static void
14846 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14847 {
14848   struct disp_data disp = { disp_disable, 1 };
14849
14850   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14851 }
14852
14853 static void
14854 enable_once_command (char *args, int from_tty)
14855 {
14856   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14857 }
14858
14859 static void
14860 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14861 {
14862   struct disp_data disp = { disp_disable, *(int *) countptr };
14863
14864   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14865 }
14866
14867 static void
14868 enable_count_command (char *args, int from_tty)
14869 {
14870   int count = get_number (&args);
14871
14872   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14873 }
14874
14875 static void
14876 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14877 {
14878   struct disp_data disp = { disp_del, 1 };
14879
14880   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14881 }
14882
14883 static void
14884 enable_delete_command (char *args, int from_tty)
14885 {
14886   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14887 }
14888 \f
14889 static void
14890 set_breakpoint_cmd (char *args, int from_tty)
14891 {
14892 }
14893
14894 static void
14895 show_breakpoint_cmd (char *args, int from_tty)
14896 {
14897 }
14898
14899 /* Invalidate last known value of any hardware watchpoint if
14900    the memory which that value represents has been written to by
14901    GDB itself.  */
14902
14903 static void
14904 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14905                                       CORE_ADDR addr, ssize_t len,
14906                                       const bfd_byte *data)
14907 {
14908   struct breakpoint *bp;
14909
14910   ALL_BREAKPOINTS (bp)
14911     if (bp->enable_state == bp_enabled
14912         && bp->type == bp_hardware_watchpoint)
14913       {
14914         struct watchpoint *wp = (struct watchpoint *) bp;
14915
14916         if (wp->val_valid && wp->val)
14917           {
14918             struct bp_location *loc;
14919
14920             for (loc = bp->loc; loc != NULL; loc = loc->next)
14921               if (loc->loc_type == bp_loc_hardware_watchpoint
14922                   && loc->address + loc->length > addr
14923                   && addr + len > loc->address)
14924                 {
14925                   value_free (wp->val);
14926                   wp->val = NULL;
14927                   wp->val_valid = 0;
14928                 }
14929           }
14930       }
14931 }
14932
14933 /* Create and insert a raw software breakpoint at PC.  Return an
14934    identifier, which should be used to remove the breakpoint later.
14935    In general, places which call this should be using something on the
14936    breakpoint chain instead; this function should be eliminated
14937    someday.  */
14938
14939 void *
14940 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14941                                   struct address_space *aspace, CORE_ADDR pc)
14942 {
14943   struct bp_target_info *bp_tgt;
14944
14945   bp_tgt = XZALLOC (struct bp_target_info);
14946
14947   bp_tgt->placed_address_space = aspace;
14948   bp_tgt->placed_address = pc;
14949
14950   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14951     {
14952       /* Could not insert the breakpoint.  */
14953       xfree (bp_tgt);
14954       return NULL;
14955     }
14956
14957   return bp_tgt;
14958 }
14959
14960 /* Remove a breakpoint BP inserted by
14961    deprecated_insert_raw_breakpoint.  */
14962
14963 int
14964 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14965 {
14966   struct bp_target_info *bp_tgt = bp;
14967   int ret;
14968
14969   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14970   xfree (bp_tgt);
14971
14972   return ret;
14973 }
14974
14975 /* One (or perhaps two) breakpoints used for software single
14976    stepping.  */
14977
14978 static void *single_step_breakpoints[2];
14979 static struct gdbarch *single_step_gdbarch[2];
14980
14981 /* Create and insert a breakpoint for software single step.  */
14982
14983 void
14984 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14985                                struct address_space *aspace, 
14986                                CORE_ADDR next_pc)
14987 {
14988   void **bpt_p;
14989
14990   if (single_step_breakpoints[0] == NULL)
14991     {
14992       bpt_p = &single_step_breakpoints[0];
14993       single_step_gdbarch[0] = gdbarch;
14994     }
14995   else
14996     {
14997       gdb_assert (single_step_breakpoints[1] == NULL);
14998       bpt_p = &single_step_breakpoints[1];
14999       single_step_gdbarch[1] = gdbarch;
15000     }
15001
15002   /* NOTE drow/2006-04-11: A future improvement to this function would
15003      be to only create the breakpoints once, and actually put them on
15004      the breakpoint chain.  That would let us use set_raw_breakpoint.
15005      We could adjust the addresses each time they were needed.  Doing
15006      this requires corresponding changes elsewhere where single step
15007      breakpoints are handled, however.  So, for now, we use this.  */
15008
15009   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
15010   if (*bpt_p == NULL)
15011     error (_("Could not insert single-step breakpoint at %s"),
15012              paddress (gdbarch, next_pc));
15013 }
15014
15015 /* Check if the breakpoints used for software single stepping
15016    were inserted or not.  */
15017
15018 int
15019 single_step_breakpoints_inserted (void)
15020 {
15021   return (single_step_breakpoints[0] != NULL
15022           || single_step_breakpoints[1] != NULL);
15023 }
15024
15025 /* Remove and delete any breakpoints used for software single step.  */
15026
15027 void
15028 remove_single_step_breakpoints (void)
15029 {
15030   gdb_assert (single_step_breakpoints[0] != NULL);
15031
15032   /* See insert_single_step_breakpoint for more about this deprecated
15033      call.  */
15034   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
15035                                     single_step_breakpoints[0]);
15036   single_step_gdbarch[0] = NULL;
15037   single_step_breakpoints[0] = NULL;
15038
15039   if (single_step_breakpoints[1] != NULL)
15040     {
15041       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
15042                                         single_step_breakpoints[1]);
15043       single_step_gdbarch[1] = NULL;
15044       single_step_breakpoints[1] = NULL;
15045     }
15046 }
15047
15048 /* Delete software single step breakpoints without removing them from
15049    the inferior.  This is intended to be used if the inferior's address
15050    space where they were inserted is already gone, e.g. after exit or
15051    exec.  */
15052
15053 void
15054 cancel_single_step_breakpoints (void)
15055 {
15056   int i;
15057
15058   for (i = 0; i < 2; i++)
15059     if (single_step_breakpoints[i])
15060       {
15061         xfree (single_step_breakpoints[i]);
15062         single_step_breakpoints[i] = NULL;
15063         single_step_gdbarch[i] = NULL;
15064       }
15065 }
15066
15067 /* Detach software single-step breakpoints from INFERIOR_PTID without
15068    removing them.  */
15069
15070 static void
15071 detach_single_step_breakpoints (void)
15072 {
15073   int i;
15074
15075   for (i = 0; i < 2; i++)
15076     if (single_step_breakpoints[i])
15077       target_remove_breakpoint (single_step_gdbarch[i],
15078                                 single_step_breakpoints[i]);
15079 }
15080
15081 /* Check whether a software single-step breakpoint is inserted at
15082    PC.  */
15083
15084 static int
15085 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
15086                                         CORE_ADDR pc)
15087 {
15088   int i;
15089
15090   for (i = 0; i < 2; i++)
15091     {
15092       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15093       if (bp_tgt
15094           && breakpoint_address_match (bp_tgt->placed_address_space,
15095                                        bp_tgt->placed_address,
15096                                        aspace, pc))
15097         return 1;
15098     }
15099
15100   return 0;
15101 }
15102
15103 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15104    non-zero otherwise.  */
15105 static int
15106 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15107 {
15108   if (syscall_catchpoint_p (bp)
15109       && bp->enable_state != bp_disabled
15110       && bp->enable_state != bp_call_disabled)
15111     return 1;
15112   else
15113     return 0;
15114 }
15115
15116 int
15117 catch_syscall_enabled (void)
15118 {
15119   struct catch_syscall_inferior_data *inf_data
15120     = get_catch_syscall_inferior_data (current_inferior ());
15121
15122   return inf_data->total_syscalls_count != 0;
15123 }
15124
15125 int
15126 catching_syscall_number (int syscall_number)
15127 {
15128   struct breakpoint *bp;
15129
15130   ALL_BREAKPOINTS (bp)
15131     if (is_syscall_catchpoint_enabled (bp))
15132       {
15133         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15134
15135         if (c->syscalls_to_be_caught)
15136           {
15137             int i, iter;
15138             for (i = 0;
15139                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15140                  i++)
15141               if (syscall_number == iter)
15142                 return 1;
15143           }
15144         else
15145           return 1;
15146       }
15147
15148   return 0;
15149 }
15150
15151 /* Complete syscall names.  Used by "catch syscall".  */
15152 static VEC (char_ptr) *
15153 catch_syscall_completer (struct cmd_list_element *cmd,
15154                          const char *text, const char *word)
15155 {
15156   const char **list = get_syscall_names ();
15157   VEC (char_ptr) *retlist
15158     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15159
15160   xfree (list);
15161   return retlist;
15162 }
15163
15164 /* Tracepoint-specific operations.  */
15165
15166 /* Set tracepoint count to NUM.  */
15167 static void
15168 set_tracepoint_count (int num)
15169 {
15170   tracepoint_count = num;
15171   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15172 }
15173
15174 static void
15175 trace_command (char *arg, int from_tty)
15176 {
15177   struct breakpoint_ops *ops;
15178   const char *arg_cp = arg;
15179
15180   if (arg && probe_linespec_to_ops (&arg_cp))
15181     ops = &tracepoint_probe_breakpoint_ops;
15182   else
15183     ops = &tracepoint_breakpoint_ops;
15184
15185   create_breakpoint (get_current_arch (),
15186                      arg,
15187                      NULL, 0, NULL, 1 /* parse arg */,
15188                      0 /* tempflag */,
15189                      bp_tracepoint /* type_wanted */,
15190                      0 /* Ignore count */,
15191                      pending_break_support,
15192                      ops,
15193                      from_tty,
15194                      1 /* enabled */,
15195                      0 /* internal */, 0);
15196 }
15197
15198 static void
15199 ftrace_command (char *arg, int from_tty)
15200 {
15201   create_breakpoint (get_current_arch (),
15202                      arg,
15203                      NULL, 0, NULL, 1 /* parse arg */,
15204                      0 /* tempflag */,
15205                      bp_fast_tracepoint /* type_wanted */,
15206                      0 /* Ignore count */,
15207                      pending_break_support,
15208                      &tracepoint_breakpoint_ops,
15209                      from_tty,
15210                      1 /* enabled */,
15211                      0 /* internal */, 0);
15212 }
15213
15214 /* strace command implementation.  Creates a static tracepoint.  */
15215
15216 static void
15217 strace_command (char *arg, int from_tty)
15218 {
15219   struct breakpoint_ops *ops;
15220
15221   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15222      or with a normal static tracepoint.  */
15223   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15224     ops = &strace_marker_breakpoint_ops;
15225   else
15226     ops = &tracepoint_breakpoint_ops;
15227
15228   create_breakpoint (get_current_arch (),
15229                      arg,
15230                      NULL, 0, NULL, 1 /* parse arg */,
15231                      0 /* tempflag */,
15232                      bp_static_tracepoint /* type_wanted */,
15233                      0 /* Ignore count */,
15234                      pending_break_support,
15235                      ops,
15236                      from_tty,
15237                      1 /* enabled */,
15238                      0 /* internal */, 0);
15239 }
15240
15241 /* Set up a fake reader function that gets command lines from a linked
15242    list that was acquired during tracepoint uploading.  */
15243
15244 static struct uploaded_tp *this_utp;
15245 static int next_cmd;
15246
15247 static char *
15248 read_uploaded_action (void)
15249 {
15250   char *rslt;
15251
15252   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15253
15254   next_cmd++;
15255
15256   return rslt;
15257 }
15258
15259 /* Given information about a tracepoint as recorded on a target (which
15260    can be either a live system or a trace file), attempt to create an
15261    equivalent GDB tracepoint.  This is not a reliable process, since
15262    the target does not necessarily have all the information used when
15263    the tracepoint was originally defined.  */
15264   
15265 struct tracepoint *
15266 create_tracepoint_from_upload (struct uploaded_tp *utp)
15267 {
15268   char *addr_str, small_buf[100];
15269   struct tracepoint *tp;
15270
15271   if (utp->at_string)
15272     addr_str = utp->at_string;
15273   else
15274     {
15275       /* In the absence of a source location, fall back to raw
15276          address.  Since there is no way to confirm that the address
15277          means the same thing as when the trace was started, warn the
15278          user.  */
15279       warning (_("Uploaded tracepoint %d has no "
15280                  "source location, using raw address"),
15281                utp->number);
15282       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15283       addr_str = small_buf;
15284     }
15285
15286   /* There's not much we can do with a sequence of bytecodes.  */
15287   if (utp->cond && !utp->cond_string)
15288     warning (_("Uploaded tracepoint %d condition "
15289                "has no source form, ignoring it"),
15290              utp->number);
15291
15292   if (!create_breakpoint (get_current_arch (),
15293                           addr_str,
15294                           utp->cond_string, -1, NULL,
15295                           0 /* parse cond/thread */,
15296                           0 /* tempflag */,
15297                           utp->type /* type_wanted */,
15298                           0 /* Ignore count */,
15299                           pending_break_support,
15300                           &tracepoint_breakpoint_ops,
15301                           0 /* from_tty */,
15302                           utp->enabled /* enabled */,
15303                           0 /* internal */,
15304                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15305     return NULL;
15306
15307   /* Get the tracepoint we just created.  */
15308   tp = get_tracepoint (tracepoint_count);
15309   gdb_assert (tp != NULL);
15310
15311   if (utp->pass > 0)
15312     {
15313       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15314                  tp->base.number);
15315
15316       trace_pass_command (small_buf, 0);
15317     }
15318
15319   /* If we have uploaded versions of the original commands, set up a
15320      special-purpose "reader" function and call the usual command line
15321      reader, then pass the result to the breakpoint command-setting
15322      function.  */
15323   if (!VEC_empty (char_ptr, utp->cmd_strings))
15324     {
15325       struct command_line *cmd_list;
15326
15327       this_utp = utp;
15328       next_cmd = 0;
15329
15330       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15331
15332       breakpoint_set_commands (&tp->base, cmd_list);
15333     }
15334   else if (!VEC_empty (char_ptr, utp->actions)
15335            || !VEC_empty (char_ptr, utp->step_actions))
15336     warning (_("Uploaded tracepoint %d actions "
15337                "have no source form, ignoring them"),
15338              utp->number);
15339
15340   /* Copy any status information that might be available.  */
15341   tp->base.hit_count = utp->hit_count;
15342   tp->traceframe_usage = utp->traceframe_usage;
15343
15344   return tp;
15345 }
15346   
15347 /* Print information on tracepoint number TPNUM_EXP, or all if
15348    omitted.  */
15349
15350 static void
15351 tracepoints_info (char *args, int from_tty)
15352 {
15353   struct ui_out *uiout = current_uiout;
15354   int num_printed;
15355
15356   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15357
15358   if (num_printed == 0)
15359     {
15360       if (args == NULL || *args == '\0')
15361         ui_out_message (uiout, 0, "No tracepoints.\n");
15362       else
15363         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15364     }
15365
15366   default_collect_info ();
15367 }
15368
15369 /* The 'enable trace' command enables tracepoints.
15370    Not supported by all targets.  */
15371 static void
15372 enable_trace_command (char *args, int from_tty)
15373 {
15374   enable_command (args, from_tty);
15375 }
15376
15377 /* The 'disable trace' command disables tracepoints.
15378    Not supported by all targets.  */
15379 static void
15380 disable_trace_command (char *args, int from_tty)
15381 {
15382   disable_command (args, from_tty);
15383 }
15384
15385 /* Remove a tracepoint (or all if no argument).  */
15386 static void
15387 delete_trace_command (char *arg, int from_tty)
15388 {
15389   struct breakpoint *b, *b_tmp;
15390
15391   dont_repeat ();
15392
15393   if (arg == 0)
15394     {
15395       int breaks_to_delete = 0;
15396
15397       /* Delete all breakpoints if no argument.
15398          Do not delete internal or call-dummy breakpoints, these
15399          have to be deleted with an explicit breakpoint number 
15400          argument.  */
15401       ALL_TRACEPOINTS (b)
15402         if (is_tracepoint (b) && user_breakpoint_p (b))
15403           {
15404             breaks_to_delete = 1;
15405             break;
15406           }
15407
15408       /* Ask user only if there are some breakpoints to delete.  */
15409       if (!from_tty
15410           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15411         {
15412           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15413             if (is_tracepoint (b) && user_breakpoint_p (b))
15414               delete_breakpoint (b);
15415         }
15416     }
15417   else
15418     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15419 }
15420
15421 /* Helper function for trace_pass_command.  */
15422
15423 static void
15424 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15425 {
15426   tp->pass_count = count;
15427   observer_notify_breakpoint_modified (&tp->base);
15428   if (from_tty)
15429     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15430                      tp->base.number, count);
15431 }
15432
15433 /* Set passcount for tracepoint.
15434
15435    First command argument is passcount, second is tracepoint number.
15436    If tracepoint number omitted, apply to most recently defined.
15437    Also accepts special argument "all".  */
15438
15439 static void
15440 trace_pass_command (char *args, int from_tty)
15441 {
15442   struct tracepoint *t1;
15443   unsigned int count;
15444
15445   if (args == 0 || *args == 0)
15446     error (_("passcount command requires an "
15447              "argument (count + optional TP num)"));
15448
15449   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15450
15451   args = skip_spaces (args);
15452   if (*args && strncasecmp (args, "all", 3) == 0)
15453     {
15454       struct breakpoint *b;
15455
15456       args += 3;                        /* Skip special argument "all".  */
15457       if (*args)
15458         error (_("Junk at end of arguments."));
15459
15460       ALL_TRACEPOINTS (b)
15461       {
15462         t1 = (struct tracepoint *) b;
15463         trace_pass_set_count (t1, count, from_tty);
15464       }
15465     }
15466   else if (*args == '\0')
15467     {
15468       t1 = get_tracepoint_by_number (&args, NULL, 1);
15469       if (t1)
15470         trace_pass_set_count (t1, count, from_tty);
15471     }
15472   else
15473     {
15474       struct get_number_or_range_state state;
15475
15476       init_number_or_range (&state, args);
15477       while (!state.finished)
15478         {
15479           t1 = get_tracepoint_by_number (&args, &state, 1);
15480           if (t1)
15481             trace_pass_set_count (t1, count, from_tty);
15482         }
15483     }
15484 }
15485
15486 struct tracepoint *
15487 get_tracepoint (int num)
15488 {
15489   struct breakpoint *t;
15490
15491   ALL_TRACEPOINTS (t)
15492     if (t->number == num)
15493       return (struct tracepoint *) t;
15494
15495   return NULL;
15496 }
15497
15498 /* Find the tracepoint with the given target-side number (which may be
15499    different from the tracepoint number after disconnecting and
15500    reconnecting).  */
15501
15502 struct tracepoint *
15503 get_tracepoint_by_number_on_target (int num)
15504 {
15505   struct breakpoint *b;
15506
15507   ALL_TRACEPOINTS (b)
15508     {
15509       struct tracepoint *t = (struct tracepoint *) b;
15510
15511       if (t->number_on_target == num)
15512         return t;
15513     }
15514
15515   return NULL;
15516 }
15517
15518 /* Utility: parse a tracepoint number and look it up in the list.
15519    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15520    If OPTIONAL_P is true, then if the argument is missing, the most
15521    recent tracepoint (tracepoint_count) is returned.  */
15522 struct tracepoint *
15523 get_tracepoint_by_number (char **arg,
15524                           struct get_number_or_range_state *state,
15525                           int optional_p)
15526 {
15527   struct breakpoint *t;
15528   int tpnum;
15529   char *instring = arg == NULL ? NULL : *arg;
15530
15531   if (state)
15532     {
15533       gdb_assert (!state->finished);
15534       tpnum = get_number_or_range (state);
15535     }
15536   else if (arg == NULL || *arg == NULL || ! **arg)
15537     {
15538       if (optional_p)
15539         tpnum = tracepoint_count;
15540       else
15541         error_no_arg (_("tracepoint number"));
15542     }
15543   else
15544     tpnum = get_number (arg);
15545
15546   if (tpnum <= 0)
15547     {
15548       if (instring && *instring)
15549         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15550                          instring);
15551       else
15552         printf_filtered (_("Tracepoint argument missing "
15553                            "and no previous tracepoint\n"));
15554       return NULL;
15555     }
15556
15557   ALL_TRACEPOINTS (t)
15558     if (t->number == tpnum)
15559     {
15560       return (struct tracepoint *) t;
15561     }
15562
15563   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15564   return NULL;
15565 }
15566
15567 void
15568 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15569 {
15570   if (b->thread != -1)
15571     fprintf_unfiltered (fp, " thread %d", b->thread);
15572
15573   if (b->task != 0)
15574     fprintf_unfiltered (fp, " task %d", b->task);
15575
15576   fprintf_unfiltered (fp, "\n");
15577 }
15578
15579 /* Save information on user settable breakpoints (watchpoints, etc) to
15580    a new script file named FILENAME.  If FILTER is non-NULL, call it
15581    on each breakpoint and only include the ones for which it returns
15582    non-zero.  */
15583
15584 static void
15585 save_breakpoints (char *filename, int from_tty,
15586                   int (*filter) (const struct breakpoint *))
15587 {
15588   struct breakpoint *tp;
15589   int any = 0;
15590   struct cleanup *cleanup;
15591   struct ui_file *fp;
15592   int extra_trace_bits = 0;
15593
15594   if (filename == 0 || *filename == 0)
15595     error (_("Argument required (file name in which to save)"));
15596
15597   /* See if we have anything to save.  */
15598   ALL_BREAKPOINTS (tp)
15599   {
15600     /* Skip internal and momentary breakpoints.  */
15601     if (!user_breakpoint_p (tp))
15602       continue;
15603
15604     /* If we have a filter, only save the breakpoints it accepts.  */
15605     if (filter && !filter (tp))
15606       continue;
15607
15608     any = 1;
15609
15610     if (is_tracepoint (tp))
15611       {
15612         extra_trace_bits = 1;
15613
15614         /* We can stop searching.  */
15615         break;
15616       }
15617   }
15618
15619   if (!any)
15620     {
15621       warning (_("Nothing to save."));
15622       return;
15623     }
15624
15625   filename = tilde_expand (filename);
15626   cleanup = make_cleanup (xfree, filename);
15627   fp = gdb_fopen (filename, "w");
15628   if (!fp)
15629     error (_("Unable to open file '%s' for saving (%s)"),
15630            filename, safe_strerror (errno));
15631   make_cleanup_ui_file_delete (fp);
15632
15633   if (extra_trace_bits)
15634     save_trace_state_variables (fp);
15635
15636   ALL_BREAKPOINTS (tp)
15637   {
15638     /* Skip internal and momentary breakpoints.  */
15639     if (!user_breakpoint_p (tp))
15640       continue;
15641
15642     /* If we have a filter, only save the breakpoints it accepts.  */
15643     if (filter && !filter (tp))
15644       continue;
15645
15646     tp->ops->print_recreate (tp, fp);
15647
15648     /* Note, we can't rely on tp->number for anything, as we can't
15649        assume the recreated breakpoint numbers will match.  Use $bpnum
15650        instead.  */
15651
15652     if (tp->cond_string)
15653       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15654
15655     if (tp->ignore_count)
15656       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15657
15658     if (tp->type != bp_dprintf && tp->commands)
15659       {
15660         volatile struct gdb_exception ex;       
15661
15662         fprintf_unfiltered (fp, "  commands\n");
15663         
15664         ui_out_redirect (current_uiout, fp);
15665         TRY_CATCH (ex, RETURN_MASK_ALL)
15666           {
15667             print_command_lines (current_uiout, tp->commands->commands, 2);
15668           }
15669         ui_out_redirect (current_uiout, NULL);
15670
15671         if (ex.reason < 0)
15672           throw_exception (ex);
15673
15674         fprintf_unfiltered (fp, "  end\n");
15675       }
15676
15677     if (tp->enable_state == bp_disabled)
15678       fprintf_unfiltered (fp, "disable\n");
15679
15680     /* If this is a multi-location breakpoint, check if the locations
15681        should be individually disabled.  Watchpoint locations are
15682        special, and not user visible.  */
15683     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15684       {
15685         struct bp_location *loc;
15686         int n = 1;
15687
15688         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15689           if (!loc->enabled)
15690             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15691       }
15692   }
15693
15694   if (extra_trace_bits && *default_collect)
15695     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15696
15697   if (from_tty)
15698     printf_filtered (_("Saved to file '%s'.\n"), filename);
15699   do_cleanups (cleanup);
15700 }
15701
15702 /* The `save breakpoints' command.  */
15703
15704 static void
15705 save_breakpoints_command (char *args, int from_tty)
15706 {
15707   save_breakpoints (args, from_tty, NULL);
15708 }
15709
15710 /* The `save tracepoints' command.  */
15711
15712 static void
15713 save_tracepoints_command (char *args, int from_tty)
15714 {
15715   save_breakpoints (args, from_tty, is_tracepoint);
15716 }
15717
15718 /* Create a vector of all tracepoints.  */
15719
15720 VEC(breakpoint_p) *
15721 all_tracepoints (void)
15722 {
15723   VEC(breakpoint_p) *tp_vec = 0;
15724   struct breakpoint *tp;
15725
15726   ALL_TRACEPOINTS (tp)
15727   {
15728     VEC_safe_push (breakpoint_p, tp_vec, tp);
15729   }
15730
15731   return tp_vec;
15732 }
15733
15734 \f
15735 /* This help string is used for the break, hbreak, tbreak and thbreak
15736    commands.  It is defined as a macro to prevent duplication.
15737    COMMAND should be a string constant containing the name of the
15738    command.  */
15739 #define BREAK_ARGS_HELP(command) \
15740 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15741 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15742 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15743 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15744 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15745 If a line number is specified, break at start of code for that line.\n\
15746 If a function is specified, break at start of code for that function.\n\
15747 If an address is specified, break at that exact address.\n\
15748 With no LOCATION, uses current execution address of the selected\n\
15749 stack frame.  This is useful for breaking on return to a stack frame.\n\
15750 \n\
15751 THREADNUM is the number from \"info threads\".\n\
15752 CONDITION is a boolean expression.\n\
15753 \n\
15754 Multiple breakpoints at one place are permitted, and useful if their\n\
15755 conditions are different.\n\
15756 \n\
15757 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15758
15759 /* List of subcommands for "catch".  */
15760 static struct cmd_list_element *catch_cmdlist;
15761
15762 /* List of subcommands for "tcatch".  */
15763 static struct cmd_list_element *tcatch_cmdlist;
15764
15765 void
15766 add_catch_command (char *name, char *docstring,
15767                    void (*sfunc) (char *args, int from_tty,
15768                                   struct cmd_list_element *command),
15769                    completer_ftype *completer,
15770                    void *user_data_catch,
15771                    void *user_data_tcatch)
15772 {
15773   struct cmd_list_element *command;
15774
15775   command = add_cmd (name, class_breakpoint, NULL, docstring,
15776                      &catch_cmdlist);
15777   set_cmd_sfunc (command, sfunc);
15778   set_cmd_context (command, user_data_catch);
15779   set_cmd_completer (command, completer);
15780
15781   command = add_cmd (name, class_breakpoint, NULL, docstring,
15782                      &tcatch_cmdlist);
15783   set_cmd_sfunc (command, sfunc);
15784   set_cmd_context (command, user_data_tcatch);
15785   set_cmd_completer (command, completer);
15786 }
15787
15788 static void
15789 clear_syscall_counts (struct inferior *inf)
15790 {
15791   struct catch_syscall_inferior_data *inf_data
15792     = get_catch_syscall_inferior_data (inf);
15793
15794   inf_data->total_syscalls_count = 0;
15795   inf_data->any_syscall_count = 0;
15796   VEC_free (int, inf_data->syscalls_counts);
15797 }
15798
15799 static void
15800 save_command (char *arg, int from_tty)
15801 {
15802   printf_unfiltered (_("\"save\" must be followed by "
15803                        "the name of a save subcommand.\n"));
15804   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15805 }
15806
15807 struct breakpoint *
15808 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15809                           void *data)
15810 {
15811   struct breakpoint *b, *b_tmp;
15812
15813   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15814     {
15815       if ((*callback) (b, data))
15816         return b;
15817     }
15818
15819   return NULL;
15820 }
15821
15822 /* Zero if any of the breakpoint's locations could be a location where
15823    functions have been inlined, nonzero otherwise.  */
15824
15825 static int
15826 is_non_inline_function (struct breakpoint *b)
15827 {
15828   /* The shared library event breakpoint is set on the address of a
15829      non-inline function.  */
15830   if (b->type == bp_shlib_event)
15831     return 1;
15832
15833   return 0;
15834 }
15835
15836 /* Nonzero if the specified PC cannot be a location where functions
15837    have been inlined.  */
15838
15839 int
15840 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15841                            const struct target_waitstatus *ws)
15842 {
15843   struct breakpoint *b;
15844   struct bp_location *bl;
15845
15846   ALL_BREAKPOINTS (b)
15847     {
15848       if (!is_non_inline_function (b))
15849         continue;
15850
15851       for (bl = b->loc; bl != NULL; bl = bl->next)
15852         {
15853           if (!bl->shlib_disabled
15854               && bpstat_check_location (bl, aspace, pc, ws))
15855             return 1;
15856         }
15857     }
15858
15859   return 0;
15860 }
15861
15862 /* Remove any references to OBJFILE which is going to be freed.  */
15863
15864 void
15865 breakpoint_free_objfile (struct objfile *objfile)
15866 {
15867   struct bp_location **locp, *loc;
15868
15869   ALL_BP_LOCATIONS (loc, locp)
15870     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15871       loc->symtab = NULL;
15872 }
15873
15874 void
15875 initialize_breakpoint_ops (void)
15876 {
15877   static int initialized = 0;
15878
15879   struct breakpoint_ops *ops;
15880
15881   if (initialized)
15882     return;
15883   initialized = 1;
15884
15885   /* The breakpoint_ops structure to be inherit by all kinds of
15886      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15887      internal and momentary breakpoints, etc.).  */
15888   ops = &bkpt_base_breakpoint_ops;
15889   *ops = base_breakpoint_ops;
15890   ops->re_set = bkpt_re_set;
15891   ops->insert_location = bkpt_insert_location;
15892   ops->remove_location = bkpt_remove_location;
15893   ops->breakpoint_hit = bkpt_breakpoint_hit;
15894   ops->create_sals_from_address = bkpt_create_sals_from_address;
15895   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15896   ops->decode_linespec = bkpt_decode_linespec;
15897
15898   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15899   ops = &bkpt_breakpoint_ops;
15900   *ops = bkpt_base_breakpoint_ops;
15901   ops->re_set = bkpt_re_set;
15902   ops->resources_needed = bkpt_resources_needed;
15903   ops->print_it = bkpt_print_it;
15904   ops->print_mention = bkpt_print_mention;
15905   ops->print_recreate = bkpt_print_recreate;
15906
15907   /* Ranged breakpoints.  */
15908   ops = &ranged_breakpoint_ops;
15909   *ops = bkpt_breakpoint_ops;
15910   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15911   ops->resources_needed = resources_needed_ranged_breakpoint;
15912   ops->print_it = print_it_ranged_breakpoint;
15913   ops->print_one = print_one_ranged_breakpoint;
15914   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15915   ops->print_mention = print_mention_ranged_breakpoint;
15916   ops->print_recreate = print_recreate_ranged_breakpoint;
15917
15918   /* Internal breakpoints.  */
15919   ops = &internal_breakpoint_ops;
15920   *ops = bkpt_base_breakpoint_ops;
15921   ops->re_set = internal_bkpt_re_set;
15922   ops->check_status = internal_bkpt_check_status;
15923   ops->print_it = internal_bkpt_print_it;
15924   ops->print_mention = internal_bkpt_print_mention;
15925
15926   /* Momentary breakpoints.  */
15927   ops = &momentary_breakpoint_ops;
15928   *ops = bkpt_base_breakpoint_ops;
15929   ops->re_set = momentary_bkpt_re_set;
15930   ops->check_status = momentary_bkpt_check_status;
15931   ops->print_it = momentary_bkpt_print_it;
15932   ops->print_mention = momentary_bkpt_print_mention;
15933
15934   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15935   ops = &longjmp_breakpoint_ops;
15936   *ops = momentary_breakpoint_ops;
15937   ops->dtor = longjmp_bkpt_dtor;
15938
15939   /* Probe breakpoints.  */
15940   ops = &bkpt_probe_breakpoint_ops;
15941   *ops = bkpt_breakpoint_ops;
15942   ops->insert_location = bkpt_probe_insert_location;
15943   ops->remove_location = bkpt_probe_remove_location;
15944   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15945   ops->decode_linespec = bkpt_probe_decode_linespec;
15946
15947   /* Watchpoints.  */
15948   ops = &watchpoint_breakpoint_ops;
15949   *ops = base_breakpoint_ops;
15950   ops->dtor = dtor_watchpoint;
15951   ops->re_set = re_set_watchpoint;
15952   ops->insert_location = insert_watchpoint;
15953   ops->remove_location = remove_watchpoint;
15954   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15955   ops->check_status = check_status_watchpoint;
15956   ops->resources_needed = resources_needed_watchpoint;
15957   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15958   ops->print_it = print_it_watchpoint;
15959   ops->print_mention = print_mention_watchpoint;
15960   ops->print_recreate = print_recreate_watchpoint;
15961   ops->explains_signal = explains_signal_watchpoint;
15962
15963   /* Masked watchpoints.  */
15964   ops = &masked_watchpoint_breakpoint_ops;
15965   *ops = watchpoint_breakpoint_ops;
15966   ops->insert_location = insert_masked_watchpoint;
15967   ops->remove_location = remove_masked_watchpoint;
15968   ops->resources_needed = resources_needed_masked_watchpoint;
15969   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15970   ops->print_it = print_it_masked_watchpoint;
15971   ops->print_one_detail = print_one_detail_masked_watchpoint;
15972   ops->print_mention = print_mention_masked_watchpoint;
15973   ops->print_recreate = print_recreate_masked_watchpoint;
15974
15975   /* Tracepoints.  */
15976   ops = &tracepoint_breakpoint_ops;
15977   *ops = base_breakpoint_ops;
15978   ops->re_set = tracepoint_re_set;
15979   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15980   ops->print_one_detail = tracepoint_print_one_detail;
15981   ops->print_mention = tracepoint_print_mention;
15982   ops->print_recreate = tracepoint_print_recreate;
15983   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15984   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15985   ops->decode_linespec = tracepoint_decode_linespec;
15986
15987   /* Probe tracepoints.  */
15988   ops = &tracepoint_probe_breakpoint_ops;
15989   *ops = tracepoint_breakpoint_ops;
15990   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15991   ops->decode_linespec = tracepoint_probe_decode_linespec;
15992
15993   /* Static tracepoints with marker (`-m').  */
15994   ops = &strace_marker_breakpoint_ops;
15995   *ops = tracepoint_breakpoint_ops;
15996   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15997   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15998   ops->decode_linespec = strace_marker_decode_linespec;
15999
16000   /* Fork catchpoints.  */
16001   ops = &catch_fork_breakpoint_ops;
16002   *ops = base_breakpoint_ops;
16003   ops->insert_location = insert_catch_fork;
16004   ops->remove_location = remove_catch_fork;
16005   ops->breakpoint_hit = breakpoint_hit_catch_fork;
16006   ops->print_it = print_it_catch_fork;
16007   ops->print_one = print_one_catch_fork;
16008   ops->print_mention = print_mention_catch_fork;
16009   ops->print_recreate = print_recreate_catch_fork;
16010
16011   /* Vfork catchpoints.  */
16012   ops = &catch_vfork_breakpoint_ops;
16013   *ops = base_breakpoint_ops;
16014   ops->insert_location = insert_catch_vfork;
16015   ops->remove_location = remove_catch_vfork;
16016   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16017   ops->print_it = print_it_catch_vfork;
16018   ops->print_one = print_one_catch_vfork;
16019   ops->print_mention = print_mention_catch_vfork;
16020   ops->print_recreate = print_recreate_catch_vfork;
16021
16022   /* Exec catchpoints.  */
16023   ops = &catch_exec_breakpoint_ops;
16024   *ops = base_breakpoint_ops;
16025   ops->dtor = dtor_catch_exec;
16026   ops->insert_location = insert_catch_exec;
16027   ops->remove_location = remove_catch_exec;
16028   ops->breakpoint_hit = breakpoint_hit_catch_exec;
16029   ops->print_it = print_it_catch_exec;
16030   ops->print_one = print_one_catch_exec;
16031   ops->print_mention = print_mention_catch_exec;
16032   ops->print_recreate = print_recreate_catch_exec;
16033
16034   /* Syscall catchpoints.  */
16035   ops = &catch_syscall_breakpoint_ops;
16036   *ops = base_breakpoint_ops;
16037   ops->dtor = dtor_catch_syscall;
16038   ops->insert_location = insert_catch_syscall;
16039   ops->remove_location = remove_catch_syscall;
16040   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
16041   ops->print_it = print_it_catch_syscall;
16042   ops->print_one = print_one_catch_syscall;
16043   ops->print_mention = print_mention_catch_syscall;
16044   ops->print_recreate = print_recreate_catch_syscall;
16045
16046   /* Solib-related catchpoints.  */
16047   ops = &catch_solib_breakpoint_ops;
16048   *ops = base_breakpoint_ops;
16049   ops->dtor = dtor_catch_solib;
16050   ops->insert_location = insert_catch_solib;
16051   ops->remove_location = remove_catch_solib;
16052   ops->breakpoint_hit = breakpoint_hit_catch_solib;
16053   ops->check_status = check_status_catch_solib;
16054   ops->print_it = print_it_catch_solib;
16055   ops->print_one = print_one_catch_solib;
16056   ops->print_mention = print_mention_catch_solib;
16057   ops->print_recreate = print_recreate_catch_solib;
16058
16059   ops = &dprintf_breakpoint_ops;
16060   *ops = bkpt_base_breakpoint_ops;
16061   ops->re_set = dprintf_re_set;
16062   ops->resources_needed = bkpt_resources_needed;
16063   ops->print_it = bkpt_print_it;
16064   ops->print_mention = bkpt_print_mention;
16065   ops->print_recreate = dprintf_print_recreate;
16066   ops->after_condition_true = dprintf_after_condition_true;
16067 }
16068
16069 /* Chain containing all defined "enable breakpoint" subcommands.  */
16070
16071 static struct cmd_list_element *enablebreaklist = NULL;
16072
16073 void
16074 _initialize_breakpoint (void)
16075 {
16076   struct cmd_list_element *c;
16077
16078   initialize_breakpoint_ops ();
16079
16080   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16081   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16082   observer_attach_inferior_exit (clear_syscall_counts);
16083   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16084
16085   breakpoint_objfile_key
16086     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16087
16088   catch_syscall_inferior_data
16089     = register_inferior_data_with_cleanup (NULL,
16090                                            catch_syscall_inferior_data_cleanup);
16091
16092   breakpoint_chain = 0;
16093   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16094      before a breakpoint is set.  */
16095   breakpoint_count = 0;
16096
16097   tracepoint_count = 0;
16098
16099   add_com ("ignore", class_breakpoint, ignore_command, _("\
16100 Set ignore-count of breakpoint number N to COUNT.\n\
16101 Usage is `ignore N COUNT'."));
16102   if (xdb_commands)
16103     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16104
16105   add_com ("commands", class_breakpoint, commands_command, _("\
16106 Set commands to be executed when a breakpoint is hit.\n\
16107 Give breakpoint number as argument after \"commands\".\n\
16108 With no argument, the targeted breakpoint is the last one set.\n\
16109 The commands themselves follow starting on the next line.\n\
16110 Type a line containing \"end\" to indicate the end of them.\n\
16111 Give \"silent\" as the first line to make the breakpoint silent;\n\
16112 then no output is printed when it is hit, except what the commands print."));
16113
16114   c = add_com ("condition", class_breakpoint, condition_command, _("\
16115 Specify breakpoint number N to break only if COND is true.\n\
16116 Usage is `condition N COND', where N is an integer and COND is an\n\
16117 expression to be evaluated whenever breakpoint N is reached."));
16118   set_cmd_completer (c, condition_completer);
16119
16120   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16121 Set a temporary breakpoint.\n\
16122 Like \"break\" except the breakpoint is only temporary,\n\
16123 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16124 by using \"enable delete\" on the breakpoint number.\n\
16125 \n"
16126 BREAK_ARGS_HELP ("tbreak")));
16127   set_cmd_completer (c, location_completer);
16128
16129   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16130 Set a hardware assisted breakpoint.\n\
16131 Like \"break\" except the breakpoint requires hardware support,\n\
16132 some target hardware may not have this support.\n\
16133 \n"
16134 BREAK_ARGS_HELP ("hbreak")));
16135   set_cmd_completer (c, location_completer);
16136
16137   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16138 Set a temporary hardware assisted breakpoint.\n\
16139 Like \"hbreak\" except the breakpoint is only temporary,\n\
16140 so it will be deleted when hit.\n\
16141 \n"
16142 BREAK_ARGS_HELP ("thbreak")));
16143   set_cmd_completer (c, location_completer);
16144
16145   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16146 Enable some breakpoints.\n\
16147 Give breakpoint numbers (separated by spaces) as arguments.\n\
16148 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16149 This is used to cancel the effect of the \"disable\" command.\n\
16150 With a subcommand you can enable temporarily."),
16151                   &enablelist, "enable ", 1, &cmdlist);
16152   if (xdb_commands)
16153     add_com ("ab", class_breakpoint, enable_command, _("\
16154 Enable some breakpoints.\n\
16155 Give breakpoint numbers (separated by spaces) as arguments.\n\
16156 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16157 This is used to cancel the effect of the \"disable\" command.\n\
16158 With a subcommand you can enable temporarily."));
16159
16160   add_com_alias ("en", "enable", class_breakpoint, 1);
16161
16162   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16163 Enable some breakpoints.\n\
16164 Give breakpoint numbers (separated by spaces) as arguments.\n\
16165 This is used to cancel the effect of the \"disable\" command.\n\
16166 May be abbreviated to simply \"enable\".\n"),
16167                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16168
16169   add_cmd ("once", no_class, enable_once_command, _("\
16170 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16171 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16172            &enablebreaklist);
16173
16174   add_cmd ("delete", no_class, enable_delete_command, _("\
16175 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16176 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16177            &enablebreaklist);
16178
16179   add_cmd ("count", no_class, enable_count_command, _("\
16180 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16181 If a breakpoint is hit while enabled in this fashion,\n\
16182 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16183            &enablebreaklist);
16184
16185   add_cmd ("delete", no_class, enable_delete_command, _("\
16186 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16187 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16188            &enablelist);
16189
16190   add_cmd ("once", no_class, enable_once_command, _("\
16191 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16192 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16193            &enablelist);
16194
16195   add_cmd ("count", no_class, enable_count_command, _("\
16196 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16197 If a breakpoint is hit while enabled in this fashion,\n\
16198 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16199            &enablelist);
16200
16201   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16202 Disable some breakpoints.\n\
16203 Arguments are breakpoint numbers with spaces in between.\n\
16204 To disable all breakpoints, give no argument.\n\
16205 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16206                   &disablelist, "disable ", 1, &cmdlist);
16207   add_com_alias ("dis", "disable", class_breakpoint, 1);
16208   add_com_alias ("disa", "disable", class_breakpoint, 1);
16209   if (xdb_commands)
16210     add_com ("sb", class_breakpoint, disable_command, _("\
16211 Disable some breakpoints.\n\
16212 Arguments are breakpoint numbers with spaces in between.\n\
16213 To disable all breakpoints, give no argument.\n\
16214 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16215
16216   add_cmd ("breakpoints", class_alias, disable_command, _("\
16217 Disable some breakpoints.\n\
16218 Arguments are breakpoint numbers with spaces in between.\n\
16219 To disable all breakpoints, give no argument.\n\
16220 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16221 This command may be abbreviated \"disable\"."),
16222            &disablelist);
16223
16224   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16225 Delete some breakpoints or auto-display expressions.\n\
16226 Arguments are breakpoint numbers with spaces in between.\n\
16227 To delete all breakpoints, give no argument.\n\
16228 \n\
16229 Also a prefix command for deletion of other GDB objects.\n\
16230 The \"unset\" command is also an alias for \"delete\"."),
16231                   &deletelist, "delete ", 1, &cmdlist);
16232   add_com_alias ("d", "delete", class_breakpoint, 1);
16233   add_com_alias ("del", "delete", class_breakpoint, 1);
16234   if (xdb_commands)
16235     add_com ("db", class_breakpoint, delete_command, _("\
16236 Delete some breakpoints.\n\
16237 Arguments are breakpoint numbers with spaces in between.\n\
16238 To delete all breakpoints, give no argument.\n"));
16239
16240   add_cmd ("breakpoints", class_alias, delete_command, _("\
16241 Delete some breakpoints or auto-display expressions.\n\
16242 Arguments are breakpoint numbers with spaces in between.\n\
16243 To delete all breakpoints, give no argument.\n\
16244 This command may be abbreviated \"delete\"."),
16245            &deletelist);
16246
16247   add_com ("clear", class_breakpoint, clear_command, _("\
16248 Clear breakpoint at specified line or function.\n\
16249 Argument may be line number, function name, or \"*\" and an address.\n\
16250 If line number is specified, all breakpoints in that line are cleared.\n\
16251 If function is specified, breakpoints at beginning of function are cleared.\n\
16252 If an address is specified, breakpoints at that address are cleared.\n\
16253 \n\
16254 With no argument, clears all breakpoints in the line that the selected frame\n\
16255 is executing in.\n\
16256 \n\
16257 See also the \"delete\" command which clears breakpoints by number."));
16258   add_com_alias ("cl", "clear", class_breakpoint, 1);
16259
16260   c = add_com ("break", class_breakpoint, break_command, _("\
16261 Set breakpoint at specified line or function.\n"
16262 BREAK_ARGS_HELP ("break")));
16263   set_cmd_completer (c, location_completer);
16264
16265   add_com_alias ("b", "break", class_run, 1);
16266   add_com_alias ("br", "break", class_run, 1);
16267   add_com_alias ("bre", "break", class_run, 1);
16268   add_com_alias ("brea", "break", class_run, 1);
16269
16270   if (xdb_commands)
16271    add_com_alias ("ba", "break", class_breakpoint, 1);
16272
16273   if (dbx_commands)
16274     {
16275       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16276 Break in function/address or break at a line in the current file."),
16277                              &stoplist, "stop ", 1, &cmdlist);
16278       add_cmd ("in", class_breakpoint, stopin_command,
16279                _("Break in function or address."), &stoplist);
16280       add_cmd ("at", class_breakpoint, stopat_command,
16281                _("Break at a line in the current file."), &stoplist);
16282       add_com ("status", class_info, breakpoints_info, _("\
16283 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16284 The \"Type\" column indicates one of:\n\
16285 \tbreakpoint     - normal breakpoint\n\
16286 \twatchpoint     - watchpoint\n\
16287 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16288 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16289 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16290 address and file/line number respectively.\n\
16291 \n\
16292 Convenience variable \"$_\" and default examine address for \"x\"\n\
16293 are set to the address of the last breakpoint listed unless the command\n\
16294 is prefixed with \"server \".\n\n\
16295 Convenience variable \"$bpnum\" contains the number of the last\n\
16296 breakpoint set."));
16297     }
16298
16299   add_info ("breakpoints", breakpoints_info, _("\
16300 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16301 The \"Type\" column indicates one of:\n\
16302 \tbreakpoint     - normal breakpoint\n\
16303 \twatchpoint     - watchpoint\n\
16304 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16305 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16306 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16307 address and file/line number respectively.\n\
16308 \n\
16309 Convenience variable \"$_\" and default examine address for \"x\"\n\
16310 are set to the address of the last breakpoint listed unless the command\n\
16311 is prefixed with \"server \".\n\n\
16312 Convenience variable \"$bpnum\" contains the number of the last\n\
16313 breakpoint set."));
16314
16315   add_info_alias ("b", "breakpoints", 1);
16316
16317   if (xdb_commands)
16318     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16319 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16320 The \"Type\" column indicates one of:\n\
16321 \tbreakpoint     - normal breakpoint\n\
16322 \twatchpoint     - watchpoint\n\
16323 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16324 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16325 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16326 address and file/line number respectively.\n\
16327 \n\
16328 Convenience variable \"$_\" and default examine address for \"x\"\n\
16329 are set to the address of the last breakpoint listed unless the command\n\
16330 is prefixed with \"server \".\n\n\
16331 Convenience variable \"$bpnum\" contains the number of the last\n\
16332 breakpoint set."));
16333
16334   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16335 Status of all breakpoints, or breakpoint number NUMBER.\n\
16336 The \"Type\" column indicates one of:\n\
16337 \tbreakpoint     - normal breakpoint\n\
16338 \twatchpoint     - watchpoint\n\
16339 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16340 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16341 \tuntil          - internal breakpoint used by the \"until\" command\n\
16342 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16343 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16344 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16345 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16346 address and file/line number respectively.\n\
16347 \n\
16348 Convenience variable \"$_\" and default examine address for \"x\"\n\
16349 are set to the address of the last breakpoint listed unless the command\n\
16350 is prefixed with \"server \".\n\n\
16351 Convenience variable \"$bpnum\" contains the number of the last\n\
16352 breakpoint set."),
16353            &maintenanceinfolist);
16354
16355   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16356 Set catchpoints to catch events."),
16357                   &catch_cmdlist, "catch ",
16358                   0/*allow-unknown*/, &cmdlist);
16359
16360   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16361 Set temporary catchpoints to catch events."),
16362                   &tcatch_cmdlist, "tcatch ",
16363                   0/*allow-unknown*/, &cmdlist);
16364
16365   add_catch_command ("fork", _("Catch calls to fork."),
16366                      catch_fork_command_1,
16367                      NULL,
16368                      (void *) (uintptr_t) catch_fork_permanent,
16369                      (void *) (uintptr_t) catch_fork_temporary);
16370   add_catch_command ("vfork", _("Catch calls to vfork."),
16371                      catch_fork_command_1,
16372                      NULL,
16373                      (void *) (uintptr_t) catch_vfork_permanent,
16374                      (void *) (uintptr_t) catch_vfork_temporary);
16375   add_catch_command ("exec", _("Catch calls to exec."),
16376                      catch_exec_command_1,
16377                      NULL,
16378                      CATCH_PERMANENT,
16379                      CATCH_TEMPORARY);
16380   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16381 Usage: catch load [REGEX]\n\
16382 If REGEX is given, only stop for libraries matching the regular expression."),
16383                      catch_load_command_1,
16384                      NULL,
16385                      CATCH_PERMANENT,
16386                      CATCH_TEMPORARY);
16387   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16388 Usage: catch unload [REGEX]\n\
16389 If REGEX is given, only stop for libraries matching the regular expression."),
16390                      catch_unload_command_1,
16391                      NULL,
16392                      CATCH_PERMANENT,
16393                      CATCH_TEMPORARY);
16394   add_catch_command ("syscall", _("\
16395 Catch system calls by their names and/or numbers.\n\
16396 Arguments say which system calls to catch.  If no arguments\n\
16397 are given, every system call will be caught.\n\
16398 Arguments, if given, should be one or more system call names\n\
16399 (if your system supports that), or system call numbers."),
16400                      catch_syscall_command_1,
16401                      catch_syscall_completer,
16402                      CATCH_PERMANENT,
16403                      CATCH_TEMPORARY);
16404
16405   c = add_com ("watch", class_breakpoint, watch_command, _("\
16406 Set a watchpoint for an expression.\n\
16407 Usage: watch [-l|-location] EXPRESSION\n\
16408 A watchpoint stops execution of your program whenever the value of\n\
16409 an expression changes.\n\
16410 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16411 the memory to which it refers."));
16412   set_cmd_completer (c, expression_completer);
16413
16414   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16415 Set a read watchpoint for an expression.\n\
16416 Usage: rwatch [-l|-location] EXPRESSION\n\
16417 A watchpoint stops execution of your program whenever the value of\n\
16418 an expression is read.\n\
16419 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16420 the memory to which it refers."));
16421   set_cmd_completer (c, expression_completer);
16422
16423   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16424 Set a watchpoint for an expression.\n\
16425 Usage: awatch [-l|-location] EXPRESSION\n\
16426 A watchpoint stops execution of your program whenever the value of\n\
16427 an expression is either read or written.\n\
16428 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16429 the memory to which it refers."));
16430   set_cmd_completer (c, expression_completer);
16431
16432   add_info ("watchpoints", watchpoints_info, _("\
16433 Status of specified watchpoints (all watchpoints if no argument)."));
16434
16435   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16436      respond to changes - contrary to the description.  */
16437   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16438                             &can_use_hw_watchpoints, _("\
16439 Set debugger's willingness to use watchpoint hardware."), _("\
16440 Show debugger's willingness to use watchpoint hardware."), _("\
16441 If zero, gdb will not use hardware for new watchpoints, even if\n\
16442 such is available.  (However, any hardware watchpoints that were\n\
16443 created before setting this to nonzero, will continue to use watchpoint\n\
16444 hardware.)"),
16445                             NULL,
16446                             show_can_use_hw_watchpoints,
16447                             &setlist, &showlist);
16448
16449   can_use_hw_watchpoints = 1;
16450
16451   /* Tracepoint manipulation commands.  */
16452
16453   c = add_com ("trace", class_breakpoint, trace_command, _("\
16454 Set a tracepoint at specified line or function.\n\
16455 \n"
16456 BREAK_ARGS_HELP ("trace") "\n\
16457 Do \"help tracepoints\" for info on other tracepoint commands."));
16458   set_cmd_completer (c, location_completer);
16459
16460   add_com_alias ("tp", "trace", class_alias, 0);
16461   add_com_alias ("tr", "trace", class_alias, 1);
16462   add_com_alias ("tra", "trace", class_alias, 1);
16463   add_com_alias ("trac", "trace", class_alias, 1);
16464
16465   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16466 Set a fast tracepoint at specified line or function.\n\
16467 \n"
16468 BREAK_ARGS_HELP ("ftrace") "\n\
16469 Do \"help tracepoints\" for info on other tracepoint commands."));
16470   set_cmd_completer (c, location_completer);
16471
16472   c = add_com ("strace", class_breakpoint, strace_command, _("\
16473 Set a static tracepoint at specified line, function or marker.\n\
16474 \n\
16475 strace [LOCATION] [if CONDITION]\n\
16476 LOCATION may be a line number, function name, \"*\" and an address,\n\
16477 or -m MARKER_ID.\n\
16478 If a line number is specified, probe the marker at start of code\n\
16479 for that line.  If a function is specified, probe the marker at start\n\
16480 of code for that function.  If an address is specified, probe the marker\n\
16481 at that exact address.  If a marker id is specified, probe the marker\n\
16482 with that name.  With no LOCATION, uses current execution address of\n\
16483 the selected stack frame.\n\
16484 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16485 This collects arbitrary user data passed in the probe point call to the\n\
16486 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16487 by printing the $_sdata variable like any other convenience variable.\n\
16488 \n\
16489 CONDITION is a boolean expression.\n\
16490 \n\
16491 Multiple tracepoints at one place are permitted, and useful if their\n\
16492 conditions are different.\n\
16493 \n\
16494 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16495 Do \"help tracepoints\" for info on other tracepoint commands."));
16496   set_cmd_completer (c, location_completer);
16497
16498   add_info ("tracepoints", tracepoints_info, _("\
16499 Status of specified tracepoints (all tracepoints if no argument).\n\
16500 Convenience variable \"$tpnum\" contains the number of the\n\
16501 last tracepoint set."));
16502
16503   add_info_alias ("tp", "tracepoints", 1);
16504
16505   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16506 Delete specified tracepoints.\n\
16507 Arguments are tracepoint numbers, separated by spaces.\n\
16508 No argument means delete all tracepoints."),
16509            &deletelist);
16510   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16511
16512   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16513 Disable specified tracepoints.\n\
16514 Arguments are tracepoint numbers, separated by spaces.\n\
16515 No argument means disable all tracepoints."),
16516            &disablelist);
16517   deprecate_cmd (c, "disable");
16518
16519   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16520 Enable specified tracepoints.\n\
16521 Arguments are tracepoint numbers, separated by spaces.\n\
16522 No argument means enable all tracepoints."),
16523            &enablelist);
16524   deprecate_cmd (c, "enable");
16525
16526   add_com ("passcount", class_trace, trace_pass_command, _("\
16527 Set the passcount for a tracepoint.\n\
16528 The trace will end when the tracepoint has been passed 'count' times.\n\
16529 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16530 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16531
16532   add_prefix_cmd ("save", class_breakpoint, save_command,
16533                   _("Save breakpoint definitions as a script."),
16534                   &save_cmdlist, "save ",
16535                   0/*allow-unknown*/, &cmdlist);
16536
16537   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16538 Save current breakpoint definitions as a script.\n\
16539 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16540 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16541 session to restore them."),
16542                &save_cmdlist);
16543   set_cmd_completer (c, filename_completer);
16544
16545   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16546 Save current tracepoint definitions as a script.\n\
16547 Use the 'source' command in another debug session to restore them."),
16548                &save_cmdlist);
16549   set_cmd_completer (c, filename_completer);
16550
16551   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16552   deprecate_cmd (c, "save tracepoints");
16553
16554   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16555 Breakpoint specific settings\n\
16556 Configure various breakpoint-specific variables such as\n\
16557 pending breakpoint behavior"),
16558                   &breakpoint_set_cmdlist, "set breakpoint ",
16559                   0/*allow-unknown*/, &setlist);
16560   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16561 Breakpoint specific settings\n\
16562 Configure various breakpoint-specific variables such as\n\
16563 pending breakpoint behavior"),
16564                   &breakpoint_show_cmdlist, "show breakpoint ",
16565                   0/*allow-unknown*/, &showlist);
16566
16567   add_setshow_auto_boolean_cmd ("pending", no_class,
16568                                 &pending_break_support, _("\
16569 Set debugger's behavior regarding pending breakpoints."), _("\
16570 Show debugger's behavior regarding pending breakpoints."), _("\
16571 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16572 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16573 an error.  If auto, an unrecognized breakpoint location results in a\n\
16574 user-query to see if a pending breakpoint should be created."),
16575                                 NULL,
16576                                 show_pending_break_support,
16577                                 &breakpoint_set_cmdlist,
16578                                 &breakpoint_show_cmdlist);
16579
16580   pending_break_support = AUTO_BOOLEAN_AUTO;
16581
16582   add_setshow_boolean_cmd ("auto-hw", no_class,
16583                            &automatic_hardware_breakpoints, _("\
16584 Set automatic usage of hardware breakpoints."), _("\
16585 Show automatic usage of hardware breakpoints."), _("\
16586 If set, the debugger will automatically use hardware breakpoints for\n\
16587 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16588 a warning will be emitted for such breakpoints."),
16589                            NULL,
16590                            show_automatic_hardware_breakpoints,
16591                            &breakpoint_set_cmdlist,
16592                            &breakpoint_show_cmdlist);
16593
16594   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16595                                 &always_inserted_mode, _("\
16596 Set mode for inserting breakpoints."), _("\
16597 Show mode for inserting breakpoints."), _("\
16598 When this mode is off, breakpoints are inserted in inferior when it is\n\
16599 resumed, and removed when execution stops.  When this mode is on,\n\
16600 breakpoints are inserted immediately and removed only when the user\n\
16601 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16602 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16603 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16604 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16605 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16606                                 NULL,
16607                                 &show_always_inserted_mode,
16608                                 &breakpoint_set_cmdlist,
16609                                 &breakpoint_show_cmdlist);
16610
16611   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16612                         condition_evaluation_enums,
16613                         &condition_evaluation_mode_1, _("\
16614 Set mode of breakpoint condition evaluation."), _("\
16615 Show mode of breakpoint condition evaluation."), _("\
16616 When this is set to \"host\", breakpoint conditions will be\n\
16617 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16618 breakpoint conditions will be downloaded to the target (if the target\n\
16619 supports such feature) and conditions will be evaluated on the target's side.\n\
16620 If this is set to \"auto\" (default), this will be automatically set to\n\
16621 \"target\" if it supports condition evaluation, otherwise it will\n\
16622 be set to \"gdb\""),
16623                            &set_condition_evaluation_mode,
16624                            &show_condition_evaluation_mode,
16625                            &breakpoint_set_cmdlist,
16626                            &breakpoint_show_cmdlist);
16627
16628   add_com ("break-range", class_breakpoint, break_range_command, _("\
16629 Set a breakpoint for an address range.\n\
16630 break-range START-LOCATION, END-LOCATION\n\
16631 where START-LOCATION and END-LOCATION can be one of the following:\n\
16632   LINENUM, for that line in the current file,\n\
16633   FILE:LINENUM, for that line in that file,\n\
16634   +OFFSET, for that number of lines after the current line\n\
16635            or the start of the range\n\
16636   FUNCTION, for the first line in that function,\n\
16637   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16638   *ADDRESS, for the instruction at that address.\n\
16639 \n\
16640 The breakpoint will stop execution of the inferior whenever it executes\n\
16641 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16642 range (including START-LOCATION and END-LOCATION)."));
16643
16644   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16645 Set a dynamic printf at specified line or function.\n\
16646 dprintf location,format string,arg1,arg2,...\n\
16647 location may be a line number, function name, or \"*\" and an address.\n\
16648 If a line number is specified, break at start of code for that line.\n\
16649 If a function is specified, break at start of code for that function."));
16650   set_cmd_completer (c, location_completer);
16651
16652   add_setshow_enum_cmd ("dprintf-style", class_support,
16653                         dprintf_style_enums, &dprintf_style, _("\
16654 Set the style of usage for dynamic printf."), _("\
16655 Show the style of usage for dynamic printf."), _("\
16656 This setting chooses how GDB will do a dynamic printf.\n\
16657 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16658 console, as with the \"printf\" command.\n\
16659 If the value is \"call\", the print is done by calling a function in your\n\
16660 program; by default printf(), but you can choose a different function or\n\
16661 output stream by setting dprintf-function and dprintf-channel."),
16662                         update_dprintf_commands, NULL,
16663                         &setlist, &showlist);
16664
16665   dprintf_function = xstrdup ("printf");
16666   add_setshow_string_cmd ("dprintf-function", class_support,
16667                           &dprintf_function, _("\
16668 Set the function to use for dynamic printf"), _("\
16669 Show the function to use for dynamic printf"), NULL,
16670                           update_dprintf_commands, NULL,
16671                           &setlist, &showlist);
16672
16673   dprintf_channel = xstrdup ("");
16674   add_setshow_string_cmd ("dprintf-channel", class_support,
16675                           &dprintf_channel, _("\
16676 Set the channel to use for dynamic printf"), _("\
16677 Show the channel to use for dynamic printf"), NULL,
16678                           update_dprintf_commands, NULL,
16679                           &setlist, &showlist);
16680
16681   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16682                            &disconnected_dprintf, _("\
16683 Set whether dprintf continues after GDB disconnects."), _("\
16684 Show whether dprintf continues after GDB disconnects."), _("\
16685 Use this to let dprintf commands continue to hit and produce output\n\
16686 even if GDB disconnects or detaches from the target."),
16687                            NULL,
16688                            NULL,
16689                            &setlist, &showlist);
16690
16691   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16692 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16693 (target agent only) This is useful for formatted output in user-defined commands."));
16694
16695   automatic_hardware_breakpoints = 1;
16696
16697   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16698   observer_attach_thread_exit (remove_threaded_breakpoints);
16699 }