* mips-tdep.c (fetch_mips_16): Use unmake_compact_addr.
[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     }
1804   else if (within_current_scope && b->exp)
1805     {
1806       int pc = 0;
1807       struct value *val_chain, *v, *result, *next;
1808       struct program_space *frame_pspace;
1809
1810       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1811
1812       /* Avoid setting b->val if it's already set.  The meaning of
1813          b->val is 'the last value' user saw, and we should update
1814          it only if we reported that last value to user.  As it
1815          happens, the code that reports it updates b->val directly.
1816          We don't keep track of the memory value for masked
1817          watchpoints.  */
1818       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1819         {
1820           b->val = v;
1821           b->val_valid = 1;
1822         }
1823
1824       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1825
1826       /* Look at each value on the value chain.  */
1827       for (v = val_chain; v; v = value_next (v))
1828         {
1829           /* If it's a memory location, and GDB actually needed
1830              its contents to evaluate the expression, then we
1831              must watch it.  If the first value returned is
1832              still lazy, that means an error occurred reading it;
1833              watch it anyway in case it becomes readable.  */
1834           if (VALUE_LVAL (v) == lval_memory
1835               && (v == val_chain || ! value_lazy (v)))
1836             {
1837               struct type *vtype = check_typedef (value_type (v));
1838
1839               /* We only watch structs and arrays if user asked
1840                  for it explicitly, never if they just happen to
1841                  appear in the middle of some value chain.  */
1842               if (v == result
1843                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1844                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1845                 {
1846                   CORE_ADDR addr;
1847                   int type;
1848                   struct bp_location *loc, **tmp;
1849
1850                   addr = value_address (v);
1851                   type = hw_write;
1852                   if (b->base.type == bp_read_watchpoint)
1853                     type = hw_read;
1854                   else if (b->base.type == bp_access_watchpoint)
1855                     type = hw_access;
1856
1857                   loc = allocate_bp_location (&b->base);
1858                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1859                     ;
1860                   *tmp = loc;
1861                   loc->gdbarch = get_type_arch (value_type (v));
1862
1863                   loc->pspace = frame_pspace;
1864                   loc->address = addr;
1865                   loc->length = TYPE_LENGTH (value_type (v));
1866                   loc->watchpoint_type = type;
1867                 }
1868             }
1869         }
1870
1871       /* Change the type of breakpoint between hardware assisted or
1872          an ordinary watchpoint depending on the hardware support
1873          and free hardware slots.  REPARSE is set when the inferior
1874          is started.  */
1875       if (reparse)
1876         {
1877           int reg_cnt;
1878           enum bp_loc_type loc_type;
1879           struct bp_location *bl;
1880
1881           reg_cnt = can_use_hardware_watchpoint (val_chain);
1882
1883           if (reg_cnt)
1884             {
1885               int i, target_resources_ok, other_type_used;
1886               enum bptype type;
1887
1888               /* Use an exact watchpoint when there's only one memory region to be
1889                  watched, and only one debug register is needed to watch it.  */
1890               b->exact = target_exact_watchpoints && reg_cnt == 1;
1891
1892               /* We need to determine how many resources are already
1893                  used for all other hardware watchpoints plus this one
1894                  to see if we still have enough resources to also fit
1895                  this watchpoint in as well.  */
1896
1897               /* If this is a software watchpoint, we try to turn it
1898                  to a hardware one -- count resources as if B was of
1899                  hardware watchpoint type.  */
1900               type = b->base.type;
1901               if (type == bp_watchpoint)
1902                 type = bp_hardware_watchpoint;
1903
1904               /* This watchpoint may or may not have been placed on
1905                  the list yet at this point (it won't be in the list
1906                  if we're trying to create it for the first time,
1907                  through watch_command), so always account for it
1908                  manually.  */
1909
1910               /* Count resources used by all watchpoints except B.  */
1911               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1912
1913               /* Add in the resources needed for B.  */
1914               i += hw_watchpoint_use_count (&b->base);
1915
1916               target_resources_ok
1917                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1918               if (target_resources_ok <= 0)
1919                 {
1920                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1921
1922                   if (target_resources_ok == 0 && !sw_mode)
1923                     error (_("Target does not support this type of "
1924                              "hardware watchpoint."));
1925                   else if (target_resources_ok < 0 && !sw_mode)
1926                     error (_("There are not enough available hardware "
1927                              "resources for this watchpoint."));
1928
1929                   /* Downgrade to software watchpoint.  */
1930                   b->base.type = bp_watchpoint;
1931                 }
1932               else
1933                 {
1934                   /* If this was a software watchpoint, we've just
1935                      found we have enough resources to turn it to a
1936                      hardware watchpoint.  Otherwise, this is a
1937                      nop.  */
1938                   b->base.type = type;
1939                 }
1940             }
1941           else if (!b->base.ops->works_in_software_mode (&b->base))
1942             error (_("Expression cannot be implemented with "
1943                      "read/access watchpoint."));
1944           else
1945             b->base.type = bp_watchpoint;
1946
1947           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1948                       : bp_loc_hardware_watchpoint);
1949           for (bl = b->base.loc; bl; bl = bl->next)
1950             bl->loc_type = loc_type;
1951         }
1952
1953       for (v = val_chain; v; v = next)
1954         {
1955           next = value_next (v);
1956           if (v != b->val)
1957             value_free (v);
1958         }
1959
1960       /* If a software watchpoint is not watching any memory, then the
1961          above left it without any location set up.  But,
1962          bpstat_stop_status requires a location to be able to report
1963          stops, so make sure there's at least a dummy one.  */
1964       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1965         {
1966           struct breakpoint *base = &b->base;
1967           base->loc = allocate_bp_location (base);
1968           base->loc->pspace = frame_pspace;
1969           base->loc->address = -1;
1970           base->loc->length = -1;
1971           base->loc->watchpoint_type = -1;
1972         }
1973     }
1974   else if (!within_current_scope)
1975     {
1976       printf_filtered (_("\
1977 Watchpoint %d deleted because the program has left the block\n\
1978 in which its expression is valid.\n"),
1979                        b->base.number);
1980       watchpoint_del_at_next_stop (b);
1981     }
1982
1983   /* Restore the selected frame.  */
1984   if (frame_saved)
1985     select_frame (frame_find_by_id (saved_frame_id));
1986 }
1987
1988
1989 /* Returns 1 iff breakpoint location should be
1990    inserted in the inferior.  We don't differentiate the type of BL's owner
1991    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1992    breakpoint_ops is not defined, because in insert_bp_location,
1993    tracepoint's insert_location will not be called.  */
1994 static int
1995 should_be_inserted (struct bp_location *bl)
1996 {
1997   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1998     return 0;
1999
2000   if (bl->owner->disposition == disp_del_at_next_stop)
2001     return 0;
2002
2003   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2004     return 0;
2005
2006   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2007     return 0;
2008
2009   /* This is set for example, when we're attached to the parent of a
2010      vfork, and have detached from the child.  The child is running
2011      free, and we expect it to do an exec or exit, at which point the
2012      OS makes the parent schedulable again (and the target reports
2013      that the vfork is done).  Until the child is done with the shared
2014      memory region, do not insert breakpoints in the parent, otherwise
2015      the child could still trip on the parent's breakpoints.  Since
2016      the parent is blocked anyway, it won't miss any breakpoint.  */
2017   if (bl->pspace->breakpoints_not_allowed)
2018     return 0;
2019
2020   return 1;
2021 }
2022
2023 /* Same as should_be_inserted but does the check assuming
2024    that the location is not duplicated.  */
2025
2026 static int
2027 unduplicated_should_be_inserted (struct bp_location *bl)
2028 {
2029   int result;
2030   const int save_duplicate = bl->duplicate;
2031
2032   bl->duplicate = 0;
2033   result = should_be_inserted (bl);
2034   bl->duplicate = save_duplicate;
2035   return result;
2036 }
2037
2038 /* Parses a conditional described by an expression COND into an
2039    agent expression bytecode suitable for evaluation
2040    by the bytecode interpreter.  Return NULL if there was
2041    any error during parsing.  */
2042
2043 static struct agent_expr *
2044 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2045 {
2046   struct agent_expr *aexpr = NULL;
2047   volatile struct gdb_exception ex;
2048
2049   if (!cond)
2050     return NULL;
2051
2052   /* We don't want to stop processing, so catch any errors
2053      that may show up.  */
2054   TRY_CATCH (ex, RETURN_MASK_ERROR)
2055     {
2056       aexpr = gen_eval_for_expr (scope, cond);
2057     }
2058
2059   if (ex.reason < 0)
2060     {
2061       /* If we got here, it means the condition could not be parsed to a valid
2062          bytecode expression and thus can't be evaluated on the target's side.
2063          It's no use iterating through the conditions.  */
2064       return NULL;
2065     }
2066
2067   /* We have a valid agent expression.  */
2068   return aexpr;
2069 }
2070
2071 /* Based on location BL, create a list of breakpoint conditions to be
2072    passed on to the target.  If we have duplicated locations with different
2073    conditions, we will add such conditions to the list.  The idea is that the
2074    target will evaluate the list of conditions and will only notify GDB when
2075    one of them is true.  */
2076
2077 static void
2078 build_target_condition_list (struct bp_location *bl)
2079 {
2080   struct bp_location **locp = NULL, **loc2p;
2081   int null_condition_or_parse_error = 0;
2082   int modified = bl->needs_update;
2083   struct bp_location *loc;
2084
2085   /* This is only meaningful if the target is
2086      evaluating conditions and if the user has
2087      opted for condition evaluation on the target's
2088      side.  */
2089   if (gdb_evaluates_breakpoint_condition_p ()
2090       || !target_supports_evaluation_of_breakpoint_conditions ())
2091     return;
2092
2093   /* Do a first pass to check for locations with no assigned
2094      conditions or conditions that fail to parse to a valid agent expression
2095      bytecode.  If any of these happen, then it's no use to send conditions
2096      to the target since this location will always trigger and generate a
2097      response back to GDB.  */
2098   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2099     {
2100       loc = (*loc2p);
2101       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2102         {
2103           if (modified)
2104             {
2105               struct agent_expr *aexpr;
2106
2107               /* Re-parse the conditions since something changed.  In that
2108                  case we already freed the condition bytecodes (see
2109                  force_breakpoint_reinsertion).  We just
2110                  need to parse the condition to bytecodes again.  */
2111               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2112               loc->cond_bytecode = aexpr;
2113
2114               /* Check if we managed to parse the conditional expression
2115                  correctly.  If not, we will not send this condition
2116                  to the target.  */
2117               if (aexpr)
2118                 continue;
2119             }
2120
2121           /* If we have a NULL bytecode expression, it means something
2122              went wrong or we have a null condition expression.  */
2123           if (!loc->cond_bytecode)
2124             {
2125               null_condition_or_parse_error = 1;
2126               break;
2127             }
2128         }
2129     }
2130
2131   /* If any of these happened, it means we will have to evaluate the conditions
2132      for the location's address on gdb's side.  It is no use keeping bytecodes
2133      for all the other duplicate locations, thus we free all of them here.
2134
2135      This is so we have a finer control over which locations' conditions are
2136      being evaluated by GDB or the remote stub.  */
2137   if (null_condition_or_parse_error)
2138     {
2139       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2140         {
2141           loc = (*loc2p);
2142           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2143             {
2144               /* Only go as far as the first NULL bytecode is
2145                  located.  */
2146               if (!loc->cond_bytecode)
2147                 return;
2148
2149               free_agent_expr (loc->cond_bytecode);
2150               loc->cond_bytecode = NULL;
2151             }
2152         }
2153     }
2154
2155   /* No NULL conditions or failed bytecode generation.  Build a condition list
2156      for this location's address.  */
2157   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2158     {
2159       loc = (*loc2p);
2160       if (loc->cond
2161           && is_breakpoint (loc->owner)
2162           && loc->pspace->num == bl->pspace->num
2163           && loc->owner->enable_state == bp_enabled
2164           && loc->enabled)
2165         /* Add the condition to the vector.  This will be used later to send the
2166            conditions to the target.  */
2167         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2168                        loc->cond_bytecode);
2169     }
2170
2171   return;
2172 }
2173
2174 /* Parses a command described by string CMD into an agent expression
2175    bytecode suitable for evaluation by the bytecode interpreter.
2176    Return NULL if there was any error during parsing.  */
2177
2178 static struct agent_expr *
2179 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2180 {
2181   struct cleanup *old_cleanups = 0;
2182   struct expression *expr, **argvec;
2183   struct agent_expr *aexpr = NULL;
2184   volatile struct gdb_exception ex;
2185   const char *cmdrest;
2186   const char *format_start, *format_end;
2187   struct format_piece *fpieces;
2188   int nargs;
2189   struct gdbarch *gdbarch = get_current_arch ();
2190
2191   if (!cmd)
2192     return NULL;
2193
2194   cmdrest = cmd;
2195
2196   if (*cmdrest == ',')
2197     ++cmdrest;
2198   cmdrest = skip_spaces_const (cmdrest);
2199
2200   if (*cmdrest++ != '"')
2201     error (_("No format string following the location"));
2202
2203   format_start = cmdrest;
2204
2205   fpieces = parse_format_string (&cmdrest);
2206
2207   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2208
2209   format_end = cmdrest;
2210
2211   if (*cmdrest++ != '"')
2212     error (_("Bad format string, non-terminated '\"'."));
2213   
2214   cmdrest = skip_spaces_const (cmdrest);
2215
2216   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2217     error (_("Invalid argument syntax"));
2218
2219   if (*cmdrest == ',')
2220     cmdrest++;
2221   cmdrest = skip_spaces_const (cmdrest);
2222
2223   /* For each argument, make an expression.  */
2224
2225   argvec = (struct expression **) alloca (strlen (cmd)
2226                                          * sizeof (struct expression *));
2227
2228   nargs = 0;
2229   while (*cmdrest != '\0')
2230     {
2231       const char *cmd1;
2232
2233       cmd1 = cmdrest;
2234       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2235       argvec[nargs++] = expr;
2236       cmdrest = cmd1;
2237       if (*cmdrest == ',')
2238         ++cmdrest;
2239     }
2240
2241   /* We don't want to stop processing, so catch any errors
2242      that may show up.  */
2243   TRY_CATCH (ex, RETURN_MASK_ERROR)
2244     {
2245       aexpr = gen_printf (scope, gdbarch, 0, 0,
2246                           format_start, format_end - format_start,
2247                           fpieces, nargs, argvec);
2248     }
2249
2250   do_cleanups (old_cleanups);
2251
2252   if (ex.reason < 0)
2253     {
2254       /* If we got here, it means the command could not be parsed to a valid
2255          bytecode expression and thus can't be evaluated on the target's side.
2256          It's no use iterating through the other commands.  */
2257       return NULL;
2258     }
2259
2260   /* We have a valid agent expression, return it.  */
2261   return aexpr;
2262 }
2263
2264 /* Based on location BL, create a list of breakpoint commands to be
2265    passed on to the target.  If we have duplicated locations with
2266    different commands, we will add any such to the list.  */
2267
2268 static void
2269 build_target_command_list (struct bp_location *bl)
2270 {
2271   struct bp_location **locp = NULL, **loc2p;
2272   int null_command_or_parse_error = 0;
2273   int modified = bl->needs_update;
2274   struct bp_location *loc;
2275
2276   /* For now, limit to agent-style dprintf breakpoints.  */
2277   if (bl->owner->type != bp_dprintf
2278       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2279     return;
2280
2281   if (!target_can_run_breakpoint_commands ())
2282     return;
2283
2284   /* Do a first pass to check for locations with no assigned
2285      conditions or conditions that fail to parse to a valid agent expression
2286      bytecode.  If any of these happen, then it's no use to send conditions
2287      to the target since this location will always trigger and generate a
2288      response back to GDB.  */
2289   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2290     {
2291       loc = (*loc2p);
2292       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2293         {
2294           if (modified)
2295             {
2296               struct agent_expr *aexpr;
2297
2298               /* Re-parse the commands since something changed.  In that
2299                  case we already freed the command bytecodes (see
2300                  force_breakpoint_reinsertion).  We just
2301                  need to parse the command to bytecodes again.  */
2302               aexpr = parse_cmd_to_aexpr (bl->address,
2303                                           loc->owner->extra_string);
2304               loc->cmd_bytecode = aexpr;
2305
2306               if (!aexpr)
2307                 continue;
2308             }
2309
2310           /* If we have a NULL bytecode expression, it means something
2311              went wrong or we have a null command expression.  */
2312           if (!loc->cmd_bytecode)
2313             {
2314               null_command_or_parse_error = 1;
2315               break;
2316             }
2317         }
2318     }
2319
2320   /* If anything failed, then we're not doing target-side commands,
2321      and so clean up.  */
2322   if (null_command_or_parse_error)
2323     {
2324       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2325         {
2326           loc = (*loc2p);
2327           if (is_breakpoint (loc->owner)
2328               && loc->pspace->num == bl->pspace->num)
2329             {
2330               /* Only go as far as the first NULL bytecode is
2331                  located.  */
2332               if (loc->cmd_bytecode == NULL)
2333                 return;
2334
2335               free_agent_expr (loc->cmd_bytecode);
2336               loc->cmd_bytecode = NULL;
2337             }
2338         }
2339     }
2340
2341   /* No NULL commands or failed bytecode generation.  Build a command list
2342      for this location's address.  */
2343   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2344     {
2345       loc = (*loc2p);
2346       if (loc->owner->extra_string
2347           && is_breakpoint (loc->owner)
2348           && loc->pspace->num == bl->pspace->num
2349           && loc->owner->enable_state == bp_enabled
2350           && loc->enabled)
2351         /* Add the command to the vector.  This will be used later
2352            to send the commands to the target.  */
2353         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2354                        loc->cmd_bytecode);
2355     }
2356
2357   bl->target_info.persist = 0;
2358   /* Maybe flag this location as persistent.  */
2359   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2360     bl->target_info.persist = 1;
2361 }
2362
2363 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2364    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2365    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2366    Returns 0 for success, 1 if the bp_location type is not supported or
2367    -1 for failure.
2368
2369    NOTE drow/2003-09-09: This routine could be broken down to an
2370    object-style method for each breakpoint or catchpoint type.  */
2371 static int
2372 insert_bp_location (struct bp_location *bl,
2373                     struct ui_file *tmp_error_stream,
2374                     int *disabled_breaks,
2375                     int *hw_breakpoint_error,
2376                     int *hw_bp_error_explained_already)
2377 {
2378   int val = 0;
2379   char *hw_bp_err_string = NULL;
2380   struct gdb_exception e;
2381
2382   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2383     return 0;
2384
2385   /* Note we don't initialize bl->target_info, as that wipes out
2386      the breakpoint location's shadow_contents if the breakpoint
2387      is still inserted at that location.  This in turn breaks
2388      target_read_memory which depends on these buffers when
2389      a memory read is requested at the breakpoint location:
2390      Once the target_info has been wiped, we fail to see that
2391      we have a breakpoint inserted at that address and thus
2392      read the breakpoint instead of returning the data saved in
2393      the breakpoint location's shadow contents.  */
2394   bl->target_info.placed_address = bl->address;
2395   bl->target_info.placed_address_space = bl->pspace->aspace;
2396   bl->target_info.length = bl->length;
2397
2398   /* When working with target-side conditions, we must pass all the conditions
2399      for the same breakpoint address down to the target since GDB will not
2400      insert those locations.  With a list of breakpoint conditions, the target
2401      can decide when to stop and notify GDB.  */
2402
2403   if (is_breakpoint (bl->owner))
2404     {
2405       build_target_condition_list (bl);
2406       build_target_command_list (bl);
2407       /* Reset the modification marker.  */
2408       bl->needs_update = 0;
2409     }
2410
2411   if (bl->loc_type == bp_loc_software_breakpoint
2412       || bl->loc_type == bp_loc_hardware_breakpoint)
2413     {
2414       if (bl->owner->type != bp_hardware_breakpoint)
2415         {
2416           /* If the explicitly specified breakpoint type
2417              is not hardware breakpoint, check the memory map to see
2418              if the breakpoint address is in read only memory or not.
2419
2420              Two important cases are:
2421              - location type is not hardware breakpoint, memory
2422              is readonly.  We change the type of the location to
2423              hardware breakpoint.
2424              - location type is hardware breakpoint, memory is
2425              read-write.  This means we've previously made the
2426              location hardware one, but then the memory map changed,
2427              so we undo.
2428              
2429              When breakpoints are removed, remove_breakpoints will use
2430              location types we've just set here, the only possible
2431              problem is that memory map has changed during running
2432              program, but it's not going to work anyway with current
2433              gdb.  */
2434           struct mem_region *mr 
2435             = lookup_mem_region (bl->target_info.placed_address);
2436           
2437           if (mr)
2438             {
2439               if (automatic_hardware_breakpoints)
2440                 {
2441                   enum bp_loc_type new_type;
2442                   
2443                   if (mr->attrib.mode != MEM_RW)
2444                     new_type = bp_loc_hardware_breakpoint;
2445                   else 
2446                     new_type = bp_loc_software_breakpoint;
2447                   
2448                   if (new_type != bl->loc_type)
2449                     {
2450                       static int said = 0;
2451
2452                       bl->loc_type = new_type;
2453                       if (!said)
2454                         {
2455                           fprintf_filtered (gdb_stdout,
2456                                             _("Note: automatically using "
2457                                               "hardware breakpoints for "
2458                                               "read-only addresses.\n"));
2459                           said = 1;
2460                         }
2461                     }
2462                 }
2463               else if (bl->loc_type == bp_loc_software_breakpoint
2464                        && mr->attrib.mode != MEM_RW)        
2465                 warning (_("cannot set software breakpoint "
2466                            "at readonly address %s"),
2467                          paddress (bl->gdbarch, bl->address));
2468             }
2469         }
2470         
2471       /* First check to see if we have to handle an overlay.  */
2472       if (overlay_debugging == ovly_off
2473           || bl->section == NULL
2474           || !(section_is_overlay (bl->section)))
2475         {
2476           /* No overlay handling: just set the breakpoint.  */
2477           TRY_CATCH (e, RETURN_MASK_ALL)
2478             {
2479               val = bl->owner->ops->insert_location (bl);
2480             }
2481           if (e.reason < 0)
2482             {
2483               val = 1;
2484               hw_bp_err_string = (char *) e.message;
2485             }
2486         }
2487       else
2488         {
2489           /* This breakpoint is in an overlay section.
2490              Shall we set a breakpoint at the LMA?  */
2491           if (!overlay_events_enabled)
2492             {
2493               /* Yes -- overlay event support is not active, 
2494                  so we must try to set a breakpoint at the LMA.
2495                  This will not work for a hardware breakpoint.  */
2496               if (bl->loc_type == bp_loc_hardware_breakpoint)
2497                 warning (_("hardware breakpoint %d not supported in overlay!"),
2498                          bl->owner->number);
2499               else
2500                 {
2501                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2502                                                              bl->section);
2503                   /* Set a software (trap) breakpoint at the LMA.  */
2504                   bl->overlay_target_info = bl->target_info;
2505                   bl->overlay_target_info.placed_address = addr;
2506                   val = target_insert_breakpoint (bl->gdbarch,
2507                                                   &bl->overlay_target_info);
2508                   if (val != 0)
2509                     fprintf_unfiltered (tmp_error_stream,
2510                                         "Overlay breakpoint %d "
2511                                         "failed: in ROM?\n",
2512                                         bl->owner->number);
2513                 }
2514             }
2515           /* Shall we set a breakpoint at the VMA? */
2516           if (section_is_mapped (bl->section))
2517             {
2518               /* Yes.  This overlay section is mapped into memory.  */
2519               TRY_CATCH (e, RETURN_MASK_ALL)
2520                 {
2521                   val = bl->owner->ops->insert_location (bl);
2522                 }
2523               if (e.reason < 0)
2524                 {
2525                   val = 1;
2526                   hw_bp_err_string = (char *) e.message;
2527                 }
2528             }
2529           else
2530             {
2531               /* No.  This breakpoint will not be inserted.  
2532                  No error, but do not mark the bp as 'inserted'.  */
2533               return 0;
2534             }
2535         }
2536
2537       if (val)
2538         {
2539           /* Can't set the breakpoint.  */
2540           if (solib_name_from_address (bl->pspace, bl->address))
2541             {
2542               /* See also: disable_breakpoints_in_shlibs.  */
2543               val = 0;
2544               bl->shlib_disabled = 1;
2545               observer_notify_breakpoint_modified (bl->owner);
2546               if (!*disabled_breaks)
2547                 {
2548                   fprintf_unfiltered (tmp_error_stream, 
2549                                       "Cannot insert breakpoint %d.\n", 
2550                                       bl->owner->number);
2551                   fprintf_unfiltered (tmp_error_stream, 
2552                                       "Temporarily disabling shared "
2553                                       "library breakpoints:\n");
2554                 }
2555               *disabled_breaks = 1;
2556               fprintf_unfiltered (tmp_error_stream,
2557                                   "breakpoint #%d\n", bl->owner->number);
2558             }
2559           else
2560             {
2561               if (bl->loc_type == bp_loc_hardware_breakpoint)
2562                 {
2563                   *hw_breakpoint_error = 1;
2564                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2565                   fprintf_unfiltered (tmp_error_stream,
2566                                       "Cannot insert hardware breakpoint %d%s",
2567                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2568                   if (hw_bp_err_string)
2569                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2570                 }
2571               else
2572                 {
2573                   fprintf_unfiltered (tmp_error_stream, 
2574                                       "Cannot insert breakpoint %d.\n", 
2575                                       bl->owner->number);
2576                   fprintf_filtered (tmp_error_stream, 
2577                                     "Error accessing memory address ");
2578                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2579                                   tmp_error_stream);
2580                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2581                                     safe_strerror (val));
2582                 }
2583
2584             }
2585         }
2586       else
2587         bl->inserted = 1;
2588
2589       return val;
2590     }
2591
2592   else if (bl->loc_type == bp_loc_hardware_watchpoint
2593            /* NOTE drow/2003-09-08: This state only exists for removing
2594               watchpoints.  It's not clear that it's necessary...  */
2595            && bl->owner->disposition != disp_del_at_next_stop)
2596     {
2597       gdb_assert (bl->owner->ops != NULL
2598                   && bl->owner->ops->insert_location != NULL);
2599
2600       val = bl->owner->ops->insert_location (bl);
2601
2602       /* If trying to set a read-watchpoint, and it turns out it's not
2603          supported, try emulating one with an access watchpoint.  */
2604       if (val == 1 && bl->watchpoint_type == hw_read)
2605         {
2606           struct bp_location *loc, **loc_temp;
2607
2608           /* But don't try to insert it, if there's already another
2609              hw_access location that would be considered a duplicate
2610              of this one.  */
2611           ALL_BP_LOCATIONS (loc, loc_temp)
2612             if (loc != bl
2613                 && loc->watchpoint_type == hw_access
2614                 && watchpoint_locations_match (bl, loc))
2615               {
2616                 bl->duplicate = 1;
2617                 bl->inserted = 1;
2618                 bl->target_info = loc->target_info;
2619                 bl->watchpoint_type = hw_access;
2620                 val = 0;
2621                 break;
2622               }
2623
2624           if (val == 1)
2625             {
2626               bl->watchpoint_type = hw_access;
2627               val = bl->owner->ops->insert_location (bl);
2628
2629               if (val)
2630                 /* Back to the original value.  */
2631                 bl->watchpoint_type = hw_read;
2632             }
2633         }
2634
2635       bl->inserted = (val == 0);
2636     }
2637
2638   else if (bl->owner->type == bp_catchpoint)
2639     {
2640       gdb_assert (bl->owner->ops != NULL
2641                   && bl->owner->ops->insert_location != NULL);
2642
2643       val = bl->owner->ops->insert_location (bl);
2644       if (val)
2645         {
2646           bl->owner->enable_state = bp_disabled;
2647
2648           if (val == 1)
2649             warning (_("\
2650 Error inserting catchpoint %d: Your system does not support this type\n\
2651 of catchpoint."), bl->owner->number);
2652           else
2653             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2654         }
2655
2656       bl->inserted = (val == 0);
2657
2658       /* We've already printed an error message if there was a problem
2659          inserting this catchpoint, and we've disabled the catchpoint,
2660          so just return success.  */
2661       return 0;
2662     }
2663
2664   return 0;
2665 }
2666
2667 /* This function is called when program space PSPACE is about to be
2668    deleted.  It takes care of updating breakpoints to not reference
2669    PSPACE anymore.  */
2670
2671 void
2672 breakpoint_program_space_exit (struct program_space *pspace)
2673 {
2674   struct breakpoint *b, *b_temp;
2675   struct bp_location *loc, **loc_temp;
2676
2677   /* Remove any breakpoint that was set through this program space.  */
2678   ALL_BREAKPOINTS_SAFE (b, b_temp)
2679     {
2680       if (b->pspace == pspace)
2681         delete_breakpoint (b);
2682     }
2683
2684   /* Breakpoints set through other program spaces could have locations
2685      bound to PSPACE as well.  Remove those.  */
2686   ALL_BP_LOCATIONS (loc, loc_temp)
2687     {
2688       struct bp_location *tmp;
2689
2690       if (loc->pspace == pspace)
2691         {
2692           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2693           if (loc->owner->loc == loc)
2694             loc->owner->loc = loc->next;
2695           else
2696             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2697               if (tmp->next == loc)
2698                 {
2699                   tmp->next = loc->next;
2700                   break;
2701                 }
2702         }
2703     }
2704
2705   /* Now update the global location list to permanently delete the
2706      removed locations above.  */
2707   update_global_location_list (0);
2708 }
2709
2710 /* Make sure all breakpoints are inserted in inferior.
2711    Throws exception on any error.
2712    A breakpoint that is already inserted won't be inserted
2713    again, so calling this function twice is safe.  */
2714 void
2715 insert_breakpoints (void)
2716 {
2717   struct breakpoint *bpt;
2718
2719   ALL_BREAKPOINTS (bpt)
2720     if (is_hardware_watchpoint (bpt))
2721       {
2722         struct watchpoint *w = (struct watchpoint *) bpt;
2723
2724         update_watchpoint (w, 0 /* don't reparse.  */);
2725       }
2726
2727   update_global_location_list (1);
2728
2729   /* update_global_location_list does not insert breakpoints when
2730      always_inserted_mode is not enabled.  Explicitly insert them
2731      now.  */
2732   if (!breakpoints_always_inserted_mode ())
2733     insert_breakpoint_locations ();
2734 }
2735
2736 /* Invoke CALLBACK for each of bp_location.  */
2737
2738 void
2739 iterate_over_bp_locations (walk_bp_location_callback callback)
2740 {
2741   struct bp_location *loc, **loc_tmp;
2742
2743   ALL_BP_LOCATIONS (loc, loc_tmp)
2744     {
2745       callback (loc, NULL);
2746     }
2747 }
2748
2749 /* This is used when we need to synch breakpoint conditions between GDB and the
2750    target.  It is the case with deleting and disabling of breakpoints when using
2751    always-inserted mode.  */
2752
2753 static void
2754 update_inserted_breakpoint_locations (void)
2755 {
2756   struct bp_location *bl, **blp_tmp;
2757   int error_flag = 0;
2758   int val = 0;
2759   int disabled_breaks = 0;
2760   int hw_breakpoint_error = 0;
2761   int hw_bp_details_reported = 0;
2762
2763   struct ui_file *tmp_error_stream = mem_fileopen ();
2764   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2765
2766   /* Explicitly mark the warning -- this will only be printed if
2767      there was an error.  */
2768   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2769
2770   save_current_space_and_thread ();
2771
2772   ALL_BP_LOCATIONS (bl, blp_tmp)
2773     {
2774       /* We only want to update software breakpoints and hardware
2775          breakpoints.  */
2776       if (!is_breakpoint (bl->owner))
2777         continue;
2778
2779       /* We only want to update locations that are already inserted
2780          and need updating.  This is to avoid unwanted insertion during
2781          deletion of breakpoints.  */
2782       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2783         continue;
2784
2785       switch_to_program_space_and_thread (bl->pspace);
2786
2787       /* For targets that support global breakpoints, there's no need
2788          to select an inferior to insert breakpoint to.  In fact, even
2789          if we aren't attached to any process yet, we should still
2790          insert breakpoints.  */
2791       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2792           && ptid_equal (inferior_ptid, null_ptid))
2793         continue;
2794
2795       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2796                                     &hw_breakpoint_error, &hw_bp_details_reported);
2797       if (val)
2798         error_flag = val;
2799     }
2800
2801   if (error_flag)
2802     {
2803       target_terminal_ours_for_output ();
2804       error_stream (tmp_error_stream);
2805     }
2806
2807   do_cleanups (cleanups);
2808 }
2809
2810 /* Used when starting or continuing the program.  */
2811
2812 static void
2813 insert_breakpoint_locations (void)
2814 {
2815   struct breakpoint *bpt;
2816   struct bp_location *bl, **blp_tmp;
2817   int error_flag = 0;
2818   int val = 0;
2819   int disabled_breaks = 0;
2820   int hw_breakpoint_error = 0;
2821   int hw_bp_error_explained_already = 0;
2822
2823   struct ui_file *tmp_error_stream = mem_fileopen ();
2824   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2825   
2826   /* Explicitly mark the warning -- this will only be printed if
2827      there was an error.  */
2828   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2829
2830   save_current_space_and_thread ();
2831
2832   ALL_BP_LOCATIONS (bl, blp_tmp)
2833     {
2834       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2835         continue;
2836
2837       /* There is no point inserting thread-specific breakpoints if
2838          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2839          has BL->OWNER always non-NULL.  */
2840       if (bl->owner->thread != -1
2841           && !valid_thread_id (bl->owner->thread))
2842         continue;
2843
2844       switch_to_program_space_and_thread (bl->pspace);
2845
2846       /* For targets that support global breakpoints, there's no need
2847          to select an inferior to insert breakpoint to.  In fact, even
2848          if we aren't attached to any process yet, we should still
2849          insert breakpoints.  */
2850       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2851           && ptid_equal (inferior_ptid, null_ptid))
2852         continue;
2853
2854       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2855                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2856       if (val)
2857         error_flag = val;
2858     }
2859
2860   /* If we failed to insert all locations of a watchpoint, remove
2861      them, as half-inserted watchpoint is of limited use.  */
2862   ALL_BREAKPOINTS (bpt)  
2863     {
2864       int some_failed = 0;
2865       struct bp_location *loc;
2866
2867       if (!is_hardware_watchpoint (bpt))
2868         continue;
2869
2870       if (!breakpoint_enabled (bpt))
2871         continue;
2872
2873       if (bpt->disposition == disp_del_at_next_stop)
2874         continue;
2875       
2876       for (loc = bpt->loc; loc; loc = loc->next)
2877         if (!loc->inserted && should_be_inserted (loc))
2878           {
2879             some_failed = 1;
2880             break;
2881           }
2882       if (some_failed)
2883         {
2884           for (loc = bpt->loc; loc; loc = loc->next)
2885             if (loc->inserted)
2886               remove_breakpoint (loc, mark_uninserted);
2887
2888           hw_breakpoint_error = 1;
2889           fprintf_unfiltered (tmp_error_stream,
2890                               "Could not insert hardware watchpoint %d.\n", 
2891                               bpt->number);
2892           error_flag = -1;
2893         }
2894     }
2895
2896   if (error_flag)
2897     {
2898       /* If a hardware breakpoint or watchpoint was inserted, add a
2899          message about possibly exhausted resources.  */
2900       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2901         {
2902           fprintf_unfiltered (tmp_error_stream, 
2903                               "Could not insert hardware breakpoints:\n\
2904 You may have requested too many hardware breakpoints/watchpoints.\n");
2905         }
2906       target_terminal_ours_for_output ();
2907       error_stream (tmp_error_stream);
2908     }
2909
2910   do_cleanups (cleanups);
2911 }
2912
2913 /* Used when the program stops.
2914    Returns zero if successful, or non-zero if there was a problem
2915    removing a breakpoint location.  */
2916
2917 int
2918 remove_breakpoints (void)
2919 {
2920   struct bp_location *bl, **blp_tmp;
2921   int val = 0;
2922
2923   ALL_BP_LOCATIONS (bl, blp_tmp)
2924   {
2925     if (bl->inserted && !is_tracepoint (bl->owner))
2926       val |= remove_breakpoint (bl, mark_uninserted);
2927   }
2928   return val;
2929 }
2930
2931 /* Remove breakpoints of process PID.  */
2932
2933 int
2934 remove_breakpoints_pid (int pid)
2935 {
2936   struct bp_location *bl, **blp_tmp;
2937   int val;
2938   struct inferior *inf = find_inferior_pid (pid);
2939
2940   ALL_BP_LOCATIONS (bl, blp_tmp)
2941   {
2942     if (bl->pspace != inf->pspace)
2943       continue;
2944
2945     if (bl->owner->type == bp_dprintf)
2946       continue;
2947
2948     if (bl->inserted)
2949       {
2950         val = remove_breakpoint (bl, mark_uninserted);
2951         if (val != 0)
2952           return val;
2953       }
2954   }
2955   return 0;
2956 }
2957
2958 int
2959 reattach_breakpoints (int pid)
2960 {
2961   struct cleanup *old_chain;
2962   struct bp_location *bl, **blp_tmp;
2963   int val;
2964   struct ui_file *tmp_error_stream;
2965   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2966   struct inferior *inf;
2967   struct thread_info *tp;
2968
2969   tp = any_live_thread_of_process (pid);
2970   if (tp == NULL)
2971     return 1;
2972
2973   inf = find_inferior_pid (pid);
2974   old_chain = save_inferior_ptid ();
2975
2976   inferior_ptid = tp->ptid;
2977
2978   tmp_error_stream = mem_fileopen ();
2979   make_cleanup_ui_file_delete (tmp_error_stream);
2980
2981   ALL_BP_LOCATIONS (bl, blp_tmp)
2982   {
2983     if (bl->pspace != inf->pspace)
2984       continue;
2985
2986     if (bl->inserted)
2987       {
2988         bl->inserted = 0;
2989         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2990         if (val != 0)
2991           {
2992             do_cleanups (old_chain);
2993             return val;
2994           }
2995       }
2996   }
2997   do_cleanups (old_chain);
2998   return 0;
2999 }
3000
3001 static int internal_breakpoint_number = -1;
3002
3003 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3004    If INTERNAL is non-zero, the breakpoint number will be populated
3005    from internal_breakpoint_number and that variable decremented.
3006    Otherwise the breakpoint number will be populated from
3007    breakpoint_count and that value incremented.  Internal breakpoints
3008    do not set the internal var bpnum.  */
3009 static void
3010 set_breakpoint_number (int internal, struct breakpoint *b)
3011 {
3012   if (internal)
3013     b->number = internal_breakpoint_number--;
3014   else
3015     {
3016       set_breakpoint_count (breakpoint_count + 1);
3017       b->number = breakpoint_count;
3018     }
3019 }
3020
3021 static struct breakpoint *
3022 create_internal_breakpoint (struct gdbarch *gdbarch,
3023                             CORE_ADDR address, enum bptype type,
3024                             const struct breakpoint_ops *ops)
3025 {
3026   struct symtab_and_line sal;
3027   struct breakpoint *b;
3028
3029   init_sal (&sal);              /* Initialize to zeroes.  */
3030
3031   sal.pc = address;
3032   sal.section = find_pc_overlay (sal.pc);
3033   sal.pspace = current_program_space;
3034
3035   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3036   b->number = internal_breakpoint_number--;
3037   b->disposition = disp_donttouch;
3038
3039   return b;
3040 }
3041
3042 static const char *const longjmp_names[] =
3043   {
3044     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3045   };
3046 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3047
3048 /* Per-objfile data private to breakpoint.c.  */
3049 struct breakpoint_objfile_data
3050 {
3051   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3052   struct minimal_symbol *overlay_msym;
3053
3054   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3055   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3056
3057   /* True if we have looked for longjmp probes.  */
3058   int longjmp_searched;
3059
3060   /* SystemTap probe points for longjmp (if any).  */
3061   VEC (probe_p) *longjmp_probes;
3062
3063   /* Minimal symbol for "std::terminate()" (if any).  */
3064   struct minimal_symbol *terminate_msym;
3065
3066   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3067   struct minimal_symbol *exception_msym;
3068
3069   /* True if we have looked for exception probes.  */
3070   int exception_searched;
3071
3072   /* SystemTap probe points for unwinding (if any).  */
3073   VEC (probe_p) *exception_probes;
3074 };
3075
3076 static const struct objfile_data *breakpoint_objfile_key;
3077
3078 /* Minimal symbol not found sentinel.  */
3079 static struct minimal_symbol msym_not_found;
3080
3081 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3082
3083 static int
3084 msym_not_found_p (const struct minimal_symbol *msym)
3085 {
3086   return msym == &msym_not_found;
3087 }
3088
3089 /* Return per-objfile data needed by breakpoint.c.
3090    Allocate the data if necessary.  */
3091
3092 static struct breakpoint_objfile_data *
3093 get_breakpoint_objfile_data (struct objfile *objfile)
3094 {
3095   struct breakpoint_objfile_data *bp_objfile_data;
3096
3097   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3098   if (bp_objfile_data == NULL)
3099     {
3100       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3101                                        sizeof (*bp_objfile_data));
3102
3103       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3104       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3105     }
3106   return bp_objfile_data;
3107 }
3108
3109 static void
3110 free_breakpoint_probes (struct objfile *obj, void *data)
3111 {
3112   struct breakpoint_objfile_data *bp_objfile_data = data;
3113
3114   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3115   VEC_free (probe_p, bp_objfile_data->exception_probes);
3116 }
3117
3118 static void
3119 create_overlay_event_breakpoint (void)
3120 {
3121   struct objfile *objfile;
3122   const char *const func_name = "_ovly_debug_event";
3123
3124   ALL_OBJFILES (objfile)
3125     {
3126       struct breakpoint *b;
3127       struct breakpoint_objfile_data *bp_objfile_data;
3128       CORE_ADDR addr;
3129
3130       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3131
3132       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3133         continue;
3134
3135       if (bp_objfile_data->overlay_msym == NULL)
3136         {
3137           struct minimal_symbol *m;
3138
3139           m = lookup_minimal_symbol_text (func_name, objfile);
3140           if (m == NULL)
3141             {
3142               /* Avoid future lookups in this objfile.  */
3143               bp_objfile_data->overlay_msym = &msym_not_found;
3144               continue;
3145             }
3146           bp_objfile_data->overlay_msym = m;
3147         }
3148
3149       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3150       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3151                                       bp_overlay_event,
3152                                       &internal_breakpoint_ops);
3153       b->addr_string = xstrdup (func_name);
3154
3155       if (overlay_debugging == ovly_auto)
3156         {
3157           b->enable_state = bp_enabled;
3158           overlay_events_enabled = 1;
3159         }
3160       else
3161        {
3162          b->enable_state = bp_disabled;
3163          overlay_events_enabled = 0;
3164        }
3165     }
3166   update_global_location_list (1);
3167 }
3168
3169 static void
3170 create_longjmp_master_breakpoint (void)
3171 {
3172   struct program_space *pspace;
3173   struct cleanup *old_chain;
3174
3175   old_chain = save_current_program_space ();
3176
3177   ALL_PSPACES (pspace)
3178   {
3179     struct objfile *objfile;
3180
3181     set_current_program_space (pspace);
3182
3183     ALL_OBJFILES (objfile)
3184     {
3185       int i;
3186       struct gdbarch *gdbarch;
3187       struct breakpoint_objfile_data *bp_objfile_data;
3188
3189       gdbarch = get_objfile_arch (objfile);
3190       if (!gdbarch_get_longjmp_target_p (gdbarch))
3191         continue;
3192
3193       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3194
3195       if (!bp_objfile_data->longjmp_searched)
3196         {
3197           bp_objfile_data->longjmp_probes
3198             = find_probes_in_objfile (objfile, "libc", "longjmp");
3199           bp_objfile_data->longjmp_searched = 1;
3200         }
3201
3202       if (bp_objfile_data->longjmp_probes != NULL)
3203         {
3204           int i;
3205           struct probe *probe;
3206           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3207
3208           for (i = 0;
3209                VEC_iterate (probe_p,
3210                             bp_objfile_data->longjmp_probes,
3211                             i, probe);
3212                ++i)
3213             {
3214               struct breakpoint *b;
3215
3216               b = create_internal_breakpoint (gdbarch, probe->address,
3217                                               bp_longjmp_master,
3218                                               &internal_breakpoint_ops);
3219               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3220               b->enable_state = bp_disabled;
3221             }
3222
3223           continue;
3224         }
3225
3226       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3227         {
3228           struct breakpoint *b;
3229           const char *func_name;
3230           CORE_ADDR addr;
3231
3232           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3233             continue;
3234
3235           func_name = longjmp_names[i];
3236           if (bp_objfile_data->longjmp_msym[i] == NULL)
3237             {
3238               struct minimal_symbol *m;
3239
3240               m = lookup_minimal_symbol_text (func_name, objfile);
3241               if (m == NULL)
3242                 {
3243                   /* Prevent future lookups in this objfile.  */
3244                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3245                   continue;
3246                 }
3247               bp_objfile_data->longjmp_msym[i] = m;
3248             }
3249
3250           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3251           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3252                                           &internal_breakpoint_ops);
3253           b->addr_string = xstrdup (func_name);
3254           b->enable_state = bp_disabled;
3255         }
3256     }
3257   }
3258   update_global_location_list (1);
3259
3260   do_cleanups (old_chain);
3261 }
3262
3263 /* Create a master std::terminate breakpoint.  */
3264 static void
3265 create_std_terminate_master_breakpoint (void)
3266 {
3267   struct program_space *pspace;
3268   struct cleanup *old_chain;
3269   const char *const func_name = "std::terminate()";
3270
3271   old_chain = save_current_program_space ();
3272
3273   ALL_PSPACES (pspace)
3274   {
3275     struct objfile *objfile;
3276     CORE_ADDR addr;
3277
3278     set_current_program_space (pspace);
3279
3280     ALL_OBJFILES (objfile)
3281     {
3282       struct breakpoint *b;
3283       struct breakpoint_objfile_data *bp_objfile_data;
3284
3285       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3286
3287       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3288         continue;
3289
3290       if (bp_objfile_data->terminate_msym == NULL)
3291         {
3292           struct minimal_symbol *m;
3293
3294           m = lookup_minimal_symbol (func_name, NULL, objfile);
3295           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3296                             && MSYMBOL_TYPE (m) != mst_file_text))
3297             {
3298               /* Prevent future lookups in this objfile.  */
3299               bp_objfile_data->terminate_msym = &msym_not_found;
3300               continue;
3301             }
3302           bp_objfile_data->terminate_msym = m;
3303         }
3304
3305       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3306       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3307                                       bp_std_terminate_master,
3308                                       &internal_breakpoint_ops);
3309       b->addr_string = xstrdup (func_name);
3310       b->enable_state = bp_disabled;
3311     }
3312   }
3313
3314   update_global_location_list (1);
3315
3316   do_cleanups (old_chain);
3317 }
3318
3319 /* Install a master breakpoint on the unwinder's debug hook.  */
3320
3321 static void
3322 create_exception_master_breakpoint (void)
3323 {
3324   struct objfile *objfile;
3325   const char *const func_name = "_Unwind_DebugHook";
3326
3327   ALL_OBJFILES (objfile)
3328     {
3329       struct breakpoint *b;
3330       struct gdbarch *gdbarch;
3331       struct breakpoint_objfile_data *bp_objfile_data;
3332       CORE_ADDR addr;
3333
3334       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3335
3336       /* We prefer the SystemTap probe point if it exists.  */
3337       if (!bp_objfile_data->exception_searched)
3338         {
3339           bp_objfile_data->exception_probes
3340             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3341           bp_objfile_data->exception_searched = 1;
3342         }
3343
3344       if (bp_objfile_data->exception_probes != NULL)
3345         {
3346           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3347           int i;
3348           struct probe *probe;
3349
3350           for (i = 0;
3351                VEC_iterate (probe_p,
3352                             bp_objfile_data->exception_probes,
3353                             i, probe);
3354                ++i)
3355             {
3356               struct breakpoint *b;
3357
3358               b = create_internal_breakpoint (gdbarch, probe->address,
3359                                               bp_exception_master,
3360                                               &internal_breakpoint_ops);
3361               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3362               b->enable_state = bp_disabled;
3363             }
3364
3365           continue;
3366         }
3367
3368       /* Otherwise, try the hook function.  */
3369
3370       if (msym_not_found_p (bp_objfile_data->exception_msym))
3371         continue;
3372
3373       gdbarch = get_objfile_arch (objfile);
3374
3375       if (bp_objfile_data->exception_msym == NULL)
3376         {
3377           struct minimal_symbol *debug_hook;
3378
3379           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3380           if (debug_hook == NULL)
3381             {
3382               bp_objfile_data->exception_msym = &msym_not_found;
3383               continue;
3384             }
3385
3386           bp_objfile_data->exception_msym = debug_hook;
3387         }
3388
3389       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3390       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3391                                                  &current_target);
3392       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3393                                       &internal_breakpoint_ops);
3394       b->addr_string = xstrdup (func_name);
3395       b->enable_state = bp_disabled;
3396     }
3397
3398   update_global_location_list (1);
3399 }
3400
3401 void
3402 update_breakpoints_after_exec (void)
3403 {
3404   struct breakpoint *b, *b_tmp;
3405   struct bp_location *bploc, **bplocp_tmp;
3406
3407   /* We're about to delete breakpoints from GDB's lists.  If the
3408      INSERTED flag is true, GDB will try to lift the breakpoints by
3409      writing the breakpoints' "shadow contents" back into memory.  The
3410      "shadow contents" are NOT valid after an exec, so GDB should not
3411      do that.  Instead, the target is responsible from marking
3412      breakpoints out as soon as it detects an exec.  We don't do that
3413      here instead, because there may be other attempts to delete
3414      breakpoints after detecting an exec and before reaching here.  */
3415   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3416     if (bploc->pspace == current_program_space)
3417       gdb_assert (!bploc->inserted);
3418
3419   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3420   {
3421     if (b->pspace != current_program_space)
3422       continue;
3423
3424     /* Solib breakpoints must be explicitly reset after an exec().  */
3425     if (b->type == bp_shlib_event)
3426       {
3427         delete_breakpoint (b);
3428         continue;
3429       }
3430
3431     /* JIT breakpoints must be explicitly reset after an exec().  */
3432     if (b->type == bp_jit_event)
3433       {
3434         delete_breakpoint (b);
3435         continue;
3436       }
3437
3438     /* Thread event breakpoints must be set anew after an exec(),
3439        as must overlay event and longjmp master breakpoints.  */
3440     if (b->type == bp_thread_event || b->type == bp_overlay_event
3441         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3442         || b->type == bp_exception_master)
3443       {
3444         delete_breakpoint (b);
3445         continue;
3446       }
3447
3448     /* Step-resume breakpoints are meaningless after an exec().  */
3449     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3450       {
3451         delete_breakpoint (b);
3452         continue;
3453       }
3454
3455     /* Longjmp and longjmp-resume breakpoints are also meaningless
3456        after an exec.  */
3457     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3458         || b->type == bp_longjmp_call_dummy
3459         || b->type == bp_exception || b->type == bp_exception_resume)
3460       {
3461         delete_breakpoint (b);
3462         continue;
3463       }
3464
3465     if (b->type == bp_catchpoint)
3466       {
3467         /* For now, none of the bp_catchpoint breakpoints need to
3468            do anything at this point.  In the future, if some of
3469            the catchpoints need to something, we will need to add
3470            a new method, and call this method from here.  */
3471         continue;
3472       }
3473
3474     /* bp_finish is a special case.  The only way we ought to be able
3475        to see one of these when an exec() has happened, is if the user
3476        caught a vfork, and then said "finish".  Ordinarily a finish just
3477        carries them to the call-site of the current callee, by setting
3478        a temporary bp there and resuming.  But in this case, the finish
3479        will carry them entirely through the vfork & exec.
3480
3481        We don't want to allow a bp_finish to remain inserted now.  But
3482        we can't safely delete it, 'cause finish_command has a handle to
3483        the bp on a bpstat, and will later want to delete it.  There's a
3484        chance (and I've seen it happen) that if we delete the bp_finish
3485        here, that its storage will get reused by the time finish_command
3486        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3487        We really must allow finish_command to delete a bp_finish.
3488
3489        In the absence of a general solution for the "how do we know
3490        it's safe to delete something others may have handles to?"
3491        problem, what we'll do here is just uninsert the bp_finish, and
3492        let finish_command delete it.
3493
3494        (We know the bp_finish is "doomed" in the sense that it's
3495        momentary, and will be deleted as soon as finish_command sees
3496        the inferior stopped.  So it doesn't matter that the bp's
3497        address is probably bogus in the new a.out, unlike e.g., the
3498        solib breakpoints.)  */
3499
3500     if (b->type == bp_finish)
3501       {
3502         continue;
3503       }
3504
3505     /* Without a symbolic address, we have little hope of the
3506        pre-exec() address meaning the same thing in the post-exec()
3507        a.out.  */
3508     if (b->addr_string == NULL)
3509       {
3510         delete_breakpoint (b);
3511         continue;
3512       }
3513   }
3514   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3515   create_overlay_event_breakpoint ();
3516   create_longjmp_master_breakpoint ();
3517   create_std_terminate_master_breakpoint ();
3518   create_exception_master_breakpoint ();
3519 }
3520
3521 int
3522 detach_breakpoints (ptid_t ptid)
3523 {
3524   struct bp_location *bl, **blp_tmp;
3525   int val = 0;
3526   struct cleanup *old_chain = save_inferior_ptid ();
3527   struct inferior *inf = current_inferior ();
3528
3529   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3530     error (_("Cannot detach breakpoints of inferior_ptid"));
3531
3532   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3533   inferior_ptid = ptid;
3534   ALL_BP_LOCATIONS (bl, blp_tmp)
3535   {
3536     if (bl->pspace != inf->pspace)
3537       continue;
3538
3539     /* This function must physically remove breakpoints locations
3540        from the specified ptid, without modifying the breakpoint
3541        package's state.  Locations of type bp_loc_other are only
3542        maintained at GDB side.  So, there is no need to remove
3543        these bp_loc_other locations.  Moreover, removing these
3544        would modify the breakpoint package's state.  */
3545     if (bl->loc_type == bp_loc_other)
3546       continue;
3547
3548     if (bl->inserted)
3549       val |= remove_breakpoint_1 (bl, mark_inserted);
3550   }
3551
3552   /* Detach single-step breakpoints as well.  */
3553   detach_single_step_breakpoints ();
3554
3555   do_cleanups (old_chain);
3556   return val;
3557 }
3558
3559 /* Remove the breakpoint location BL from the current address space.
3560    Note that this is used to detach breakpoints from a child fork.
3561    When we get here, the child isn't in the inferior list, and neither
3562    do we have objects to represent its address space --- we should
3563    *not* look at bl->pspace->aspace here.  */
3564
3565 static int
3566 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3567 {
3568   int val;
3569
3570   /* BL is never in moribund_locations by our callers.  */
3571   gdb_assert (bl->owner != NULL);
3572
3573   if (bl->owner->enable_state == bp_permanent)
3574     /* Permanent breakpoints cannot be inserted or removed.  */
3575     return 0;
3576
3577   /* The type of none suggests that owner is actually deleted.
3578      This should not ever happen.  */
3579   gdb_assert (bl->owner->type != bp_none);
3580
3581   if (bl->loc_type == bp_loc_software_breakpoint
3582       || bl->loc_type == bp_loc_hardware_breakpoint)
3583     {
3584       /* "Normal" instruction breakpoint: either the standard
3585          trap-instruction bp (bp_breakpoint), or a
3586          bp_hardware_breakpoint.  */
3587
3588       /* First check to see if we have to handle an overlay.  */
3589       if (overlay_debugging == ovly_off
3590           || bl->section == NULL
3591           || !(section_is_overlay (bl->section)))
3592         {
3593           /* No overlay handling: just remove the breakpoint.  */
3594           val = bl->owner->ops->remove_location (bl);
3595         }
3596       else
3597         {
3598           /* This breakpoint is in an overlay section.
3599              Did we set a breakpoint at the LMA?  */
3600           if (!overlay_events_enabled)
3601               {
3602                 /* Yes -- overlay event support is not active, so we
3603                    should have set a breakpoint at the LMA.  Remove it.  
3604                 */
3605                 /* Ignore any failures: if the LMA is in ROM, we will
3606                    have already warned when we failed to insert it.  */
3607                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3608                   target_remove_hw_breakpoint (bl->gdbarch,
3609                                                &bl->overlay_target_info);
3610                 else
3611                   target_remove_breakpoint (bl->gdbarch,
3612                                             &bl->overlay_target_info);
3613               }
3614           /* Did we set a breakpoint at the VMA? 
3615              If so, we will have marked the breakpoint 'inserted'.  */
3616           if (bl->inserted)
3617             {
3618               /* Yes -- remove it.  Previously we did not bother to
3619                  remove the breakpoint if the section had been
3620                  unmapped, but let's not rely on that being safe.  We
3621                  don't know what the overlay manager might do.  */
3622
3623               /* However, we should remove *software* breakpoints only
3624                  if the section is still mapped, or else we overwrite
3625                  wrong code with the saved shadow contents.  */
3626               if (bl->loc_type == bp_loc_hardware_breakpoint
3627                   || section_is_mapped (bl->section))
3628                 val = bl->owner->ops->remove_location (bl);
3629               else
3630                 val = 0;
3631             }
3632           else
3633             {
3634               /* No -- not inserted, so no need to remove.  No error.  */
3635               val = 0;
3636             }
3637         }
3638
3639       /* In some cases, we might not be able to remove a breakpoint
3640          in a shared library that has already been removed, but we
3641          have not yet processed the shlib unload event.  */
3642       if (val && solib_name_from_address (bl->pspace, bl->address))
3643         val = 0;
3644
3645       if (val)
3646         return val;
3647       bl->inserted = (is == mark_inserted);
3648     }
3649   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3650     {
3651       gdb_assert (bl->owner->ops != NULL
3652                   && bl->owner->ops->remove_location != NULL);
3653
3654       bl->inserted = (is == mark_inserted);
3655       bl->owner->ops->remove_location (bl);
3656
3657       /* Failure to remove any of the hardware watchpoints comes here.  */
3658       if ((is == mark_uninserted) && (bl->inserted))
3659         warning (_("Could not remove hardware watchpoint %d."),
3660                  bl->owner->number);
3661     }
3662   else if (bl->owner->type == bp_catchpoint
3663            && breakpoint_enabled (bl->owner)
3664            && !bl->duplicate)
3665     {
3666       gdb_assert (bl->owner->ops != NULL
3667                   && bl->owner->ops->remove_location != NULL);
3668
3669       val = bl->owner->ops->remove_location (bl);
3670       if (val)
3671         return val;
3672
3673       bl->inserted = (is == mark_inserted);
3674     }
3675
3676   return 0;
3677 }
3678
3679 static int
3680 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3681 {
3682   int ret;
3683   struct cleanup *old_chain;
3684
3685   /* BL is never in moribund_locations by our callers.  */
3686   gdb_assert (bl->owner != NULL);
3687
3688   if (bl->owner->enable_state == bp_permanent)
3689     /* Permanent breakpoints cannot be inserted or removed.  */
3690     return 0;
3691
3692   /* The type of none suggests that owner is actually deleted.
3693      This should not ever happen.  */
3694   gdb_assert (bl->owner->type != bp_none);
3695
3696   old_chain = save_current_space_and_thread ();
3697
3698   switch_to_program_space_and_thread (bl->pspace);
3699
3700   ret = remove_breakpoint_1 (bl, is);
3701
3702   do_cleanups (old_chain);
3703   return ret;
3704 }
3705
3706 /* Clear the "inserted" flag in all breakpoints.  */
3707
3708 void
3709 mark_breakpoints_out (void)
3710 {
3711   struct bp_location *bl, **blp_tmp;
3712
3713   ALL_BP_LOCATIONS (bl, blp_tmp)
3714     if (bl->pspace == current_program_space)
3715       bl->inserted = 0;
3716 }
3717
3718 /* Clear the "inserted" flag in all breakpoints and delete any
3719    breakpoints which should go away between runs of the program.
3720
3721    Plus other such housekeeping that has to be done for breakpoints
3722    between runs.
3723
3724    Note: this function gets called at the end of a run (by
3725    generic_mourn_inferior) and when a run begins (by
3726    init_wait_for_inferior).  */
3727
3728
3729
3730 void
3731 breakpoint_init_inferior (enum inf_context context)
3732 {
3733   struct breakpoint *b, *b_tmp;
3734   struct bp_location *bl, **blp_tmp;
3735   int ix;
3736   struct program_space *pspace = current_program_space;
3737
3738   /* If breakpoint locations are shared across processes, then there's
3739      nothing to do.  */
3740   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3741     return;
3742
3743   ALL_BP_LOCATIONS (bl, blp_tmp)
3744   {
3745     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3746     if (bl->pspace == pspace
3747         && bl->owner->enable_state != bp_permanent)
3748       bl->inserted = 0;
3749   }
3750
3751   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3752   {
3753     if (b->loc && b->loc->pspace != pspace)
3754       continue;
3755
3756     switch (b->type)
3757       {
3758       case bp_call_dummy:
3759       case bp_longjmp_call_dummy:
3760
3761         /* If the call dummy breakpoint is at the entry point it will
3762            cause problems when the inferior is rerun, so we better get
3763            rid of it.  */
3764
3765       case bp_watchpoint_scope:
3766
3767         /* Also get rid of scope breakpoints.  */
3768
3769       case bp_shlib_event:
3770
3771         /* Also remove solib event breakpoints.  Their addresses may
3772            have changed since the last time we ran the program.
3773            Actually we may now be debugging against different target;
3774            and so the solib backend that installed this breakpoint may
3775            not be used in by the target.  E.g.,
3776
3777            (gdb) file prog-linux
3778            (gdb) run               # native linux target
3779            ...
3780            (gdb) kill
3781            (gdb) file prog-win.exe
3782            (gdb) tar rem :9999     # remote Windows gdbserver.
3783         */
3784
3785       case bp_step_resume:
3786
3787         /* Also remove step-resume breakpoints.  */
3788
3789         delete_breakpoint (b);
3790         break;
3791
3792       case bp_watchpoint:
3793       case bp_hardware_watchpoint:
3794       case bp_read_watchpoint:
3795       case bp_access_watchpoint:
3796         {
3797           struct watchpoint *w = (struct watchpoint *) b;
3798
3799           /* Likewise for watchpoints on local expressions.  */
3800           if (w->exp_valid_block != NULL)
3801             delete_breakpoint (b);
3802           else if (context == inf_starting)
3803             {
3804               /* Reset val field to force reread of starting value in
3805                  insert_breakpoints.  */
3806               if (w->val)
3807                 value_free (w->val);
3808               w->val = NULL;
3809               w->val_valid = 0;
3810           }
3811         }
3812         break;
3813       default:
3814         break;
3815       }
3816   }
3817
3818   /* Get rid of the moribund locations.  */
3819   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3820     decref_bp_location (&bl);
3821   VEC_free (bp_location_p, moribund_locations);
3822 }
3823
3824 /* These functions concern about actual breakpoints inserted in the
3825    target --- to e.g. check if we need to do decr_pc adjustment or if
3826    we need to hop over the bkpt --- so we check for address space
3827    match, not program space.  */
3828
3829 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3830    exists at PC.  It returns ordinary_breakpoint_here if it's an
3831    ordinary breakpoint, or permanent_breakpoint_here if it's a
3832    permanent breakpoint.
3833    - When continuing from a location with an ordinary breakpoint, we
3834      actually single step once before calling insert_breakpoints.
3835    - When continuing from a location with a permanent breakpoint, we
3836      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3837      the target, to advance the PC past the breakpoint.  */
3838
3839 enum breakpoint_here
3840 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3841 {
3842   struct bp_location *bl, **blp_tmp;
3843   int any_breakpoint_here = 0;
3844
3845   ALL_BP_LOCATIONS (bl, blp_tmp)
3846     {
3847       if (bl->loc_type != bp_loc_software_breakpoint
3848           && bl->loc_type != bp_loc_hardware_breakpoint)
3849         continue;
3850
3851       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3852       if ((breakpoint_enabled (bl->owner)
3853            || bl->owner->enable_state == bp_permanent)
3854           && breakpoint_location_address_match (bl, aspace, pc))
3855         {
3856           if (overlay_debugging 
3857               && section_is_overlay (bl->section)
3858               && !section_is_mapped (bl->section))
3859             continue;           /* unmapped overlay -- can't be a match */
3860           else if (bl->owner->enable_state == bp_permanent)
3861             return permanent_breakpoint_here;
3862           else
3863             any_breakpoint_here = 1;
3864         }
3865     }
3866
3867   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3868 }
3869
3870 /* Return true if there's a moribund breakpoint at PC.  */
3871
3872 int
3873 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3874 {
3875   struct bp_location *loc;
3876   int ix;
3877
3878   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3879     if (breakpoint_location_address_match (loc, aspace, pc))
3880       return 1;
3881
3882   return 0;
3883 }
3884
3885 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3886    inserted using regular breakpoint_chain / bp_location array
3887    mechanism.  This does not check for single-step breakpoints, which
3888    are inserted and removed using direct target manipulation.  */
3889
3890 int
3891 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3892                                     CORE_ADDR pc)
3893 {
3894   struct bp_location *bl, **blp_tmp;
3895
3896   ALL_BP_LOCATIONS (bl, blp_tmp)
3897     {
3898       if (bl->loc_type != bp_loc_software_breakpoint
3899           && bl->loc_type != bp_loc_hardware_breakpoint)
3900         continue;
3901
3902       if (bl->inserted
3903           && breakpoint_location_address_match (bl, aspace, pc))
3904         {
3905           if (overlay_debugging 
3906               && section_is_overlay (bl->section)
3907               && !section_is_mapped (bl->section))
3908             continue;           /* unmapped overlay -- can't be a match */
3909           else
3910             return 1;
3911         }
3912     }
3913   return 0;
3914 }
3915
3916 /* Returns non-zero iff there's either regular breakpoint
3917    or a single step breakpoint inserted at PC.  */
3918
3919 int
3920 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3921 {
3922   if (regular_breakpoint_inserted_here_p (aspace, pc))
3923     return 1;
3924
3925   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3926     return 1;
3927
3928   return 0;
3929 }
3930
3931 /* This function returns non-zero iff there is a software breakpoint
3932    inserted at PC.  */
3933
3934 int
3935 software_breakpoint_inserted_here_p (struct address_space *aspace,
3936                                      CORE_ADDR pc)
3937 {
3938   struct bp_location *bl, **blp_tmp;
3939
3940   ALL_BP_LOCATIONS (bl, blp_tmp)
3941     {
3942       if (bl->loc_type != bp_loc_software_breakpoint)
3943         continue;
3944
3945       if (bl->inserted
3946           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3947                                        aspace, pc))
3948         {
3949           if (overlay_debugging 
3950               && section_is_overlay (bl->section)
3951               && !section_is_mapped (bl->section))
3952             continue;           /* unmapped overlay -- can't be a match */
3953           else
3954             return 1;
3955         }
3956     }
3957
3958   /* Also check for software single-step breakpoints.  */
3959   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3960     return 1;
3961
3962   return 0;
3963 }
3964
3965 int
3966 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3967                                        CORE_ADDR addr, ULONGEST len)
3968 {
3969   struct breakpoint *bpt;
3970
3971   ALL_BREAKPOINTS (bpt)
3972     {
3973       struct bp_location *loc;
3974
3975       if (bpt->type != bp_hardware_watchpoint
3976           && bpt->type != bp_access_watchpoint)
3977         continue;
3978
3979       if (!breakpoint_enabled (bpt))
3980         continue;
3981
3982       for (loc = bpt->loc; loc; loc = loc->next)
3983         if (loc->pspace->aspace == aspace && loc->inserted)
3984           {
3985             CORE_ADDR l, h;
3986
3987             /* Check for intersection.  */
3988             l = max (loc->address, addr);
3989             h = min (loc->address + loc->length, addr + len);
3990             if (l < h)
3991               return 1;
3992           }
3993     }
3994   return 0;
3995 }
3996
3997 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3998    PC is valid for process/thread PTID.  */
3999
4000 int
4001 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4002                          ptid_t ptid)
4003 {
4004   struct bp_location *bl, **blp_tmp;
4005   /* The thread and task IDs associated to PTID, computed lazily.  */
4006   int thread = -1;
4007   int task = 0;
4008   
4009   ALL_BP_LOCATIONS (bl, blp_tmp)
4010     {
4011       if (bl->loc_type != bp_loc_software_breakpoint
4012           && bl->loc_type != bp_loc_hardware_breakpoint)
4013         continue;
4014
4015       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4016       if (!breakpoint_enabled (bl->owner)
4017           && bl->owner->enable_state != bp_permanent)
4018         continue;
4019
4020       if (!breakpoint_location_address_match (bl, aspace, pc))
4021         continue;
4022
4023       if (bl->owner->thread != -1)
4024         {
4025           /* This is a thread-specific breakpoint.  Check that ptid
4026              matches that thread.  If thread hasn't been computed yet,
4027              it is now time to do so.  */
4028           if (thread == -1)
4029             thread = pid_to_thread_id (ptid);
4030           if (bl->owner->thread != thread)
4031             continue;
4032         }
4033
4034       if (bl->owner->task != 0)
4035         {
4036           /* This is a task-specific breakpoint.  Check that ptid
4037              matches that task.  If task hasn't been computed yet,
4038              it is now time to do so.  */
4039           if (task == 0)
4040             task = ada_get_task_number (ptid);
4041           if (bl->owner->task != task)
4042             continue;
4043         }
4044
4045       if (overlay_debugging 
4046           && section_is_overlay (bl->section)
4047           && !section_is_mapped (bl->section))
4048         continue;           /* unmapped overlay -- can't be a match */
4049
4050       return 1;
4051     }
4052
4053   return 0;
4054 }
4055 \f
4056
4057 /* bpstat stuff.  External routines' interfaces are documented
4058    in breakpoint.h.  */
4059
4060 int
4061 is_catchpoint (struct breakpoint *ep)
4062 {
4063   return (ep->type == bp_catchpoint);
4064 }
4065
4066 /* Frees any storage that is part of a bpstat.  Does not walk the
4067    'next' chain.  */
4068
4069 static void
4070 bpstat_free (bpstat bs)
4071 {
4072   if (bs->old_val != NULL)
4073     value_free (bs->old_val);
4074   decref_counted_command_line (&bs->commands);
4075   decref_bp_location (&bs->bp_location_at);
4076   xfree (bs);
4077 }
4078
4079 /* Clear a bpstat so that it says we are not at any breakpoint.
4080    Also free any storage that is part of a bpstat.  */
4081
4082 void
4083 bpstat_clear (bpstat *bsp)
4084 {
4085   bpstat p;
4086   bpstat q;
4087
4088   if (bsp == 0)
4089     return;
4090   p = *bsp;
4091   while (p != NULL)
4092     {
4093       q = p->next;
4094       bpstat_free (p);
4095       p = q;
4096     }
4097   *bsp = NULL;
4098 }
4099
4100 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4101    is part of the bpstat is copied as well.  */
4102
4103 bpstat
4104 bpstat_copy (bpstat bs)
4105 {
4106   bpstat p = NULL;
4107   bpstat tmp;
4108   bpstat retval = NULL;
4109
4110   if (bs == NULL)
4111     return bs;
4112
4113   for (; bs != NULL; bs = bs->next)
4114     {
4115       tmp = (bpstat) xmalloc (sizeof (*tmp));
4116       memcpy (tmp, bs, sizeof (*tmp));
4117       incref_counted_command_line (tmp->commands);
4118       incref_bp_location (tmp->bp_location_at);
4119       if (bs->old_val != NULL)
4120         {
4121           tmp->old_val = value_copy (bs->old_val);
4122           release_value (tmp->old_val);
4123         }
4124
4125       if (p == NULL)
4126         /* This is the first thing in the chain.  */
4127         retval = tmp;
4128       else
4129         p->next = tmp;
4130       p = tmp;
4131     }
4132   p->next = NULL;
4133   return retval;
4134 }
4135
4136 /* Find the bpstat associated with this breakpoint.  */
4137
4138 bpstat
4139 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4140 {
4141   if (bsp == NULL)
4142     return NULL;
4143
4144   for (; bsp != NULL; bsp = bsp->next)
4145     {
4146       if (bsp->breakpoint_at == breakpoint)
4147         return bsp;
4148     }
4149   return NULL;
4150 }
4151
4152 /* See breakpoint.h.  */
4153
4154 enum bpstat_signal_value
4155 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4156 {
4157   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4158
4159   for (; bsp != NULL; bsp = bsp->next)
4160     {
4161       /* Ensure that, if we ever entered this loop, then we at least
4162          return BPSTAT_SIGNAL_HIDE.  */
4163       enum bpstat_signal_value newval;
4164
4165       if (bsp->breakpoint_at == NULL)
4166         {
4167           /* A moribund location can never explain a signal other than
4168              GDB_SIGNAL_TRAP.  */
4169           if (sig == GDB_SIGNAL_TRAP)
4170             newval = BPSTAT_SIGNAL_HIDE;
4171           else
4172             newval = BPSTAT_SIGNAL_NO;
4173         }
4174       else
4175         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4176                                                            sig);
4177
4178       if (newval > result)
4179         result = newval;
4180     }
4181
4182   return result;
4183 }
4184
4185 /* Put in *NUM the breakpoint number of the first breakpoint we are
4186    stopped at.  *BSP upon return is a bpstat which points to the
4187    remaining breakpoints stopped at (but which is not guaranteed to be
4188    good for anything but further calls to bpstat_num).
4189
4190    Return 0 if passed a bpstat which does not indicate any breakpoints.
4191    Return -1 if stopped at a breakpoint that has been deleted since
4192    we set it.
4193    Return 1 otherwise.  */
4194
4195 int
4196 bpstat_num (bpstat *bsp, int *num)
4197 {
4198   struct breakpoint *b;
4199
4200   if ((*bsp) == NULL)
4201     return 0;                   /* No more breakpoint values */
4202
4203   /* We assume we'll never have several bpstats that correspond to a
4204      single breakpoint -- otherwise, this function might return the
4205      same number more than once and this will look ugly.  */
4206   b = (*bsp)->breakpoint_at;
4207   *bsp = (*bsp)->next;
4208   if (b == NULL)
4209     return -1;                  /* breakpoint that's been deleted since */
4210
4211   *num = b->number;             /* We have its number */
4212   return 1;
4213 }
4214
4215 /* See breakpoint.h.  */
4216
4217 void
4218 bpstat_clear_actions (void)
4219 {
4220   struct thread_info *tp;
4221   bpstat bs;
4222
4223   if (ptid_equal (inferior_ptid, null_ptid))
4224     return;
4225
4226   tp = find_thread_ptid (inferior_ptid);
4227   if (tp == NULL)
4228     return;
4229
4230   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4231     {
4232       decref_counted_command_line (&bs->commands);
4233
4234       if (bs->old_val != NULL)
4235         {
4236           value_free (bs->old_val);
4237           bs->old_val = NULL;
4238         }
4239     }
4240 }
4241
4242 /* Called when a command is about to proceed the inferior.  */
4243
4244 static void
4245 breakpoint_about_to_proceed (void)
4246 {
4247   if (!ptid_equal (inferior_ptid, null_ptid))
4248     {
4249       struct thread_info *tp = inferior_thread ();
4250
4251       /* Allow inferior function calls in breakpoint commands to not
4252          interrupt the command list.  When the call finishes
4253          successfully, the inferior will be standing at the same
4254          breakpoint as if nothing happened.  */
4255       if (tp->control.in_infcall)
4256         return;
4257     }
4258
4259   breakpoint_proceeded = 1;
4260 }
4261
4262 /* Stub for cleaning up our state if we error-out of a breakpoint
4263    command.  */
4264 static void
4265 cleanup_executing_breakpoints (void *ignore)
4266 {
4267   executing_breakpoint_commands = 0;
4268 }
4269
4270 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4271    or its equivalent.  */
4272
4273 static int
4274 command_line_is_silent (struct command_line *cmd)
4275 {
4276   return cmd && (strcmp ("silent", cmd->line) == 0
4277                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4278 }
4279
4280 /* Execute all the commands associated with all the breakpoints at
4281    this location.  Any of these commands could cause the process to
4282    proceed beyond this point, etc.  We look out for such changes by
4283    checking the global "breakpoint_proceeded" after each command.
4284
4285    Returns true if a breakpoint command resumed the inferior.  In that
4286    case, it is the caller's responsibility to recall it again with the
4287    bpstat of the current thread.  */
4288
4289 static int
4290 bpstat_do_actions_1 (bpstat *bsp)
4291 {
4292   bpstat bs;
4293   struct cleanup *old_chain;
4294   int again = 0;
4295
4296   /* Avoid endless recursion if a `source' command is contained
4297      in bs->commands.  */
4298   if (executing_breakpoint_commands)
4299     return 0;
4300
4301   executing_breakpoint_commands = 1;
4302   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4303
4304   prevent_dont_repeat ();
4305
4306   /* This pointer will iterate over the list of bpstat's.  */
4307   bs = *bsp;
4308
4309   breakpoint_proceeded = 0;
4310   for (; bs != NULL; bs = bs->next)
4311     {
4312       struct counted_command_line *ccmd;
4313       struct command_line *cmd;
4314       struct cleanup *this_cmd_tree_chain;
4315
4316       /* Take ownership of the BSP's command tree, if it has one.
4317
4318          The command tree could legitimately contain commands like
4319          'step' and 'next', which call clear_proceed_status, which
4320          frees stop_bpstat's command tree.  To make sure this doesn't
4321          free the tree we're executing out from under us, we need to
4322          take ownership of the tree ourselves.  Since a given bpstat's
4323          commands are only executed once, we don't need to copy it; we
4324          can clear the pointer in the bpstat, and make sure we free
4325          the tree when we're done.  */
4326       ccmd = bs->commands;
4327       bs->commands = NULL;
4328       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4329       cmd = ccmd ? ccmd->commands : NULL;
4330       if (command_line_is_silent (cmd))
4331         {
4332           /* The action has been already done by bpstat_stop_status.  */
4333           cmd = cmd->next;
4334         }
4335
4336       while (cmd != NULL)
4337         {
4338           execute_control_command (cmd);
4339
4340           if (breakpoint_proceeded)
4341             break;
4342           else
4343             cmd = cmd->next;
4344         }
4345
4346       /* We can free this command tree now.  */
4347       do_cleanups (this_cmd_tree_chain);
4348
4349       if (breakpoint_proceeded)
4350         {
4351           if (target_can_async_p ())
4352             /* If we are in async mode, then the target might be still
4353                running, not stopped at any breakpoint, so nothing for
4354                us to do here -- just return to the event loop.  */
4355             ;
4356           else
4357             /* In sync mode, when execute_control_command returns
4358                we're already standing on the next breakpoint.
4359                Breakpoint commands for that stop were not run, since
4360                execute_command does not run breakpoint commands --
4361                only command_line_handler does, but that one is not
4362                involved in execution of breakpoint commands.  So, we
4363                can now execute breakpoint commands.  It should be
4364                noted that making execute_command do bpstat actions is
4365                not an option -- in this case we'll have recursive
4366                invocation of bpstat for each breakpoint with a
4367                command, and can easily blow up GDB stack.  Instead, we
4368                return true, which will trigger the caller to recall us
4369                with the new stop_bpstat.  */
4370             again = 1;
4371           break;
4372         }
4373     }
4374   do_cleanups (old_chain);
4375   return again;
4376 }
4377
4378 void
4379 bpstat_do_actions (void)
4380 {
4381   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4382
4383   /* Do any commands attached to breakpoint we are stopped at.  */
4384   while (!ptid_equal (inferior_ptid, null_ptid)
4385          && target_has_execution
4386          && !is_exited (inferior_ptid)
4387          && !is_executing (inferior_ptid))
4388     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4389        and only return when it is stopped at the next breakpoint, we
4390        keep doing breakpoint actions until it returns false to
4391        indicate the inferior was not resumed.  */
4392     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4393       break;
4394
4395   discard_cleanups (cleanup_if_error);
4396 }
4397
4398 /* Print out the (old or new) value associated with a watchpoint.  */
4399
4400 static void
4401 watchpoint_value_print (struct value *val, struct ui_file *stream)
4402 {
4403   if (val == NULL)
4404     fprintf_unfiltered (stream, _("<unreadable>"));
4405   else
4406     {
4407       struct value_print_options opts;
4408       get_user_print_options (&opts);
4409       value_print (val, stream, &opts);
4410     }
4411 }
4412
4413 /* Generic routine for printing messages indicating why we
4414    stopped.  The behavior of this function depends on the value
4415    'print_it' in the bpstat structure.  Under some circumstances we
4416    may decide not to print anything here and delegate the task to
4417    normal_stop().  */
4418
4419 static enum print_stop_action
4420 print_bp_stop_message (bpstat bs)
4421 {
4422   switch (bs->print_it)
4423     {
4424     case print_it_noop:
4425       /* Nothing should be printed for this bpstat entry.  */
4426       return PRINT_UNKNOWN;
4427       break;
4428
4429     case print_it_done:
4430       /* We still want to print the frame, but we already printed the
4431          relevant messages.  */
4432       return PRINT_SRC_AND_LOC;
4433       break;
4434
4435     case print_it_normal:
4436       {
4437         struct breakpoint *b = bs->breakpoint_at;
4438
4439         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4440            which has since been deleted.  */
4441         if (b == NULL)
4442           return PRINT_UNKNOWN;
4443
4444         /* Normal case.  Call the breakpoint's print_it method.  */
4445         return b->ops->print_it (bs);
4446       }
4447       break;
4448
4449     default:
4450       internal_error (__FILE__, __LINE__,
4451                       _("print_bp_stop_message: unrecognized enum value"));
4452       break;
4453     }
4454 }
4455
4456 /* A helper function that prints a shared library stopped event.  */
4457
4458 static void
4459 print_solib_event (int is_catchpoint)
4460 {
4461   int any_deleted
4462     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4463   int any_added
4464     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4465
4466   if (!is_catchpoint)
4467     {
4468       if (any_added || any_deleted)
4469         ui_out_text (current_uiout,
4470                      _("Stopped due to shared library event:\n"));
4471       else
4472         ui_out_text (current_uiout,
4473                      _("Stopped due to shared library event (no "
4474                        "libraries added or removed)\n"));
4475     }
4476
4477   if (ui_out_is_mi_like_p (current_uiout))
4478     ui_out_field_string (current_uiout, "reason",
4479                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4480
4481   if (any_deleted)
4482     {
4483       struct cleanup *cleanup;
4484       char *name;
4485       int ix;
4486
4487       ui_out_text (current_uiout, _("  Inferior unloaded "));
4488       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4489                                                     "removed");
4490       for (ix = 0;
4491            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4492                         ix, name);
4493            ++ix)
4494         {
4495           if (ix > 0)
4496             ui_out_text (current_uiout, "    ");
4497           ui_out_field_string (current_uiout, "library", name);
4498           ui_out_text (current_uiout, "\n");
4499         }
4500
4501       do_cleanups (cleanup);
4502     }
4503
4504   if (any_added)
4505     {
4506       struct so_list *iter;
4507       int ix;
4508       struct cleanup *cleanup;
4509
4510       ui_out_text (current_uiout, _("  Inferior loaded "));
4511       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4512                                                     "added");
4513       for (ix = 0;
4514            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4515                         ix, iter);
4516            ++ix)
4517         {
4518           if (ix > 0)
4519             ui_out_text (current_uiout, "    ");
4520           ui_out_field_string (current_uiout, "library", iter->so_name);
4521           ui_out_text (current_uiout, "\n");
4522         }
4523
4524       do_cleanups (cleanup);
4525     }
4526 }
4527
4528 /* Print a message indicating what happened.  This is called from
4529    normal_stop().  The input to this routine is the head of the bpstat
4530    list - a list of the eventpoints that caused this stop.  KIND is
4531    the target_waitkind for the stopping event.  This
4532    routine calls the generic print routine for printing a message
4533    about reasons for stopping.  This will print (for example) the
4534    "Breakpoint n," part of the output.  The return value of this
4535    routine is one of:
4536
4537    PRINT_UNKNOWN: Means we printed nothing.
4538    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4539    code to print the location.  An example is 
4540    "Breakpoint 1, " which should be followed by
4541    the location.
4542    PRINT_SRC_ONLY: Means we printed something, but there is no need
4543    to also print the location part of the message.
4544    An example is the catch/throw messages, which
4545    don't require a location appended to the end.
4546    PRINT_NOTHING: We have done some printing and we don't need any 
4547    further info to be printed.  */
4548
4549 enum print_stop_action
4550 bpstat_print (bpstat bs, int kind)
4551 {
4552   int val;
4553
4554   /* Maybe another breakpoint in the chain caused us to stop.
4555      (Currently all watchpoints go on the bpstat whether hit or not.
4556      That probably could (should) be changed, provided care is taken
4557      with respect to bpstat_explains_signal).  */
4558   for (; bs; bs = bs->next)
4559     {
4560       val = print_bp_stop_message (bs);
4561       if (val == PRINT_SRC_ONLY 
4562           || val == PRINT_SRC_AND_LOC 
4563           || val == PRINT_NOTHING)
4564         return val;
4565     }
4566
4567   /* If we had hit a shared library event breakpoint,
4568      print_bp_stop_message would print out this message.  If we hit an
4569      OS-level shared library event, do the same thing.  */
4570   if (kind == TARGET_WAITKIND_LOADED)
4571     {
4572       print_solib_event (0);
4573       return PRINT_NOTHING;
4574     }
4575
4576   /* We reached the end of the chain, or we got a null BS to start
4577      with and nothing was printed.  */
4578   return PRINT_UNKNOWN;
4579 }
4580
4581 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4582    used inside a catch_errors to evaluate the breakpoint condition.
4583    The argument is a "struct expression *" that has been cast to a
4584    "char *" to make it pass through catch_errors.  */
4585
4586 static int
4587 breakpoint_cond_eval (void *exp)
4588 {
4589   struct value *mark = value_mark ();
4590   int i = !value_true (evaluate_expression ((struct expression *) exp));
4591
4592   value_free_to_mark (mark);
4593   return i;
4594 }
4595
4596 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4597
4598 static bpstat
4599 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4600 {
4601   bpstat bs;
4602
4603   bs = (bpstat) xmalloc (sizeof (*bs));
4604   bs->next = NULL;
4605   **bs_link_pointer = bs;
4606   *bs_link_pointer = &bs->next;
4607   bs->breakpoint_at = bl->owner;
4608   bs->bp_location_at = bl;
4609   incref_bp_location (bl);
4610   /* If the condition is false, etc., don't do the commands.  */
4611   bs->commands = NULL;
4612   bs->old_val = NULL;
4613   bs->print_it = print_it_normal;
4614   return bs;
4615 }
4616 \f
4617 /* The target has stopped with waitstatus WS.  Check if any hardware
4618    watchpoints have triggered, according to the target.  */
4619
4620 int
4621 watchpoints_triggered (struct target_waitstatus *ws)
4622 {
4623   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4624   CORE_ADDR addr;
4625   struct breakpoint *b;
4626
4627   if (!stopped_by_watchpoint)
4628     {
4629       /* We were not stopped by a watchpoint.  Mark all watchpoints
4630          as not triggered.  */
4631       ALL_BREAKPOINTS (b)
4632         if (is_hardware_watchpoint (b))
4633           {
4634             struct watchpoint *w = (struct watchpoint *) b;
4635
4636             w->watchpoint_triggered = watch_triggered_no;
4637           }
4638
4639       return 0;
4640     }
4641
4642   if (!target_stopped_data_address (&current_target, &addr))
4643     {
4644       /* We were stopped by a watchpoint, but we don't know where.
4645          Mark all watchpoints as unknown.  */
4646       ALL_BREAKPOINTS (b)
4647         if (is_hardware_watchpoint (b))
4648           {
4649             struct watchpoint *w = (struct watchpoint *) b;
4650
4651             w->watchpoint_triggered = watch_triggered_unknown;
4652           }
4653
4654       return stopped_by_watchpoint;
4655     }
4656
4657   /* The target could report the data address.  Mark watchpoints
4658      affected by this data address as triggered, and all others as not
4659      triggered.  */
4660
4661   ALL_BREAKPOINTS (b)
4662     if (is_hardware_watchpoint (b))
4663       {
4664         struct watchpoint *w = (struct watchpoint *) b;
4665         struct bp_location *loc;
4666
4667         w->watchpoint_triggered = watch_triggered_no;
4668         for (loc = b->loc; loc; loc = loc->next)
4669           {
4670             if (is_masked_watchpoint (b))
4671               {
4672                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4673                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4674
4675                 if (newaddr == start)
4676                   {
4677                     w->watchpoint_triggered = watch_triggered_yes;
4678                     break;
4679                   }
4680               }
4681             /* Exact match not required.  Within range is sufficient.  */
4682             else if (target_watchpoint_addr_within_range (&current_target,
4683                                                          addr, loc->address,
4684                                                          loc->length))
4685               {
4686                 w->watchpoint_triggered = watch_triggered_yes;
4687                 break;
4688               }
4689           }
4690       }
4691
4692   return 1;
4693 }
4694
4695 /* Possible return values for watchpoint_check (this can't be an enum
4696    because of check_errors).  */
4697 /* The watchpoint has been deleted.  */
4698 #define WP_DELETED 1
4699 /* The value has changed.  */
4700 #define WP_VALUE_CHANGED 2
4701 /* The value has not changed.  */
4702 #define WP_VALUE_NOT_CHANGED 3
4703 /* Ignore this watchpoint, no matter if the value changed or not.  */
4704 #define WP_IGNORE 4
4705
4706 #define BP_TEMPFLAG 1
4707 #define BP_HARDWAREFLAG 2
4708
4709 /* Evaluate watchpoint condition expression and check if its value
4710    changed.
4711
4712    P should be a pointer to struct bpstat, but is defined as a void *
4713    in order for this function to be usable with catch_errors.  */
4714
4715 static int
4716 watchpoint_check (void *p)
4717 {
4718   bpstat bs = (bpstat) p;
4719   struct watchpoint *b;
4720   struct frame_info *fr;
4721   int within_current_scope;
4722
4723   /* BS is built from an existing struct breakpoint.  */
4724   gdb_assert (bs->breakpoint_at != NULL);
4725   b = (struct watchpoint *) bs->breakpoint_at;
4726
4727   /* If this is a local watchpoint, we only want to check if the
4728      watchpoint frame is in scope if the current thread is the thread
4729      that was used to create the watchpoint.  */
4730   if (!watchpoint_in_thread_scope (b))
4731     return WP_IGNORE;
4732
4733   if (b->exp_valid_block == NULL)
4734     within_current_scope = 1;
4735   else
4736     {
4737       struct frame_info *frame = get_current_frame ();
4738       struct gdbarch *frame_arch = get_frame_arch (frame);
4739       CORE_ADDR frame_pc = get_frame_pc (frame);
4740
4741       /* in_function_epilogue_p() returns a non-zero value if we're
4742          still in the function but the stack frame has already been
4743          invalidated.  Since we can't rely on the values of local
4744          variables after the stack has been destroyed, we are treating
4745          the watchpoint in that state as `not changed' without further
4746          checking.  Don't mark watchpoints as changed if the current
4747          frame is in an epilogue - even if they are in some other
4748          frame, our view of the stack is likely to be wrong and
4749          frame_find_by_id could error out.  */
4750       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4751         return WP_IGNORE;
4752
4753       fr = frame_find_by_id (b->watchpoint_frame);
4754       within_current_scope = (fr != NULL);
4755
4756       /* If we've gotten confused in the unwinder, we might have
4757          returned a frame that can't describe this variable.  */
4758       if (within_current_scope)
4759         {
4760           struct symbol *function;
4761
4762           function = get_frame_function (fr);
4763           if (function == NULL
4764               || !contained_in (b->exp_valid_block,
4765                                 SYMBOL_BLOCK_VALUE (function)))
4766             within_current_scope = 0;
4767         }
4768
4769       if (within_current_scope)
4770         /* If we end up stopping, the current frame will get selected
4771            in normal_stop.  So this call to select_frame won't affect
4772            the user.  */
4773         select_frame (fr);
4774     }
4775
4776   if (within_current_scope)
4777     {
4778       /* We use value_{,free_to_}mark because it could be a *long*
4779          time before we return to the command level and call
4780          free_all_values.  We can't call free_all_values because we
4781          might be in the middle of evaluating a function call.  */
4782
4783       int pc = 0;
4784       struct value *mark;
4785       struct value *new_val;
4786
4787       if (is_masked_watchpoint (&b->base))
4788         /* Since we don't know the exact trigger address (from
4789            stopped_data_address), just tell the user we've triggered
4790            a mask watchpoint.  */
4791         return WP_VALUE_CHANGED;
4792
4793       mark = value_mark ();
4794       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4795
4796       /* We use value_equal_contents instead of value_equal because
4797          the latter coerces an array to a pointer, thus comparing just
4798          the address of the array instead of its contents.  This is
4799          not what we want.  */
4800       if ((b->val != NULL) != (new_val != NULL)
4801           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4802         {
4803           if (new_val != NULL)
4804             {
4805               release_value (new_val);
4806               value_free_to_mark (mark);
4807             }
4808           bs->old_val = b->val;
4809           b->val = new_val;
4810           b->val_valid = 1;
4811           return WP_VALUE_CHANGED;
4812         }
4813       else
4814         {
4815           /* Nothing changed.  */
4816           value_free_to_mark (mark);
4817           return WP_VALUE_NOT_CHANGED;
4818         }
4819     }
4820   else
4821     {
4822       struct ui_out *uiout = current_uiout;
4823
4824       /* This seems like the only logical thing to do because
4825          if we temporarily ignored the watchpoint, then when
4826          we reenter the block in which it is valid it contains
4827          garbage (in the case of a function, it may have two
4828          garbage values, one before and one after the prologue).
4829          So we can't even detect the first assignment to it and
4830          watch after that (since the garbage may or may not equal
4831          the first value assigned).  */
4832       /* We print all the stop information in
4833          breakpoint_ops->print_it, but in this case, by the time we
4834          call breakpoint_ops->print_it this bp will be deleted
4835          already.  So we have no choice but print the information
4836          here.  */
4837       if (ui_out_is_mi_like_p (uiout))
4838         ui_out_field_string
4839           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4840       ui_out_text (uiout, "\nWatchpoint ");
4841       ui_out_field_int (uiout, "wpnum", b->base.number);
4842       ui_out_text (uiout,
4843                    " deleted because the program has left the block in\n\
4844 which its expression is valid.\n");     
4845
4846       /* Make sure the watchpoint's commands aren't executed.  */
4847       decref_counted_command_line (&b->base.commands);
4848       watchpoint_del_at_next_stop (b);
4849
4850       return WP_DELETED;
4851     }
4852 }
4853
4854 /* Return true if it looks like target has stopped due to hitting
4855    breakpoint location BL.  This function does not check if we should
4856    stop, only if BL explains the stop.  */
4857
4858 static int
4859 bpstat_check_location (const struct bp_location *bl,
4860                        struct address_space *aspace, CORE_ADDR bp_addr,
4861                        const struct target_waitstatus *ws)
4862 {
4863   struct breakpoint *b = bl->owner;
4864
4865   /* BL is from an existing breakpoint.  */
4866   gdb_assert (b != NULL);
4867
4868   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4869 }
4870
4871 /* Determine if the watched values have actually changed, and we
4872    should stop.  If not, set BS->stop to 0.  */
4873
4874 static void
4875 bpstat_check_watchpoint (bpstat bs)
4876 {
4877   const struct bp_location *bl;
4878   struct watchpoint *b;
4879
4880   /* BS is built for existing struct breakpoint.  */
4881   bl = bs->bp_location_at;
4882   gdb_assert (bl != NULL);
4883   b = (struct watchpoint *) bs->breakpoint_at;
4884   gdb_assert (b != NULL);
4885
4886     {
4887       int must_check_value = 0;
4888       
4889       if (b->base.type == bp_watchpoint)
4890         /* For a software watchpoint, we must always check the
4891            watched value.  */
4892         must_check_value = 1;
4893       else if (b->watchpoint_triggered == watch_triggered_yes)
4894         /* We have a hardware watchpoint (read, write, or access)
4895            and the target earlier reported an address watched by
4896            this watchpoint.  */
4897         must_check_value = 1;
4898       else if (b->watchpoint_triggered == watch_triggered_unknown
4899                && b->base.type == bp_hardware_watchpoint)
4900         /* We were stopped by a hardware watchpoint, but the target could
4901            not report the data address.  We must check the watchpoint's
4902            value.  Access and read watchpoints are out of luck; without
4903            a data address, we can't figure it out.  */
4904         must_check_value = 1;
4905
4906       if (must_check_value)
4907         {
4908           char *message
4909             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4910                           b->base.number);
4911           struct cleanup *cleanups = make_cleanup (xfree, message);
4912           int e = catch_errors (watchpoint_check, bs, message,
4913                                 RETURN_MASK_ALL);
4914           do_cleanups (cleanups);
4915           switch (e)
4916             {
4917             case WP_DELETED:
4918               /* We've already printed what needs to be printed.  */
4919               bs->print_it = print_it_done;
4920               /* Stop.  */
4921               break;
4922             case WP_IGNORE:
4923               bs->print_it = print_it_noop;
4924               bs->stop = 0;
4925               break;
4926             case WP_VALUE_CHANGED:
4927               if (b->base.type == bp_read_watchpoint)
4928                 {
4929                   /* There are two cases to consider here:
4930
4931                      1. We're watching the triggered memory for reads.
4932                      In that case, trust the target, and always report
4933                      the watchpoint hit to the user.  Even though
4934                      reads don't cause value changes, the value may
4935                      have changed since the last time it was read, and
4936                      since we're not trapping writes, we will not see
4937                      those, and as such we should ignore our notion of
4938                      old value.
4939
4940                      2. We're watching the triggered memory for both
4941                      reads and writes.  There are two ways this may
4942                      happen:
4943
4944                      2.1. This is a target that can't break on data
4945                      reads only, but can break on accesses (reads or
4946                      writes), such as e.g., x86.  We detect this case
4947                      at the time we try to insert read watchpoints.
4948
4949                      2.2. Otherwise, the target supports read
4950                      watchpoints, but, the user set an access or write
4951                      watchpoint watching the same memory as this read
4952                      watchpoint.
4953
4954                      If we're watching memory writes as well as reads,
4955                      ignore watchpoint hits when we find that the
4956                      value hasn't changed, as reads don't cause
4957                      changes.  This still gives false positives when
4958                      the program writes the same value to memory as
4959                      what there was already in memory (we will confuse
4960                      it for a read), but it's much better than
4961                      nothing.  */
4962
4963                   int other_write_watchpoint = 0;
4964
4965                   if (bl->watchpoint_type == hw_read)
4966                     {
4967                       struct breakpoint *other_b;
4968
4969                       ALL_BREAKPOINTS (other_b)
4970                         if (other_b->type == bp_hardware_watchpoint
4971                             || other_b->type == bp_access_watchpoint)
4972                           {
4973                             struct watchpoint *other_w =
4974                               (struct watchpoint *) other_b;
4975
4976                             if (other_w->watchpoint_triggered
4977                                 == watch_triggered_yes)
4978                               {
4979                                 other_write_watchpoint = 1;
4980                                 break;
4981                               }
4982                           }
4983                     }
4984
4985                   if (other_write_watchpoint
4986                       || bl->watchpoint_type == hw_access)
4987                     {
4988                       /* We're watching the same memory for writes,
4989                          and the value changed since the last time we
4990                          updated it, so this trap must be for a write.
4991                          Ignore it.  */
4992                       bs->print_it = print_it_noop;
4993                       bs->stop = 0;
4994                     }
4995                 }
4996               break;
4997             case WP_VALUE_NOT_CHANGED:
4998               if (b->base.type == bp_hardware_watchpoint
4999                   || b->base.type == bp_watchpoint)
5000                 {
5001                   /* Don't stop: write watchpoints shouldn't fire if
5002                      the value hasn't changed.  */
5003                   bs->print_it = print_it_noop;
5004                   bs->stop = 0;
5005                 }
5006               /* Stop.  */
5007               break;
5008             default:
5009               /* Can't happen.  */
5010             case 0:
5011               /* Error from catch_errors.  */
5012               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5013               watchpoint_del_at_next_stop (b);
5014               /* We've already printed what needs to be printed.  */
5015               bs->print_it = print_it_done;
5016               break;
5017             }
5018         }
5019       else      /* must_check_value == 0 */
5020         {
5021           /* This is a case where some watchpoint(s) triggered, but
5022              not at the address of this watchpoint, or else no
5023              watchpoint triggered after all.  So don't print
5024              anything for this watchpoint.  */
5025           bs->print_it = print_it_noop;
5026           bs->stop = 0;
5027         }
5028     }
5029 }
5030
5031
5032 /* Check conditions (condition proper, frame, thread and ignore count)
5033    of breakpoint referred to by BS.  If we should not stop for this
5034    breakpoint, set BS->stop to 0.  */
5035
5036 static void
5037 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5038 {
5039   int thread_id = pid_to_thread_id (ptid);
5040   const struct bp_location *bl;
5041   struct breakpoint *b;
5042
5043   /* BS is built for existing struct breakpoint.  */
5044   bl = bs->bp_location_at;
5045   gdb_assert (bl != NULL);
5046   b = bs->breakpoint_at;
5047   gdb_assert (b != NULL);
5048
5049   /* Even if the target evaluated the condition on its end and notified GDB, we
5050      need to do so again since GDB does not know if we stopped due to a
5051      breakpoint or a single step breakpoint.  */
5052
5053   if (frame_id_p (b->frame_id)
5054       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5055     bs->stop = 0;
5056   else if (bs->stop)
5057     {
5058       int value_is_zero = 0;
5059       struct expression *cond;
5060
5061       /* Evaluate Python breakpoints that have a "stop"
5062          method implemented.  */
5063       if (b->py_bp_object)
5064         bs->stop = gdbpy_should_stop (b->py_bp_object);
5065
5066       if (is_watchpoint (b))
5067         {
5068           struct watchpoint *w = (struct watchpoint *) b;
5069
5070           cond = w->cond_exp;
5071         }
5072       else
5073         cond = bl->cond;
5074
5075       if (cond && b->disposition != disp_del_at_next_stop)
5076         {
5077           int within_current_scope = 1;
5078           struct watchpoint * w;
5079
5080           /* We use value_mark and value_free_to_mark because it could
5081              be a long time before we return to the command level and
5082              call free_all_values.  We can't call free_all_values
5083              because we might be in the middle of evaluating a
5084              function call.  */
5085           struct value *mark = value_mark ();
5086
5087           if (is_watchpoint (b))
5088             w = (struct watchpoint *) b;
5089           else
5090             w = NULL;
5091
5092           /* Need to select the frame, with all that implies so that
5093              the conditions will have the right context.  Because we
5094              use the frame, we will not see an inlined function's
5095              variables when we arrive at a breakpoint at the start
5096              of the inlined function; the current frame will be the
5097              call site.  */
5098           if (w == NULL || w->cond_exp_valid_block == NULL)
5099             select_frame (get_current_frame ());
5100           else
5101             {
5102               struct frame_info *frame;
5103
5104               /* For local watchpoint expressions, which particular
5105                  instance of a local is being watched matters, so we
5106                  keep track of the frame to evaluate the expression
5107                  in.  To evaluate the condition however, it doesn't
5108                  really matter which instantiation of the function
5109                  where the condition makes sense triggers the
5110                  watchpoint.  This allows an expression like "watch
5111                  global if q > 10" set in `func', catch writes to
5112                  global on all threads that call `func', or catch
5113                  writes on all recursive calls of `func' by a single
5114                  thread.  We simply always evaluate the condition in
5115                  the innermost frame that's executing where it makes
5116                  sense to evaluate the condition.  It seems
5117                  intuitive.  */
5118               frame = block_innermost_frame (w->cond_exp_valid_block);
5119               if (frame != NULL)
5120                 select_frame (frame);
5121               else
5122                 within_current_scope = 0;
5123             }
5124           if (within_current_scope)
5125             value_is_zero
5126               = catch_errors (breakpoint_cond_eval, cond,
5127                               "Error in testing breakpoint condition:\n",
5128                               RETURN_MASK_ALL);
5129           else
5130             {
5131               warning (_("Watchpoint condition cannot be tested "
5132                          "in the current scope"));
5133               /* If we failed to set the right context for this
5134                  watchpoint, unconditionally report it.  */
5135               value_is_zero = 0;
5136             }
5137           /* FIXME-someday, should give breakpoint #.  */
5138           value_free_to_mark (mark);
5139         }
5140
5141       if (cond && value_is_zero)
5142         {
5143           bs->stop = 0;
5144         }
5145       else if (b->thread != -1 && b->thread != thread_id)
5146         {
5147           bs->stop = 0;
5148         }
5149       else if (b->ignore_count > 0)
5150         {
5151           b->ignore_count--;
5152           bs->stop = 0;
5153           /* Increase the hit count even though we don't stop.  */
5154           ++(b->hit_count);
5155           observer_notify_breakpoint_modified (b);
5156         }       
5157     }
5158 }
5159
5160
5161 /* Get a bpstat associated with having just stopped at address
5162    BP_ADDR in thread PTID.
5163
5164    Determine whether we stopped at a breakpoint, etc, or whether we
5165    don't understand this stop.  Result is a chain of bpstat's such
5166    that:
5167
5168    if we don't understand the stop, the result is a null pointer.
5169
5170    if we understand why we stopped, the result is not null.
5171
5172    Each element of the chain refers to a particular breakpoint or
5173    watchpoint at which we have stopped.  (We may have stopped for
5174    several reasons concurrently.)
5175
5176    Each element of the chain has valid next, breakpoint_at,
5177    commands, FIXME??? fields.  */
5178
5179 bpstat
5180 bpstat_stop_status (struct address_space *aspace,
5181                     CORE_ADDR bp_addr, ptid_t ptid,
5182                     const struct target_waitstatus *ws)
5183 {
5184   struct breakpoint *b = NULL;
5185   struct bp_location *bl;
5186   struct bp_location *loc;
5187   /* First item of allocated bpstat's.  */
5188   bpstat bs_head = NULL, *bs_link = &bs_head;
5189   /* Pointer to the last thing in the chain currently.  */
5190   bpstat bs;
5191   int ix;
5192   int need_remove_insert;
5193   int removed_any;
5194
5195   /* First, build the bpstat chain with locations that explain a
5196      target stop, while being careful to not set the target running,
5197      as that may invalidate locations (in particular watchpoint
5198      locations are recreated).  Resuming will happen here with
5199      breakpoint conditions or watchpoint expressions that include
5200      inferior function calls.  */
5201
5202   ALL_BREAKPOINTS (b)
5203     {
5204       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5205         continue;
5206
5207       for (bl = b->loc; bl != NULL; bl = bl->next)
5208         {
5209           /* For hardware watchpoints, we look only at the first
5210              location.  The watchpoint_check function will work on the
5211              entire expression, not the individual locations.  For
5212              read watchpoints, the watchpoints_triggered function has
5213              checked all locations already.  */
5214           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5215             break;
5216
5217           if (!bl->enabled || bl->shlib_disabled)
5218             continue;
5219
5220           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5221             continue;
5222
5223           /* Come here if it's a watchpoint, or if the break address
5224              matches.  */
5225
5226           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5227                                                    explain stop.  */
5228
5229           /* Assume we stop.  Should we find a watchpoint that is not
5230              actually triggered, or if the condition of the breakpoint
5231              evaluates as false, we'll reset 'stop' to 0.  */
5232           bs->stop = 1;
5233           bs->print = 1;
5234
5235           /* If this is a scope breakpoint, mark the associated
5236              watchpoint as triggered so that we will handle the
5237              out-of-scope event.  We'll get to the watchpoint next
5238              iteration.  */
5239           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5240             {
5241               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5242
5243               w->watchpoint_triggered = watch_triggered_yes;
5244             }
5245         }
5246     }
5247
5248   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5249     {
5250       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5251         {
5252           bs = bpstat_alloc (loc, &bs_link);
5253           /* For hits of moribund locations, we should just proceed.  */
5254           bs->stop = 0;
5255           bs->print = 0;
5256           bs->print_it = print_it_noop;
5257         }
5258     }
5259
5260   /* A bit of special processing for shlib breakpoints.  We need to
5261      process solib loading here, so that the lists of loaded and
5262      unloaded libraries are correct before we handle "catch load" and
5263      "catch unload".  */
5264   for (bs = bs_head; bs != NULL; bs = bs->next)
5265     {
5266       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5267         {
5268           handle_solib_event ();
5269           break;
5270         }
5271     }
5272
5273   /* Now go through the locations that caused the target to stop, and
5274      check whether we're interested in reporting this stop to higher
5275      layers, or whether we should resume the target transparently.  */
5276
5277   removed_any = 0;
5278
5279   for (bs = bs_head; bs != NULL; bs = bs->next)
5280     {
5281       if (!bs->stop)
5282         continue;
5283
5284       b = bs->breakpoint_at;
5285       b->ops->check_status (bs);
5286       if (bs->stop)
5287         {
5288           bpstat_check_breakpoint_conditions (bs, ptid);
5289
5290           if (bs->stop)
5291             {
5292               ++(b->hit_count);
5293               observer_notify_breakpoint_modified (b);
5294
5295               /* We will stop here.  */
5296               if (b->disposition == disp_disable)
5297                 {
5298                   --(b->enable_count);
5299                   if (b->enable_count <= 0
5300                       && b->enable_state != bp_permanent)
5301                     b->enable_state = bp_disabled;
5302                   removed_any = 1;
5303                 }
5304               if (b->silent)
5305                 bs->print = 0;
5306               bs->commands = b->commands;
5307               incref_counted_command_line (bs->commands);
5308               if (command_line_is_silent (bs->commands
5309                                           ? bs->commands->commands : NULL))
5310                 bs->print = 0;
5311
5312               b->ops->after_condition_true (bs);
5313             }
5314
5315         }
5316
5317       /* Print nothing for this entry if we don't stop or don't
5318          print.  */
5319       if (!bs->stop || !bs->print)
5320         bs->print_it = print_it_noop;
5321     }
5322
5323   /* If we aren't stopping, the value of some hardware watchpoint may
5324      not have changed, but the intermediate memory locations we are
5325      watching may have.  Don't bother if we're stopping; this will get
5326      done later.  */
5327   need_remove_insert = 0;
5328   if (! bpstat_causes_stop (bs_head))
5329     for (bs = bs_head; bs != NULL; bs = bs->next)
5330       if (!bs->stop
5331           && bs->breakpoint_at
5332           && is_hardware_watchpoint (bs->breakpoint_at))
5333         {
5334           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5335
5336           update_watchpoint (w, 0 /* don't reparse.  */);
5337           need_remove_insert = 1;
5338         }
5339
5340   if (need_remove_insert)
5341     update_global_location_list (1);
5342   else if (removed_any)
5343     update_global_location_list (0);
5344
5345   return bs_head;
5346 }
5347
5348 static void
5349 handle_jit_event (void)
5350 {
5351   struct frame_info *frame;
5352   struct gdbarch *gdbarch;
5353
5354   /* Switch terminal for any messages produced by
5355      breakpoint_re_set.  */
5356   target_terminal_ours_for_output ();
5357
5358   frame = get_current_frame ();
5359   gdbarch = get_frame_arch (frame);
5360
5361   jit_event_handler (gdbarch);
5362
5363   target_terminal_inferior ();
5364 }
5365
5366 /* Prepare WHAT final decision for infrun.  */
5367
5368 /* Decide what infrun needs to do with this bpstat.  */
5369
5370 struct bpstat_what
5371 bpstat_what (bpstat bs_head)
5372 {
5373   struct bpstat_what retval;
5374   int jit_event = 0;
5375   bpstat bs;
5376
5377   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5378   retval.call_dummy = STOP_NONE;
5379   retval.is_longjmp = 0;
5380
5381   for (bs = bs_head; bs != NULL; bs = bs->next)
5382     {
5383       /* Extract this BS's action.  After processing each BS, we check
5384          if its action overrides all we've seem so far.  */
5385       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5386       enum bptype bptype;
5387
5388       if (bs->breakpoint_at == NULL)
5389         {
5390           /* I suspect this can happen if it was a momentary
5391              breakpoint which has since been deleted.  */
5392           bptype = bp_none;
5393         }
5394       else
5395         bptype = bs->breakpoint_at->type;
5396
5397       switch (bptype)
5398         {
5399         case bp_none:
5400           break;
5401         case bp_breakpoint:
5402         case bp_hardware_breakpoint:
5403         case bp_until:
5404         case bp_finish:
5405         case bp_shlib_event:
5406           if (bs->stop)
5407             {
5408               if (bs->print)
5409                 this_action = BPSTAT_WHAT_STOP_NOISY;
5410               else
5411                 this_action = BPSTAT_WHAT_STOP_SILENT;
5412             }
5413           else
5414             this_action = BPSTAT_WHAT_SINGLE;
5415           break;
5416         case bp_watchpoint:
5417         case bp_hardware_watchpoint:
5418         case bp_read_watchpoint:
5419         case bp_access_watchpoint:
5420           if (bs->stop)
5421             {
5422               if (bs->print)
5423                 this_action = BPSTAT_WHAT_STOP_NOISY;
5424               else
5425                 this_action = BPSTAT_WHAT_STOP_SILENT;
5426             }
5427           else
5428             {
5429               /* There was a watchpoint, but we're not stopping.
5430                  This requires no further action.  */
5431             }
5432           break;
5433         case bp_longjmp:
5434         case bp_longjmp_call_dummy:
5435         case bp_exception:
5436           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5437           retval.is_longjmp = bptype != bp_exception;
5438           break;
5439         case bp_longjmp_resume:
5440         case bp_exception_resume:
5441           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5442           retval.is_longjmp = bptype == bp_longjmp_resume;
5443           break;
5444         case bp_step_resume:
5445           if (bs->stop)
5446             this_action = BPSTAT_WHAT_STEP_RESUME;
5447           else
5448             {
5449               /* It is for the wrong frame.  */
5450               this_action = BPSTAT_WHAT_SINGLE;
5451             }
5452           break;
5453         case bp_hp_step_resume:
5454           if (bs->stop)
5455             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5456           else
5457             {
5458               /* It is for the wrong frame.  */
5459               this_action = BPSTAT_WHAT_SINGLE;
5460             }
5461           break;
5462         case bp_watchpoint_scope:
5463         case bp_thread_event:
5464         case bp_overlay_event:
5465         case bp_longjmp_master:
5466         case bp_std_terminate_master:
5467         case bp_exception_master:
5468           this_action = BPSTAT_WHAT_SINGLE;
5469           break;
5470         case bp_catchpoint:
5471           if (bs->stop)
5472             {
5473               if (bs->print)
5474                 this_action = BPSTAT_WHAT_STOP_NOISY;
5475               else
5476                 this_action = BPSTAT_WHAT_STOP_SILENT;
5477             }
5478           else
5479             {
5480               /* There was a catchpoint, but we're not stopping.
5481                  This requires no further action.  */
5482             }
5483           break;
5484         case bp_jit_event:
5485           jit_event = 1;
5486           this_action = BPSTAT_WHAT_SINGLE;
5487           break;
5488         case bp_call_dummy:
5489           /* Make sure the action is stop (silent or noisy),
5490              so infrun.c pops the dummy frame.  */
5491           retval.call_dummy = STOP_STACK_DUMMY;
5492           this_action = BPSTAT_WHAT_STOP_SILENT;
5493           break;
5494         case bp_std_terminate:
5495           /* Make sure the action is stop (silent or noisy),
5496              so infrun.c pops the dummy frame.  */
5497           retval.call_dummy = STOP_STD_TERMINATE;
5498           this_action = BPSTAT_WHAT_STOP_SILENT;
5499           break;
5500         case bp_tracepoint:
5501         case bp_fast_tracepoint:
5502         case bp_static_tracepoint:
5503           /* Tracepoint hits should not be reported back to GDB, and
5504              if one got through somehow, it should have been filtered
5505              out already.  */
5506           internal_error (__FILE__, __LINE__,
5507                           _("bpstat_what: tracepoint encountered"));
5508           break;
5509         case bp_gnu_ifunc_resolver:
5510           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5511           this_action = BPSTAT_WHAT_SINGLE;
5512           break;
5513         case bp_gnu_ifunc_resolver_return:
5514           /* The breakpoint will be removed, execution will restart from the
5515              PC of the former breakpoint.  */
5516           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5517           break;
5518
5519         case bp_dprintf:
5520           if (bs->stop)
5521             this_action = BPSTAT_WHAT_STOP_SILENT;
5522           else
5523             this_action = BPSTAT_WHAT_SINGLE;
5524           break;
5525
5526         default:
5527           internal_error (__FILE__, __LINE__,
5528                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5529         }
5530
5531       retval.main_action = max (retval.main_action, this_action);
5532     }
5533
5534   /* These operations may affect the bs->breakpoint_at state so they are
5535      delayed after MAIN_ACTION is decided above.  */
5536
5537   if (jit_event)
5538     {
5539       if (debug_infrun)
5540         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5541
5542       handle_jit_event ();
5543     }
5544
5545   for (bs = bs_head; bs != NULL; bs = bs->next)
5546     {
5547       struct breakpoint *b = bs->breakpoint_at;
5548
5549       if (b == NULL)
5550         continue;
5551       switch (b->type)
5552         {
5553         case bp_gnu_ifunc_resolver:
5554           gnu_ifunc_resolver_stop (b);
5555           break;
5556         case bp_gnu_ifunc_resolver_return:
5557           gnu_ifunc_resolver_return_stop (b);
5558           break;
5559         }
5560     }
5561
5562   return retval;
5563 }
5564
5565 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5566    without hardware support).  This isn't related to a specific bpstat,
5567    just to things like whether watchpoints are set.  */
5568
5569 int
5570 bpstat_should_step (void)
5571 {
5572   struct breakpoint *b;
5573
5574   ALL_BREAKPOINTS (b)
5575     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5576       return 1;
5577   return 0;
5578 }
5579
5580 int
5581 bpstat_causes_stop (bpstat bs)
5582 {
5583   for (; bs != NULL; bs = bs->next)
5584     if (bs->stop)
5585       return 1;
5586
5587   return 0;
5588 }
5589
5590 \f
5591
5592 /* Compute a string of spaces suitable to indent the next line
5593    so it starts at the position corresponding to the table column
5594    named COL_NAME in the currently active table of UIOUT.  */
5595
5596 static char *
5597 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5598 {
5599   static char wrap_indent[80];
5600   int i, total_width, width, align;
5601   char *text;
5602
5603   total_width = 0;
5604   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5605     {
5606       if (strcmp (text, col_name) == 0)
5607         {
5608           gdb_assert (total_width < sizeof wrap_indent);
5609           memset (wrap_indent, ' ', total_width);
5610           wrap_indent[total_width] = 0;
5611
5612           return wrap_indent;
5613         }
5614
5615       total_width += width + 1;
5616     }
5617
5618   return NULL;
5619 }
5620
5621 /* Determine if the locations of this breakpoint will have their conditions
5622    evaluated by the target, host or a mix of both.  Returns the following:
5623
5624     "host": Host evals condition.
5625     "host or target": Host or Target evals condition.
5626     "target": Target evals condition.
5627 */
5628
5629 static const char *
5630 bp_condition_evaluator (struct breakpoint *b)
5631 {
5632   struct bp_location *bl;
5633   char host_evals = 0;
5634   char target_evals = 0;
5635
5636   if (!b)
5637     return NULL;
5638
5639   if (!is_breakpoint (b))
5640     return NULL;
5641
5642   if (gdb_evaluates_breakpoint_condition_p ()
5643       || !target_supports_evaluation_of_breakpoint_conditions ())
5644     return condition_evaluation_host;
5645
5646   for (bl = b->loc; bl; bl = bl->next)
5647     {
5648       if (bl->cond_bytecode)
5649         target_evals++;
5650       else
5651         host_evals++;
5652     }
5653
5654   if (host_evals && target_evals)
5655     return condition_evaluation_both;
5656   else if (target_evals)
5657     return condition_evaluation_target;
5658   else
5659     return condition_evaluation_host;
5660 }
5661
5662 /* Determine the breakpoint location's condition evaluator.  This is
5663    similar to bp_condition_evaluator, but for locations.  */
5664
5665 static const char *
5666 bp_location_condition_evaluator (struct bp_location *bl)
5667 {
5668   if (bl && !is_breakpoint (bl->owner))
5669     return NULL;
5670
5671   if (gdb_evaluates_breakpoint_condition_p ()
5672       || !target_supports_evaluation_of_breakpoint_conditions ())
5673     return condition_evaluation_host;
5674
5675   if (bl && bl->cond_bytecode)
5676     return condition_evaluation_target;
5677   else
5678     return condition_evaluation_host;
5679 }
5680
5681 /* Print the LOC location out of the list of B->LOC locations.  */
5682
5683 static void
5684 print_breakpoint_location (struct breakpoint *b,
5685                            struct bp_location *loc)
5686 {
5687   struct ui_out *uiout = current_uiout;
5688   struct cleanup *old_chain = save_current_program_space ();
5689
5690   if (loc != NULL && loc->shlib_disabled)
5691     loc = NULL;
5692
5693   if (loc != NULL)
5694     set_current_program_space (loc->pspace);
5695
5696   if (b->display_canonical)
5697     ui_out_field_string (uiout, "what", b->addr_string);
5698   else if (loc && loc->symtab)
5699     {
5700       struct symbol *sym 
5701         = find_pc_sect_function (loc->address, loc->section);
5702       if (sym)
5703         {
5704           ui_out_text (uiout, "in ");
5705           ui_out_field_string (uiout, "func",
5706                                SYMBOL_PRINT_NAME (sym));
5707           ui_out_text (uiout, " ");
5708           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5709           ui_out_text (uiout, "at ");
5710         }
5711       ui_out_field_string (uiout, "file",
5712                            symtab_to_filename_for_display (loc->symtab));
5713       ui_out_text (uiout, ":");
5714
5715       if (ui_out_is_mi_like_p (uiout))
5716         ui_out_field_string (uiout, "fullname",
5717                              symtab_to_fullname (loc->symtab));
5718       
5719       ui_out_field_int (uiout, "line", loc->line_number);
5720     }
5721   else if (loc)
5722     {
5723       struct ui_file *stb = mem_fileopen ();
5724       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5725
5726       print_address_symbolic (loc->gdbarch, loc->address, stb,
5727                               demangle, "");
5728       ui_out_field_stream (uiout, "at", stb);
5729
5730       do_cleanups (stb_chain);
5731     }
5732   else
5733     ui_out_field_string (uiout, "pending", b->addr_string);
5734
5735   if (loc && is_breakpoint (b)
5736       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5737       && bp_condition_evaluator (b) == condition_evaluation_both)
5738     {
5739       ui_out_text (uiout, " (");
5740       ui_out_field_string (uiout, "evaluated-by",
5741                            bp_location_condition_evaluator (loc));
5742       ui_out_text (uiout, ")");
5743     }
5744
5745   do_cleanups (old_chain);
5746 }
5747
5748 static const char *
5749 bptype_string (enum bptype type)
5750 {
5751   struct ep_type_description
5752     {
5753       enum bptype type;
5754       char *description;
5755     };
5756   static struct ep_type_description bptypes[] =
5757   {
5758     {bp_none, "?deleted?"},
5759     {bp_breakpoint, "breakpoint"},
5760     {bp_hardware_breakpoint, "hw breakpoint"},
5761     {bp_until, "until"},
5762     {bp_finish, "finish"},
5763     {bp_watchpoint, "watchpoint"},
5764     {bp_hardware_watchpoint, "hw watchpoint"},
5765     {bp_read_watchpoint, "read watchpoint"},
5766     {bp_access_watchpoint, "acc watchpoint"},
5767     {bp_longjmp, "longjmp"},
5768     {bp_longjmp_resume, "longjmp resume"},
5769     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5770     {bp_exception, "exception"},
5771     {bp_exception_resume, "exception resume"},
5772     {bp_step_resume, "step resume"},
5773     {bp_hp_step_resume, "high-priority step resume"},
5774     {bp_watchpoint_scope, "watchpoint scope"},
5775     {bp_call_dummy, "call dummy"},
5776     {bp_std_terminate, "std::terminate"},
5777     {bp_shlib_event, "shlib events"},
5778     {bp_thread_event, "thread events"},
5779     {bp_overlay_event, "overlay events"},
5780     {bp_longjmp_master, "longjmp master"},
5781     {bp_std_terminate_master, "std::terminate master"},
5782     {bp_exception_master, "exception master"},
5783     {bp_catchpoint, "catchpoint"},
5784     {bp_tracepoint, "tracepoint"},
5785     {bp_fast_tracepoint, "fast tracepoint"},
5786     {bp_static_tracepoint, "static tracepoint"},
5787     {bp_dprintf, "dprintf"},
5788     {bp_jit_event, "jit events"},
5789     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5790     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5791   };
5792
5793   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5794       || ((int) type != bptypes[(int) type].type))
5795     internal_error (__FILE__, __LINE__,
5796                     _("bptypes table does not describe type #%d."),
5797                     (int) type);
5798
5799   return bptypes[(int) type].description;
5800 }
5801
5802 /* For MI, output a field named 'thread-groups' with a list as the value.
5803    For CLI, prefix the list with the string 'inf'. */
5804
5805 static void
5806 output_thread_groups (struct ui_out *uiout,
5807                       const char *field_name,
5808                       VEC(int) *inf_num,
5809                       int mi_only)
5810 {
5811   struct cleanup *back_to;
5812   int is_mi = ui_out_is_mi_like_p (uiout);
5813   int inf;
5814   int i;
5815
5816   /* For backward compatibility, don't display inferiors in CLI unless
5817      there are several.  Always display them for MI. */
5818   if (!is_mi && mi_only)
5819     return;
5820
5821   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
5822
5823   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5824     {
5825       if (is_mi)
5826         {
5827           char mi_group[10];
5828
5829           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5830           ui_out_field_string (uiout, NULL, mi_group);
5831         }
5832       else
5833         {
5834           if (i == 0)
5835             ui_out_text (uiout, " inf ");
5836           else
5837             ui_out_text (uiout, ", ");
5838         
5839           ui_out_text (uiout, plongest (inf));
5840         }
5841     }
5842
5843   do_cleanups (back_to);
5844 }
5845
5846 /* Print B to gdb_stdout.  */
5847
5848 static void
5849 print_one_breakpoint_location (struct breakpoint *b,
5850                                struct bp_location *loc,
5851                                int loc_number,
5852                                struct bp_location **last_loc,
5853                                int allflag)
5854 {
5855   struct command_line *l;
5856   static char bpenables[] = "nynny";
5857
5858   struct ui_out *uiout = current_uiout;
5859   int header_of_multiple = 0;
5860   int part_of_multiple = (loc != NULL);
5861   struct value_print_options opts;
5862
5863   get_user_print_options (&opts);
5864
5865   gdb_assert (!loc || loc_number != 0);
5866   /* See comment in print_one_breakpoint concerning treatment of
5867      breakpoints with single disabled location.  */
5868   if (loc == NULL 
5869       && (b->loc != NULL 
5870           && (b->loc->next != NULL || !b->loc->enabled)))
5871     header_of_multiple = 1;
5872   if (loc == NULL)
5873     loc = b->loc;
5874
5875   annotate_record ();
5876
5877   /* 1 */
5878   annotate_field (0);
5879   if (part_of_multiple)
5880     {
5881       char *formatted;
5882       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5883       ui_out_field_string (uiout, "number", formatted);
5884       xfree (formatted);
5885     }
5886   else
5887     {
5888       ui_out_field_int (uiout, "number", b->number);
5889     }
5890
5891   /* 2 */
5892   annotate_field (1);
5893   if (part_of_multiple)
5894     ui_out_field_skip (uiout, "type");
5895   else
5896     ui_out_field_string (uiout, "type", bptype_string (b->type));
5897
5898   /* 3 */
5899   annotate_field (2);
5900   if (part_of_multiple)
5901     ui_out_field_skip (uiout, "disp");
5902   else
5903     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5904
5905
5906   /* 4 */
5907   annotate_field (3);
5908   if (part_of_multiple)
5909     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5910   else
5911     ui_out_field_fmt (uiout, "enabled", "%c", 
5912                       bpenables[(int) b->enable_state]);
5913   ui_out_spaces (uiout, 2);
5914
5915   
5916   /* 5 and 6 */
5917   if (b->ops != NULL && b->ops->print_one != NULL)
5918     {
5919       /* Although the print_one can possibly print all locations,
5920          calling it here is not likely to get any nice result.  So,
5921          make sure there's just one location.  */
5922       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5923       b->ops->print_one (b, last_loc);
5924     }
5925   else
5926     switch (b->type)
5927       {
5928       case bp_none:
5929         internal_error (__FILE__, __LINE__,
5930                         _("print_one_breakpoint: bp_none encountered\n"));
5931         break;
5932
5933       case bp_watchpoint:
5934       case bp_hardware_watchpoint:
5935       case bp_read_watchpoint:
5936       case bp_access_watchpoint:
5937         {
5938           struct watchpoint *w = (struct watchpoint *) b;
5939
5940           /* Field 4, the address, is omitted (which makes the columns
5941              not line up too nicely with the headers, but the effect
5942              is relatively readable).  */
5943           if (opts.addressprint)
5944             ui_out_field_skip (uiout, "addr");
5945           annotate_field (5);
5946           ui_out_field_string (uiout, "what", w->exp_string);
5947         }
5948         break;
5949
5950       case bp_breakpoint:
5951       case bp_hardware_breakpoint:
5952       case bp_until:
5953       case bp_finish:
5954       case bp_longjmp:
5955       case bp_longjmp_resume:
5956       case bp_longjmp_call_dummy:
5957       case bp_exception:
5958       case bp_exception_resume:
5959       case bp_step_resume:
5960       case bp_hp_step_resume:
5961       case bp_watchpoint_scope:
5962       case bp_call_dummy:
5963       case bp_std_terminate:
5964       case bp_shlib_event:
5965       case bp_thread_event:
5966       case bp_overlay_event:
5967       case bp_longjmp_master:
5968       case bp_std_terminate_master:
5969       case bp_exception_master:
5970       case bp_tracepoint:
5971       case bp_fast_tracepoint:
5972       case bp_static_tracepoint:
5973       case bp_dprintf:
5974       case bp_jit_event:
5975       case bp_gnu_ifunc_resolver:
5976       case bp_gnu_ifunc_resolver_return:
5977         if (opts.addressprint)
5978           {
5979             annotate_field (4);
5980             if (header_of_multiple)
5981               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5982             else if (b->loc == NULL || loc->shlib_disabled)
5983               ui_out_field_string (uiout, "addr", "<PENDING>");
5984             else
5985               ui_out_field_core_addr (uiout, "addr",
5986                                       loc->gdbarch, loc->address);
5987           }
5988         annotate_field (5);
5989         if (!header_of_multiple)
5990           print_breakpoint_location (b, loc);
5991         if (b->loc)
5992           *last_loc = b->loc;
5993         break;
5994       }
5995
5996
5997   if (loc != NULL && !header_of_multiple)
5998     {
5999       struct inferior *inf;
6000       VEC(int) *inf_num = NULL;
6001       int mi_only = 1;
6002
6003       ALL_INFERIORS (inf)
6004         {
6005           if (inf->pspace == loc->pspace)
6006             VEC_safe_push (int, inf_num, inf->num);
6007         }
6008
6009         /* For backward compatibility, don't display inferiors in CLI unless
6010            there are several.  Always display for MI. */
6011         if (allflag
6012             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6013                 && (number_of_program_spaces () > 1
6014                     || number_of_inferiors () > 1)
6015                 /* LOC is for existing B, it cannot be in
6016                    moribund_locations and thus having NULL OWNER.  */
6017                 && loc->owner->type != bp_catchpoint))
6018         mi_only = 0;
6019       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6020       VEC_free (int, inf_num);
6021     }
6022
6023   if (!part_of_multiple)
6024     {
6025       if (b->thread != -1)
6026         {
6027           /* FIXME: This seems to be redundant and lost here; see the
6028              "stop only in" line a little further down.  */
6029           ui_out_text (uiout, " thread ");
6030           ui_out_field_int (uiout, "thread", b->thread);
6031         }
6032       else if (b->task != 0)
6033         {
6034           ui_out_text (uiout, " task ");
6035           ui_out_field_int (uiout, "task", b->task);
6036         }
6037     }
6038
6039   ui_out_text (uiout, "\n");
6040
6041   if (!part_of_multiple)
6042     b->ops->print_one_detail (b, uiout);
6043
6044   if (part_of_multiple && frame_id_p (b->frame_id))
6045     {
6046       annotate_field (6);
6047       ui_out_text (uiout, "\tstop only in stack frame at ");
6048       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6049          the frame ID.  */
6050       ui_out_field_core_addr (uiout, "frame",
6051                               b->gdbarch, b->frame_id.stack_addr);
6052       ui_out_text (uiout, "\n");
6053     }
6054   
6055   if (!part_of_multiple && b->cond_string)
6056     {
6057       annotate_field (7);
6058       if (is_tracepoint (b))
6059         ui_out_text (uiout, "\ttrace only if ");
6060       else
6061         ui_out_text (uiout, "\tstop only if ");
6062       ui_out_field_string (uiout, "cond", b->cond_string);
6063
6064       /* Print whether the target is doing the breakpoint's condition
6065          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6066       if (is_breakpoint (b)
6067           && breakpoint_condition_evaluation_mode ()
6068           == condition_evaluation_target)
6069         {
6070           ui_out_text (uiout, " (");
6071           ui_out_field_string (uiout, "evaluated-by",
6072                                bp_condition_evaluator (b));
6073           ui_out_text (uiout, " evals)");
6074         }
6075       ui_out_text (uiout, "\n");
6076     }
6077
6078   if (!part_of_multiple && b->thread != -1)
6079     {
6080       /* FIXME should make an annotation for this.  */
6081       ui_out_text (uiout, "\tstop only in thread ");
6082       ui_out_field_int (uiout, "thread", b->thread);
6083       ui_out_text (uiout, "\n");
6084     }
6085   
6086   if (!part_of_multiple)
6087     {
6088       if (b->hit_count)
6089         {
6090           /* FIXME should make an annotation for this.  */
6091           if (is_catchpoint (b))
6092             ui_out_text (uiout, "\tcatchpoint");
6093           else if (is_tracepoint (b))
6094             ui_out_text (uiout, "\ttracepoint");
6095           else
6096             ui_out_text (uiout, "\tbreakpoint");
6097           ui_out_text (uiout, " already hit ");
6098           ui_out_field_int (uiout, "times", b->hit_count);
6099           if (b->hit_count == 1)
6100             ui_out_text (uiout, " time\n");
6101           else
6102             ui_out_text (uiout, " times\n");
6103         }
6104       else
6105         {
6106           /* Output the count also if it is zero, but only if this is mi.  */
6107           if (ui_out_is_mi_like_p (uiout))
6108             ui_out_field_int (uiout, "times", b->hit_count);
6109         }
6110     }
6111
6112   if (!part_of_multiple && b->ignore_count)
6113     {
6114       annotate_field (8);
6115       ui_out_text (uiout, "\tignore next ");
6116       ui_out_field_int (uiout, "ignore", b->ignore_count);
6117       ui_out_text (uiout, " hits\n");
6118     }
6119
6120   /* Note that an enable count of 1 corresponds to "enable once"
6121      behavior, which is reported by the combination of enablement and
6122      disposition, so we don't need to mention it here.  */
6123   if (!part_of_multiple && b->enable_count > 1)
6124     {
6125       annotate_field (8);
6126       ui_out_text (uiout, "\tdisable after ");
6127       /* Tweak the wording to clarify that ignore and enable counts
6128          are distinct, and have additive effect.  */
6129       if (b->ignore_count)
6130         ui_out_text (uiout, "additional ");
6131       else
6132         ui_out_text (uiout, "next ");
6133       ui_out_field_int (uiout, "enable", b->enable_count);
6134       ui_out_text (uiout, " hits\n");
6135     }
6136
6137   if (!part_of_multiple && is_tracepoint (b))
6138     {
6139       struct tracepoint *tp = (struct tracepoint *) b;
6140
6141       if (tp->traceframe_usage)
6142         {
6143           ui_out_text (uiout, "\ttrace buffer usage ");
6144           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6145           ui_out_text (uiout, " bytes\n");
6146         }
6147     }
6148
6149   l = b->commands ? b->commands->commands : NULL;
6150   if (!part_of_multiple && l)
6151     {
6152       struct cleanup *script_chain;
6153
6154       annotate_field (9);
6155       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6156       print_command_lines (uiout, l, 4);
6157       do_cleanups (script_chain);
6158     }
6159
6160   if (is_tracepoint (b))
6161     {
6162       struct tracepoint *t = (struct tracepoint *) b;
6163
6164       if (!part_of_multiple && t->pass_count)
6165         {
6166           annotate_field (10);
6167           ui_out_text (uiout, "\tpass count ");
6168           ui_out_field_int (uiout, "pass", t->pass_count);
6169           ui_out_text (uiout, " \n");
6170         }
6171
6172       /* Don't display it when tracepoint or tracepoint location is
6173          pending.   */
6174       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6175         {
6176           annotate_field (11);
6177
6178           if (ui_out_is_mi_like_p (uiout))
6179             ui_out_field_string (uiout, "installed",
6180                                  loc->inserted ? "y" : "n");
6181           else
6182             {
6183               if (loc->inserted)
6184                 ui_out_text (uiout, "\t");
6185               else
6186                 ui_out_text (uiout, "\tnot ");
6187               ui_out_text (uiout, "installed on target\n");
6188             }
6189         }
6190     }
6191
6192   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6193     {
6194       if (is_watchpoint (b))
6195         {
6196           struct watchpoint *w = (struct watchpoint *) b;
6197
6198           ui_out_field_string (uiout, "original-location", w->exp_string);
6199         }
6200       else if (b->addr_string)
6201         ui_out_field_string (uiout, "original-location", b->addr_string);
6202     }
6203 }
6204
6205 static void
6206 print_one_breakpoint (struct breakpoint *b,
6207                       struct bp_location **last_loc, 
6208                       int allflag)
6209 {
6210   struct cleanup *bkpt_chain;
6211   struct ui_out *uiout = current_uiout;
6212
6213   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6214
6215   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6216   do_cleanups (bkpt_chain);
6217
6218   /* If this breakpoint has custom print function,
6219      it's already printed.  Otherwise, print individual
6220      locations, if any.  */
6221   if (b->ops == NULL || b->ops->print_one == NULL)
6222     {
6223       /* If breakpoint has a single location that is disabled, we
6224          print it as if it had several locations, since otherwise it's
6225          hard to represent "breakpoint enabled, location disabled"
6226          situation.
6227
6228          Note that while hardware watchpoints have several locations
6229          internally, that's not a property exposed to user.  */
6230       if (b->loc 
6231           && !is_hardware_watchpoint (b)
6232           && (b->loc->next || !b->loc->enabled))
6233         {
6234           struct bp_location *loc;
6235           int n = 1;
6236
6237           for (loc = b->loc; loc; loc = loc->next, ++n)
6238             {
6239               struct cleanup *inner2 =
6240                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6241               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6242               do_cleanups (inner2);
6243             }
6244         }
6245     }
6246 }
6247
6248 static int
6249 breakpoint_address_bits (struct breakpoint *b)
6250 {
6251   int print_address_bits = 0;
6252   struct bp_location *loc;
6253
6254   for (loc = b->loc; loc; loc = loc->next)
6255     {
6256       int addr_bit;
6257
6258       /* Software watchpoints that aren't watching memory don't have
6259          an address to print.  */
6260       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6261         continue;
6262
6263       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6264       if (addr_bit > print_address_bits)
6265         print_address_bits = addr_bit;
6266     }
6267
6268   return print_address_bits;
6269 }
6270
6271 struct captured_breakpoint_query_args
6272   {
6273     int bnum;
6274   };
6275
6276 static int
6277 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6278 {
6279   struct captured_breakpoint_query_args *args = data;
6280   struct breakpoint *b;
6281   struct bp_location *dummy_loc = NULL;
6282
6283   ALL_BREAKPOINTS (b)
6284     {
6285       if (args->bnum == b->number)
6286         {
6287           print_one_breakpoint (b, &dummy_loc, 0);
6288           return GDB_RC_OK;
6289         }
6290     }
6291   return GDB_RC_NONE;
6292 }
6293
6294 enum gdb_rc
6295 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6296                       char **error_message)
6297 {
6298   struct captured_breakpoint_query_args args;
6299
6300   args.bnum = bnum;
6301   /* For the moment we don't trust print_one_breakpoint() to not throw
6302      an error.  */
6303   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6304                                  error_message, RETURN_MASK_ALL) < 0)
6305     return GDB_RC_FAIL;
6306   else
6307     return GDB_RC_OK;
6308 }
6309
6310 /* Return true if this breakpoint was set by the user, false if it is
6311    internal or momentary.  */
6312
6313 int
6314 user_breakpoint_p (struct breakpoint *b)
6315 {
6316   return b->number > 0;
6317 }
6318
6319 /* Print information on user settable breakpoint (watchpoint, etc)
6320    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6321    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6322    FILTER is non-NULL, call it on each breakpoint and only include the
6323    ones for which it returns non-zero.  Return the total number of
6324    breakpoints listed.  */
6325
6326 static int
6327 breakpoint_1 (char *args, int allflag, 
6328               int (*filter) (const struct breakpoint *))
6329 {
6330   struct breakpoint *b;
6331   struct bp_location *last_loc = NULL;
6332   int nr_printable_breakpoints;
6333   struct cleanup *bkpttbl_chain;
6334   struct value_print_options opts;
6335   int print_address_bits = 0;
6336   int print_type_col_width = 14;
6337   struct ui_out *uiout = current_uiout;
6338
6339   get_user_print_options (&opts);
6340
6341   /* Compute the number of rows in the table, as well as the size
6342      required for address fields.  */
6343   nr_printable_breakpoints = 0;
6344   ALL_BREAKPOINTS (b)
6345     {
6346       /* If we have a filter, only list the breakpoints it accepts.  */
6347       if (filter && !filter (b))
6348         continue;
6349
6350       /* If we have an "args" string, it is a list of breakpoints to 
6351          accept.  Skip the others.  */
6352       if (args != NULL && *args != '\0')
6353         {
6354           if (allflag && parse_and_eval_long (args) != b->number)
6355             continue;
6356           if (!allflag && !number_is_in_list (args, b->number))
6357             continue;
6358         }
6359
6360       if (allflag || user_breakpoint_p (b))
6361         {
6362           int addr_bit, type_len;
6363
6364           addr_bit = breakpoint_address_bits (b);
6365           if (addr_bit > print_address_bits)
6366             print_address_bits = addr_bit;
6367
6368           type_len = strlen (bptype_string (b->type));
6369           if (type_len > print_type_col_width)
6370             print_type_col_width = type_len;
6371
6372           nr_printable_breakpoints++;
6373         }
6374     }
6375
6376   if (opts.addressprint)
6377     bkpttbl_chain 
6378       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6379                                              nr_printable_breakpoints,
6380                                              "BreakpointTable");
6381   else
6382     bkpttbl_chain 
6383       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6384                                              nr_printable_breakpoints,
6385                                              "BreakpointTable");
6386
6387   if (nr_printable_breakpoints > 0)
6388     annotate_breakpoints_headers ();
6389   if (nr_printable_breakpoints > 0)
6390     annotate_field (0);
6391   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6392   if (nr_printable_breakpoints > 0)
6393     annotate_field (1);
6394   ui_out_table_header (uiout, print_type_col_width, ui_left,
6395                        "type", "Type");                         /* 2 */
6396   if (nr_printable_breakpoints > 0)
6397     annotate_field (2);
6398   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6399   if (nr_printable_breakpoints > 0)
6400     annotate_field (3);
6401   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6402   if (opts.addressprint)
6403     {
6404       if (nr_printable_breakpoints > 0)
6405         annotate_field (4);
6406       if (print_address_bits <= 32)
6407         ui_out_table_header (uiout, 10, ui_left, 
6408                              "addr", "Address");                /* 5 */
6409       else
6410         ui_out_table_header (uiout, 18, ui_left, 
6411                              "addr", "Address");                /* 5 */
6412     }
6413   if (nr_printable_breakpoints > 0)
6414     annotate_field (5);
6415   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6416   ui_out_table_body (uiout);
6417   if (nr_printable_breakpoints > 0)
6418     annotate_breakpoints_table ();
6419
6420   ALL_BREAKPOINTS (b)
6421     {
6422       QUIT;
6423       /* If we have a filter, only list the breakpoints it accepts.  */
6424       if (filter && !filter (b))
6425         continue;
6426
6427       /* If we have an "args" string, it is a list of breakpoints to 
6428          accept.  Skip the others.  */
6429
6430       if (args != NULL && *args != '\0')
6431         {
6432           if (allflag)  /* maintenance info breakpoint */
6433             {
6434               if (parse_and_eval_long (args) != b->number)
6435                 continue;
6436             }
6437           else          /* all others */
6438             {
6439               if (!number_is_in_list (args, b->number))
6440                 continue;
6441             }
6442         }
6443       /* We only print out user settable breakpoints unless the
6444          allflag is set.  */
6445       if (allflag || user_breakpoint_p (b))
6446         print_one_breakpoint (b, &last_loc, allflag);
6447     }
6448
6449   do_cleanups (bkpttbl_chain);
6450
6451   if (nr_printable_breakpoints == 0)
6452     {
6453       /* If there's a filter, let the caller decide how to report
6454          empty list.  */
6455       if (!filter)
6456         {
6457           if (args == NULL || *args == '\0')
6458             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6459           else
6460             ui_out_message (uiout, 0, 
6461                             "No breakpoint or watchpoint matching '%s'.\n",
6462                             args);
6463         }
6464     }
6465   else
6466     {
6467       if (last_loc && !server_command)
6468         set_next_address (last_loc->gdbarch, last_loc->address);
6469     }
6470
6471   /* FIXME?  Should this be moved up so that it is only called when
6472      there have been breakpoints? */
6473   annotate_breakpoints_table_end ();
6474
6475   return nr_printable_breakpoints;
6476 }
6477
6478 /* Display the value of default-collect in a way that is generally
6479    compatible with the breakpoint list.  */
6480
6481 static void
6482 default_collect_info (void)
6483 {
6484   struct ui_out *uiout = current_uiout;
6485
6486   /* If it has no value (which is frequently the case), say nothing; a
6487      message like "No default-collect." gets in user's face when it's
6488      not wanted.  */
6489   if (!*default_collect)
6490     return;
6491
6492   /* The following phrase lines up nicely with per-tracepoint collect
6493      actions.  */
6494   ui_out_text (uiout, "default collect ");
6495   ui_out_field_string (uiout, "default-collect", default_collect);
6496   ui_out_text (uiout, " \n");
6497 }
6498   
6499 static void
6500 breakpoints_info (char *args, int from_tty)
6501 {
6502   breakpoint_1 (args, 0, NULL);
6503
6504   default_collect_info ();
6505 }
6506
6507 static void
6508 watchpoints_info (char *args, int from_tty)
6509 {
6510   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6511   struct ui_out *uiout = current_uiout;
6512
6513   if (num_printed == 0)
6514     {
6515       if (args == NULL || *args == '\0')
6516         ui_out_message (uiout, 0, "No watchpoints.\n");
6517       else
6518         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6519     }
6520 }
6521
6522 static void
6523 maintenance_info_breakpoints (char *args, int from_tty)
6524 {
6525   breakpoint_1 (args, 1, NULL);
6526
6527   default_collect_info ();
6528 }
6529
6530 static int
6531 breakpoint_has_pc (struct breakpoint *b,
6532                    struct program_space *pspace,
6533                    CORE_ADDR pc, struct obj_section *section)
6534 {
6535   struct bp_location *bl = b->loc;
6536
6537   for (; bl; bl = bl->next)
6538     {
6539       if (bl->pspace == pspace
6540           && bl->address == pc
6541           && (!overlay_debugging || bl->section == section))
6542         return 1;         
6543     }
6544   return 0;
6545 }
6546
6547 /* Print a message describing any user-breakpoints set at PC.  This
6548    concerns with logical breakpoints, so we match program spaces, not
6549    address spaces.  */
6550
6551 static void
6552 describe_other_breakpoints (struct gdbarch *gdbarch,
6553                             struct program_space *pspace, CORE_ADDR pc,
6554                             struct obj_section *section, int thread)
6555 {
6556   int others = 0;
6557   struct breakpoint *b;
6558
6559   ALL_BREAKPOINTS (b)
6560     others += (user_breakpoint_p (b)
6561                && breakpoint_has_pc (b, pspace, pc, section));
6562   if (others > 0)
6563     {
6564       if (others == 1)
6565         printf_filtered (_("Note: breakpoint "));
6566       else /* if (others == ???) */
6567         printf_filtered (_("Note: breakpoints "));
6568       ALL_BREAKPOINTS (b)
6569         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6570           {
6571             others--;
6572             printf_filtered ("%d", b->number);
6573             if (b->thread == -1 && thread != -1)
6574               printf_filtered (" (all threads)");
6575             else if (b->thread != -1)
6576               printf_filtered (" (thread %d)", b->thread);
6577             printf_filtered ("%s%s ",
6578                              ((b->enable_state == bp_disabled
6579                                || b->enable_state == bp_call_disabled)
6580                               ? " (disabled)"
6581                               : b->enable_state == bp_permanent 
6582                               ? " (permanent)"
6583                               : ""),
6584                              (others > 1) ? "," 
6585                              : ((others == 1) ? " and" : ""));
6586           }
6587       printf_filtered (_("also set at pc "));
6588       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6589       printf_filtered (".\n");
6590     }
6591 }
6592 \f
6593
6594 /* Return true iff it is meaningful to use the address member of
6595    BPT.  For some breakpoint types, the address member is irrelevant
6596    and it makes no sense to attempt to compare it to other addresses
6597    (or use it for any other purpose either).
6598
6599    More specifically, each of the following breakpoint types will
6600    always have a zero valued address and we don't want to mark
6601    breakpoints of any of these types to be a duplicate of an actual
6602    breakpoint at address zero:
6603
6604       bp_watchpoint
6605       bp_catchpoint
6606
6607 */
6608
6609 static int
6610 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6611 {
6612   enum bptype type = bpt->type;
6613
6614   return (type != bp_watchpoint && type != bp_catchpoint);
6615 }
6616
6617 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6618    true if LOC1 and LOC2 represent the same watchpoint location.  */
6619
6620 static int
6621 watchpoint_locations_match (struct bp_location *loc1, 
6622                             struct bp_location *loc2)
6623 {
6624   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6625   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6626
6627   /* Both of them must exist.  */
6628   gdb_assert (w1 != NULL);
6629   gdb_assert (w2 != NULL);
6630
6631   /* If the target can evaluate the condition expression in hardware,
6632      then we we need to insert both watchpoints even if they are at
6633      the same place.  Otherwise the watchpoint will only trigger when
6634      the condition of whichever watchpoint was inserted evaluates to
6635      true, not giving a chance for GDB to check the condition of the
6636      other watchpoint.  */
6637   if ((w1->cond_exp
6638        && target_can_accel_watchpoint_condition (loc1->address, 
6639                                                  loc1->length,
6640                                                  loc1->watchpoint_type,
6641                                                  w1->cond_exp))
6642       || (w2->cond_exp
6643           && target_can_accel_watchpoint_condition (loc2->address, 
6644                                                     loc2->length,
6645                                                     loc2->watchpoint_type,
6646                                                     w2->cond_exp)))
6647     return 0;
6648
6649   /* Note that this checks the owner's type, not the location's.  In
6650      case the target does not support read watchpoints, but does
6651      support access watchpoints, we'll have bp_read_watchpoint
6652      watchpoints with hw_access locations.  Those should be considered
6653      duplicates of hw_read locations.  The hw_read locations will
6654      become hw_access locations later.  */
6655   return (loc1->owner->type == loc2->owner->type
6656           && loc1->pspace->aspace == loc2->pspace->aspace
6657           && loc1->address == loc2->address
6658           && loc1->length == loc2->length);
6659 }
6660
6661 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6662    same breakpoint location.  In most targets, this can only be true
6663    if ASPACE1 matches ASPACE2.  On targets that have global
6664    breakpoints, the address space doesn't really matter.  */
6665
6666 static int
6667 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6668                           struct address_space *aspace2, CORE_ADDR addr2)
6669 {
6670   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6671            || aspace1 == aspace2)
6672           && addr1 == addr2);
6673 }
6674
6675 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6676    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6677    matches ASPACE2.  On targets that have global breakpoints, the address
6678    space doesn't really matter.  */
6679
6680 static int
6681 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6682                                 int len1, struct address_space *aspace2,
6683                                 CORE_ADDR addr2)
6684 {
6685   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6686            || aspace1 == aspace2)
6687           && addr2 >= addr1 && addr2 < addr1 + len1);
6688 }
6689
6690 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6691    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6692    matches the breakpoint's address space.  On targets that have global
6693    breakpoints, the address space doesn't really matter.  */
6694
6695 static int
6696 breakpoint_location_address_match (struct bp_location *bl,
6697                                    struct address_space *aspace,
6698                                    CORE_ADDR addr)
6699 {
6700   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6701                                     aspace, addr)
6702           || (bl->length
6703               && breakpoint_address_match_range (bl->pspace->aspace,
6704                                                  bl->address, bl->length,
6705                                                  aspace, addr)));
6706 }
6707
6708 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6709    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6710    true, otherwise returns false.  */
6711
6712 static int
6713 tracepoint_locations_match (struct bp_location *loc1,
6714                             struct bp_location *loc2)
6715 {
6716   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6717     /* Since tracepoint locations are never duplicated with others', tracepoint
6718        locations at the same address of different tracepoints are regarded as
6719        different locations.  */
6720     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6721   else
6722     return 0;
6723 }
6724
6725 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6726    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6727    represent the same location.  */
6728
6729 static int
6730 breakpoint_locations_match (struct bp_location *loc1, 
6731                             struct bp_location *loc2)
6732 {
6733   int hw_point1, hw_point2;
6734
6735   /* Both of them must not be in moribund_locations.  */
6736   gdb_assert (loc1->owner != NULL);
6737   gdb_assert (loc2->owner != NULL);
6738
6739   hw_point1 = is_hardware_watchpoint (loc1->owner);
6740   hw_point2 = is_hardware_watchpoint (loc2->owner);
6741
6742   if (hw_point1 != hw_point2)
6743     return 0;
6744   else if (hw_point1)
6745     return watchpoint_locations_match (loc1, loc2);
6746   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6747     return tracepoint_locations_match (loc1, loc2);
6748   else
6749     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6750     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6751                                      loc2->pspace->aspace, loc2->address)
6752             && loc1->length == loc2->length);
6753 }
6754
6755 static void
6756 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6757                                int bnum, int have_bnum)
6758 {
6759   /* The longest string possibly returned by hex_string_custom
6760      is 50 chars.  These must be at least that big for safety.  */
6761   char astr1[64];
6762   char astr2[64];
6763
6764   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6765   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6766   if (have_bnum)
6767     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6768              bnum, astr1, astr2);
6769   else
6770     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6771 }
6772
6773 /* Adjust a breakpoint's address to account for architectural
6774    constraints on breakpoint placement.  Return the adjusted address.
6775    Note: Very few targets require this kind of adjustment.  For most
6776    targets, this function is simply the identity function.  */
6777
6778 static CORE_ADDR
6779 adjust_breakpoint_address (struct gdbarch *gdbarch,
6780                            CORE_ADDR bpaddr, enum bptype bptype)
6781 {
6782   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6783     {
6784       /* Very few targets need any kind of breakpoint adjustment.  */
6785       return bpaddr;
6786     }
6787   else if (bptype == bp_watchpoint
6788            || bptype == bp_hardware_watchpoint
6789            || bptype == bp_read_watchpoint
6790            || bptype == bp_access_watchpoint
6791            || bptype == bp_catchpoint)
6792     {
6793       /* Watchpoints and the various bp_catch_* eventpoints should not
6794          have their addresses modified.  */
6795       return bpaddr;
6796     }
6797   else
6798     {
6799       CORE_ADDR adjusted_bpaddr;
6800
6801       /* Some targets have architectural constraints on the placement
6802          of breakpoint instructions.  Obtain the adjusted address.  */
6803       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6804
6805       /* An adjusted breakpoint address can significantly alter
6806          a user's expectations.  Print a warning if an adjustment
6807          is required.  */
6808       if (adjusted_bpaddr != bpaddr)
6809         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6810
6811       return adjusted_bpaddr;
6812     }
6813 }
6814
6815 void
6816 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6817                   struct breakpoint *owner)
6818 {
6819   memset (loc, 0, sizeof (*loc));
6820
6821   gdb_assert (ops != NULL);
6822
6823   loc->ops = ops;
6824   loc->owner = owner;
6825   loc->cond = NULL;
6826   loc->cond_bytecode = NULL;
6827   loc->shlib_disabled = 0;
6828   loc->enabled = 1;
6829
6830   switch (owner->type)
6831     {
6832     case bp_breakpoint:
6833     case bp_until:
6834     case bp_finish:
6835     case bp_longjmp:
6836     case bp_longjmp_resume:
6837     case bp_longjmp_call_dummy:
6838     case bp_exception:
6839     case bp_exception_resume:
6840     case bp_step_resume:
6841     case bp_hp_step_resume:
6842     case bp_watchpoint_scope:
6843     case bp_call_dummy:
6844     case bp_std_terminate:
6845     case bp_shlib_event:
6846     case bp_thread_event:
6847     case bp_overlay_event:
6848     case bp_jit_event:
6849     case bp_longjmp_master:
6850     case bp_std_terminate_master:
6851     case bp_exception_master:
6852     case bp_gnu_ifunc_resolver:
6853     case bp_gnu_ifunc_resolver_return:
6854     case bp_dprintf:
6855       loc->loc_type = bp_loc_software_breakpoint;
6856       mark_breakpoint_location_modified (loc);
6857       break;
6858     case bp_hardware_breakpoint:
6859       loc->loc_type = bp_loc_hardware_breakpoint;
6860       mark_breakpoint_location_modified (loc);
6861       break;
6862     case bp_hardware_watchpoint:
6863     case bp_read_watchpoint:
6864     case bp_access_watchpoint:
6865       loc->loc_type = bp_loc_hardware_watchpoint;
6866       break;
6867     case bp_watchpoint:
6868     case bp_catchpoint:
6869     case bp_tracepoint:
6870     case bp_fast_tracepoint:
6871     case bp_static_tracepoint:
6872       loc->loc_type = bp_loc_other;
6873       break;
6874     default:
6875       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6876     }
6877
6878   loc->refc = 1;
6879 }
6880
6881 /* Allocate a struct bp_location.  */
6882
6883 static struct bp_location *
6884 allocate_bp_location (struct breakpoint *bpt)
6885 {
6886   return bpt->ops->allocate_location (bpt);
6887 }
6888
6889 static void
6890 free_bp_location (struct bp_location *loc)
6891 {
6892   loc->ops->dtor (loc);
6893   xfree (loc);
6894 }
6895
6896 /* Increment reference count.  */
6897
6898 static void
6899 incref_bp_location (struct bp_location *bl)
6900 {
6901   ++bl->refc;
6902 }
6903
6904 /* Decrement reference count.  If the reference count reaches 0,
6905    destroy the bp_location.  Sets *BLP to NULL.  */
6906
6907 static void
6908 decref_bp_location (struct bp_location **blp)
6909 {
6910   gdb_assert ((*blp)->refc > 0);
6911
6912   if (--(*blp)->refc == 0)
6913     free_bp_location (*blp);
6914   *blp = NULL;
6915 }
6916
6917 /* Add breakpoint B at the end of the global breakpoint chain.  */
6918
6919 static void
6920 add_to_breakpoint_chain (struct breakpoint *b)
6921 {
6922   struct breakpoint *b1;
6923
6924   /* Add this breakpoint to the end of the chain so that a list of
6925      breakpoints will come out in order of increasing numbers.  */
6926
6927   b1 = breakpoint_chain;
6928   if (b1 == 0)
6929     breakpoint_chain = b;
6930   else
6931     {
6932       while (b1->next)
6933         b1 = b1->next;
6934       b1->next = b;
6935     }
6936 }
6937
6938 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6939
6940 static void
6941 init_raw_breakpoint_without_location (struct breakpoint *b,
6942                                       struct gdbarch *gdbarch,
6943                                       enum bptype bptype,
6944                                       const struct breakpoint_ops *ops)
6945 {
6946   memset (b, 0, sizeof (*b));
6947
6948   gdb_assert (ops != NULL);
6949
6950   b->ops = ops;
6951   b->type = bptype;
6952   b->gdbarch = gdbarch;
6953   b->language = current_language->la_language;
6954   b->input_radix = input_radix;
6955   b->thread = -1;
6956   b->enable_state = bp_enabled;
6957   b->next = 0;
6958   b->silent = 0;
6959   b->ignore_count = 0;
6960   b->commands = NULL;
6961   b->frame_id = null_frame_id;
6962   b->condition_not_parsed = 0;
6963   b->py_bp_object = NULL;
6964   b->related_breakpoint = b;
6965 }
6966
6967 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6968    that has type BPTYPE and has no locations as yet.  */
6969
6970 static struct breakpoint *
6971 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6972                                      enum bptype bptype,
6973                                      const struct breakpoint_ops *ops)
6974 {
6975   struct breakpoint *b = XNEW (struct breakpoint);
6976
6977   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6978   add_to_breakpoint_chain (b);
6979   return b;
6980 }
6981
6982 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6983    resolutions should be made as the user specified the location explicitly
6984    enough.  */
6985
6986 static void
6987 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6988 {
6989   gdb_assert (loc->owner != NULL);
6990
6991   if (loc->owner->type == bp_breakpoint
6992       || loc->owner->type == bp_hardware_breakpoint
6993       || is_tracepoint (loc->owner))
6994     {
6995       int is_gnu_ifunc;
6996       const char *function_name;
6997       CORE_ADDR func_addr;
6998
6999       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7000                                           &func_addr, NULL, &is_gnu_ifunc);
7001
7002       if (is_gnu_ifunc && !explicit_loc)
7003         {
7004           struct breakpoint *b = loc->owner;
7005
7006           gdb_assert (loc->pspace == current_program_space);
7007           if (gnu_ifunc_resolve_name (function_name,
7008                                       &loc->requested_address))
7009             {
7010               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7011               loc->address = adjust_breakpoint_address (loc->gdbarch,
7012                                                         loc->requested_address,
7013                                                         b->type);
7014             }
7015           else if (b->type == bp_breakpoint && b->loc == loc
7016                    && loc->next == NULL && b->related_breakpoint == b)
7017             {
7018               /* Create only the whole new breakpoint of this type but do not
7019                  mess more complicated breakpoints with multiple locations.  */
7020               b->type = bp_gnu_ifunc_resolver;
7021               /* Remember the resolver's address for use by the return
7022                  breakpoint.  */
7023               loc->related_address = func_addr;
7024             }
7025         }
7026
7027       if (function_name)
7028         loc->function_name = xstrdup (function_name);
7029     }
7030 }
7031
7032 /* Attempt to determine architecture of location identified by SAL.  */
7033 struct gdbarch *
7034 get_sal_arch (struct symtab_and_line sal)
7035 {
7036   if (sal.section)
7037     return get_objfile_arch (sal.section->objfile);
7038   if (sal.symtab)
7039     return get_objfile_arch (sal.symtab->objfile);
7040
7041   return NULL;
7042 }
7043
7044 /* Low level routine for partially initializing a breakpoint of type
7045    BPTYPE.  The newly created breakpoint's address, section, source
7046    file name, and line number are provided by SAL.
7047
7048    It is expected that the caller will complete the initialization of
7049    the newly created breakpoint struct as well as output any status
7050    information regarding the creation of a new breakpoint.  */
7051
7052 static void
7053 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7054                      struct symtab_and_line sal, enum bptype bptype,
7055                      const struct breakpoint_ops *ops)
7056 {
7057   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7058
7059   add_location_to_breakpoint (b, &sal);
7060
7061   if (bptype != bp_catchpoint)
7062     gdb_assert (sal.pspace != NULL);
7063
7064   /* Store the program space that was used to set the breakpoint,
7065      except for ordinary breakpoints, which are independent of the
7066      program space.  */
7067   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7068     b->pspace = sal.pspace;
7069 }
7070
7071 /* set_raw_breakpoint is a low level routine for allocating and
7072    partially initializing a breakpoint of type BPTYPE.  The newly
7073    created breakpoint's address, section, source file name, and line
7074    number are provided by SAL.  The newly created and partially
7075    initialized breakpoint is added to the breakpoint chain and
7076    is also returned as the value of this function.
7077
7078    It is expected that the caller will complete the initialization of
7079    the newly created breakpoint struct as well as output any status
7080    information regarding the creation of a new breakpoint.  In
7081    particular, set_raw_breakpoint does NOT set the breakpoint
7082    number!  Care should be taken to not allow an error to occur
7083    prior to completing the initialization of the breakpoint.  If this
7084    should happen, a bogus breakpoint will be left on the chain.  */
7085
7086 struct breakpoint *
7087 set_raw_breakpoint (struct gdbarch *gdbarch,
7088                     struct symtab_and_line sal, enum bptype bptype,
7089                     const struct breakpoint_ops *ops)
7090 {
7091   struct breakpoint *b = XNEW (struct breakpoint);
7092
7093   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7094   add_to_breakpoint_chain (b);
7095   return b;
7096 }
7097
7098
7099 /* Note that the breakpoint object B describes a permanent breakpoint
7100    instruction, hard-wired into the inferior's code.  */
7101 void
7102 make_breakpoint_permanent (struct breakpoint *b)
7103 {
7104   struct bp_location *bl;
7105
7106   b->enable_state = bp_permanent;
7107
7108   /* By definition, permanent breakpoints are already present in the
7109      code.  Mark all locations as inserted.  For now,
7110      make_breakpoint_permanent is called in just one place, so it's
7111      hard to say if it's reasonable to have permanent breakpoint with
7112      multiple locations or not, but it's easy to implement.  */
7113   for (bl = b->loc; bl; bl = bl->next)
7114     bl->inserted = 1;
7115 }
7116
7117 /* Call this routine when stepping and nexting to enable a breakpoint
7118    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7119    initiated the operation.  */
7120
7121 void
7122 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7123 {
7124   struct breakpoint *b, *b_tmp;
7125   int thread = tp->num;
7126
7127   /* To avoid having to rescan all objfile symbols at every step,
7128      we maintain a list of continually-inserted but always disabled
7129      longjmp "master" breakpoints.  Here, we simply create momentary
7130      clones of those and enable them for the requested thread.  */
7131   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7132     if (b->pspace == current_program_space
7133         && (b->type == bp_longjmp_master
7134             || b->type == bp_exception_master))
7135       {
7136         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7137         struct breakpoint *clone;
7138
7139         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7140            after their removal.  */
7141         clone = momentary_breakpoint_from_master (b, type,
7142                                                   &longjmp_breakpoint_ops);
7143         clone->thread = thread;
7144       }
7145
7146   tp->initiating_frame = frame;
7147 }
7148
7149 /* Delete all longjmp breakpoints from THREAD.  */
7150 void
7151 delete_longjmp_breakpoint (int thread)
7152 {
7153   struct breakpoint *b, *b_tmp;
7154
7155   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7156     if (b->type == bp_longjmp || b->type == bp_exception)
7157       {
7158         if (b->thread == thread)
7159           delete_breakpoint (b);
7160       }
7161 }
7162
7163 void
7164 delete_longjmp_breakpoint_at_next_stop (int thread)
7165 {
7166   struct breakpoint *b, *b_tmp;
7167
7168   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7169     if (b->type == bp_longjmp || b->type == bp_exception)
7170       {
7171         if (b->thread == thread)
7172           b->disposition = disp_del_at_next_stop;
7173       }
7174 }
7175
7176 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7177    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7178    pointer to any of them.  Return NULL if this system cannot place longjmp
7179    breakpoints.  */
7180
7181 struct breakpoint *
7182 set_longjmp_breakpoint_for_call_dummy (void)
7183 {
7184   struct breakpoint *b, *retval = NULL;
7185
7186   ALL_BREAKPOINTS (b)
7187     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7188       {
7189         struct breakpoint *new_b;
7190
7191         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7192                                                   &momentary_breakpoint_ops);
7193         new_b->thread = pid_to_thread_id (inferior_ptid);
7194
7195         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7196
7197         gdb_assert (new_b->related_breakpoint == new_b);
7198         if (retval == NULL)
7199           retval = new_b;
7200         new_b->related_breakpoint = retval;
7201         while (retval->related_breakpoint != new_b->related_breakpoint)
7202           retval = retval->related_breakpoint;
7203         retval->related_breakpoint = new_b;
7204       }
7205
7206   return retval;
7207 }
7208
7209 /* Verify all existing dummy frames and their associated breakpoints for
7210    THREAD.  Remove those which can no longer be found in the current frame
7211    stack.
7212
7213    You should call this function only at places where it is safe to currently
7214    unwind the whole stack.  Failed stack unwind would discard live dummy
7215    frames.  */
7216
7217 void
7218 check_longjmp_breakpoint_for_call_dummy (int thread)
7219 {
7220   struct breakpoint *b, *b_tmp;
7221
7222   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7223     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7224       {
7225         struct breakpoint *dummy_b = b->related_breakpoint;
7226
7227         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7228           dummy_b = dummy_b->related_breakpoint;
7229         if (dummy_b->type != bp_call_dummy
7230             || frame_find_by_id (dummy_b->frame_id) != NULL)
7231           continue;
7232         
7233         dummy_frame_discard (dummy_b->frame_id);
7234
7235         while (b->related_breakpoint != b)
7236           {
7237             if (b_tmp == b->related_breakpoint)
7238               b_tmp = b->related_breakpoint->next;
7239             delete_breakpoint (b->related_breakpoint);
7240           }
7241         delete_breakpoint (b);
7242       }
7243 }
7244
7245 void
7246 enable_overlay_breakpoints (void)
7247 {
7248   struct breakpoint *b;
7249
7250   ALL_BREAKPOINTS (b)
7251     if (b->type == bp_overlay_event)
7252     {
7253       b->enable_state = bp_enabled;
7254       update_global_location_list (1);
7255       overlay_events_enabled = 1;
7256     }
7257 }
7258
7259 void
7260 disable_overlay_breakpoints (void)
7261 {
7262   struct breakpoint *b;
7263
7264   ALL_BREAKPOINTS (b)
7265     if (b->type == bp_overlay_event)
7266     {
7267       b->enable_state = bp_disabled;
7268       update_global_location_list (0);
7269       overlay_events_enabled = 0;
7270     }
7271 }
7272
7273 /* Set an active std::terminate breakpoint for each std::terminate
7274    master breakpoint.  */
7275 void
7276 set_std_terminate_breakpoint (void)
7277 {
7278   struct breakpoint *b, *b_tmp;
7279
7280   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7281     if (b->pspace == current_program_space
7282         && b->type == bp_std_terminate_master)
7283       {
7284         momentary_breakpoint_from_master (b, bp_std_terminate,
7285                                           &momentary_breakpoint_ops);
7286       }
7287 }
7288
7289 /* Delete all the std::terminate breakpoints.  */
7290 void
7291 delete_std_terminate_breakpoint (void)
7292 {
7293   struct breakpoint *b, *b_tmp;
7294
7295   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7296     if (b->type == bp_std_terminate)
7297       delete_breakpoint (b);
7298 }
7299
7300 struct breakpoint *
7301 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7302 {
7303   struct breakpoint *b;
7304
7305   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7306                                   &internal_breakpoint_ops);
7307
7308   b->enable_state = bp_enabled;
7309   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7310   b->addr_string
7311     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7312
7313   update_global_location_list_nothrow (1);
7314
7315   return b;
7316 }
7317
7318 void
7319 remove_thread_event_breakpoints (void)
7320 {
7321   struct breakpoint *b, *b_tmp;
7322
7323   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7324     if (b->type == bp_thread_event
7325         && b->loc->pspace == current_program_space)
7326       delete_breakpoint (b);
7327 }
7328
7329 struct lang_and_radix
7330   {
7331     enum language lang;
7332     int radix;
7333   };
7334
7335 /* Create a breakpoint for JIT code registration and unregistration.  */
7336
7337 struct breakpoint *
7338 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7339 {
7340   struct breakpoint *b;
7341
7342   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7343                                   &internal_breakpoint_ops);
7344   update_global_location_list_nothrow (1);
7345   return b;
7346 }
7347
7348 /* Remove JIT code registration and unregistration breakpoint(s).  */
7349
7350 void
7351 remove_jit_event_breakpoints (void)
7352 {
7353   struct breakpoint *b, *b_tmp;
7354
7355   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7356     if (b->type == bp_jit_event
7357         && b->loc->pspace == current_program_space)
7358       delete_breakpoint (b);
7359 }
7360
7361 void
7362 remove_solib_event_breakpoints (void)
7363 {
7364   struct breakpoint *b, *b_tmp;
7365
7366   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7367     if (b->type == bp_shlib_event
7368         && b->loc->pspace == current_program_space)
7369       delete_breakpoint (b);
7370 }
7371
7372 struct breakpoint *
7373 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7374 {
7375   struct breakpoint *b;
7376
7377   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7378                                   &internal_breakpoint_ops);
7379   update_global_location_list_nothrow (1);
7380   return b;
7381 }
7382
7383 /* Disable any breakpoints that are on code in shared libraries.  Only
7384    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7385
7386 void
7387 disable_breakpoints_in_shlibs (void)
7388 {
7389   struct bp_location *loc, **locp_tmp;
7390
7391   ALL_BP_LOCATIONS (loc, locp_tmp)
7392   {
7393     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7394     struct breakpoint *b = loc->owner;
7395
7396     /* We apply the check to all breakpoints, including disabled for
7397        those with loc->duplicate set.  This is so that when breakpoint
7398        becomes enabled, or the duplicate is removed, gdb will try to
7399        insert all breakpoints.  If we don't set shlib_disabled here,
7400        we'll try to insert those breakpoints and fail.  */
7401     if (((b->type == bp_breakpoint)
7402          || (b->type == bp_jit_event)
7403          || (b->type == bp_hardware_breakpoint)
7404          || (is_tracepoint (b)))
7405         && loc->pspace == current_program_space
7406         && !loc->shlib_disabled
7407         && solib_name_from_address (loc->pspace, loc->address)
7408         )
7409       {
7410         loc->shlib_disabled = 1;
7411       }
7412   }
7413 }
7414
7415 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7416    library.  Only apply to enabled breakpoints, disabled ones can just stay
7417    disabled.  */
7418
7419 static void
7420 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7421 {
7422   struct bp_location *loc, **locp_tmp;
7423   int disabled_shlib_breaks = 0;
7424
7425   /* SunOS a.out shared libraries are always mapped, so do not
7426      disable breakpoints; they will only be reported as unloaded
7427      through clear_solib when GDB discards its shared library
7428      list.  See clear_solib for more information.  */
7429   if (exec_bfd != NULL
7430       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7431     return;
7432
7433   ALL_BP_LOCATIONS (loc, locp_tmp)
7434   {
7435     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7436     struct breakpoint *b = loc->owner;
7437
7438     if (solib->pspace == loc->pspace
7439         && !loc->shlib_disabled
7440         && (((b->type == bp_breakpoint
7441               || b->type == bp_jit_event
7442               || b->type == bp_hardware_breakpoint)
7443              && (loc->loc_type == bp_loc_hardware_breakpoint
7444                  || loc->loc_type == bp_loc_software_breakpoint))
7445             || is_tracepoint (b))
7446         && solib_contains_address_p (solib, loc->address))
7447       {
7448         loc->shlib_disabled = 1;
7449         /* At this point, we cannot rely on remove_breakpoint
7450            succeeding so we must mark the breakpoint as not inserted
7451            to prevent future errors occurring in remove_breakpoints.  */
7452         loc->inserted = 0;
7453
7454         /* This may cause duplicate notifications for the same breakpoint.  */
7455         observer_notify_breakpoint_modified (b);
7456
7457         if (!disabled_shlib_breaks)
7458           {
7459             target_terminal_ours_for_output ();
7460             warning (_("Temporarily disabling breakpoints "
7461                        "for unloaded shared library \"%s\""),
7462                      solib->so_name);
7463           }
7464         disabled_shlib_breaks = 1;
7465       }
7466   }
7467 }
7468
7469 /* FORK & VFORK catchpoints.  */
7470
7471 /* An instance of this type is used to represent a fork or vfork
7472    catchpoint.  It includes a "struct breakpoint" as a kind of base
7473    class; users downcast to "struct breakpoint *" when needed.  A
7474    breakpoint is really of this type iff its ops pointer points to
7475    CATCH_FORK_BREAKPOINT_OPS.  */
7476
7477 struct fork_catchpoint
7478 {
7479   /* The base class.  */
7480   struct breakpoint base;
7481
7482   /* Process id of a child process whose forking triggered this
7483      catchpoint.  This field is only valid immediately after this
7484      catchpoint has triggered.  */
7485   ptid_t forked_inferior_pid;
7486 };
7487
7488 /* Implement the "insert" breakpoint_ops method for fork
7489    catchpoints.  */
7490
7491 static int
7492 insert_catch_fork (struct bp_location *bl)
7493 {
7494   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7495 }
7496
7497 /* Implement the "remove" breakpoint_ops method for fork
7498    catchpoints.  */
7499
7500 static int
7501 remove_catch_fork (struct bp_location *bl)
7502 {
7503   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7504 }
7505
7506 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7507    catchpoints.  */
7508
7509 static int
7510 breakpoint_hit_catch_fork (const struct bp_location *bl,
7511                            struct address_space *aspace, CORE_ADDR bp_addr,
7512                            const struct target_waitstatus *ws)
7513 {
7514   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7515
7516   if (ws->kind != TARGET_WAITKIND_FORKED)
7517     return 0;
7518
7519   c->forked_inferior_pid = ws->value.related_pid;
7520   return 1;
7521 }
7522
7523 /* Implement the "print_it" breakpoint_ops method for fork
7524    catchpoints.  */
7525
7526 static enum print_stop_action
7527 print_it_catch_fork (bpstat bs)
7528 {
7529   struct ui_out *uiout = current_uiout;
7530   struct breakpoint *b = bs->breakpoint_at;
7531   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7532
7533   annotate_catchpoint (b->number);
7534   if (b->disposition == disp_del)
7535     ui_out_text (uiout, "\nTemporary catchpoint ");
7536   else
7537     ui_out_text (uiout, "\nCatchpoint ");
7538   if (ui_out_is_mi_like_p (uiout))
7539     {
7540       ui_out_field_string (uiout, "reason",
7541                            async_reason_lookup (EXEC_ASYNC_FORK));
7542       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7543     }
7544   ui_out_field_int (uiout, "bkptno", b->number);
7545   ui_out_text (uiout, " (forked process ");
7546   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7547   ui_out_text (uiout, "), ");
7548   return PRINT_SRC_AND_LOC;
7549 }
7550
7551 /* Implement the "print_one" breakpoint_ops method for fork
7552    catchpoints.  */
7553
7554 static void
7555 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7556 {
7557   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7558   struct value_print_options opts;
7559   struct ui_out *uiout = current_uiout;
7560
7561   get_user_print_options (&opts);
7562
7563   /* Field 4, the address, is omitted (which makes the columns not
7564      line up too nicely with the headers, but the effect is relatively
7565      readable).  */
7566   if (opts.addressprint)
7567     ui_out_field_skip (uiout, "addr");
7568   annotate_field (5);
7569   ui_out_text (uiout, "fork");
7570   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7571     {
7572       ui_out_text (uiout, ", process ");
7573       ui_out_field_int (uiout, "what",
7574                         ptid_get_pid (c->forked_inferior_pid));
7575       ui_out_spaces (uiout, 1);
7576     }
7577
7578   if (ui_out_is_mi_like_p (uiout))
7579     ui_out_field_string (uiout, "catch-type", "fork");
7580 }
7581
7582 /* Implement the "print_mention" breakpoint_ops method for fork
7583    catchpoints.  */
7584
7585 static void
7586 print_mention_catch_fork (struct breakpoint *b)
7587 {
7588   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7589 }
7590
7591 /* Implement the "print_recreate" breakpoint_ops method for fork
7592    catchpoints.  */
7593
7594 static void
7595 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7596 {
7597   fprintf_unfiltered (fp, "catch fork");
7598   print_recreate_thread (b, fp);
7599 }
7600
7601 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7602
7603 static struct breakpoint_ops catch_fork_breakpoint_ops;
7604
7605 /* Implement the "insert" breakpoint_ops method for vfork
7606    catchpoints.  */
7607
7608 static int
7609 insert_catch_vfork (struct bp_location *bl)
7610 {
7611   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7612 }
7613
7614 /* Implement the "remove" breakpoint_ops method for vfork
7615    catchpoints.  */
7616
7617 static int
7618 remove_catch_vfork (struct bp_location *bl)
7619 {
7620   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7621 }
7622
7623 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7624    catchpoints.  */
7625
7626 static int
7627 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7628                             struct address_space *aspace, CORE_ADDR bp_addr,
7629                             const struct target_waitstatus *ws)
7630 {
7631   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7632
7633   if (ws->kind != TARGET_WAITKIND_VFORKED)
7634     return 0;
7635
7636   c->forked_inferior_pid = ws->value.related_pid;
7637   return 1;
7638 }
7639
7640 /* Implement the "print_it" breakpoint_ops method for vfork
7641    catchpoints.  */
7642
7643 static enum print_stop_action
7644 print_it_catch_vfork (bpstat bs)
7645 {
7646   struct ui_out *uiout = current_uiout;
7647   struct breakpoint *b = bs->breakpoint_at;
7648   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7649
7650   annotate_catchpoint (b->number);
7651   if (b->disposition == disp_del)
7652     ui_out_text (uiout, "\nTemporary catchpoint ");
7653   else
7654     ui_out_text (uiout, "\nCatchpoint ");
7655   if (ui_out_is_mi_like_p (uiout))
7656     {
7657       ui_out_field_string (uiout, "reason",
7658                            async_reason_lookup (EXEC_ASYNC_VFORK));
7659       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7660     }
7661   ui_out_field_int (uiout, "bkptno", b->number);
7662   ui_out_text (uiout, " (vforked process ");
7663   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7664   ui_out_text (uiout, "), ");
7665   return PRINT_SRC_AND_LOC;
7666 }
7667
7668 /* Implement the "print_one" breakpoint_ops method for vfork
7669    catchpoints.  */
7670
7671 static void
7672 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7673 {
7674   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7675   struct value_print_options opts;
7676   struct ui_out *uiout = current_uiout;
7677
7678   get_user_print_options (&opts);
7679   /* Field 4, the address, is omitted (which makes the columns not
7680      line up too nicely with the headers, but the effect is relatively
7681      readable).  */
7682   if (opts.addressprint)
7683     ui_out_field_skip (uiout, "addr");
7684   annotate_field (5);
7685   ui_out_text (uiout, "vfork");
7686   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7687     {
7688       ui_out_text (uiout, ", process ");
7689       ui_out_field_int (uiout, "what",
7690                         ptid_get_pid (c->forked_inferior_pid));
7691       ui_out_spaces (uiout, 1);
7692     }
7693
7694   if (ui_out_is_mi_like_p (uiout))
7695     ui_out_field_string (uiout, "catch-type", "vfork");
7696 }
7697
7698 /* Implement the "print_mention" breakpoint_ops method for vfork
7699    catchpoints.  */
7700
7701 static void
7702 print_mention_catch_vfork (struct breakpoint *b)
7703 {
7704   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7705 }
7706
7707 /* Implement the "print_recreate" breakpoint_ops method for vfork
7708    catchpoints.  */
7709
7710 static void
7711 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7712 {
7713   fprintf_unfiltered (fp, "catch vfork");
7714   print_recreate_thread (b, fp);
7715 }
7716
7717 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7718
7719 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7720
7721 /* An instance of this type is used to represent an solib catchpoint.
7722    It includes a "struct breakpoint" as a kind of base class; users
7723    downcast to "struct breakpoint *" when needed.  A breakpoint is
7724    really of this type iff its ops pointer points to
7725    CATCH_SOLIB_BREAKPOINT_OPS.  */
7726
7727 struct solib_catchpoint
7728 {
7729   /* The base class.  */
7730   struct breakpoint base;
7731
7732   /* True for "catch load", false for "catch unload".  */
7733   unsigned char is_load;
7734
7735   /* Regular expression to match, if any.  COMPILED is only valid when
7736      REGEX is non-NULL.  */
7737   char *regex;
7738   regex_t compiled;
7739 };
7740
7741 static void
7742 dtor_catch_solib (struct breakpoint *b)
7743 {
7744   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7745
7746   if (self->regex)
7747     regfree (&self->compiled);
7748   xfree (self->regex);
7749
7750   base_breakpoint_ops.dtor (b);
7751 }
7752
7753 static int
7754 insert_catch_solib (struct bp_location *ignore)
7755 {
7756   return 0;
7757 }
7758
7759 static int
7760 remove_catch_solib (struct bp_location *ignore)
7761 {
7762   return 0;
7763 }
7764
7765 static int
7766 breakpoint_hit_catch_solib (const struct bp_location *bl,
7767                             struct address_space *aspace,
7768                             CORE_ADDR bp_addr,
7769                             const struct target_waitstatus *ws)
7770 {
7771   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7772   struct breakpoint *other;
7773
7774   if (ws->kind == TARGET_WAITKIND_LOADED)
7775     return 1;
7776
7777   ALL_BREAKPOINTS (other)
7778   {
7779     struct bp_location *other_bl;
7780
7781     if (other == bl->owner)
7782       continue;
7783
7784     if (other->type != bp_shlib_event)
7785       continue;
7786
7787     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7788       continue;
7789
7790     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7791       {
7792         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7793           return 1;
7794       }
7795   }
7796
7797   return 0;
7798 }
7799
7800 static void
7801 check_status_catch_solib (struct bpstats *bs)
7802 {
7803   struct solib_catchpoint *self
7804     = (struct solib_catchpoint *) bs->breakpoint_at;
7805   int ix;
7806
7807   if (self->is_load)
7808     {
7809       struct so_list *iter;
7810
7811       for (ix = 0;
7812            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7813                         ix, iter);
7814            ++ix)
7815         {
7816           if (!self->regex
7817               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7818             return;
7819         }
7820     }
7821   else
7822     {
7823       char *iter;
7824
7825       for (ix = 0;
7826            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7827                         ix, iter);
7828            ++ix)
7829         {
7830           if (!self->regex
7831               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7832             return;
7833         }
7834     }
7835
7836   bs->stop = 0;
7837   bs->print_it = print_it_noop;
7838 }
7839
7840 static enum print_stop_action
7841 print_it_catch_solib (bpstat bs)
7842 {
7843   struct breakpoint *b = bs->breakpoint_at;
7844   struct ui_out *uiout = current_uiout;
7845
7846   annotate_catchpoint (b->number);
7847   if (b->disposition == disp_del)
7848     ui_out_text (uiout, "\nTemporary catchpoint ");
7849   else
7850     ui_out_text (uiout, "\nCatchpoint ");
7851   ui_out_field_int (uiout, "bkptno", b->number);
7852   ui_out_text (uiout, "\n");
7853   if (ui_out_is_mi_like_p (uiout))
7854     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7855   print_solib_event (1);
7856   return PRINT_SRC_AND_LOC;
7857 }
7858
7859 static void
7860 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7861 {
7862   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7863   struct value_print_options opts;
7864   struct ui_out *uiout = current_uiout;
7865   char *msg;
7866
7867   get_user_print_options (&opts);
7868   /* Field 4, the address, is omitted (which makes the columns not
7869      line up too nicely with the headers, but the effect is relatively
7870      readable).  */
7871   if (opts.addressprint)
7872     {
7873       annotate_field (4);
7874       ui_out_field_skip (uiout, "addr");
7875     }
7876
7877   annotate_field (5);
7878   if (self->is_load)
7879     {
7880       if (self->regex)
7881         msg = xstrprintf (_("load of library matching %s"), self->regex);
7882       else
7883         msg = xstrdup (_("load of library"));
7884     }
7885   else
7886     {
7887       if (self->regex)
7888         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7889       else
7890         msg = xstrdup (_("unload of library"));
7891     }
7892   ui_out_field_string (uiout, "what", msg);
7893   xfree (msg);
7894
7895   if (ui_out_is_mi_like_p (uiout))
7896     ui_out_field_string (uiout, "catch-type",
7897                          self->is_load ? "load" : "unload");
7898 }
7899
7900 static void
7901 print_mention_catch_solib (struct breakpoint *b)
7902 {
7903   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7904
7905   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7906                    self->is_load ? "load" : "unload");
7907 }
7908
7909 static void
7910 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7911 {
7912   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7913
7914   fprintf_unfiltered (fp, "%s %s",
7915                       b->disposition == disp_del ? "tcatch" : "catch",
7916                       self->is_load ? "load" : "unload");
7917   if (self->regex)
7918     fprintf_unfiltered (fp, " %s", self->regex);
7919   fprintf_unfiltered (fp, "\n");
7920 }
7921
7922 static struct breakpoint_ops catch_solib_breakpoint_ops;
7923
7924 /* Shared helper function (MI and CLI) for creating and installing
7925    a shared object event catchpoint.  If IS_LOAD is non-zero then
7926    the events to be caught are load events, otherwise they are
7927    unload events.  If IS_TEMP is non-zero the catchpoint is a
7928    temporary one.  If ENABLED is non-zero the catchpoint is
7929    created in an enabled state.  */
7930
7931 void
7932 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7933 {
7934   struct solib_catchpoint *c;
7935   struct gdbarch *gdbarch = get_current_arch ();
7936   struct cleanup *cleanup;
7937
7938   if (!arg)
7939     arg = "";
7940   arg = skip_spaces (arg);
7941
7942   c = XCNEW (struct solib_catchpoint);
7943   cleanup = make_cleanup (xfree, c);
7944
7945   if (*arg != '\0')
7946     {
7947       int errcode;
7948
7949       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7950       if (errcode != 0)
7951         {
7952           char *err = get_regcomp_error (errcode, &c->compiled);
7953
7954           make_cleanup (xfree, err);
7955           error (_("Invalid regexp (%s): %s"), err, arg);
7956         }
7957       c->regex = xstrdup (arg);
7958     }
7959
7960   c->is_load = is_load;
7961   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7962                    &catch_solib_breakpoint_ops);
7963
7964   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7965
7966   discard_cleanups (cleanup);
7967   install_breakpoint (0, &c->base, 1);
7968 }
7969
7970 /* A helper function that does all the work for "catch load" and
7971    "catch unload".  */
7972
7973 static void
7974 catch_load_or_unload (char *arg, int from_tty, int is_load,
7975                       struct cmd_list_element *command)
7976 {
7977   int tempflag;
7978   const int enabled = 1;
7979
7980   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7981
7982   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7983 }
7984
7985 static void
7986 catch_load_command_1 (char *arg, int from_tty,
7987                       struct cmd_list_element *command)
7988 {
7989   catch_load_or_unload (arg, from_tty, 1, command);
7990 }
7991
7992 static void
7993 catch_unload_command_1 (char *arg, int from_tty,
7994                         struct cmd_list_element *command)
7995 {
7996   catch_load_or_unload (arg, from_tty, 0, command);
7997 }
7998
7999 /* An instance of this type is used to represent a syscall catchpoint.
8000    It includes a "struct breakpoint" as a kind of base class; users
8001    downcast to "struct breakpoint *" when needed.  A breakpoint is
8002    really of this type iff its ops pointer points to
8003    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8004
8005 struct syscall_catchpoint
8006 {
8007   /* The base class.  */
8008   struct breakpoint base;
8009
8010   /* Syscall numbers used for the 'catch syscall' feature.  If no
8011      syscall has been specified for filtering, its value is NULL.
8012      Otherwise, it holds a list of all syscalls to be caught.  The
8013      list elements are allocated with xmalloc.  */
8014   VEC(int) *syscalls_to_be_caught;
8015 };
8016
8017 /* Implement the "dtor" breakpoint_ops method for syscall
8018    catchpoints.  */
8019
8020 static void
8021 dtor_catch_syscall (struct breakpoint *b)
8022 {
8023   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8024
8025   VEC_free (int, c->syscalls_to_be_caught);
8026
8027   base_breakpoint_ops.dtor (b);
8028 }
8029
8030 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8031
8032 struct catch_syscall_inferior_data
8033 {
8034   /* We keep a count of the number of times the user has requested a
8035      particular syscall to be tracked, and pass this information to the
8036      target.  This lets capable targets implement filtering directly.  */
8037
8038   /* Number of times that "any" syscall is requested.  */
8039   int any_syscall_count;
8040
8041   /* Count of each system call.  */
8042   VEC(int) *syscalls_counts;
8043
8044   /* This counts all syscall catch requests, so we can readily determine
8045      if any catching is necessary.  */
8046   int total_syscalls_count;
8047 };
8048
8049 static struct catch_syscall_inferior_data*
8050 get_catch_syscall_inferior_data (struct inferior *inf)
8051 {
8052   struct catch_syscall_inferior_data *inf_data;
8053
8054   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8055   if (inf_data == NULL)
8056     {
8057       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8058       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8059     }
8060
8061   return inf_data;
8062 }
8063
8064 static void
8065 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8066 {
8067   xfree (arg);
8068 }
8069
8070
8071 /* Implement the "insert" breakpoint_ops method for syscall
8072    catchpoints.  */
8073
8074 static int
8075 insert_catch_syscall (struct bp_location *bl)
8076 {
8077   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8078   struct inferior *inf = current_inferior ();
8079   struct catch_syscall_inferior_data *inf_data
8080     = get_catch_syscall_inferior_data (inf);
8081
8082   ++inf_data->total_syscalls_count;
8083   if (!c->syscalls_to_be_caught)
8084     ++inf_data->any_syscall_count;
8085   else
8086     {
8087       int i, iter;
8088
8089       for (i = 0;
8090            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8091            i++)
8092         {
8093           int elem;
8094
8095           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8096             {
8097               int old_size = VEC_length (int, inf_data->syscalls_counts);
8098               uintptr_t vec_addr_offset
8099                 = old_size * ((uintptr_t) sizeof (int));
8100               uintptr_t vec_addr;
8101               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8102               vec_addr = ((uintptr_t) VEC_address (int,
8103                                                   inf_data->syscalls_counts)
8104                           + vec_addr_offset);
8105               memset ((void *) vec_addr, 0,
8106                       (iter + 1 - old_size) * sizeof (int));
8107             }
8108           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8109           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8110         }
8111     }
8112
8113   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8114                                         inf_data->total_syscalls_count != 0,
8115                                         inf_data->any_syscall_count,
8116                                         VEC_length (int,
8117                                                     inf_data->syscalls_counts),
8118                                         VEC_address (int,
8119                                                      inf_data->syscalls_counts));
8120 }
8121
8122 /* Implement the "remove" breakpoint_ops method for syscall
8123    catchpoints.  */
8124
8125 static int
8126 remove_catch_syscall (struct bp_location *bl)
8127 {
8128   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8129   struct inferior *inf = current_inferior ();
8130   struct catch_syscall_inferior_data *inf_data
8131     = get_catch_syscall_inferior_data (inf);
8132
8133   --inf_data->total_syscalls_count;
8134   if (!c->syscalls_to_be_caught)
8135     --inf_data->any_syscall_count;
8136   else
8137     {
8138       int i, iter;
8139
8140       for (i = 0;
8141            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8142            i++)
8143         {
8144           int elem;
8145           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8146             /* Shouldn't happen.  */
8147             continue;
8148           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8149           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8150         }
8151     }
8152
8153   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8154                                         inf_data->total_syscalls_count != 0,
8155                                         inf_data->any_syscall_count,
8156                                         VEC_length (int,
8157                                                     inf_data->syscalls_counts),
8158                                         VEC_address (int,
8159                                                      inf_data->syscalls_counts));
8160 }
8161
8162 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8163    catchpoints.  */
8164
8165 static int
8166 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8167                               struct address_space *aspace, CORE_ADDR bp_addr,
8168                               const struct target_waitstatus *ws)
8169 {
8170   /* We must check if we are catching specific syscalls in this
8171      breakpoint.  If we are, then we must guarantee that the called
8172      syscall is the same syscall we are catching.  */
8173   int syscall_number = 0;
8174   const struct syscall_catchpoint *c
8175     = (const struct syscall_catchpoint *) bl->owner;
8176
8177   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8178       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8179     return 0;
8180
8181   syscall_number = ws->value.syscall_number;
8182
8183   /* Now, checking if the syscall is the same.  */
8184   if (c->syscalls_to_be_caught)
8185     {
8186       int i, iter;
8187
8188       for (i = 0;
8189            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8190            i++)
8191         if (syscall_number == iter)
8192           break;
8193       /* Not the same.  */
8194       if (!iter)
8195         return 0;
8196     }
8197
8198   return 1;
8199 }
8200
8201 /* Implement the "print_it" breakpoint_ops method for syscall
8202    catchpoints.  */
8203
8204 static enum print_stop_action
8205 print_it_catch_syscall (bpstat bs)
8206 {
8207   struct ui_out *uiout = current_uiout;
8208   struct breakpoint *b = bs->breakpoint_at;
8209   /* These are needed because we want to know in which state a
8210      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8211      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8212      must print "called syscall" or "returned from syscall".  */
8213   ptid_t ptid;
8214   struct target_waitstatus last;
8215   struct syscall s;
8216
8217   get_last_target_status (&ptid, &last);
8218
8219   get_syscall_by_number (last.value.syscall_number, &s);
8220
8221   annotate_catchpoint (b->number);
8222
8223   if (b->disposition == disp_del)
8224     ui_out_text (uiout, "\nTemporary catchpoint ");
8225   else
8226     ui_out_text (uiout, "\nCatchpoint ");
8227   if (ui_out_is_mi_like_p (uiout))
8228     {
8229       ui_out_field_string (uiout, "reason",
8230                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8231                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8232                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8233       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8234     }
8235   ui_out_field_int (uiout, "bkptno", b->number);
8236
8237   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8238     ui_out_text (uiout, " (call to syscall ");
8239   else
8240     ui_out_text (uiout, " (returned from syscall ");
8241
8242   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8243     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8244   if (s.name != NULL)
8245     ui_out_field_string (uiout, "syscall-name", s.name);
8246
8247   ui_out_text (uiout, "), ");
8248
8249   return PRINT_SRC_AND_LOC;
8250 }
8251
8252 /* Implement the "print_one" breakpoint_ops method for syscall
8253    catchpoints.  */
8254
8255 static void
8256 print_one_catch_syscall (struct breakpoint *b,
8257                          struct bp_location **last_loc)
8258 {
8259   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8260   struct value_print_options opts;
8261   struct ui_out *uiout = current_uiout;
8262
8263   get_user_print_options (&opts);
8264   /* Field 4, the address, is omitted (which makes the columns not
8265      line up too nicely with the headers, but the effect is relatively
8266      readable).  */
8267   if (opts.addressprint)
8268     ui_out_field_skip (uiout, "addr");
8269   annotate_field (5);
8270
8271   if (c->syscalls_to_be_caught
8272       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8273     ui_out_text (uiout, "syscalls \"");
8274   else
8275     ui_out_text (uiout, "syscall \"");
8276
8277   if (c->syscalls_to_be_caught)
8278     {
8279       int i, iter;
8280       char *text = xstrprintf ("%s", "");
8281
8282       for (i = 0;
8283            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8284            i++)
8285         {
8286           char *x = text;
8287           struct syscall s;
8288           get_syscall_by_number (iter, &s);
8289
8290           if (s.name != NULL)
8291             text = xstrprintf ("%s%s, ", text, s.name);
8292           else
8293             text = xstrprintf ("%s%d, ", text, iter);
8294
8295           /* We have to xfree the last 'text' (now stored at 'x')
8296              because xstrprintf dynamically allocates new space for it
8297              on every call.  */
8298           xfree (x);
8299         }
8300       /* Remove the last comma.  */
8301       text[strlen (text) - 2] = '\0';
8302       ui_out_field_string (uiout, "what", text);
8303     }
8304   else
8305     ui_out_field_string (uiout, "what", "<any syscall>");
8306   ui_out_text (uiout, "\" ");
8307
8308   if (ui_out_is_mi_like_p (uiout))
8309     ui_out_field_string (uiout, "catch-type", "syscall");
8310 }
8311
8312 /* Implement the "print_mention" breakpoint_ops method for syscall
8313    catchpoints.  */
8314
8315 static void
8316 print_mention_catch_syscall (struct breakpoint *b)
8317 {
8318   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8319
8320   if (c->syscalls_to_be_caught)
8321     {
8322       int i, iter;
8323
8324       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8325         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8326       else
8327         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8328
8329       for (i = 0;
8330            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8331            i++)
8332         {
8333           struct syscall s;
8334           get_syscall_by_number (iter, &s);
8335
8336           if (s.name)
8337             printf_filtered (" '%s' [%d]", s.name, s.number);
8338           else
8339             printf_filtered (" %d", s.number);
8340         }
8341       printf_filtered (")");
8342     }
8343   else
8344     printf_filtered (_("Catchpoint %d (any syscall)"),
8345                      b->number);
8346 }
8347
8348 /* Implement the "print_recreate" breakpoint_ops method for syscall
8349    catchpoints.  */
8350
8351 static void
8352 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8353 {
8354   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8355
8356   fprintf_unfiltered (fp, "catch syscall");
8357
8358   if (c->syscalls_to_be_caught)
8359     {
8360       int i, iter;
8361
8362       for (i = 0;
8363            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8364            i++)
8365         {
8366           struct syscall s;
8367
8368           get_syscall_by_number (iter, &s);
8369           if (s.name)
8370             fprintf_unfiltered (fp, " %s", s.name);
8371           else
8372             fprintf_unfiltered (fp, " %d", s.number);
8373         }
8374     }
8375   print_recreate_thread (b, fp);
8376 }
8377
8378 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8379
8380 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8381
8382 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8383
8384 static int
8385 syscall_catchpoint_p (struct breakpoint *b)
8386 {
8387   return (b->ops == &catch_syscall_breakpoint_ops);
8388 }
8389
8390 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8391    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8392    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8393    the breakpoint_ops structure associated to the catchpoint.  */
8394
8395 void
8396 init_catchpoint (struct breakpoint *b,
8397                  struct gdbarch *gdbarch, int tempflag,
8398                  char *cond_string,
8399                  const struct breakpoint_ops *ops)
8400 {
8401   struct symtab_and_line sal;
8402
8403   init_sal (&sal);
8404   sal.pspace = current_program_space;
8405
8406   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8407
8408   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8409   b->disposition = tempflag ? disp_del : disp_donttouch;
8410 }
8411
8412 void
8413 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8414 {
8415   add_to_breakpoint_chain (b);
8416   set_breakpoint_number (internal, b);
8417   if (is_tracepoint (b))
8418     set_tracepoint_count (breakpoint_count);
8419   if (!internal)
8420     mention (b);
8421   observer_notify_breakpoint_created (b);
8422
8423   if (update_gll)
8424     update_global_location_list (1);
8425 }
8426
8427 static void
8428 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8429                                     int tempflag, char *cond_string,
8430                                     const struct breakpoint_ops *ops)
8431 {
8432   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8433
8434   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8435
8436   c->forked_inferior_pid = null_ptid;
8437
8438   install_breakpoint (0, &c->base, 1);
8439 }
8440
8441 /* Exec catchpoints.  */
8442
8443 /* An instance of this type is used to represent an exec catchpoint.
8444    It includes a "struct breakpoint" as a kind of base class; users
8445    downcast to "struct breakpoint *" when needed.  A breakpoint is
8446    really of this type iff its ops pointer points to
8447    CATCH_EXEC_BREAKPOINT_OPS.  */
8448
8449 struct exec_catchpoint
8450 {
8451   /* The base class.  */
8452   struct breakpoint base;
8453
8454   /* Filename of a program whose exec triggered this catchpoint.
8455      This field is only valid immediately after this catchpoint has
8456      triggered.  */
8457   char *exec_pathname;
8458 };
8459
8460 /* Implement the "dtor" breakpoint_ops method for exec
8461    catchpoints.  */
8462
8463 static void
8464 dtor_catch_exec (struct breakpoint *b)
8465 {
8466   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8467
8468   xfree (c->exec_pathname);
8469
8470   base_breakpoint_ops.dtor (b);
8471 }
8472
8473 static int
8474 insert_catch_exec (struct bp_location *bl)
8475 {
8476   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8477 }
8478
8479 static int
8480 remove_catch_exec (struct bp_location *bl)
8481 {
8482   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8483 }
8484
8485 static int
8486 breakpoint_hit_catch_exec (const struct bp_location *bl,
8487                            struct address_space *aspace, CORE_ADDR bp_addr,
8488                            const struct target_waitstatus *ws)
8489 {
8490   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8491
8492   if (ws->kind != TARGET_WAITKIND_EXECD)
8493     return 0;
8494
8495   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8496   return 1;
8497 }
8498
8499 static enum print_stop_action
8500 print_it_catch_exec (bpstat bs)
8501 {
8502   struct ui_out *uiout = current_uiout;
8503   struct breakpoint *b = bs->breakpoint_at;
8504   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8505
8506   annotate_catchpoint (b->number);
8507   if (b->disposition == disp_del)
8508     ui_out_text (uiout, "\nTemporary catchpoint ");
8509   else
8510     ui_out_text (uiout, "\nCatchpoint ");
8511   if (ui_out_is_mi_like_p (uiout))
8512     {
8513       ui_out_field_string (uiout, "reason",
8514                            async_reason_lookup (EXEC_ASYNC_EXEC));
8515       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8516     }
8517   ui_out_field_int (uiout, "bkptno", b->number);
8518   ui_out_text (uiout, " (exec'd ");
8519   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8520   ui_out_text (uiout, "), ");
8521
8522   return PRINT_SRC_AND_LOC;
8523 }
8524
8525 static void
8526 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8527 {
8528   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8529   struct value_print_options opts;
8530   struct ui_out *uiout = current_uiout;
8531
8532   get_user_print_options (&opts);
8533
8534   /* Field 4, the address, is omitted (which makes the columns
8535      not line up too nicely with the headers, but the effect
8536      is relatively readable).  */
8537   if (opts.addressprint)
8538     ui_out_field_skip (uiout, "addr");
8539   annotate_field (5);
8540   ui_out_text (uiout, "exec");
8541   if (c->exec_pathname != NULL)
8542     {
8543       ui_out_text (uiout, ", program \"");
8544       ui_out_field_string (uiout, "what", c->exec_pathname);
8545       ui_out_text (uiout, "\" ");
8546     }
8547
8548   if (ui_out_is_mi_like_p (uiout))
8549     ui_out_field_string (uiout, "catch-type", "exec");
8550 }
8551
8552 static void
8553 print_mention_catch_exec (struct breakpoint *b)
8554 {
8555   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8556 }
8557
8558 /* Implement the "print_recreate" breakpoint_ops method for exec
8559    catchpoints.  */
8560
8561 static void
8562 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8563 {
8564   fprintf_unfiltered (fp, "catch exec");
8565   print_recreate_thread (b, fp);
8566 }
8567
8568 static struct breakpoint_ops catch_exec_breakpoint_ops;
8569
8570 static void
8571 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8572                                  const struct breakpoint_ops *ops)
8573 {
8574   struct syscall_catchpoint *c;
8575   struct gdbarch *gdbarch = get_current_arch ();
8576
8577   c = XNEW (struct syscall_catchpoint);
8578   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8579   c->syscalls_to_be_caught = filter;
8580
8581   install_breakpoint (0, &c->base, 1);
8582 }
8583
8584 static int
8585 hw_breakpoint_used_count (void)
8586 {
8587   int i = 0;
8588   struct breakpoint *b;
8589   struct bp_location *bl;
8590
8591   ALL_BREAKPOINTS (b)
8592   {
8593     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8594       for (bl = b->loc; bl; bl = bl->next)
8595         {
8596           /* Special types of hardware breakpoints may use more than
8597              one register.  */
8598           i += b->ops->resources_needed (bl);
8599         }
8600   }
8601
8602   return i;
8603 }
8604
8605 /* Returns the resources B would use if it were a hardware
8606    watchpoint.  */
8607
8608 static int
8609 hw_watchpoint_use_count (struct breakpoint *b)
8610 {
8611   int i = 0;
8612   struct bp_location *bl;
8613
8614   if (!breakpoint_enabled (b))
8615     return 0;
8616
8617   for (bl = b->loc; bl; bl = bl->next)
8618     {
8619       /* Special types of hardware watchpoints may use more than
8620          one register.  */
8621       i += b->ops->resources_needed (bl);
8622     }
8623
8624   return i;
8625 }
8626
8627 /* Returns the sum the used resources of all hardware watchpoints of
8628    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8629    the sum of the used resources of all hardware watchpoints of other
8630    types _not_ TYPE.  */
8631
8632 static int
8633 hw_watchpoint_used_count_others (struct breakpoint *except,
8634                                  enum bptype type, int *other_type_used)
8635 {
8636   int i = 0;
8637   struct breakpoint *b;
8638
8639   *other_type_used = 0;
8640   ALL_BREAKPOINTS (b)
8641     {
8642       if (b == except)
8643         continue;
8644       if (!breakpoint_enabled (b))
8645         continue;
8646
8647       if (b->type == type)
8648         i += hw_watchpoint_use_count (b);
8649       else if (is_hardware_watchpoint (b))
8650         *other_type_used = 1;
8651     }
8652
8653   return i;
8654 }
8655
8656 void
8657 disable_watchpoints_before_interactive_call_start (void)
8658 {
8659   struct breakpoint *b;
8660
8661   ALL_BREAKPOINTS (b)
8662   {
8663     if (is_watchpoint (b) && breakpoint_enabled (b))
8664       {
8665         b->enable_state = bp_call_disabled;
8666         update_global_location_list (0);
8667       }
8668   }
8669 }
8670
8671 void
8672 enable_watchpoints_after_interactive_call_stop (void)
8673 {
8674   struct breakpoint *b;
8675
8676   ALL_BREAKPOINTS (b)
8677   {
8678     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8679       {
8680         b->enable_state = bp_enabled;
8681         update_global_location_list (1);
8682       }
8683   }
8684 }
8685
8686 void
8687 disable_breakpoints_before_startup (void)
8688 {
8689   current_program_space->executing_startup = 1;
8690   update_global_location_list (0);
8691 }
8692
8693 void
8694 enable_breakpoints_after_startup (void)
8695 {
8696   current_program_space->executing_startup = 0;
8697   breakpoint_re_set ();
8698 }
8699
8700
8701 /* Set a breakpoint that will evaporate an end of command
8702    at address specified by SAL.
8703    Restrict it to frame FRAME if FRAME is nonzero.  */
8704
8705 struct breakpoint *
8706 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8707                           struct frame_id frame_id, enum bptype type)
8708 {
8709   struct breakpoint *b;
8710
8711   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8712      tail-called one.  */
8713   gdb_assert (!frame_id_artificial_p (frame_id));
8714
8715   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8716   b->enable_state = bp_enabled;
8717   b->disposition = disp_donttouch;
8718   b->frame_id = frame_id;
8719
8720   /* If we're debugging a multi-threaded program, then we want
8721      momentary breakpoints to be active in only a single thread of
8722      control.  */
8723   if (in_thread_list (inferior_ptid))
8724     b->thread = pid_to_thread_id (inferior_ptid);
8725
8726   update_global_location_list_nothrow (1);
8727
8728   return b;
8729 }
8730
8731 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8732    The new breakpoint will have type TYPE, and use OPS as it
8733    breakpoint_ops.  */
8734
8735 static struct breakpoint *
8736 momentary_breakpoint_from_master (struct breakpoint *orig,
8737                                   enum bptype type,
8738                                   const struct breakpoint_ops *ops)
8739 {
8740   struct breakpoint *copy;
8741
8742   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8743   copy->loc = allocate_bp_location (copy);
8744   set_breakpoint_location_function (copy->loc, 1);
8745
8746   copy->loc->gdbarch = orig->loc->gdbarch;
8747   copy->loc->requested_address = orig->loc->requested_address;
8748   copy->loc->address = orig->loc->address;
8749   copy->loc->section = orig->loc->section;
8750   copy->loc->pspace = orig->loc->pspace;
8751   copy->loc->probe = orig->loc->probe;
8752   copy->loc->line_number = orig->loc->line_number;
8753   copy->loc->symtab = orig->loc->symtab;
8754   copy->frame_id = orig->frame_id;
8755   copy->thread = orig->thread;
8756   copy->pspace = orig->pspace;
8757
8758   copy->enable_state = bp_enabled;
8759   copy->disposition = disp_donttouch;
8760   copy->number = internal_breakpoint_number--;
8761
8762   update_global_location_list_nothrow (0);
8763   return copy;
8764 }
8765
8766 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8767    ORIG is NULL.  */
8768
8769 struct breakpoint *
8770 clone_momentary_breakpoint (struct breakpoint *orig)
8771 {
8772   /* If there's nothing to clone, then return nothing.  */
8773   if (orig == NULL)
8774     return NULL;
8775
8776   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8777 }
8778
8779 struct breakpoint *
8780 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8781                                 enum bptype type)
8782 {
8783   struct symtab_and_line sal;
8784
8785   sal = find_pc_line (pc, 0);
8786   sal.pc = pc;
8787   sal.section = find_pc_overlay (pc);
8788   sal.explicit_pc = 1;
8789
8790   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8791 }
8792 \f
8793
8794 /* Tell the user we have just set a breakpoint B.  */
8795
8796 static void
8797 mention (struct breakpoint *b)
8798 {
8799   b->ops->print_mention (b);
8800   if (ui_out_is_mi_like_p (current_uiout))
8801     return;
8802   printf_filtered ("\n");
8803 }
8804 \f
8805
8806 static struct bp_location *
8807 add_location_to_breakpoint (struct breakpoint *b,
8808                             const struct symtab_and_line *sal)
8809 {
8810   struct bp_location *loc, **tmp;
8811   CORE_ADDR adjusted_address;
8812   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8813
8814   if (loc_gdbarch == NULL)
8815     loc_gdbarch = b->gdbarch;
8816
8817   /* Adjust the breakpoint's address prior to allocating a location.
8818      Once we call allocate_bp_location(), that mostly uninitialized
8819      location will be placed on the location chain.  Adjustment of the
8820      breakpoint may cause target_read_memory() to be called and we do
8821      not want its scan of the location chain to find a breakpoint and
8822      location that's only been partially initialized.  */
8823   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8824                                                 sal->pc, b->type);
8825
8826   /* Sort the locations by their ADDRESS.  */
8827   loc = allocate_bp_location (b);
8828   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8829        tmp = &((*tmp)->next))
8830     ;
8831   loc->next = *tmp;
8832   *tmp = loc;
8833
8834   loc->requested_address = sal->pc;
8835   loc->address = adjusted_address;
8836   loc->pspace = sal->pspace;
8837   loc->probe = sal->probe;
8838   gdb_assert (loc->pspace != NULL);
8839   loc->section = sal->section;
8840   loc->gdbarch = loc_gdbarch;
8841   loc->line_number = sal->line;
8842   loc->symtab = sal->symtab;
8843
8844   set_breakpoint_location_function (loc,
8845                                     sal->explicit_pc || sal->explicit_line);
8846   return loc;
8847 }
8848 \f
8849
8850 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8851    return 0 otherwise.  */
8852
8853 static int
8854 bp_loc_is_permanent (struct bp_location *loc)
8855 {
8856   int len;
8857   CORE_ADDR addr;
8858   const gdb_byte *bpoint;
8859   gdb_byte *target_mem;
8860   struct cleanup *cleanup;
8861   int retval = 0;
8862
8863   gdb_assert (loc != NULL);
8864
8865   addr = loc->address;
8866   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8867
8868   /* Software breakpoints unsupported?  */
8869   if (bpoint == NULL)
8870     return 0;
8871
8872   target_mem = alloca (len);
8873
8874   /* Enable the automatic memory restoration from breakpoints while
8875      we read the memory.  Otherwise we could say about our temporary
8876      breakpoints they are permanent.  */
8877   cleanup = save_current_space_and_thread ();
8878
8879   switch_to_program_space_and_thread (loc->pspace);
8880   make_show_memory_breakpoints_cleanup (0);
8881
8882   if (target_read_memory (loc->address, target_mem, len) == 0
8883       && memcmp (target_mem, bpoint, len) == 0)
8884     retval = 1;
8885
8886   do_cleanups (cleanup);
8887
8888   return retval;
8889 }
8890
8891 /* Build a command list for the dprintf corresponding to the current
8892    settings of the dprintf style options.  */
8893
8894 static void
8895 update_dprintf_command_list (struct breakpoint *b)
8896 {
8897   char *dprintf_args = b->extra_string;
8898   char *printf_line = NULL;
8899
8900   if (!dprintf_args)
8901     return;
8902
8903   dprintf_args = skip_spaces (dprintf_args);
8904
8905   /* Allow a comma, as it may have terminated a location, but don't
8906      insist on it.  */
8907   if (*dprintf_args == ',')
8908     ++dprintf_args;
8909   dprintf_args = skip_spaces (dprintf_args);
8910
8911   if (*dprintf_args != '"')
8912     error (_("Bad format string, missing '\"'."));
8913
8914   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8915     printf_line = xstrprintf ("printf %s", dprintf_args);
8916   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8917     {
8918       if (!dprintf_function)
8919         error (_("No function supplied for dprintf call"));
8920
8921       if (dprintf_channel && strlen (dprintf_channel) > 0)
8922         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8923                                   dprintf_function,
8924                                   dprintf_channel,
8925                                   dprintf_args);
8926       else
8927         printf_line = xstrprintf ("call (void) %s (%s)",
8928                                   dprintf_function,
8929                                   dprintf_args);
8930     }
8931   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8932     {
8933       if (target_can_run_breakpoint_commands ())
8934         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8935       else
8936         {
8937           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8938           printf_line = xstrprintf ("printf %s", dprintf_args);
8939         }
8940     }
8941   else
8942     internal_error (__FILE__, __LINE__,
8943                     _("Invalid dprintf style."));
8944
8945   gdb_assert (printf_line != NULL);
8946   /* Manufacture a printf sequence.  */
8947   {
8948     struct command_line *printf_cmd_line
8949       = xmalloc (sizeof (struct command_line));
8950
8951     printf_cmd_line = xmalloc (sizeof (struct command_line));
8952     printf_cmd_line->control_type = simple_control;
8953     printf_cmd_line->body_count = 0;
8954     printf_cmd_line->body_list = NULL;
8955     printf_cmd_line->next = NULL;
8956     printf_cmd_line->line = printf_line;
8957
8958     breakpoint_set_commands (b, printf_cmd_line);
8959   }
8960 }
8961
8962 /* Update all dprintf commands, making their command lists reflect
8963    current style settings.  */
8964
8965 static void
8966 update_dprintf_commands (char *args, int from_tty,
8967                          struct cmd_list_element *c)
8968 {
8969   struct breakpoint *b;
8970
8971   ALL_BREAKPOINTS (b)
8972     {
8973       if (b->type == bp_dprintf)
8974         update_dprintf_command_list (b);
8975     }
8976 }
8977
8978 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8979    as textual description of the location, and COND_STRING
8980    as condition expression.  */
8981
8982 static void
8983 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8984                      struct symtabs_and_lines sals, char *addr_string,
8985                      char *filter, char *cond_string,
8986                      char *extra_string,
8987                      enum bptype type, enum bpdisp disposition,
8988                      int thread, int task, int ignore_count,
8989                      const struct breakpoint_ops *ops, int from_tty,
8990                      int enabled, int internal, unsigned flags,
8991                      int display_canonical)
8992 {
8993   int i;
8994
8995   if (type == bp_hardware_breakpoint)
8996     {
8997       int target_resources_ok;
8998
8999       i = hw_breakpoint_used_count ();
9000       target_resources_ok =
9001         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9002                                             i + 1, 0);
9003       if (target_resources_ok == 0)
9004         error (_("No hardware breakpoint support in the target."));
9005       else if (target_resources_ok < 0)
9006         error (_("Hardware breakpoints used exceeds limit."));
9007     }
9008
9009   gdb_assert (sals.nelts > 0);
9010
9011   for (i = 0; i < sals.nelts; ++i)
9012     {
9013       struct symtab_and_line sal = sals.sals[i];
9014       struct bp_location *loc;
9015
9016       if (from_tty)
9017         {
9018           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9019           if (!loc_gdbarch)
9020             loc_gdbarch = gdbarch;
9021
9022           describe_other_breakpoints (loc_gdbarch,
9023                                       sal.pspace, sal.pc, sal.section, thread);
9024         }
9025
9026       if (i == 0)
9027         {
9028           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9029           b->thread = thread;
9030           b->task = task;
9031
9032           b->cond_string = cond_string;
9033           b->extra_string = extra_string;
9034           b->ignore_count = ignore_count;
9035           b->enable_state = enabled ? bp_enabled : bp_disabled;
9036           b->disposition = disposition;
9037
9038           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9039             b->loc->inserted = 1;
9040
9041           if (type == bp_static_tracepoint)
9042             {
9043               struct tracepoint *t = (struct tracepoint *) b;
9044               struct static_tracepoint_marker marker;
9045
9046               if (strace_marker_p (b))
9047                 {
9048                   /* We already know the marker exists, otherwise, we
9049                      wouldn't see a sal for it.  */
9050                   char *p = &addr_string[3];
9051                   char *endp;
9052                   char *marker_str;
9053
9054                   p = skip_spaces (p);
9055
9056                   endp = skip_to_space (p);
9057
9058                   marker_str = savestring (p, endp - p);
9059                   t->static_trace_marker_id = marker_str;
9060
9061                   printf_filtered (_("Probed static tracepoint "
9062                                      "marker \"%s\"\n"),
9063                                    t->static_trace_marker_id);
9064                 }
9065               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9066                 {
9067                   t->static_trace_marker_id = xstrdup (marker.str_id);
9068                   release_static_tracepoint_marker (&marker);
9069
9070                   printf_filtered (_("Probed static tracepoint "
9071                                      "marker \"%s\"\n"),
9072                                    t->static_trace_marker_id);
9073                 }
9074               else
9075                 warning (_("Couldn't determine the static "
9076                            "tracepoint marker to probe"));
9077             }
9078
9079           loc = b->loc;
9080         }
9081       else
9082         {
9083           loc = add_location_to_breakpoint (b, &sal);
9084           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9085             loc->inserted = 1;
9086         }
9087
9088       if (bp_loc_is_permanent (loc))
9089         make_breakpoint_permanent (b);
9090
9091       if (b->cond_string)
9092         {
9093           const char *arg = b->cond_string;
9094
9095           loc->cond = parse_exp_1 (&arg, loc->address,
9096                                    block_for_pc (loc->address), 0);
9097           if (*arg)
9098               error (_("Garbage '%s' follows condition"), arg);
9099         }
9100
9101       /* Dynamic printf requires and uses additional arguments on the
9102          command line, otherwise it's an error.  */
9103       if (type == bp_dprintf)
9104         {
9105           if (b->extra_string)
9106             update_dprintf_command_list (b);
9107           else
9108             error (_("Format string required"));
9109         }
9110       else if (b->extra_string)
9111         error (_("Garbage '%s' at end of command"), b->extra_string);
9112     }
9113
9114   b->display_canonical = display_canonical;
9115   if (addr_string)
9116     b->addr_string = addr_string;
9117   else
9118     /* addr_string has to be used or breakpoint_re_set will delete
9119        me.  */
9120     b->addr_string
9121       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9122   b->filter = filter;
9123 }
9124
9125 static void
9126 create_breakpoint_sal (struct gdbarch *gdbarch,
9127                        struct symtabs_and_lines sals, char *addr_string,
9128                        char *filter, char *cond_string,
9129                        char *extra_string,
9130                        enum bptype type, enum bpdisp disposition,
9131                        int thread, int task, int ignore_count,
9132                        const struct breakpoint_ops *ops, int from_tty,
9133                        int enabled, int internal, unsigned flags,
9134                        int display_canonical)
9135 {
9136   struct breakpoint *b;
9137   struct cleanup *old_chain;
9138
9139   if (is_tracepoint_type (type))
9140     {
9141       struct tracepoint *t;
9142
9143       t = XCNEW (struct tracepoint);
9144       b = &t->base;
9145     }
9146   else
9147     b = XNEW (struct breakpoint);
9148
9149   old_chain = make_cleanup (xfree, b);
9150
9151   init_breakpoint_sal (b, gdbarch,
9152                        sals, addr_string,
9153                        filter, cond_string, extra_string,
9154                        type, disposition,
9155                        thread, task, ignore_count,
9156                        ops, from_tty,
9157                        enabled, internal, flags,
9158                        display_canonical);
9159   discard_cleanups (old_chain);
9160
9161   install_breakpoint (internal, b, 0);
9162 }
9163
9164 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9165    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9166    value.  COND_STRING, if not NULL, specified the condition to be
9167    used for all breakpoints.  Essentially the only case where
9168    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9169    function.  In that case, it's still not possible to specify
9170    separate conditions for different overloaded functions, so
9171    we take just a single condition string.
9172    
9173    NOTE: If the function succeeds, the caller is expected to cleanup
9174    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9175    array contents).  If the function fails (error() is called), the
9176    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9177    COND and SALS arrays and each of those arrays contents.  */
9178
9179 static void
9180 create_breakpoints_sal (struct gdbarch *gdbarch,
9181                         struct linespec_result *canonical,
9182                         char *cond_string, char *extra_string,
9183                         enum bptype type, enum bpdisp disposition,
9184                         int thread, int task, int ignore_count,
9185                         const struct breakpoint_ops *ops, int from_tty,
9186                         int enabled, int internal, unsigned flags)
9187 {
9188   int i;
9189   struct linespec_sals *lsal;
9190
9191   if (canonical->pre_expanded)
9192     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9193
9194   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9195     {
9196       /* Note that 'addr_string' can be NULL in the case of a plain
9197          'break', without arguments.  */
9198       char *addr_string = (canonical->addr_string
9199                            ? xstrdup (canonical->addr_string)
9200                            : NULL);
9201       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9202       struct cleanup *inner = make_cleanup (xfree, addr_string);
9203
9204       make_cleanup (xfree, filter_string);
9205       create_breakpoint_sal (gdbarch, lsal->sals,
9206                              addr_string,
9207                              filter_string,
9208                              cond_string, extra_string,
9209                              type, disposition,
9210                              thread, task, ignore_count, ops,
9211                              from_tty, enabled, internal, flags,
9212                              canonical->special_display);
9213       discard_cleanups (inner);
9214     }
9215 }
9216
9217 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9218    followed by conditionals.  On return, SALS contains an array of SAL
9219    addresses found.  ADDR_STRING contains a vector of (canonical)
9220    address strings.  ADDRESS points to the end of the SAL.
9221
9222    The array and the line spec strings are allocated on the heap, it is
9223    the caller's responsibility to free them.  */
9224
9225 static void
9226 parse_breakpoint_sals (char **address,
9227                        struct linespec_result *canonical)
9228 {
9229   /* If no arg given, or if first arg is 'if ', use the default
9230      breakpoint.  */
9231   if ((*address) == NULL
9232       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9233     {
9234       /* The last displayed codepoint, if it's valid, is our default breakpoint
9235          address.  */
9236       if (last_displayed_sal_is_valid ())
9237         {
9238           struct linespec_sals lsal;
9239           struct symtab_and_line sal;
9240           CORE_ADDR pc;
9241
9242           init_sal (&sal);              /* Initialize to zeroes.  */
9243           lsal.sals.sals = (struct symtab_and_line *)
9244             xmalloc (sizeof (struct symtab_and_line));
9245
9246           /* Set sal's pspace, pc, symtab, and line to the values
9247              corresponding to the last call to print_frame_info.
9248              Be sure to reinitialize LINE with NOTCURRENT == 0
9249              as the breakpoint line number is inappropriate otherwise.
9250              find_pc_line would adjust PC, re-set it back.  */
9251           get_last_displayed_sal (&sal);
9252           pc = sal.pc;
9253           sal = find_pc_line (pc, 0);
9254
9255           /* "break" without arguments is equivalent to "break *PC"
9256              where PC is the last displayed codepoint's address.  So
9257              make sure to set sal.explicit_pc to prevent GDB from
9258              trying to expand the list of sals to include all other
9259              instances with the same symtab and line.  */
9260           sal.pc = pc;
9261           sal.explicit_pc = 1;
9262
9263           lsal.sals.sals[0] = sal;
9264           lsal.sals.nelts = 1;
9265           lsal.canonical = NULL;
9266
9267           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9268         }
9269       else
9270         error (_("No default breakpoint address now."));
9271     }
9272   else
9273     {
9274       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9275
9276       /* Force almost all breakpoints to be in terms of the
9277          current_source_symtab (which is decode_line_1's default).
9278          This should produce the results we want almost all of the
9279          time while leaving default_breakpoint_* alone.
9280
9281          ObjC: However, don't match an Objective-C method name which
9282          may have a '+' or '-' succeeded by a '['.  */
9283       if (last_displayed_sal_is_valid ()
9284           && (!cursal.symtab
9285               || ((strchr ("+-", (*address)[0]) != NULL)
9286                   && ((*address)[1] != '['))))
9287         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9288                           get_last_displayed_symtab (),
9289                           get_last_displayed_line (),
9290                           canonical, NULL, NULL);
9291       else
9292         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9293                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9294     }
9295 }
9296
9297
9298 /* Convert each SAL into a real PC.  Verify that the PC can be
9299    inserted as a breakpoint.  If it can't throw an error.  */
9300
9301 static void
9302 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9303 {    
9304   int i;
9305
9306   for (i = 0; i < sals->nelts; i++)
9307     resolve_sal_pc (&sals->sals[i]);
9308 }
9309
9310 /* Fast tracepoints may have restrictions on valid locations.  For
9311    instance, a fast tracepoint using a jump instead of a trap will
9312    likely have to overwrite more bytes than a trap would, and so can
9313    only be placed where the instruction is longer than the jump, or a
9314    multi-instruction sequence does not have a jump into the middle of
9315    it, etc.  */
9316
9317 static void
9318 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9319                             struct symtabs_and_lines *sals)
9320 {
9321   int i, rslt;
9322   struct symtab_and_line *sal;
9323   char *msg;
9324   struct cleanup *old_chain;
9325
9326   for (i = 0; i < sals->nelts; i++)
9327     {
9328       struct gdbarch *sarch;
9329
9330       sal = &sals->sals[i];
9331
9332       sarch = get_sal_arch (*sal);
9333       /* We fall back to GDBARCH if there is no architecture
9334          associated with SAL.  */
9335       if (sarch == NULL)
9336         sarch = gdbarch;
9337       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9338                                                NULL, &msg);
9339       old_chain = make_cleanup (xfree, msg);
9340
9341       if (!rslt)
9342         error (_("May not have a fast tracepoint at 0x%s%s"),
9343                paddress (sarch, sal->pc), (msg ? msg : ""));
9344
9345       do_cleanups (old_chain);
9346     }
9347 }
9348
9349 /* Issue an invalid thread ID error.  */
9350
9351 static void ATTRIBUTE_NORETURN
9352 invalid_thread_id_error (int id)
9353 {
9354   error (_("Unknown thread %d."), id);
9355 }
9356
9357 /* Given TOK, a string specification of condition and thread, as
9358    accepted by the 'break' command, extract the condition
9359    string and thread number and set *COND_STRING and *THREAD.
9360    PC identifies the context at which the condition should be parsed.
9361    If no condition is found, *COND_STRING is set to NULL.
9362    If no thread is found, *THREAD is set to -1.  */
9363
9364 static void
9365 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9366                            char **cond_string, int *thread, int *task,
9367                            char **rest)
9368 {
9369   *cond_string = NULL;
9370   *thread = -1;
9371   *task = 0;
9372   *rest = NULL;
9373
9374   while (tok && *tok)
9375     {
9376       const char *end_tok;
9377       int toklen;
9378       const char *cond_start = NULL;
9379       const char *cond_end = NULL;
9380
9381       tok = skip_spaces_const (tok);
9382
9383       if ((*tok == '"' || *tok == ',') && rest)
9384         {
9385           *rest = savestring (tok, strlen (tok));
9386           return;
9387         }
9388
9389       end_tok = skip_to_space_const (tok);
9390
9391       toklen = end_tok - tok;
9392
9393       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9394         {
9395           struct expression *expr;
9396
9397           tok = cond_start = end_tok + 1;
9398           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9399           xfree (expr);
9400           cond_end = tok;
9401           *cond_string = savestring (cond_start, cond_end - cond_start);
9402         }
9403       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9404         {
9405           char *tmptok;
9406
9407           tok = end_tok + 1;
9408           *thread = strtol (tok, &tmptok, 0);
9409           if (tok == tmptok)
9410             error (_("Junk after thread keyword."));
9411           if (!valid_thread_id (*thread))
9412             invalid_thread_id_error (*thread);
9413           tok = tmptok;
9414         }
9415       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9416         {
9417           char *tmptok;
9418
9419           tok = end_tok + 1;
9420           *task = strtol (tok, &tmptok, 0);
9421           if (tok == tmptok)
9422             error (_("Junk after task keyword."));
9423           if (!valid_task_id (*task))
9424             error (_("Unknown task %d."), *task);
9425           tok = tmptok;
9426         }
9427       else if (rest)
9428         {
9429           *rest = savestring (tok, strlen (tok));
9430           return;
9431         }
9432       else
9433         error (_("Junk at end of arguments."));
9434     }
9435 }
9436
9437 /* Decode a static tracepoint marker spec.  */
9438
9439 static struct symtabs_and_lines
9440 decode_static_tracepoint_spec (char **arg_p)
9441 {
9442   VEC(static_tracepoint_marker_p) *markers = NULL;
9443   struct symtabs_and_lines sals;
9444   struct cleanup *old_chain;
9445   char *p = &(*arg_p)[3];
9446   char *endp;
9447   char *marker_str;
9448   int i;
9449
9450   p = skip_spaces (p);
9451
9452   endp = skip_to_space (p);
9453
9454   marker_str = savestring (p, endp - p);
9455   old_chain = make_cleanup (xfree, marker_str);
9456
9457   markers = target_static_tracepoint_markers_by_strid (marker_str);
9458   if (VEC_empty(static_tracepoint_marker_p, markers))
9459     error (_("No known static tracepoint marker named %s"), marker_str);
9460
9461   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9462   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9463
9464   for (i = 0; i < sals.nelts; i++)
9465     {
9466       struct static_tracepoint_marker *marker;
9467
9468       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9469
9470       init_sal (&sals.sals[i]);
9471
9472       sals.sals[i] = find_pc_line (marker->address, 0);
9473       sals.sals[i].pc = marker->address;
9474
9475       release_static_tracepoint_marker (marker);
9476     }
9477
9478   do_cleanups (old_chain);
9479
9480   *arg_p = endp;
9481   return sals;
9482 }
9483
9484 /* Set a breakpoint.  This function is shared between CLI and MI
9485    functions for setting a breakpoint.  This function has two major
9486    modes of operations, selected by the PARSE_ARG parameter.  If
9487    non-zero, the function will parse ARG, extracting location,
9488    condition, thread and extra string.  Otherwise, ARG is just the
9489    breakpoint's location, with condition, thread, and extra string
9490    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9491    If INTERNAL is non-zero, the breakpoint number will be allocated
9492    from the internal breakpoint count.  Returns true if any breakpoint
9493    was created; false otherwise.  */
9494
9495 int
9496 create_breakpoint (struct gdbarch *gdbarch,
9497                    char *arg, char *cond_string,
9498                    int thread, char *extra_string,
9499                    int parse_arg,
9500                    int tempflag, enum bptype type_wanted,
9501                    int ignore_count,
9502                    enum auto_boolean pending_break_support,
9503                    const struct breakpoint_ops *ops,
9504                    int from_tty, int enabled, int internal,
9505                    unsigned flags)
9506 {
9507   volatile struct gdb_exception e;
9508   char *copy_arg = NULL;
9509   char *addr_start = arg;
9510   struct linespec_result canonical;
9511   struct cleanup *old_chain;
9512   struct cleanup *bkpt_chain = NULL;
9513   int pending = 0;
9514   int task = 0;
9515   int prev_bkpt_count = breakpoint_count;
9516
9517   gdb_assert (ops != NULL);
9518
9519   init_linespec_result (&canonical);
9520
9521   TRY_CATCH (e, RETURN_MASK_ALL)
9522     {
9523       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9524                                      addr_start, &copy_arg);
9525     }
9526
9527   /* If caller is interested in rc value from parse, set value.  */
9528   switch (e.reason)
9529     {
9530     case GDB_NO_ERROR:
9531       if (VEC_empty (linespec_sals, canonical.sals))
9532         return 0;
9533       break;
9534     case RETURN_ERROR:
9535       switch (e.error)
9536         {
9537         case NOT_FOUND_ERROR:
9538
9539           /* If pending breakpoint support is turned off, throw
9540              error.  */
9541
9542           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9543             throw_exception (e);
9544
9545           exception_print (gdb_stderr, e);
9546
9547           /* If pending breakpoint support is auto query and the user
9548              selects no, then simply return the error code.  */
9549           if (pending_break_support == AUTO_BOOLEAN_AUTO
9550               && !nquery (_("Make %s pending on future shared library load? "),
9551                           bptype_string (type_wanted)))
9552             return 0;
9553
9554           /* At this point, either the user was queried about setting
9555              a pending breakpoint and selected yes, or pending
9556              breakpoint behavior is on and thus a pending breakpoint
9557              is defaulted on behalf of the user.  */
9558           {
9559             struct linespec_sals lsal;
9560
9561             copy_arg = xstrdup (addr_start);
9562             lsal.canonical = xstrdup (copy_arg);
9563             lsal.sals.nelts = 1;
9564             lsal.sals.sals = XNEW (struct symtab_and_line);
9565             init_sal (&lsal.sals.sals[0]);
9566             pending = 1;
9567             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9568           }
9569           break;
9570         default:
9571           throw_exception (e);
9572         }
9573       break;
9574     default:
9575       throw_exception (e);
9576     }
9577
9578   /* Create a chain of things that always need to be cleaned up.  */
9579   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9580
9581   /* ----------------------------- SNIP -----------------------------
9582      Anything added to the cleanup chain beyond this point is assumed
9583      to be part of a breakpoint.  If the breakpoint create succeeds
9584      then the memory is not reclaimed.  */
9585   bkpt_chain = make_cleanup (null_cleanup, 0);
9586
9587   /* Resolve all line numbers to PC's and verify that the addresses
9588      are ok for the target.  */
9589   if (!pending)
9590     {
9591       int ix;
9592       struct linespec_sals *iter;
9593
9594       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9595         breakpoint_sals_to_pc (&iter->sals);
9596     }
9597
9598   /* Fast tracepoints may have additional restrictions on location.  */
9599   if (!pending && type_wanted == bp_fast_tracepoint)
9600     {
9601       int ix;
9602       struct linespec_sals *iter;
9603
9604       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9605         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9606     }
9607
9608   /* Verify that condition can be parsed, before setting any
9609      breakpoints.  Allocate a separate condition expression for each
9610      breakpoint.  */
9611   if (!pending)
9612     {
9613       struct linespec_sals *lsal;
9614
9615       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9616
9617       if (parse_arg)
9618         {
9619           char *rest;
9620           /* Here we only parse 'arg' to separate condition
9621              from thread number, so parsing in context of first
9622              sal is OK.  When setting the breakpoint we'll
9623              re-parse it in context of each sal.  */
9624
9625           find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9626                                      &thread, &task, &rest);
9627           if (cond_string)
9628             make_cleanup (xfree, cond_string);
9629           if (rest)
9630             make_cleanup (xfree, rest);
9631           if (rest)
9632             extra_string = rest;
9633         }
9634       else
9635         {
9636           if (*arg != '\0')
9637             error (_("Garbage '%s' at end of location"), arg);
9638
9639           /* Create a private copy of condition string.  */
9640           if (cond_string)
9641             {
9642               cond_string = xstrdup (cond_string);
9643               make_cleanup (xfree, cond_string);
9644             }
9645           /* Create a private copy of any extra string.  */
9646           if (extra_string)
9647             {
9648               extra_string = xstrdup (extra_string);
9649               make_cleanup (xfree, extra_string);
9650             }
9651         }
9652
9653       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9654                                    cond_string, extra_string, type_wanted,
9655                                    tempflag ? disp_del : disp_donttouch,
9656                                    thread, task, ignore_count, ops,
9657                                    from_tty, enabled, internal, flags);
9658     }
9659   else
9660     {
9661       struct breakpoint *b;
9662
9663       make_cleanup (xfree, copy_arg);
9664
9665       if (is_tracepoint_type (type_wanted))
9666         {
9667           struct tracepoint *t;
9668
9669           t = XCNEW (struct tracepoint);
9670           b = &t->base;
9671         }
9672       else
9673         b = XNEW (struct breakpoint);
9674
9675       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9676
9677       b->addr_string = copy_arg;
9678       if (parse_arg)
9679         b->cond_string = NULL;
9680       else
9681         {
9682           /* Create a private copy of condition string.  */
9683           if (cond_string)
9684             {
9685               cond_string = xstrdup (cond_string);
9686               make_cleanup (xfree, cond_string);
9687             }
9688           b->cond_string = cond_string;
9689         }
9690       b->extra_string = NULL;
9691       b->ignore_count = ignore_count;
9692       b->disposition = tempflag ? disp_del : disp_donttouch;
9693       b->condition_not_parsed = 1;
9694       b->enable_state = enabled ? bp_enabled : bp_disabled;
9695       if ((type_wanted != bp_breakpoint
9696            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9697         b->pspace = current_program_space;
9698
9699       install_breakpoint (internal, b, 0);
9700     }
9701   
9702   if (VEC_length (linespec_sals, canonical.sals) > 1)
9703     {
9704       warning (_("Multiple breakpoints were set.\nUse the "
9705                  "\"delete\" command to delete unwanted breakpoints."));
9706       prev_breakpoint_count = prev_bkpt_count;
9707     }
9708
9709   /* That's it.  Discard the cleanups for data inserted into the
9710      breakpoint.  */
9711   discard_cleanups (bkpt_chain);
9712   /* But cleanup everything else.  */
9713   do_cleanups (old_chain);
9714
9715   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9716   update_global_location_list (1);
9717
9718   return 1;
9719 }
9720
9721 /* Set a breakpoint.
9722    ARG is a string describing breakpoint address,
9723    condition, and thread.
9724    FLAG specifies if a breakpoint is hardware on,
9725    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9726    and BP_TEMPFLAG.  */
9727
9728 static void
9729 break_command_1 (char *arg, int flag, int from_tty)
9730 {
9731   int tempflag = flag & BP_TEMPFLAG;
9732   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9733                              ? bp_hardware_breakpoint
9734                              : bp_breakpoint);
9735   struct breakpoint_ops *ops;
9736   const char *arg_cp = arg;
9737
9738   /* Matching breakpoints on probes.  */
9739   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9740     ops = &bkpt_probe_breakpoint_ops;
9741   else
9742     ops = &bkpt_breakpoint_ops;
9743
9744   create_breakpoint (get_current_arch (),
9745                      arg,
9746                      NULL, 0, NULL, 1 /* parse arg */,
9747                      tempflag, type_wanted,
9748                      0 /* Ignore count */,
9749                      pending_break_support,
9750                      ops,
9751                      from_tty,
9752                      1 /* enabled */,
9753                      0 /* internal */,
9754                      0);
9755 }
9756
9757 /* Helper function for break_command_1 and disassemble_command.  */
9758
9759 void
9760 resolve_sal_pc (struct symtab_and_line *sal)
9761 {
9762   CORE_ADDR pc;
9763
9764   if (sal->pc == 0 && sal->symtab != NULL)
9765     {
9766       if (!find_line_pc (sal->symtab, sal->line, &pc))
9767         error (_("No line %d in file \"%s\"."),
9768                sal->line, symtab_to_filename_for_display (sal->symtab));
9769       sal->pc = pc;
9770
9771       /* If this SAL corresponds to a breakpoint inserted using a line
9772          number, then skip the function prologue if necessary.  */
9773       if (sal->explicit_line)
9774         skip_prologue_sal (sal);
9775     }
9776
9777   if (sal->section == 0 && sal->symtab != NULL)
9778     {
9779       struct blockvector *bv;
9780       struct block *b;
9781       struct symbol *sym;
9782
9783       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9784       if (bv != NULL)
9785         {
9786           sym = block_linkage_function (b);
9787           if (sym != NULL)
9788             {
9789               fixup_symbol_section (sym, sal->symtab->objfile);
9790               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
9791             }
9792           else
9793             {
9794               /* It really is worthwhile to have the section, so we'll
9795                  just have to look harder. This case can be executed
9796                  if we have line numbers but no functions (as can
9797                  happen in assembly source).  */
9798
9799               struct bound_minimal_symbol msym;
9800               struct cleanup *old_chain = save_current_space_and_thread ();
9801
9802               switch_to_program_space_and_thread (sal->pspace);
9803
9804               msym = lookup_minimal_symbol_by_pc (sal->pc);
9805               if (msym.minsym)
9806                 sal->section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9807
9808               do_cleanups (old_chain);
9809             }
9810         }
9811     }
9812 }
9813
9814 void
9815 break_command (char *arg, int from_tty)
9816 {
9817   break_command_1 (arg, 0, from_tty);
9818 }
9819
9820 void
9821 tbreak_command (char *arg, int from_tty)
9822 {
9823   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9824 }
9825
9826 static void
9827 hbreak_command (char *arg, int from_tty)
9828 {
9829   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9830 }
9831
9832 static void
9833 thbreak_command (char *arg, int from_tty)
9834 {
9835   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9836 }
9837
9838 static void
9839 stop_command (char *arg, int from_tty)
9840 {
9841   printf_filtered (_("Specify the type of breakpoint to set.\n\
9842 Usage: stop in <function | address>\n\
9843        stop at <line>\n"));
9844 }
9845
9846 static void
9847 stopin_command (char *arg, int from_tty)
9848 {
9849   int badInput = 0;
9850
9851   if (arg == (char *) NULL)
9852     badInput = 1;
9853   else if (*arg != '*')
9854     {
9855       char *argptr = arg;
9856       int hasColon = 0;
9857
9858       /* Look for a ':'.  If this is a line number specification, then
9859          say it is bad, otherwise, it should be an address or
9860          function/method name.  */
9861       while (*argptr && !hasColon)
9862         {
9863           hasColon = (*argptr == ':');
9864           argptr++;
9865         }
9866
9867       if (hasColon)
9868         badInput = (*argptr != ':');    /* Not a class::method */
9869       else
9870         badInput = isdigit (*arg);      /* a simple line number */
9871     }
9872
9873   if (badInput)
9874     printf_filtered (_("Usage: stop in <function | address>\n"));
9875   else
9876     break_command_1 (arg, 0, from_tty);
9877 }
9878
9879 static void
9880 stopat_command (char *arg, int from_tty)
9881 {
9882   int badInput = 0;
9883
9884   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9885     badInput = 1;
9886   else
9887     {
9888       char *argptr = arg;
9889       int hasColon = 0;
9890
9891       /* Look for a ':'.  If there is a '::' then get out, otherwise
9892          it is probably a line number.  */
9893       while (*argptr && !hasColon)
9894         {
9895           hasColon = (*argptr == ':');
9896           argptr++;
9897         }
9898
9899       if (hasColon)
9900         badInput = (*argptr == ':');    /* we have class::method */
9901       else
9902         badInput = !isdigit (*arg);     /* not a line number */
9903     }
9904
9905   if (badInput)
9906     printf_filtered (_("Usage: stop at <line>\n"));
9907   else
9908     break_command_1 (arg, 0, from_tty);
9909 }
9910
9911 /* The dynamic printf command is mostly like a regular breakpoint, but
9912    with a prewired command list consisting of a single output command,
9913    built from extra arguments supplied on the dprintf command
9914    line.  */
9915
9916 static void
9917 dprintf_command (char *arg, int from_tty)
9918 {
9919   create_breakpoint (get_current_arch (),
9920                      arg,
9921                      NULL, 0, NULL, 1 /* parse arg */,
9922                      0, bp_dprintf,
9923                      0 /* Ignore count */,
9924                      pending_break_support,
9925                      &dprintf_breakpoint_ops,
9926                      from_tty,
9927                      1 /* enabled */,
9928                      0 /* internal */,
9929                      0);
9930 }
9931
9932 static void
9933 agent_printf_command (char *arg, int from_tty)
9934 {
9935   error (_("May only run agent-printf on the target"));
9936 }
9937
9938 /* Implement the "breakpoint_hit" breakpoint_ops method for
9939    ranged breakpoints.  */
9940
9941 static int
9942 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9943                                   struct address_space *aspace,
9944                                   CORE_ADDR bp_addr,
9945                                   const struct target_waitstatus *ws)
9946 {
9947   if (ws->kind != TARGET_WAITKIND_STOPPED
9948       || ws->value.sig != GDB_SIGNAL_TRAP)
9949     return 0;
9950
9951   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9952                                          bl->length, aspace, bp_addr);
9953 }
9954
9955 /* Implement the "resources_needed" breakpoint_ops method for
9956    ranged breakpoints.  */
9957
9958 static int
9959 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9960 {
9961   return target_ranged_break_num_registers ();
9962 }
9963
9964 /* Implement the "print_it" breakpoint_ops method for
9965    ranged breakpoints.  */
9966
9967 static enum print_stop_action
9968 print_it_ranged_breakpoint (bpstat bs)
9969 {
9970   struct breakpoint *b = bs->breakpoint_at;
9971   struct bp_location *bl = b->loc;
9972   struct ui_out *uiout = current_uiout;
9973
9974   gdb_assert (b->type == bp_hardware_breakpoint);
9975
9976   /* Ranged breakpoints have only one location.  */
9977   gdb_assert (bl && bl->next == NULL);
9978
9979   annotate_breakpoint (b->number);
9980   if (b->disposition == disp_del)
9981     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9982   else
9983     ui_out_text (uiout, "\nRanged breakpoint ");
9984   if (ui_out_is_mi_like_p (uiout))
9985     {
9986       ui_out_field_string (uiout, "reason",
9987                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9988       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9989     }
9990   ui_out_field_int (uiout, "bkptno", b->number);
9991   ui_out_text (uiout, ", ");
9992
9993   return PRINT_SRC_AND_LOC;
9994 }
9995
9996 /* Implement the "print_one" breakpoint_ops method for
9997    ranged breakpoints.  */
9998
9999 static void
10000 print_one_ranged_breakpoint (struct breakpoint *b,
10001                              struct bp_location **last_loc)
10002 {
10003   struct bp_location *bl = b->loc;
10004   struct value_print_options opts;
10005   struct ui_out *uiout = current_uiout;
10006
10007   /* Ranged breakpoints have only one location.  */
10008   gdb_assert (bl && bl->next == NULL);
10009
10010   get_user_print_options (&opts);
10011
10012   if (opts.addressprint)
10013     /* We don't print the address range here, it will be printed later
10014        by print_one_detail_ranged_breakpoint.  */
10015     ui_out_field_skip (uiout, "addr");
10016   annotate_field (5);
10017   print_breakpoint_location (b, bl);
10018   *last_loc = bl;
10019 }
10020
10021 /* Implement the "print_one_detail" breakpoint_ops method for
10022    ranged breakpoints.  */
10023
10024 static void
10025 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10026                                     struct ui_out *uiout)
10027 {
10028   CORE_ADDR address_start, address_end;
10029   struct bp_location *bl = b->loc;
10030   struct ui_file *stb = mem_fileopen ();
10031   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10032
10033   gdb_assert (bl);
10034
10035   address_start = bl->address;
10036   address_end = address_start + bl->length - 1;
10037
10038   ui_out_text (uiout, "\taddress range: ");
10039   fprintf_unfiltered (stb, "[%s, %s]",
10040                       print_core_address (bl->gdbarch, address_start),
10041                       print_core_address (bl->gdbarch, address_end));
10042   ui_out_field_stream (uiout, "addr", stb);
10043   ui_out_text (uiout, "\n");
10044
10045   do_cleanups (cleanup);
10046 }
10047
10048 /* Implement the "print_mention" breakpoint_ops method for
10049    ranged breakpoints.  */
10050
10051 static void
10052 print_mention_ranged_breakpoint (struct breakpoint *b)
10053 {
10054   struct bp_location *bl = b->loc;
10055   struct ui_out *uiout = current_uiout;
10056
10057   gdb_assert (bl);
10058   gdb_assert (b->type == bp_hardware_breakpoint);
10059
10060   if (ui_out_is_mi_like_p (uiout))
10061     return;
10062
10063   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10064                    b->number, paddress (bl->gdbarch, bl->address),
10065                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10066 }
10067
10068 /* Implement the "print_recreate" breakpoint_ops method for
10069    ranged breakpoints.  */
10070
10071 static void
10072 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10073 {
10074   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10075                       b->addr_string_range_end);
10076   print_recreate_thread (b, fp);
10077 }
10078
10079 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10080
10081 static struct breakpoint_ops ranged_breakpoint_ops;
10082
10083 /* Find the address where the end of the breakpoint range should be
10084    placed, given the SAL of the end of the range.  This is so that if
10085    the user provides a line number, the end of the range is set to the
10086    last instruction of the given line.  */
10087
10088 static CORE_ADDR
10089 find_breakpoint_range_end (struct symtab_and_line sal)
10090 {
10091   CORE_ADDR end;
10092
10093   /* If the user provided a PC value, use it.  Otherwise,
10094      find the address of the end of the given location.  */
10095   if (sal.explicit_pc)
10096     end = sal.pc;
10097   else
10098     {
10099       int ret;
10100       CORE_ADDR start;
10101
10102       ret = find_line_pc_range (sal, &start, &end);
10103       if (!ret)
10104         error (_("Could not find location of the end of the range."));
10105
10106       /* find_line_pc_range returns the start of the next line.  */
10107       end--;
10108     }
10109
10110   return end;
10111 }
10112
10113 /* Implement the "break-range" CLI command.  */
10114
10115 static void
10116 break_range_command (char *arg, int from_tty)
10117 {
10118   char *arg_start, *addr_string_start, *addr_string_end;
10119   struct linespec_result canonical_start, canonical_end;
10120   int bp_count, can_use_bp, length;
10121   CORE_ADDR end;
10122   struct breakpoint *b;
10123   struct symtab_and_line sal_start, sal_end;
10124   struct cleanup *cleanup_bkpt;
10125   struct linespec_sals *lsal_start, *lsal_end;
10126
10127   /* We don't support software ranged breakpoints.  */
10128   if (target_ranged_break_num_registers () < 0)
10129     error (_("This target does not support hardware ranged breakpoints."));
10130
10131   bp_count = hw_breakpoint_used_count ();
10132   bp_count += target_ranged_break_num_registers ();
10133   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10134                                                    bp_count, 0);
10135   if (can_use_bp < 0)
10136     error (_("Hardware breakpoints used exceeds limit."));
10137
10138   arg = skip_spaces (arg);
10139   if (arg == NULL || arg[0] == '\0')
10140     error(_("No address range specified."));
10141
10142   init_linespec_result (&canonical_start);
10143
10144   arg_start = arg;
10145   parse_breakpoint_sals (&arg, &canonical_start);
10146
10147   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10148
10149   if (arg[0] != ',')
10150     error (_("Too few arguments."));
10151   else if (VEC_empty (linespec_sals, canonical_start.sals))
10152     error (_("Could not find location of the beginning of the range."));
10153
10154   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10155
10156   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10157       || lsal_start->sals.nelts != 1)
10158     error (_("Cannot create a ranged breakpoint with multiple locations."));
10159
10160   sal_start = lsal_start->sals.sals[0];
10161   addr_string_start = savestring (arg_start, arg - arg_start);
10162   make_cleanup (xfree, addr_string_start);
10163
10164   arg++;        /* Skip the comma.  */
10165   arg = skip_spaces (arg);
10166
10167   /* Parse the end location.  */
10168
10169   init_linespec_result (&canonical_end);
10170   arg_start = arg;
10171
10172   /* We call decode_line_full directly here instead of using
10173      parse_breakpoint_sals because we need to specify the start location's
10174      symtab and line as the default symtab and line for the end of the
10175      range.  This makes it possible to have ranges like "foo.c:27, +14",
10176      where +14 means 14 lines from the start location.  */
10177   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10178                     sal_start.symtab, sal_start.line,
10179                     &canonical_end, NULL, NULL);
10180
10181   make_cleanup_destroy_linespec_result (&canonical_end);
10182
10183   if (VEC_empty (linespec_sals, canonical_end.sals))
10184     error (_("Could not find location of the end of the range."));
10185
10186   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10187   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10188       || lsal_end->sals.nelts != 1)
10189     error (_("Cannot create a ranged breakpoint with multiple locations."));
10190
10191   sal_end = lsal_end->sals.sals[0];
10192   addr_string_end = savestring (arg_start, arg - arg_start);
10193   make_cleanup (xfree, addr_string_end);
10194
10195   end = find_breakpoint_range_end (sal_end);
10196   if (sal_start.pc > end)
10197     error (_("Invalid address range, end precedes start."));
10198
10199   length = end - sal_start.pc + 1;
10200   if (length < 0)
10201     /* Length overflowed.  */
10202     error (_("Address range too large."));
10203   else if (length == 1)
10204     {
10205       /* This range is simple enough to be handled by
10206          the `hbreak' command.  */
10207       hbreak_command (addr_string_start, 1);
10208
10209       do_cleanups (cleanup_bkpt);
10210
10211       return;
10212     }
10213
10214   /* Now set up the breakpoint.  */
10215   b = set_raw_breakpoint (get_current_arch (), sal_start,
10216                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10217   set_breakpoint_count (breakpoint_count + 1);
10218   b->number = breakpoint_count;
10219   b->disposition = disp_donttouch;
10220   b->addr_string = xstrdup (addr_string_start);
10221   b->addr_string_range_end = xstrdup (addr_string_end);
10222   b->loc->length = length;
10223
10224   do_cleanups (cleanup_bkpt);
10225
10226   mention (b);
10227   observer_notify_breakpoint_created (b);
10228   update_global_location_list (1);
10229 }
10230
10231 /*  Return non-zero if EXP is verified as constant.  Returned zero
10232     means EXP is variable.  Also the constant detection may fail for
10233     some constant expressions and in such case still falsely return
10234     zero.  */
10235
10236 static int
10237 watchpoint_exp_is_const (const struct expression *exp)
10238 {
10239   int i = exp->nelts;
10240
10241   while (i > 0)
10242     {
10243       int oplenp, argsp;
10244
10245       /* We are only interested in the descriptor of each element.  */
10246       operator_length (exp, i, &oplenp, &argsp);
10247       i -= oplenp;
10248
10249       switch (exp->elts[i].opcode)
10250         {
10251         case BINOP_ADD:
10252         case BINOP_SUB:
10253         case BINOP_MUL:
10254         case BINOP_DIV:
10255         case BINOP_REM:
10256         case BINOP_MOD:
10257         case BINOP_LSH:
10258         case BINOP_RSH:
10259         case BINOP_LOGICAL_AND:
10260         case BINOP_LOGICAL_OR:
10261         case BINOP_BITWISE_AND:
10262         case BINOP_BITWISE_IOR:
10263         case BINOP_BITWISE_XOR:
10264         case BINOP_EQUAL:
10265         case BINOP_NOTEQUAL:
10266         case BINOP_LESS:
10267         case BINOP_GTR:
10268         case BINOP_LEQ:
10269         case BINOP_GEQ:
10270         case BINOP_REPEAT:
10271         case BINOP_COMMA:
10272         case BINOP_EXP:
10273         case BINOP_MIN:
10274         case BINOP_MAX:
10275         case BINOP_INTDIV:
10276         case BINOP_CONCAT:
10277         case BINOP_IN:
10278         case BINOP_RANGE:
10279         case TERNOP_COND:
10280         case TERNOP_SLICE:
10281
10282         case OP_LONG:
10283         case OP_DOUBLE:
10284         case OP_DECFLOAT:
10285         case OP_LAST:
10286         case OP_COMPLEX:
10287         case OP_STRING:
10288         case OP_ARRAY:
10289         case OP_TYPE:
10290         case OP_TYPEOF:
10291         case OP_DECLTYPE:
10292         case OP_TYPEID:
10293         case OP_NAME:
10294         case OP_OBJC_NSSTRING:
10295
10296         case UNOP_NEG:
10297         case UNOP_LOGICAL_NOT:
10298         case UNOP_COMPLEMENT:
10299         case UNOP_ADDR:
10300         case UNOP_HIGH:
10301         case UNOP_CAST:
10302
10303         case UNOP_CAST_TYPE:
10304         case UNOP_REINTERPRET_CAST:
10305         case UNOP_DYNAMIC_CAST:
10306           /* Unary, binary and ternary operators: We have to check
10307              their operands.  If they are constant, then so is the
10308              result of that operation.  For instance, if A and B are
10309              determined to be constants, then so is "A + B".
10310
10311              UNOP_IND is one exception to the rule above, because the
10312              value of *ADDR is not necessarily a constant, even when
10313              ADDR is.  */
10314           break;
10315
10316         case OP_VAR_VALUE:
10317           /* Check whether the associated symbol is a constant.
10318
10319              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10320              possible that a buggy compiler could mark a variable as
10321              constant even when it is not, and TYPE_CONST would return
10322              true in this case, while SYMBOL_CLASS wouldn't.
10323
10324              We also have to check for function symbols because they
10325              are always constant.  */
10326           {
10327             struct symbol *s = exp->elts[i + 2].symbol;
10328
10329             if (SYMBOL_CLASS (s) != LOC_BLOCK
10330                 && SYMBOL_CLASS (s) != LOC_CONST
10331                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10332               return 0;
10333             break;
10334           }
10335
10336         /* The default action is to return 0 because we are using
10337            the optimistic approach here: If we don't know something,
10338            then it is not a constant.  */
10339         default:
10340           return 0;
10341         }
10342     }
10343
10344   return 1;
10345 }
10346
10347 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10348
10349 static void
10350 dtor_watchpoint (struct breakpoint *self)
10351 {
10352   struct watchpoint *w = (struct watchpoint *) self;
10353
10354   xfree (w->cond_exp);
10355   xfree (w->exp);
10356   xfree (w->exp_string);
10357   xfree (w->exp_string_reparse);
10358   value_free (w->val);
10359
10360   base_breakpoint_ops.dtor (self);
10361 }
10362
10363 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10364
10365 static void
10366 re_set_watchpoint (struct breakpoint *b)
10367 {
10368   struct watchpoint *w = (struct watchpoint *) b;
10369
10370   /* Watchpoint can be either on expression using entirely global
10371      variables, or it can be on local variables.
10372
10373      Watchpoints of the first kind are never auto-deleted, and even
10374      persist across program restarts.  Since they can use variables
10375      from shared libraries, we need to reparse expression as libraries
10376      are loaded and unloaded.
10377
10378      Watchpoints on local variables can also change meaning as result
10379      of solib event.  For example, if a watchpoint uses both a local
10380      and a global variables in expression, it's a local watchpoint,
10381      but unloading of a shared library will make the expression
10382      invalid.  This is not a very common use case, but we still
10383      re-evaluate expression, to avoid surprises to the user.
10384
10385      Note that for local watchpoints, we re-evaluate it only if
10386      watchpoints frame id is still valid.  If it's not, it means the
10387      watchpoint is out of scope and will be deleted soon.  In fact,
10388      I'm not sure we'll ever be called in this case.
10389
10390      If a local watchpoint's frame id is still valid, then
10391      w->exp_valid_block is likewise valid, and we can safely use it.
10392
10393      Don't do anything about disabled watchpoints, since they will be
10394      reevaluated again when enabled.  */
10395   update_watchpoint (w, 1 /* reparse */);
10396 }
10397
10398 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10399
10400 static int
10401 insert_watchpoint (struct bp_location *bl)
10402 {
10403   struct watchpoint *w = (struct watchpoint *) bl->owner;
10404   int length = w->exact ? 1 : bl->length;
10405
10406   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10407                                    w->cond_exp);
10408 }
10409
10410 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10411
10412 static int
10413 remove_watchpoint (struct bp_location *bl)
10414 {
10415   struct watchpoint *w = (struct watchpoint *) bl->owner;
10416   int length = w->exact ? 1 : bl->length;
10417
10418   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10419                                    w->cond_exp);
10420 }
10421
10422 static int
10423 breakpoint_hit_watchpoint (const struct bp_location *bl,
10424                            struct address_space *aspace, CORE_ADDR bp_addr,
10425                            const struct target_waitstatus *ws)
10426 {
10427   struct breakpoint *b = bl->owner;
10428   struct watchpoint *w = (struct watchpoint *) b;
10429
10430   /* Continuable hardware watchpoints are treated as non-existent if the
10431      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10432      some data address).  Otherwise gdb won't stop on a break instruction
10433      in the code (not from a breakpoint) when a hardware watchpoint has
10434      been defined.  Also skip watchpoints which we know did not trigger
10435      (did not match the data address).  */
10436   if (is_hardware_watchpoint (b)
10437       && w->watchpoint_triggered == watch_triggered_no)
10438     return 0;
10439
10440   return 1;
10441 }
10442
10443 static void
10444 check_status_watchpoint (bpstat bs)
10445 {
10446   gdb_assert (is_watchpoint (bs->breakpoint_at));
10447
10448   bpstat_check_watchpoint (bs);
10449 }
10450
10451 /* Implement the "resources_needed" breakpoint_ops method for
10452    hardware watchpoints.  */
10453
10454 static int
10455 resources_needed_watchpoint (const struct bp_location *bl)
10456 {
10457   struct watchpoint *w = (struct watchpoint *) bl->owner;
10458   int length = w->exact? 1 : bl->length;
10459
10460   return target_region_ok_for_hw_watchpoint (bl->address, length);
10461 }
10462
10463 /* Implement the "works_in_software_mode" breakpoint_ops method for
10464    hardware watchpoints.  */
10465
10466 static int
10467 works_in_software_mode_watchpoint (const struct breakpoint *b)
10468 {
10469   /* Read and access watchpoints only work with hardware support.  */
10470   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10471 }
10472
10473 static enum print_stop_action
10474 print_it_watchpoint (bpstat bs)
10475 {
10476   struct cleanup *old_chain;
10477   struct breakpoint *b;
10478   struct ui_file *stb;
10479   enum print_stop_action result;
10480   struct watchpoint *w;
10481   struct ui_out *uiout = current_uiout;
10482
10483   gdb_assert (bs->bp_location_at != NULL);
10484
10485   b = bs->breakpoint_at;
10486   w = (struct watchpoint *) b;
10487
10488   stb = mem_fileopen ();
10489   old_chain = make_cleanup_ui_file_delete (stb);
10490
10491   switch (b->type)
10492     {
10493     case bp_watchpoint:
10494     case bp_hardware_watchpoint:
10495       annotate_watchpoint (b->number);
10496       if (ui_out_is_mi_like_p (uiout))
10497         ui_out_field_string
10498           (uiout, "reason",
10499            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10500       mention (b);
10501       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10502       ui_out_text (uiout, "\nOld value = ");
10503       watchpoint_value_print (bs->old_val, stb);
10504       ui_out_field_stream (uiout, "old", stb);
10505       ui_out_text (uiout, "\nNew value = ");
10506       watchpoint_value_print (w->val, stb);
10507       ui_out_field_stream (uiout, "new", stb);
10508       ui_out_text (uiout, "\n");
10509       /* More than one watchpoint may have been triggered.  */
10510       result = PRINT_UNKNOWN;
10511       break;
10512
10513     case bp_read_watchpoint:
10514       if (ui_out_is_mi_like_p (uiout))
10515         ui_out_field_string
10516           (uiout, "reason",
10517            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10518       mention (b);
10519       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10520       ui_out_text (uiout, "\nValue = ");
10521       watchpoint_value_print (w->val, stb);
10522       ui_out_field_stream (uiout, "value", stb);
10523       ui_out_text (uiout, "\n");
10524       result = PRINT_UNKNOWN;
10525       break;
10526
10527     case bp_access_watchpoint:
10528       if (bs->old_val != NULL)
10529         {
10530           annotate_watchpoint (b->number);
10531           if (ui_out_is_mi_like_p (uiout))
10532             ui_out_field_string
10533               (uiout, "reason",
10534                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10535           mention (b);
10536           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10537           ui_out_text (uiout, "\nOld value = ");
10538           watchpoint_value_print (bs->old_val, stb);
10539           ui_out_field_stream (uiout, "old", stb);
10540           ui_out_text (uiout, "\nNew value = ");
10541         }
10542       else
10543         {
10544           mention (b);
10545           if (ui_out_is_mi_like_p (uiout))
10546             ui_out_field_string
10547               (uiout, "reason",
10548                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10549           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10550           ui_out_text (uiout, "\nValue = ");
10551         }
10552       watchpoint_value_print (w->val, stb);
10553       ui_out_field_stream (uiout, "new", stb);
10554       ui_out_text (uiout, "\n");
10555       result = PRINT_UNKNOWN;
10556       break;
10557     default:
10558       result = PRINT_UNKNOWN;
10559     }
10560
10561   do_cleanups (old_chain);
10562   return result;
10563 }
10564
10565 /* Implement the "print_mention" breakpoint_ops method for hardware
10566    watchpoints.  */
10567
10568 static void
10569 print_mention_watchpoint (struct breakpoint *b)
10570 {
10571   struct cleanup *ui_out_chain;
10572   struct watchpoint *w = (struct watchpoint *) b;
10573   struct ui_out *uiout = current_uiout;
10574
10575   switch (b->type)
10576     {
10577     case bp_watchpoint:
10578       ui_out_text (uiout, "Watchpoint ");
10579       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10580       break;
10581     case bp_hardware_watchpoint:
10582       ui_out_text (uiout, "Hardware watchpoint ");
10583       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10584       break;
10585     case bp_read_watchpoint:
10586       ui_out_text (uiout, "Hardware read watchpoint ");
10587       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10588       break;
10589     case bp_access_watchpoint:
10590       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10591       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10592       break;
10593     default:
10594       internal_error (__FILE__, __LINE__,
10595                       _("Invalid hardware watchpoint type."));
10596     }
10597
10598   ui_out_field_int (uiout, "number", b->number);
10599   ui_out_text (uiout, ": ");
10600   ui_out_field_string (uiout, "exp", w->exp_string);
10601   do_cleanups (ui_out_chain);
10602 }
10603
10604 /* Implement the "print_recreate" breakpoint_ops method for
10605    watchpoints.  */
10606
10607 static void
10608 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10609 {
10610   struct watchpoint *w = (struct watchpoint *) b;
10611
10612   switch (b->type)
10613     {
10614     case bp_watchpoint:
10615     case bp_hardware_watchpoint:
10616       fprintf_unfiltered (fp, "watch");
10617       break;
10618     case bp_read_watchpoint:
10619       fprintf_unfiltered (fp, "rwatch");
10620       break;
10621     case bp_access_watchpoint:
10622       fprintf_unfiltered (fp, "awatch");
10623       break;
10624     default:
10625       internal_error (__FILE__, __LINE__,
10626                       _("Invalid watchpoint type."));
10627     }
10628
10629   fprintf_unfiltered (fp, " %s", w->exp_string);
10630   print_recreate_thread (b, fp);
10631 }
10632
10633 /* Implement the "explains_signal" breakpoint_ops method for
10634    watchpoints.  */
10635
10636 static enum bpstat_signal_value
10637 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10638 {
10639   /* A software watchpoint cannot cause a signal other than
10640      GDB_SIGNAL_TRAP.  */
10641   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10642     return BPSTAT_SIGNAL_NO;
10643
10644   return BPSTAT_SIGNAL_HIDE;
10645 }
10646
10647 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10648
10649 static struct breakpoint_ops watchpoint_breakpoint_ops;
10650
10651 /* Implement the "insert" breakpoint_ops method for
10652    masked hardware watchpoints.  */
10653
10654 static int
10655 insert_masked_watchpoint (struct bp_location *bl)
10656 {
10657   struct watchpoint *w = (struct watchpoint *) bl->owner;
10658
10659   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10660                                         bl->watchpoint_type);
10661 }
10662
10663 /* Implement the "remove" breakpoint_ops method for
10664    masked hardware watchpoints.  */
10665
10666 static int
10667 remove_masked_watchpoint (struct bp_location *bl)
10668 {
10669   struct watchpoint *w = (struct watchpoint *) bl->owner;
10670
10671   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10672                                         bl->watchpoint_type);
10673 }
10674
10675 /* Implement the "resources_needed" breakpoint_ops method for
10676    masked hardware watchpoints.  */
10677
10678 static int
10679 resources_needed_masked_watchpoint (const struct bp_location *bl)
10680 {
10681   struct watchpoint *w = (struct watchpoint *) bl->owner;
10682
10683   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10684 }
10685
10686 /* Implement the "works_in_software_mode" breakpoint_ops method for
10687    masked hardware watchpoints.  */
10688
10689 static int
10690 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10691 {
10692   return 0;
10693 }
10694
10695 /* Implement the "print_it" breakpoint_ops method for
10696    masked hardware watchpoints.  */
10697
10698 static enum print_stop_action
10699 print_it_masked_watchpoint (bpstat bs)
10700 {
10701   struct breakpoint *b = bs->breakpoint_at;
10702   struct ui_out *uiout = current_uiout;
10703
10704   /* Masked watchpoints have only one location.  */
10705   gdb_assert (b->loc && b->loc->next == NULL);
10706
10707   switch (b->type)
10708     {
10709     case bp_hardware_watchpoint:
10710       annotate_watchpoint (b->number);
10711       if (ui_out_is_mi_like_p (uiout))
10712         ui_out_field_string
10713           (uiout, "reason",
10714            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10715       break;
10716
10717     case bp_read_watchpoint:
10718       if (ui_out_is_mi_like_p (uiout))
10719         ui_out_field_string
10720           (uiout, "reason",
10721            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10722       break;
10723
10724     case bp_access_watchpoint:
10725       if (ui_out_is_mi_like_p (uiout))
10726         ui_out_field_string
10727           (uiout, "reason",
10728            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10729       break;
10730     default:
10731       internal_error (__FILE__, __LINE__,
10732                       _("Invalid hardware watchpoint type."));
10733     }
10734
10735   mention (b);
10736   ui_out_text (uiout, _("\n\
10737 Check the underlying instruction at PC for the memory\n\
10738 address and value which triggered this watchpoint.\n"));
10739   ui_out_text (uiout, "\n");
10740
10741   /* More than one watchpoint may have been triggered.  */
10742   return PRINT_UNKNOWN;
10743 }
10744
10745 /* Implement the "print_one_detail" breakpoint_ops method for
10746    masked hardware watchpoints.  */
10747
10748 static void
10749 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10750                                     struct ui_out *uiout)
10751 {
10752   struct watchpoint *w = (struct watchpoint *) b;
10753
10754   /* Masked watchpoints have only one location.  */
10755   gdb_assert (b->loc && b->loc->next == NULL);
10756
10757   ui_out_text (uiout, "\tmask ");
10758   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10759   ui_out_text (uiout, "\n");
10760 }
10761
10762 /* Implement the "print_mention" breakpoint_ops method for
10763    masked hardware watchpoints.  */
10764
10765 static void
10766 print_mention_masked_watchpoint (struct breakpoint *b)
10767 {
10768   struct watchpoint *w = (struct watchpoint *) b;
10769   struct ui_out *uiout = current_uiout;
10770   struct cleanup *ui_out_chain;
10771
10772   switch (b->type)
10773     {
10774     case bp_hardware_watchpoint:
10775       ui_out_text (uiout, "Masked hardware watchpoint ");
10776       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10777       break;
10778     case bp_read_watchpoint:
10779       ui_out_text (uiout, "Masked hardware read watchpoint ");
10780       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10781       break;
10782     case bp_access_watchpoint:
10783       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10784       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10785       break;
10786     default:
10787       internal_error (__FILE__, __LINE__,
10788                       _("Invalid hardware watchpoint type."));
10789     }
10790
10791   ui_out_field_int (uiout, "number", b->number);
10792   ui_out_text (uiout, ": ");
10793   ui_out_field_string (uiout, "exp", w->exp_string);
10794   do_cleanups (ui_out_chain);
10795 }
10796
10797 /* Implement the "print_recreate" breakpoint_ops method for
10798    masked hardware watchpoints.  */
10799
10800 static void
10801 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10802 {
10803   struct watchpoint *w = (struct watchpoint *) b;
10804   char tmp[40];
10805
10806   switch (b->type)
10807     {
10808     case bp_hardware_watchpoint:
10809       fprintf_unfiltered (fp, "watch");
10810       break;
10811     case bp_read_watchpoint:
10812       fprintf_unfiltered (fp, "rwatch");
10813       break;
10814     case bp_access_watchpoint:
10815       fprintf_unfiltered (fp, "awatch");
10816       break;
10817     default:
10818       internal_error (__FILE__, __LINE__,
10819                       _("Invalid hardware watchpoint type."));
10820     }
10821
10822   sprintf_vma (tmp, w->hw_wp_mask);
10823   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10824   print_recreate_thread (b, fp);
10825 }
10826
10827 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10828
10829 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10830
10831 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10832
10833 static int
10834 is_masked_watchpoint (const struct breakpoint *b)
10835 {
10836   return b->ops == &masked_watchpoint_breakpoint_ops;
10837 }
10838
10839 /* accessflag:  hw_write:  watch write, 
10840                 hw_read:   watch read, 
10841                 hw_access: watch access (read or write) */
10842 static void
10843 watch_command_1 (const char *arg, int accessflag, int from_tty,
10844                  int just_location, int internal)
10845 {
10846   volatile struct gdb_exception e;
10847   struct breakpoint *b, *scope_breakpoint = NULL;
10848   struct expression *exp;
10849   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10850   struct value *val, *mark, *result;
10851   struct frame_info *frame;
10852   const char *exp_start = NULL;
10853   const char *exp_end = NULL;
10854   const char *tok, *end_tok;
10855   int toklen = -1;
10856   const char *cond_start = NULL;
10857   const char *cond_end = NULL;
10858   enum bptype bp_type;
10859   int thread = -1;
10860   int pc = 0;
10861   /* Flag to indicate whether we are going to use masks for
10862      the hardware watchpoint.  */
10863   int use_mask = 0;
10864   CORE_ADDR mask = 0;
10865   struct watchpoint *w;
10866   char *expression;
10867   struct cleanup *back_to;
10868
10869   /* Make sure that we actually have parameters to parse.  */
10870   if (arg != NULL && arg[0] != '\0')
10871     {
10872       const char *value_start;
10873
10874       exp_end = arg + strlen (arg);
10875
10876       /* Look for "parameter value" pairs at the end
10877          of the arguments string.  */
10878       for (tok = exp_end - 1; tok > arg; tok--)
10879         {
10880           /* Skip whitespace at the end of the argument list.  */
10881           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10882             tok--;
10883
10884           /* Find the beginning of the last token.
10885              This is the value of the parameter.  */
10886           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10887             tok--;
10888           value_start = tok + 1;
10889
10890           /* Skip whitespace.  */
10891           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10892             tok--;
10893
10894           end_tok = tok;
10895
10896           /* Find the beginning of the second to last token.
10897              This is the parameter itself.  */
10898           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10899             tok--;
10900           tok++;
10901           toklen = end_tok - tok + 1;
10902
10903           if (toklen == 6 && !strncmp (tok, "thread", 6))
10904             {
10905               /* At this point we've found a "thread" token, which means
10906                  the user is trying to set a watchpoint that triggers
10907                  only in a specific thread.  */
10908               char *endp;
10909
10910               if (thread != -1)
10911                 error(_("You can specify only one thread."));
10912
10913               /* Extract the thread ID from the next token.  */
10914               thread = strtol (value_start, &endp, 0);
10915
10916               /* Check if the user provided a valid numeric value for the
10917                  thread ID.  */
10918               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10919                 error (_("Invalid thread ID specification %s."), value_start);
10920
10921               /* Check if the thread actually exists.  */
10922               if (!valid_thread_id (thread))
10923                 invalid_thread_id_error (thread);
10924             }
10925           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10926             {
10927               /* We've found a "mask" token, which means the user wants to
10928                  create a hardware watchpoint that is going to have the mask
10929                  facility.  */
10930               struct value *mask_value, *mark;
10931
10932               if (use_mask)
10933                 error(_("You can specify only one mask."));
10934
10935               use_mask = just_location = 1;
10936
10937               mark = value_mark ();
10938               mask_value = parse_to_comma_and_eval (&value_start);
10939               mask = value_as_address (mask_value);
10940               value_free_to_mark (mark);
10941             }
10942           else
10943             /* We didn't recognize what we found.  We should stop here.  */
10944             break;
10945
10946           /* Truncate the string and get rid of the "parameter value" pair before
10947              the arguments string is parsed by the parse_exp_1 function.  */
10948           exp_end = tok;
10949         }
10950     }
10951   else
10952     exp_end = arg;
10953
10954   /* Parse the rest of the arguments.  From here on out, everything
10955      is in terms of a newly allocated string instead of the original
10956      ARG.  */
10957   innermost_block = NULL;
10958   expression = savestring (arg, exp_end - arg);
10959   back_to = make_cleanup (xfree, expression);
10960   exp_start = arg = expression;
10961   exp = parse_exp_1 (&arg, 0, 0, 0);
10962   exp_end = arg;
10963   /* Remove trailing whitespace from the expression before saving it.
10964      This makes the eventual display of the expression string a bit
10965      prettier.  */
10966   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10967     --exp_end;
10968
10969   /* Checking if the expression is not constant.  */
10970   if (watchpoint_exp_is_const (exp))
10971     {
10972       int len;
10973
10974       len = exp_end - exp_start;
10975       while (len > 0 && isspace (exp_start[len - 1]))
10976         len--;
10977       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10978     }
10979
10980   exp_valid_block = innermost_block;
10981   mark = value_mark ();
10982   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10983
10984   if (just_location)
10985     {
10986       int ret;
10987
10988       exp_valid_block = NULL;
10989       val = value_addr (result);
10990       release_value (val);
10991       value_free_to_mark (mark);
10992
10993       if (use_mask)
10994         {
10995           ret = target_masked_watch_num_registers (value_as_address (val),
10996                                                    mask);
10997           if (ret == -1)
10998             error (_("This target does not support masked watchpoints."));
10999           else if (ret == -2)
11000             error (_("Invalid mask or memory region."));
11001         }
11002     }
11003   else if (val != NULL)
11004     release_value (val);
11005
11006   tok = skip_spaces_const (arg);
11007   end_tok = skip_to_space_const (tok);
11008
11009   toklen = end_tok - tok;
11010   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11011     {
11012       struct expression *cond;
11013
11014       innermost_block = NULL;
11015       tok = cond_start = end_tok + 1;
11016       cond = parse_exp_1 (&tok, 0, 0, 0);
11017
11018       /* The watchpoint expression may not be local, but the condition
11019          may still be.  E.g.: `watch global if local > 0'.  */
11020       cond_exp_valid_block = innermost_block;
11021
11022       xfree (cond);
11023       cond_end = tok;
11024     }
11025   if (*tok)
11026     error (_("Junk at end of command."));
11027
11028   if (accessflag == hw_read)
11029     bp_type = bp_read_watchpoint;
11030   else if (accessflag == hw_access)
11031     bp_type = bp_access_watchpoint;
11032   else
11033     bp_type = bp_hardware_watchpoint;
11034
11035   frame = block_innermost_frame (exp_valid_block);
11036
11037   /* If the expression is "local", then set up a "watchpoint scope"
11038      breakpoint at the point where we've left the scope of the watchpoint
11039      expression.  Create the scope breakpoint before the watchpoint, so
11040      that we will encounter it first in bpstat_stop_status.  */
11041   if (exp_valid_block && frame)
11042     {
11043       if (frame_id_p (frame_unwind_caller_id (frame)))
11044         {
11045           scope_breakpoint
11046             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11047                                           frame_unwind_caller_pc (frame),
11048                                           bp_watchpoint_scope,
11049                                           &momentary_breakpoint_ops);
11050
11051           scope_breakpoint->enable_state = bp_enabled;
11052
11053           /* Automatically delete the breakpoint when it hits.  */
11054           scope_breakpoint->disposition = disp_del;
11055
11056           /* Only break in the proper frame (help with recursion).  */
11057           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11058
11059           /* Set the address at which we will stop.  */
11060           scope_breakpoint->loc->gdbarch
11061             = frame_unwind_caller_arch (frame);
11062           scope_breakpoint->loc->requested_address
11063             = frame_unwind_caller_pc (frame);
11064           scope_breakpoint->loc->address
11065             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11066                                          scope_breakpoint->loc->requested_address,
11067                                          scope_breakpoint->type);
11068         }
11069     }
11070
11071   /* Now set up the breakpoint.  */
11072
11073   w = XCNEW (struct watchpoint);
11074   b = &w->base;
11075   if (use_mask)
11076     init_raw_breakpoint_without_location (b, NULL, bp_type,
11077                                           &masked_watchpoint_breakpoint_ops);
11078   else
11079     init_raw_breakpoint_without_location (b, NULL, bp_type,
11080                                           &watchpoint_breakpoint_ops);
11081   b->thread = thread;
11082   b->disposition = disp_donttouch;
11083   b->pspace = current_program_space;
11084   w->exp = exp;
11085   w->exp_valid_block = exp_valid_block;
11086   w->cond_exp_valid_block = cond_exp_valid_block;
11087   if (just_location)
11088     {
11089       struct type *t = value_type (val);
11090       CORE_ADDR addr = value_as_address (val);
11091       char *name;
11092
11093       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11094       name = type_to_string (t);
11095
11096       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11097                                           core_addr_to_string (addr));
11098       xfree (name);
11099
11100       w->exp_string = xstrprintf ("-location %.*s",
11101                                   (int) (exp_end - exp_start), exp_start);
11102
11103       /* The above expression is in C.  */
11104       b->language = language_c;
11105     }
11106   else
11107     w->exp_string = savestring (exp_start, exp_end - exp_start);
11108
11109   if (use_mask)
11110     {
11111       w->hw_wp_mask = mask;
11112     }
11113   else
11114     {
11115       w->val = val;
11116       w->val_valid = 1;
11117     }
11118
11119   if (cond_start)
11120     b->cond_string = savestring (cond_start, cond_end - cond_start);
11121   else
11122     b->cond_string = 0;
11123
11124   if (frame)
11125     {
11126       w->watchpoint_frame = get_frame_id (frame);
11127       w->watchpoint_thread = inferior_ptid;
11128     }
11129   else
11130     {
11131       w->watchpoint_frame = null_frame_id;
11132       w->watchpoint_thread = null_ptid;
11133     }
11134
11135   if (scope_breakpoint != NULL)
11136     {
11137       /* The scope breakpoint is related to the watchpoint.  We will
11138          need to act on them together.  */
11139       b->related_breakpoint = scope_breakpoint;
11140       scope_breakpoint->related_breakpoint = b;
11141     }
11142
11143   if (!just_location)
11144     value_free_to_mark (mark);
11145
11146   TRY_CATCH (e, RETURN_MASK_ALL)
11147     {
11148       /* Finally update the new watchpoint.  This creates the locations
11149          that should be inserted.  */
11150       update_watchpoint (w, 1);
11151     }
11152   if (e.reason < 0)
11153     {
11154       delete_breakpoint (b);
11155       throw_exception (e);
11156     }
11157
11158   install_breakpoint (internal, b, 1);
11159   do_cleanups (back_to);
11160 }
11161
11162 /* Return count of debug registers needed to watch the given expression.
11163    If the watchpoint cannot be handled in hardware return zero.  */
11164
11165 static int
11166 can_use_hardware_watchpoint (struct value *v)
11167 {
11168   int found_memory_cnt = 0;
11169   struct value *head = v;
11170
11171   /* Did the user specifically forbid us to use hardware watchpoints? */
11172   if (!can_use_hw_watchpoints)
11173     return 0;
11174
11175   /* Make sure that the value of the expression depends only upon
11176      memory contents, and values computed from them within GDB.  If we
11177      find any register references or function calls, we can't use a
11178      hardware watchpoint.
11179
11180      The idea here is that evaluating an expression generates a series
11181      of values, one holding the value of every subexpression.  (The
11182      expression a*b+c has five subexpressions: a, b, a*b, c, and
11183      a*b+c.)  GDB's values hold almost enough information to establish
11184      the criteria given above --- they identify memory lvalues,
11185      register lvalues, computed values, etcetera.  So we can evaluate
11186      the expression, and then scan the chain of values that leaves
11187      behind to decide whether we can detect any possible change to the
11188      expression's final value using only hardware watchpoints.
11189
11190      However, I don't think that the values returned by inferior
11191      function calls are special in any way.  So this function may not
11192      notice that an expression involving an inferior function call
11193      can't be watched with hardware watchpoints.  FIXME.  */
11194   for (; v; v = value_next (v))
11195     {
11196       if (VALUE_LVAL (v) == lval_memory)
11197         {
11198           if (v != head && value_lazy (v))
11199             /* A lazy memory lvalue in the chain is one that GDB never
11200                needed to fetch; we either just used its address (e.g.,
11201                `a' in `a.b') or we never needed it at all (e.g., `a'
11202                in `a,b').  This doesn't apply to HEAD; if that is
11203                lazy then it was not readable, but watch it anyway.  */
11204             ;
11205           else
11206             {
11207               /* Ahh, memory we actually used!  Check if we can cover
11208                  it with hardware watchpoints.  */
11209               struct type *vtype = check_typedef (value_type (v));
11210
11211               /* We only watch structs and arrays if user asked for it
11212                  explicitly, never if they just happen to appear in a
11213                  middle of some value chain.  */
11214               if (v == head
11215                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11216                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11217                 {
11218                   CORE_ADDR vaddr = value_address (v);
11219                   int len;
11220                   int num_regs;
11221
11222                   len = (target_exact_watchpoints
11223                          && is_scalar_type_recursive (vtype))?
11224                     1 : TYPE_LENGTH (value_type (v));
11225
11226                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11227                   if (!num_regs)
11228                     return 0;
11229                   else
11230                     found_memory_cnt += num_regs;
11231                 }
11232             }
11233         }
11234       else if (VALUE_LVAL (v) != not_lval
11235                && deprecated_value_modifiable (v) == 0)
11236         return 0;       /* These are values from the history (e.g., $1).  */
11237       else if (VALUE_LVAL (v) == lval_register)
11238         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11239     }
11240
11241   /* The expression itself looks suitable for using a hardware
11242      watchpoint, but give the target machine a chance to reject it.  */
11243   return found_memory_cnt;
11244 }
11245
11246 void
11247 watch_command_wrapper (char *arg, int from_tty, int internal)
11248 {
11249   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11250 }
11251
11252 /* A helper function that looks for the "-location" argument and then
11253    calls watch_command_1.  */
11254
11255 static void
11256 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11257 {
11258   int just_location = 0;
11259
11260   if (arg
11261       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11262           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11263     {
11264       arg = skip_spaces (arg);
11265       just_location = 1;
11266     }
11267
11268   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11269 }
11270
11271 static void
11272 watch_command (char *arg, int from_tty)
11273 {
11274   watch_maybe_just_location (arg, hw_write, from_tty);
11275 }
11276
11277 void
11278 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11279 {
11280   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11281 }
11282
11283 static void
11284 rwatch_command (char *arg, int from_tty)
11285 {
11286   watch_maybe_just_location (arg, hw_read, from_tty);
11287 }
11288
11289 void
11290 awatch_command_wrapper (char *arg, int from_tty, int internal)
11291 {
11292   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11293 }
11294
11295 static void
11296 awatch_command (char *arg, int from_tty)
11297 {
11298   watch_maybe_just_location (arg, hw_access, from_tty);
11299 }
11300 \f
11301
11302 /* Helper routines for the until_command routine in infcmd.c.  Here
11303    because it uses the mechanisms of breakpoints.  */
11304
11305 struct until_break_command_continuation_args
11306 {
11307   struct breakpoint *breakpoint;
11308   struct breakpoint *breakpoint2;
11309   int thread_num;
11310 };
11311
11312 /* This function is called by fetch_inferior_event via the
11313    cmd_continuation pointer, to complete the until command.  It takes
11314    care of cleaning up the temporary breakpoints set up by the until
11315    command.  */
11316 static void
11317 until_break_command_continuation (void *arg, int err)
11318 {
11319   struct until_break_command_continuation_args *a = arg;
11320
11321   delete_breakpoint (a->breakpoint);
11322   if (a->breakpoint2)
11323     delete_breakpoint (a->breakpoint2);
11324   delete_longjmp_breakpoint (a->thread_num);
11325 }
11326
11327 void
11328 until_break_command (char *arg, int from_tty, int anywhere)
11329 {
11330   struct symtabs_and_lines sals;
11331   struct symtab_and_line sal;
11332   struct frame_info *frame;
11333   struct gdbarch *frame_gdbarch;
11334   struct frame_id stack_frame_id;
11335   struct frame_id caller_frame_id;
11336   struct breakpoint *breakpoint;
11337   struct breakpoint *breakpoint2 = NULL;
11338   struct cleanup *old_chain;
11339   int thread;
11340   struct thread_info *tp;
11341
11342   clear_proceed_status ();
11343
11344   /* Set a breakpoint where the user wants it and at return from
11345      this function.  */
11346
11347   if (last_displayed_sal_is_valid ())
11348     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11349                           get_last_displayed_symtab (),
11350                           get_last_displayed_line ());
11351   else
11352     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11353                           (struct symtab *) NULL, 0);
11354
11355   if (sals.nelts != 1)
11356     error (_("Couldn't get information on specified line."));
11357
11358   sal = sals.sals[0];
11359   xfree (sals.sals);    /* malloc'd, so freed.  */
11360
11361   if (*arg)
11362     error (_("Junk at end of arguments."));
11363
11364   resolve_sal_pc (&sal);
11365
11366   tp = inferior_thread ();
11367   thread = tp->num;
11368
11369   old_chain = make_cleanup (null_cleanup, NULL);
11370
11371   /* Note linespec handling above invalidates the frame chain.
11372      Installing a breakpoint also invalidates the frame chain (as it
11373      may need to switch threads), so do any frame handling before
11374      that.  */
11375
11376   frame = get_selected_frame (NULL);
11377   frame_gdbarch = get_frame_arch (frame);
11378   stack_frame_id = get_stack_frame_id (frame);
11379   caller_frame_id = frame_unwind_caller_id (frame);
11380
11381   /* Keep within the current frame, or in frames called by the current
11382      one.  */
11383
11384   if (frame_id_p (caller_frame_id))
11385     {
11386       struct symtab_and_line sal2;
11387
11388       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11389       sal2.pc = frame_unwind_caller_pc (frame);
11390       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11391                                               sal2,
11392                                               caller_frame_id,
11393                                               bp_until);
11394       make_cleanup_delete_breakpoint (breakpoint2);
11395
11396       set_longjmp_breakpoint (tp, caller_frame_id);
11397       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11398     }
11399
11400   /* set_momentary_breakpoint could invalidate FRAME.  */
11401   frame = NULL;
11402
11403   if (anywhere)
11404     /* If the user told us to continue until a specified location,
11405        we don't specify a frame at which we need to stop.  */
11406     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11407                                            null_frame_id, bp_until);
11408   else
11409     /* Otherwise, specify the selected frame, because we want to stop
11410        only at the very same frame.  */
11411     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11412                                            stack_frame_id, bp_until);
11413   make_cleanup_delete_breakpoint (breakpoint);
11414
11415   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11416
11417   /* If we are running asynchronously, and proceed call above has
11418      actually managed to start the target, arrange for breakpoints to
11419      be deleted when the target stops.  Otherwise, we're already
11420      stopped and delete breakpoints via cleanup chain.  */
11421
11422   if (target_can_async_p () && is_running (inferior_ptid))
11423     {
11424       struct until_break_command_continuation_args *args;
11425       args = xmalloc (sizeof (*args));
11426
11427       args->breakpoint = breakpoint;
11428       args->breakpoint2 = breakpoint2;
11429       args->thread_num = thread;
11430
11431       discard_cleanups (old_chain);
11432       add_continuation (inferior_thread (),
11433                         until_break_command_continuation, args,
11434                         xfree);
11435     }
11436   else
11437     do_cleanups (old_chain);
11438 }
11439
11440 /* This function attempts to parse an optional "if <cond>" clause
11441    from the arg string.  If one is not found, it returns NULL.
11442
11443    Else, it returns a pointer to the condition string.  (It does not
11444    attempt to evaluate the string against a particular block.)  And,
11445    it updates arg to point to the first character following the parsed
11446    if clause in the arg string.  */
11447
11448 char *
11449 ep_parse_optional_if_clause (char **arg)
11450 {
11451   char *cond_string;
11452
11453   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11454     return NULL;
11455
11456   /* Skip the "if" keyword.  */
11457   (*arg) += 2;
11458
11459   /* Skip any extra leading whitespace, and record the start of the
11460      condition string.  */
11461   *arg = skip_spaces (*arg);
11462   cond_string = *arg;
11463
11464   /* Assume that the condition occupies the remainder of the arg
11465      string.  */
11466   (*arg) += strlen (cond_string);
11467
11468   return cond_string;
11469 }
11470
11471 /* Commands to deal with catching events, such as signals, exceptions,
11472    process start/exit, etc.  */
11473
11474 typedef enum
11475 {
11476   catch_fork_temporary, catch_vfork_temporary,
11477   catch_fork_permanent, catch_vfork_permanent
11478 }
11479 catch_fork_kind;
11480
11481 static void
11482 catch_fork_command_1 (char *arg, int from_tty, 
11483                       struct cmd_list_element *command)
11484 {
11485   struct gdbarch *gdbarch = get_current_arch ();
11486   char *cond_string = NULL;
11487   catch_fork_kind fork_kind;
11488   int tempflag;
11489
11490   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11491   tempflag = (fork_kind == catch_fork_temporary
11492               || fork_kind == catch_vfork_temporary);
11493
11494   if (!arg)
11495     arg = "";
11496   arg = skip_spaces (arg);
11497
11498   /* The allowed syntax is:
11499      catch [v]fork
11500      catch [v]fork if <cond>
11501
11502      First, check if there's an if clause.  */
11503   cond_string = ep_parse_optional_if_clause (&arg);
11504
11505   if ((*arg != '\0') && !isspace (*arg))
11506     error (_("Junk at end of arguments."));
11507
11508   /* If this target supports it, create a fork or vfork catchpoint
11509      and enable reporting of such events.  */
11510   switch (fork_kind)
11511     {
11512     case catch_fork_temporary:
11513     case catch_fork_permanent:
11514       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11515                                           &catch_fork_breakpoint_ops);
11516       break;
11517     case catch_vfork_temporary:
11518     case catch_vfork_permanent:
11519       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11520                                           &catch_vfork_breakpoint_ops);
11521       break;
11522     default:
11523       error (_("unsupported or unknown fork kind; cannot catch it"));
11524       break;
11525     }
11526 }
11527
11528 static void
11529 catch_exec_command_1 (char *arg, int from_tty, 
11530                       struct cmd_list_element *command)
11531 {
11532   struct exec_catchpoint *c;
11533   struct gdbarch *gdbarch = get_current_arch ();
11534   int tempflag;
11535   char *cond_string = NULL;
11536
11537   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11538
11539   if (!arg)
11540     arg = "";
11541   arg = skip_spaces (arg);
11542
11543   /* The allowed syntax is:
11544      catch exec
11545      catch exec if <cond>
11546
11547      First, check if there's an if clause.  */
11548   cond_string = ep_parse_optional_if_clause (&arg);
11549
11550   if ((*arg != '\0') && !isspace (*arg))
11551     error (_("Junk at end of arguments."));
11552
11553   c = XNEW (struct exec_catchpoint);
11554   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11555                    &catch_exec_breakpoint_ops);
11556   c->exec_pathname = NULL;
11557
11558   install_breakpoint (0, &c->base, 1);
11559 }
11560
11561 void
11562 init_ada_exception_breakpoint (struct breakpoint *b,
11563                                struct gdbarch *gdbarch,
11564                                struct symtab_and_line sal,
11565                                char *addr_string,
11566                                const struct breakpoint_ops *ops,
11567                                int tempflag,
11568                                int from_tty)
11569 {
11570   if (from_tty)
11571     {
11572       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11573       if (!loc_gdbarch)
11574         loc_gdbarch = gdbarch;
11575
11576       describe_other_breakpoints (loc_gdbarch,
11577                                   sal.pspace, sal.pc, sal.section, -1);
11578       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11579          version for exception catchpoints, because two catchpoints
11580          used for different exception names will use the same address.
11581          In this case, a "breakpoint ... also set at..." warning is
11582          unproductive.  Besides, the warning phrasing is also a bit
11583          inappropriate, we should use the word catchpoint, and tell
11584          the user what type of catchpoint it is.  The above is good
11585          enough for now, though.  */
11586     }
11587
11588   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11589
11590   b->enable_state = bp_enabled;
11591   b->disposition = tempflag ? disp_del : disp_donttouch;
11592   b->addr_string = addr_string;
11593   b->language = language_ada;
11594 }
11595
11596 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11597    filter list, or NULL if no filtering is required.  */
11598 static VEC(int) *
11599 catch_syscall_split_args (char *arg)
11600 {
11601   VEC(int) *result = NULL;
11602   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11603
11604   while (*arg != '\0')
11605     {
11606       int i, syscall_number;
11607       char *endptr;
11608       char cur_name[128];
11609       struct syscall s;
11610
11611       /* Skip whitespace.  */
11612       arg = skip_spaces (arg);
11613
11614       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11615         cur_name[i] = arg[i];
11616       cur_name[i] = '\0';
11617       arg += i;
11618
11619       /* Check if the user provided a syscall name or a number.  */
11620       syscall_number = (int) strtol (cur_name, &endptr, 0);
11621       if (*endptr == '\0')
11622         get_syscall_by_number (syscall_number, &s);
11623       else
11624         {
11625           /* We have a name.  Let's check if it's valid and convert it
11626              to a number.  */
11627           get_syscall_by_name (cur_name, &s);
11628
11629           if (s.number == UNKNOWN_SYSCALL)
11630             /* Here we have to issue an error instead of a warning,
11631                because GDB cannot do anything useful if there's no
11632                syscall number to be caught.  */
11633             error (_("Unknown syscall name '%s'."), cur_name);
11634         }
11635
11636       /* Ok, it's valid.  */
11637       VEC_safe_push (int, result, s.number);
11638     }
11639
11640   discard_cleanups (cleanup);
11641   return result;
11642 }
11643
11644 /* Implement the "catch syscall" command.  */
11645
11646 static void
11647 catch_syscall_command_1 (char *arg, int from_tty, 
11648                          struct cmd_list_element *command)
11649 {
11650   int tempflag;
11651   VEC(int) *filter;
11652   struct syscall s;
11653   struct gdbarch *gdbarch = get_current_arch ();
11654
11655   /* Checking if the feature if supported.  */
11656   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11657     error (_("The feature 'catch syscall' is not supported on \
11658 this architecture yet."));
11659
11660   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11661
11662   arg = skip_spaces (arg);
11663
11664   /* We need to do this first "dummy" translation in order
11665      to get the syscall XML file loaded or, most important,
11666      to display a warning to the user if there's no XML file
11667      for his/her architecture.  */
11668   get_syscall_by_number (0, &s);
11669
11670   /* The allowed syntax is:
11671      catch syscall
11672      catch syscall <name | number> [<name | number> ... <name | number>]
11673
11674      Let's check if there's a syscall name.  */
11675
11676   if (arg != NULL)
11677     filter = catch_syscall_split_args (arg);
11678   else
11679     filter = NULL;
11680
11681   create_syscall_event_catchpoint (tempflag, filter,
11682                                    &catch_syscall_breakpoint_ops);
11683 }
11684
11685 static void
11686 catch_command (char *arg, int from_tty)
11687 {
11688   error (_("Catch requires an event name."));
11689 }
11690 \f
11691
11692 static void
11693 tcatch_command (char *arg, int from_tty)
11694 {
11695   error (_("Catch requires an event name."));
11696 }
11697
11698 /* A qsort comparison function that sorts breakpoints in order.  */
11699
11700 static int
11701 compare_breakpoints (const void *a, const void *b)
11702 {
11703   const breakpoint_p *ba = a;
11704   uintptr_t ua = (uintptr_t) *ba;
11705   const breakpoint_p *bb = b;
11706   uintptr_t ub = (uintptr_t) *bb;
11707
11708   if ((*ba)->number < (*bb)->number)
11709     return -1;
11710   else if ((*ba)->number > (*bb)->number)
11711     return 1;
11712
11713   /* Now sort by address, in case we see, e..g, two breakpoints with
11714      the number 0.  */
11715   if (ua < ub)
11716     return -1;
11717   return ua > ub ? 1 : 0;
11718 }
11719
11720 /* Delete breakpoints by address or line.  */
11721
11722 static void
11723 clear_command (char *arg, int from_tty)
11724 {
11725   struct breakpoint *b, *prev;
11726   VEC(breakpoint_p) *found = 0;
11727   int ix;
11728   int default_match;
11729   struct symtabs_and_lines sals;
11730   struct symtab_and_line sal;
11731   int i;
11732   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11733
11734   if (arg)
11735     {
11736       sals = decode_line_with_current_source (arg,
11737                                               (DECODE_LINE_FUNFIRSTLINE
11738                                                | DECODE_LINE_LIST_MODE));
11739       make_cleanup (xfree, sals.sals);
11740       default_match = 0;
11741     }
11742   else
11743     {
11744       sals.sals = (struct symtab_and_line *)
11745         xmalloc (sizeof (struct symtab_and_line));
11746       make_cleanup (xfree, sals.sals);
11747       init_sal (&sal);          /* Initialize to zeroes.  */
11748
11749       /* Set sal's line, symtab, pc, and pspace to the values
11750          corresponding to the last call to print_frame_info.  If the
11751          codepoint is not valid, this will set all the fields to 0.  */
11752       get_last_displayed_sal (&sal);
11753       if (sal.symtab == 0)
11754         error (_("No source file specified."));
11755
11756       sals.sals[0] = sal;
11757       sals.nelts = 1;
11758
11759       default_match = 1;
11760     }
11761
11762   /* We don't call resolve_sal_pc here.  That's not as bad as it
11763      seems, because all existing breakpoints typically have both
11764      file/line and pc set.  So, if clear is given file/line, we can
11765      match this to existing breakpoint without obtaining pc at all.
11766
11767      We only support clearing given the address explicitly 
11768      present in breakpoint table.  Say, we've set breakpoint 
11769      at file:line.  There were several PC values for that file:line,
11770      due to optimization, all in one block.
11771
11772      We've picked one PC value.  If "clear" is issued with another
11773      PC corresponding to the same file:line, the breakpoint won't
11774      be cleared.  We probably can still clear the breakpoint, but 
11775      since the other PC value is never presented to user, user
11776      can only find it by guessing, and it does not seem important
11777      to support that.  */
11778
11779   /* For each line spec given, delete bps which correspond to it.  Do
11780      it in two passes, solely to preserve the current behavior that
11781      from_tty is forced true if we delete more than one
11782      breakpoint.  */
11783
11784   found = NULL;
11785   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11786   for (i = 0; i < sals.nelts; i++)
11787     {
11788       const char *sal_fullname;
11789
11790       /* If exact pc given, clear bpts at that pc.
11791          If line given (pc == 0), clear all bpts on specified line.
11792          If defaulting, clear all bpts on default line
11793          or at default pc.
11794
11795          defaulting    sal.pc != 0    tests to do
11796
11797          0              1             pc
11798          1              1             pc _and_ line
11799          0              0             line
11800          1              0             <can't happen> */
11801
11802       sal = sals.sals[i];
11803       sal_fullname = (sal.symtab == NULL
11804                       ? NULL : symtab_to_fullname (sal.symtab));
11805
11806       /* Find all matching breakpoints and add them to 'found'.  */
11807       ALL_BREAKPOINTS (b)
11808         {
11809           int match = 0;
11810           /* Are we going to delete b?  */
11811           if (b->type != bp_none && !is_watchpoint (b))
11812             {
11813               struct bp_location *loc = b->loc;
11814               for (; loc; loc = loc->next)
11815                 {
11816                   /* If the user specified file:line, don't allow a PC
11817                      match.  This matches historical gdb behavior.  */
11818                   int pc_match = (!sal.explicit_line
11819                                   && sal.pc
11820                                   && (loc->pspace == sal.pspace)
11821                                   && (loc->address == sal.pc)
11822                                   && (!section_is_overlay (loc->section)
11823                                       || loc->section == sal.section));
11824                   int line_match = 0;
11825
11826                   if ((default_match || sal.explicit_line)
11827                       && loc->symtab != NULL
11828                       && sal_fullname != NULL
11829                       && sal.pspace == loc->pspace
11830                       && loc->line_number == sal.line
11831                       && filename_cmp (symtab_to_fullname (loc->symtab),
11832                                        sal_fullname) == 0)
11833                     line_match = 1;
11834
11835                   if (pc_match || line_match)
11836                     {
11837                       match = 1;
11838                       break;
11839                     }
11840                 }
11841             }
11842
11843           if (match)
11844             VEC_safe_push(breakpoint_p, found, b);
11845         }
11846     }
11847
11848   /* Now go thru the 'found' chain and delete them.  */
11849   if (VEC_empty(breakpoint_p, found))
11850     {
11851       if (arg)
11852         error (_("No breakpoint at %s."), arg);
11853       else
11854         error (_("No breakpoint at this line."));
11855     }
11856
11857   /* Remove duplicates from the vec.  */
11858   qsort (VEC_address (breakpoint_p, found),
11859          VEC_length (breakpoint_p, found),
11860          sizeof (breakpoint_p),
11861          compare_breakpoints);
11862   prev = VEC_index (breakpoint_p, found, 0);
11863   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11864     {
11865       if (b == prev)
11866         {
11867           VEC_ordered_remove (breakpoint_p, found, ix);
11868           --ix;
11869         }
11870     }
11871
11872   if (VEC_length(breakpoint_p, found) > 1)
11873     from_tty = 1;       /* Always report if deleted more than one.  */
11874   if (from_tty)
11875     {
11876       if (VEC_length(breakpoint_p, found) == 1)
11877         printf_unfiltered (_("Deleted breakpoint "));
11878       else
11879         printf_unfiltered (_("Deleted breakpoints "));
11880     }
11881
11882   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11883     {
11884       if (from_tty)
11885         printf_unfiltered ("%d ", b->number);
11886       delete_breakpoint (b);
11887     }
11888   if (from_tty)
11889     putchar_unfiltered ('\n');
11890
11891   do_cleanups (cleanups);
11892 }
11893 \f
11894 /* Delete breakpoint in BS if they are `delete' breakpoints and
11895    all breakpoints that are marked for deletion, whether hit or not.
11896    This is called after any breakpoint is hit, or after errors.  */
11897
11898 void
11899 breakpoint_auto_delete (bpstat bs)
11900 {
11901   struct breakpoint *b, *b_tmp;
11902
11903   for (; bs; bs = bs->next)
11904     if (bs->breakpoint_at
11905         && bs->breakpoint_at->disposition == disp_del
11906         && bs->stop)
11907       delete_breakpoint (bs->breakpoint_at);
11908
11909   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11910   {
11911     if (b->disposition == disp_del_at_next_stop)
11912       delete_breakpoint (b);
11913   }
11914 }
11915
11916 /* A comparison function for bp_location AP and BP being interfaced to
11917    qsort.  Sort elements primarily by their ADDRESS (no matter what
11918    does breakpoint_address_is_meaningful say for its OWNER),
11919    secondarily by ordering first bp_permanent OWNERed elements and
11920    terciarily just ensuring the array is sorted stable way despite
11921    qsort being an unstable algorithm.  */
11922
11923 static int
11924 bp_location_compare (const void *ap, const void *bp)
11925 {
11926   struct bp_location *a = *(void **) ap;
11927   struct bp_location *b = *(void **) bp;
11928   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11929   int a_perm = a->owner->enable_state == bp_permanent;
11930   int b_perm = b->owner->enable_state == bp_permanent;
11931
11932   if (a->address != b->address)
11933     return (a->address > b->address) - (a->address < b->address);
11934
11935   /* Sort locations at the same address by their pspace number, keeping
11936      locations of the same inferior (in a multi-inferior environment)
11937      grouped.  */
11938
11939   if (a->pspace->num != b->pspace->num)
11940     return ((a->pspace->num > b->pspace->num)
11941             - (a->pspace->num < b->pspace->num));
11942
11943   /* Sort permanent breakpoints first.  */
11944   if (a_perm != b_perm)
11945     return (a_perm < b_perm) - (a_perm > b_perm);
11946
11947   /* Make the internal GDB representation stable across GDB runs
11948      where A and B memory inside GDB can differ.  Breakpoint locations of
11949      the same type at the same address can be sorted in arbitrary order.  */
11950
11951   if (a->owner->number != b->owner->number)
11952     return ((a->owner->number > b->owner->number)
11953             - (a->owner->number < b->owner->number));
11954
11955   return (a > b) - (a < b);
11956 }
11957
11958 /* Set bp_location_placed_address_before_address_max and
11959    bp_location_shadow_len_after_address_max according to the current
11960    content of the bp_location array.  */
11961
11962 static void
11963 bp_location_target_extensions_update (void)
11964 {
11965   struct bp_location *bl, **blp_tmp;
11966
11967   bp_location_placed_address_before_address_max = 0;
11968   bp_location_shadow_len_after_address_max = 0;
11969
11970   ALL_BP_LOCATIONS (bl, blp_tmp)
11971     {
11972       CORE_ADDR start, end, addr;
11973
11974       if (!bp_location_has_shadow (bl))
11975         continue;
11976
11977       start = bl->target_info.placed_address;
11978       end = start + bl->target_info.shadow_len;
11979
11980       gdb_assert (bl->address >= start);
11981       addr = bl->address - start;
11982       if (addr > bp_location_placed_address_before_address_max)
11983         bp_location_placed_address_before_address_max = addr;
11984
11985       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11986
11987       gdb_assert (bl->address < end);
11988       addr = end - bl->address;
11989       if (addr > bp_location_shadow_len_after_address_max)
11990         bp_location_shadow_len_after_address_max = addr;
11991     }
11992 }
11993
11994 /* Download tracepoint locations if they haven't been.  */
11995
11996 static void
11997 download_tracepoint_locations (void)
11998 {
11999   struct breakpoint *b;
12000   struct cleanup *old_chain;
12001
12002   if (!target_can_download_tracepoint ())
12003     return;
12004
12005   old_chain = save_current_space_and_thread ();
12006
12007   ALL_TRACEPOINTS (b)
12008     {
12009       struct bp_location *bl;
12010       struct tracepoint *t;
12011       int bp_location_downloaded = 0;
12012
12013       if ((b->type == bp_fast_tracepoint
12014            ? !may_insert_fast_tracepoints
12015            : !may_insert_tracepoints))
12016         continue;
12017
12018       for (bl = b->loc; bl; bl = bl->next)
12019         {
12020           /* In tracepoint, locations are _never_ duplicated, so
12021              should_be_inserted is equivalent to
12022              unduplicated_should_be_inserted.  */
12023           if (!should_be_inserted (bl) || bl->inserted)
12024             continue;
12025
12026           switch_to_program_space_and_thread (bl->pspace);
12027
12028           target_download_tracepoint (bl);
12029
12030           bl->inserted = 1;
12031           bp_location_downloaded = 1;
12032         }
12033       t = (struct tracepoint *) b;
12034       t->number_on_target = b->number;
12035       if (bp_location_downloaded)
12036         observer_notify_breakpoint_modified (b);
12037     }
12038
12039   do_cleanups (old_chain);
12040 }
12041
12042 /* Swap the insertion/duplication state between two locations.  */
12043
12044 static void
12045 swap_insertion (struct bp_location *left, struct bp_location *right)
12046 {
12047   const int left_inserted = left->inserted;
12048   const int left_duplicate = left->duplicate;
12049   const int left_needs_update = left->needs_update;
12050   const struct bp_target_info left_target_info = left->target_info;
12051
12052   /* Locations of tracepoints can never be duplicated.  */
12053   if (is_tracepoint (left->owner))
12054     gdb_assert (!left->duplicate);
12055   if (is_tracepoint (right->owner))
12056     gdb_assert (!right->duplicate);
12057
12058   left->inserted = right->inserted;
12059   left->duplicate = right->duplicate;
12060   left->needs_update = right->needs_update;
12061   left->target_info = right->target_info;
12062   right->inserted = left_inserted;
12063   right->duplicate = left_duplicate;
12064   right->needs_update = left_needs_update;
12065   right->target_info = left_target_info;
12066 }
12067
12068 /* Force the re-insertion of the locations at ADDRESS.  This is called
12069    once a new/deleted/modified duplicate location is found and we are evaluating
12070    conditions on the target's side.  Such conditions need to be updated on
12071    the target.  */
12072
12073 static void
12074 force_breakpoint_reinsertion (struct bp_location *bl)
12075 {
12076   struct bp_location **locp = NULL, **loc2p;
12077   struct bp_location *loc;
12078   CORE_ADDR address = 0;
12079   int pspace_num;
12080
12081   address = bl->address;
12082   pspace_num = bl->pspace->num;
12083
12084   /* This is only meaningful if the target is
12085      evaluating conditions and if the user has
12086      opted for condition evaluation on the target's
12087      side.  */
12088   if (gdb_evaluates_breakpoint_condition_p ()
12089       || !target_supports_evaluation_of_breakpoint_conditions ())
12090     return;
12091
12092   /* Flag all breakpoint locations with this address and
12093      the same program space as the location
12094      as "its condition has changed".  We need to
12095      update the conditions on the target's side.  */
12096   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12097     {
12098       loc = *loc2p;
12099
12100       if (!is_breakpoint (loc->owner)
12101           || pspace_num != loc->pspace->num)
12102         continue;
12103
12104       /* Flag the location appropriately.  We use a different state to
12105          let everyone know that we already updated the set of locations
12106          with addr bl->address and program space bl->pspace.  This is so
12107          we don't have to keep calling these functions just to mark locations
12108          that have already been marked.  */
12109       loc->condition_changed = condition_updated;
12110
12111       /* Free the agent expression bytecode as well.  We will compute
12112          it later on.  */
12113       if (loc->cond_bytecode)
12114         {
12115           free_agent_expr (loc->cond_bytecode);
12116           loc->cond_bytecode = NULL;
12117         }
12118     }
12119 }
12120
12121 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12122    into the inferior, only remove already-inserted locations that no
12123    longer should be inserted.  Functions that delete a breakpoint or
12124    breakpoints should pass false, so that deleting a breakpoint
12125    doesn't have the side effect of inserting the locations of other
12126    breakpoints that are marked not-inserted, but should_be_inserted
12127    returns true on them.
12128
12129    This behaviour is useful is situations close to tear-down -- e.g.,
12130    after an exec, while the target still has execution, but breakpoint
12131    shadows of the previous executable image should *NOT* be restored
12132    to the new image; or before detaching, where the target still has
12133    execution and wants to delete breakpoints from GDB's lists, and all
12134    breakpoints had already been removed from the inferior.  */
12135
12136 static void
12137 update_global_location_list (int should_insert)
12138 {
12139   struct breakpoint *b;
12140   struct bp_location **locp, *loc;
12141   struct cleanup *cleanups;
12142   /* Last breakpoint location address that was marked for update.  */
12143   CORE_ADDR last_addr = 0;
12144   /* Last breakpoint location program space that was marked for update.  */
12145   int last_pspace_num = -1;
12146
12147   /* Used in the duplicates detection below.  When iterating over all
12148      bp_locations, points to the first bp_location of a given address.
12149      Breakpoints and watchpoints of different types are never
12150      duplicates of each other.  Keep one pointer for each type of
12151      breakpoint/watchpoint, so we only need to loop over all locations
12152      once.  */
12153   struct bp_location *bp_loc_first;  /* breakpoint */
12154   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12155   struct bp_location *awp_loc_first; /* access watchpoint */
12156   struct bp_location *rwp_loc_first; /* read watchpoint */
12157
12158   /* Saved former bp_location array which we compare against the newly
12159      built bp_location from the current state of ALL_BREAKPOINTS.  */
12160   struct bp_location **old_location, **old_locp;
12161   unsigned old_location_count;
12162
12163   old_location = bp_location;
12164   old_location_count = bp_location_count;
12165   bp_location = NULL;
12166   bp_location_count = 0;
12167   cleanups = make_cleanup (xfree, old_location);
12168
12169   ALL_BREAKPOINTS (b)
12170     for (loc = b->loc; loc; loc = loc->next)
12171       bp_location_count++;
12172
12173   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12174   locp = bp_location;
12175   ALL_BREAKPOINTS (b)
12176     for (loc = b->loc; loc; loc = loc->next)
12177       *locp++ = loc;
12178   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12179          bp_location_compare);
12180
12181   bp_location_target_extensions_update ();
12182
12183   /* Identify bp_location instances that are no longer present in the
12184      new list, and therefore should be freed.  Note that it's not
12185      necessary that those locations should be removed from inferior --
12186      if there's another location at the same address (previously
12187      marked as duplicate), we don't need to remove/insert the
12188      location.
12189      
12190      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12191      and former bp_location array state respectively.  */
12192
12193   locp = bp_location;
12194   for (old_locp = old_location; old_locp < old_location + old_location_count;
12195        old_locp++)
12196     {
12197       struct bp_location *old_loc = *old_locp;
12198       struct bp_location **loc2p;
12199
12200       /* Tells if 'old_loc' is found among the new locations.  If
12201          not, we have to free it.  */
12202       int found_object = 0;
12203       /* Tells if the location should remain inserted in the target.  */
12204       int keep_in_target = 0;
12205       int removed = 0;
12206
12207       /* Skip LOCP entries which will definitely never be needed.
12208          Stop either at or being the one matching OLD_LOC.  */
12209       while (locp < bp_location + bp_location_count
12210              && (*locp)->address < old_loc->address)
12211         locp++;
12212
12213       for (loc2p = locp;
12214            (loc2p < bp_location + bp_location_count
12215             && (*loc2p)->address == old_loc->address);
12216            loc2p++)
12217         {
12218           /* Check if this is a new/duplicated location or a duplicated
12219              location that had its condition modified.  If so, we want to send
12220              its condition to the target if evaluation of conditions is taking
12221              place there.  */
12222           if ((*loc2p)->condition_changed == condition_modified
12223               && (last_addr != old_loc->address
12224                   || last_pspace_num != old_loc->pspace->num))
12225             {
12226               force_breakpoint_reinsertion (*loc2p);
12227               last_pspace_num = old_loc->pspace->num;
12228             }
12229
12230           if (*loc2p == old_loc)
12231             found_object = 1;
12232         }
12233
12234       /* We have already handled this address, update it so that we don't
12235          have to go through updates again.  */
12236       last_addr = old_loc->address;
12237
12238       /* Target-side condition evaluation: Handle deleted locations.  */
12239       if (!found_object)
12240         force_breakpoint_reinsertion (old_loc);
12241
12242       /* If this location is no longer present, and inserted, look if
12243          there's maybe a new location at the same address.  If so,
12244          mark that one inserted, and don't remove this one.  This is
12245          needed so that we don't have a time window where a breakpoint
12246          at certain location is not inserted.  */
12247
12248       if (old_loc->inserted)
12249         {
12250           /* If the location is inserted now, we might have to remove
12251              it.  */
12252
12253           if (found_object && should_be_inserted (old_loc))
12254             {
12255               /* The location is still present in the location list,
12256                  and still should be inserted.  Don't do anything.  */
12257               keep_in_target = 1;
12258             }
12259           else
12260             {
12261               /* This location still exists, but it won't be kept in the
12262                  target since it may have been disabled.  We proceed to
12263                  remove its target-side condition.  */
12264
12265               /* The location is either no longer present, or got
12266                  disabled.  See if there's another location at the
12267                  same address, in which case we don't need to remove
12268                  this one from the target.  */
12269
12270               /* OLD_LOC comes from existing struct breakpoint.  */
12271               if (breakpoint_address_is_meaningful (old_loc->owner))
12272                 {
12273                   for (loc2p = locp;
12274                        (loc2p < bp_location + bp_location_count
12275                         && (*loc2p)->address == old_loc->address);
12276                        loc2p++)
12277                     {
12278                       struct bp_location *loc2 = *loc2p;
12279
12280                       if (breakpoint_locations_match (loc2, old_loc))
12281                         {
12282                           /* Read watchpoint locations are switched to
12283                              access watchpoints, if the former are not
12284                              supported, but the latter are.  */
12285                           if (is_hardware_watchpoint (old_loc->owner))
12286                             {
12287                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12288                               loc2->watchpoint_type = old_loc->watchpoint_type;
12289                             }
12290
12291                           /* loc2 is a duplicated location. We need to check
12292                              if it should be inserted in case it will be
12293                              unduplicated.  */
12294                           if (loc2 != old_loc
12295                               && unduplicated_should_be_inserted (loc2))
12296                             {
12297                               swap_insertion (old_loc, loc2);
12298                               keep_in_target = 1;
12299                               break;
12300                             }
12301                         }
12302                     }
12303                 }
12304             }
12305
12306           if (!keep_in_target)
12307             {
12308               if (remove_breakpoint (old_loc, mark_uninserted))
12309                 {
12310                   /* This is just about all we can do.  We could keep
12311                      this location on the global list, and try to
12312                      remove it next time, but there's no particular
12313                      reason why we will succeed next time.
12314                      
12315                      Note that at this point, old_loc->owner is still
12316                      valid, as delete_breakpoint frees the breakpoint
12317                      only after calling us.  */
12318                   printf_filtered (_("warning: Error removing "
12319                                      "breakpoint %d\n"), 
12320                                    old_loc->owner->number);
12321                 }
12322               removed = 1;
12323             }
12324         }
12325
12326       if (!found_object)
12327         {
12328           if (removed && non_stop
12329               && breakpoint_address_is_meaningful (old_loc->owner)
12330               && !is_hardware_watchpoint (old_loc->owner))
12331             {
12332               /* This location was removed from the target.  In
12333                  non-stop mode, a race condition is possible where
12334                  we've removed a breakpoint, but stop events for that
12335                  breakpoint are already queued and will arrive later.
12336                  We apply an heuristic to be able to distinguish such
12337                  SIGTRAPs from other random SIGTRAPs: we keep this
12338                  breakpoint location for a bit, and will retire it
12339                  after we see some number of events.  The theory here
12340                  is that reporting of events should, "on the average",
12341                  be fair, so after a while we'll see events from all
12342                  threads that have anything of interest, and no longer
12343                  need to keep this breakpoint location around.  We
12344                  don't hold locations forever so to reduce chances of
12345                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12346                  SIGTRAP.
12347
12348                  The heuristic failing can be disastrous on
12349                  decr_pc_after_break targets.
12350
12351                  On decr_pc_after_break targets, like e.g., x86-linux,
12352                  if we fail to recognize a late breakpoint SIGTRAP,
12353                  because events_till_retirement has reached 0 too
12354                  soon, we'll fail to do the PC adjustment, and report
12355                  a random SIGTRAP to the user.  When the user resumes
12356                  the inferior, it will most likely immediately crash
12357                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12358                  corrupted, because of being resumed e.g., in the
12359                  middle of a multi-byte instruction, or skipped a
12360                  one-byte instruction.  This was actually seen happen
12361                  on native x86-linux, and should be less rare on
12362                  targets that do not support new thread events, like
12363                  remote, due to the heuristic depending on
12364                  thread_count.
12365
12366                  Mistaking a random SIGTRAP for a breakpoint trap
12367                  causes similar symptoms (PC adjustment applied when
12368                  it shouldn't), but then again, playing with SIGTRAPs
12369                  behind the debugger's back is asking for trouble.
12370
12371                  Since hardware watchpoint traps are always
12372                  distinguishable from other traps, so we don't need to
12373                  apply keep hardware watchpoint moribund locations
12374                  around.  We simply always ignore hardware watchpoint
12375                  traps we can no longer explain.  */
12376
12377               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12378               old_loc->owner = NULL;
12379
12380               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12381             }
12382           else
12383             {
12384               old_loc->owner = NULL;
12385               decref_bp_location (&old_loc);
12386             }
12387         }
12388     }
12389
12390   /* Rescan breakpoints at the same address and section, marking the
12391      first one as "first" and any others as "duplicates".  This is so
12392      that the bpt instruction is only inserted once.  If we have a
12393      permanent breakpoint at the same place as BPT, make that one the
12394      official one, and the rest as duplicates.  Permanent breakpoints
12395      are sorted first for the same address.
12396
12397      Do the same for hardware watchpoints, but also considering the
12398      watchpoint's type (regular/access/read) and length.  */
12399
12400   bp_loc_first = NULL;
12401   wp_loc_first = NULL;
12402   awp_loc_first = NULL;
12403   rwp_loc_first = NULL;
12404   ALL_BP_LOCATIONS (loc, locp)
12405     {
12406       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12407          non-NULL.  */
12408       struct bp_location **loc_first_p;
12409       b = loc->owner;
12410
12411       if (!unduplicated_should_be_inserted (loc)
12412           || !breakpoint_address_is_meaningful (b)
12413           /* Don't detect duplicate for tracepoint locations because they are
12414            never duplicated.  See the comments in field `duplicate' of
12415            `struct bp_location'.  */
12416           || is_tracepoint (b))
12417         {
12418           /* Clear the condition modification flag.  */
12419           loc->condition_changed = condition_unchanged;
12420           continue;
12421         }
12422
12423       /* Permanent breakpoint should always be inserted.  */
12424       if (b->enable_state == bp_permanent && ! loc->inserted)
12425         internal_error (__FILE__, __LINE__,
12426                         _("allegedly permanent breakpoint is not "
12427                         "actually inserted"));
12428
12429       if (b->type == bp_hardware_watchpoint)
12430         loc_first_p = &wp_loc_first;
12431       else if (b->type == bp_read_watchpoint)
12432         loc_first_p = &rwp_loc_first;
12433       else if (b->type == bp_access_watchpoint)
12434         loc_first_p = &awp_loc_first;
12435       else
12436         loc_first_p = &bp_loc_first;
12437
12438       if (*loc_first_p == NULL
12439           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12440           || !breakpoint_locations_match (loc, *loc_first_p))
12441         {
12442           *loc_first_p = loc;
12443           loc->duplicate = 0;
12444
12445           if (is_breakpoint (loc->owner) && loc->condition_changed)
12446             {
12447               loc->needs_update = 1;
12448               /* Clear the condition modification flag.  */
12449               loc->condition_changed = condition_unchanged;
12450             }
12451           continue;
12452         }
12453
12454
12455       /* This and the above ensure the invariant that the first location
12456          is not duplicated, and is the inserted one.
12457          All following are marked as duplicated, and are not inserted.  */
12458       if (loc->inserted)
12459         swap_insertion (loc, *loc_first_p);
12460       loc->duplicate = 1;
12461
12462       /* Clear the condition modification flag.  */
12463       loc->condition_changed = condition_unchanged;
12464
12465       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12466           && b->enable_state != bp_permanent)
12467         internal_error (__FILE__, __LINE__,
12468                         _("another breakpoint was inserted on top of "
12469                         "a permanent breakpoint"));
12470     }
12471
12472   if (breakpoints_always_inserted_mode ()
12473       && (have_live_inferiors ()
12474           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12475     {
12476       if (should_insert)
12477         insert_breakpoint_locations ();
12478       else
12479         {
12480           /* Though should_insert is false, we may need to update conditions
12481              on the target's side if it is evaluating such conditions.  We
12482              only update conditions for locations that are marked
12483              "needs_update".  */
12484           update_inserted_breakpoint_locations ();
12485         }
12486     }
12487
12488   if (should_insert)
12489     download_tracepoint_locations ();
12490
12491   do_cleanups (cleanups);
12492 }
12493
12494 void
12495 breakpoint_retire_moribund (void)
12496 {
12497   struct bp_location *loc;
12498   int ix;
12499
12500   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12501     if (--(loc->events_till_retirement) == 0)
12502       {
12503         decref_bp_location (&loc);
12504         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12505         --ix;
12506       }
12507 }
12508
12509 static void
12510 update_global_location_list_nothrow (int inserting)
12511 {
12512   volatile struct gdb_exception e;
12513
12514   TRY_CATCH (e, RETURN_MASK_ERROR)
12515     update_global_location_list (inserting);
12516 }
12517
12518 /* Clear BKP from a BPS.  */
12519
12520 static void
12521 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12522 {
12523   bpstat bs;
12524
12525   for (bs = bps; bs; bs = bs->next)
12526     if (bs->breakpoint_at == bpt)
12527       {
12528         bs->breakpoint_at = NULL;
12529         bs->old_val = NULL;
12530         /* bs->commands will be freed later.  */
12531       }
12532 }
12533
12534 /* Callback for iterate_over_threads.  */
12535 static int
12536 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12537 {
12538   struct breakpoint *bpt = data;
12539
12540   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12541   return 0;
12542 }
12543
12544 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12545    callbacks.  */
12546
12547 static void
12548 say_where (struct breakpoint *b)
12549 {
12550   struct value_print_options opts;
12551
12552   get_user_print_options (&opts);
12553
12554   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12555      single string.  */
12556   if (b->loc == NULL)
12557     {
12558       printf_filtered (_(" (%s) pending."), b->addr_string);
12559     }
12560   else
12561     {
12562       if (opts.addressprint || b->loc->symtab == NULL)
12563         {
12564           printf_filtered (" at ");
12565           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12566                           gdb_stdout);
12567         }
12568       if (b->loc->symtab != NULL)
12569         {
12570           /* If there is a single location, we can print the location
12571              more nicely.  */
12572           if (b->loc->next == NULL)
12573             printf_filtered (": file %s, line %d.",
12574                              symtab_to_filename_for_display (b->loc->symtab),
12575                              b->loc->line_number);
12576           else
12577             /* This is not ideal, but each location may have a
12578                different file name, and this at least reflects the
12579                real situation somewhat.  */
12580             printf_filtered (": %s.", b->addr_string);
12581         }
12582
12583       if (b->loc->next)
12584         {
12585           struct bp_location *loc = b->loc;
12586           int n = 0;
12587           for (; loc; loc = loc->next)
12588             ++n;
12589           printf_filtered (" (%d locations)", n);
12590         }
12591     }
12592 }
12593
12594 /* Default bp_location_ops methods.  */
12595
12596 static void
12597 bp_location_dtor (struct bp_location *self)
12598 {
12599   xfree (self->cond);
12600   if (self->cond_bytecode)
12601     free_agent_expr (self->cond_bytecode);
12602   xfree (self->function_name);
12603 }
12604
12605 static const struct bp_location_ops bp_location_ops =
12606 {
12607   bp_location_dtor
12608 };
12609
12610 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12611    inherit from.  */
12612
12613 static void
12614 base_breakpoint_dtor (struct breakpoint *self)
12615 {
12616   decref_counted_command_line (&self->commands);
12617   xfree (self->cond_string);
12618   xfree (self->extra_string);
12619   xfree (self->addr_string);
12620   xfree (self->filter);
12621   xfree (self->addr_string_range_end);
12622 }
12623
12624 static struct bp_location *
12625 base_breakpoint_allocate_location (struct breakpoint *self)
12626 {
12627   struct bp_location *loc;
12628
12629   loc = XNEW (struct bp_location);
12630   init_bp_location (loc, &bp_location_ops, self);
12631   return loc;
12632 }
12633
12634 static void
12635 base_breakpoint_re_set (struct breakpoint *b)
12636 {
12637   /* Nothing to re-set. */
12638 }
12639
12640 #define internal_error_pure_virtual_called() \
12641   gdb_assert_not_reached ("pure virtual function called")
12642
12643 static int
12644 base_breakpoint_insert_location (struct bp_location *bl)
12645 {
12646   internal_error_pure_virtual_called ();
12647 }
12648
12649 static int
12650 base_breakpoint_remove_location (struct bp_location *bl)
12651 {
12652   internal_error_pure_virtual_called ();
12653 }
12654
12655 static int
12656 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12657                                 struct address_space *aspace,
12658                                 CORE_ADDR bp_addr,
12659                                 const struct target_waitstatus *ws)
12660 {
12661   internal_error_pure_virtual_called ();
12662 }
12663
12664 static void
12665 base_breakpoint_check_status (bpstat bs)
12666 {
12667   /* Always stop.   */
12668 }
12669
12670 /* A "works_in_software_mode" breakpoint_ops method that just internal
12671    errors.  */
12672
12673 static int
12674 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12675 {
12676   internal_error_pure_virtual_called ();
12677 }
12678
12679 /* A "resources_needed" breakpoint_ops method that just internal
12680    errors.  */
12681
12682 static int
12683 base_breakpoint_resources_needed (const struct bp_location *bl)
12684 {
12685   internal_error_pure_virtual_called ();
12686 }
12687
12688 static enum print_stop_action
12689 base_breakpoint_print_it (bpstat bs)
12690 {
12691   internal_error_pure_virtual_called ();
12692 }
12693
12694 static void
12695 base_breakpoint_print_one_detail (const struct breakpoint *self,
12696                                   struct ui_out *uiout)
12697 {
12698   /* nothing */
12699 }
12700
12701 static void
12702 base_breakpoint_print_mention (struct breakpoint *b)
12703 {
12704   internal_error_pure_virtual_called ();
12705 }
12706
12707 static void
12708 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12709 {
12710   internal_error_pure_virtual_called ();
12711 }
12712
12713 static void
12714 base_breakpoint_create_sals_from_address (char **arg,
12715                                           struct linespec_result *canonical,
12716                                           enum bptype type_wanted,
12717                                           char *addr_start,
12718                                           char **copy_arg)
12719 {
12720   internal_error_pure_virtual_called ();
12721 }
12722
12723 static void
12724 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12725                                         struct linespec_result *c,
12726                                         struct linespec_sals *lsal,
12727                                         char *cond_string,
12728                                         char *extra_string,
12729                                         enum bptype type_wanted,
12730                                         enum bpdisp disposition,
12731                                         int thread,
12732                                         int task, int ignore_count,
12733                                         const struct breakpoint_ops *o,
12734                                         int from_tty, int enabled,
12735                                         int internal, unsigned flags)
12736 {
12737   internal_error_pure_virtual_called ();
12738 }
12739
12740 static void
12741 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12742                                  struct symtabs_and_lines *sals)
12743 {
12744   internal_error_pure_virtual_called ();
12745 }
12746
12747 /* The default 'explains_signal' method.  */
12748
12749 static enum bpstat_signal_value
12750 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12751 {
12752   return BPSTAT_SIGNAL_HIDE;
12753 }
12754
12755 /* The default "after_condition_true" method.  */
12756
12757 static void
12758 base_breakpoint_after_condition_true (struct bpstats *bs)
12759 {
12760   /* Nothing to do.   */
12761 }
12762
12763 struct breakpoint_ops base_breakpoint_ops =
12764 {
12765   base_breakpoint_dtor,
12766   base_breakpoint_allocate_location,
12767   base_breakpoint_re_set,
12768   base_breakpoint_insert_location,
12769   base_breakpoint_remove_location,
12770   base_breakpoint_breakpoint_hit,
12771   base_breakpoint_check_status,
12772   base_breakpoint_resources_needed,
12773   base_breakpoint_works_in_software_mode,
12774   base_breakpoint_print_it,
12775   NULL,
12776   base_breakpoint_print_one_detail,
12777   base_breakpoint_print_mention,
12778   base_breakpoint_print_recreate,
12779   base_breakpoint_create_sals_from_address,
12780   base_breakpoint_create_breakpoints_sal,
12781   base_breakpoint_decode_linespec,
12782   base_breakpoint_explains_signal,
12783   base_breakpoint_after_condition_true,
12784 };
12785
12786 /* Default breakpoint_ops methods.  */
12787
12788 static void
12789 bkpt_re_set (struct breakpoint *b)
12790 {
12791   /* FIXME: is this still reachable?  */
12792   if (b->addr_string == NULL)
12793     {
12794       /* Anything without a string can't be re-set.  */
12795       delete_breakpoint (b);
12796       return;
12797     }
12798
12799   breakpoint_re_set_default (b);
12800 }
12801
12802 static int
12803 bkpt_insert_location (struct bp_location *bl)
12804 {
12805   if (bl->loc_type == bp_loc_hardware_breakpoint)
12806     return target_insert_hw_breakpoint (bl->gdbarch,
12807                                         &bl->target_info);
12808   else
12809     return target_insert_breakpoint (bl->gdbarch,
12810                                      &bl->target_info);
12811 }
12812
12813 static int
12814 bkpt_remove_location (struct bp_location *bl)
12815 {
12816   if (bl->loc_type == bp_loc_hardware_breakpoint)
12817     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12818   else
12819     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12820 }
12821
12822 static int
12823 bkpt_breakpoint_hit (const struct bp_location *bl,
12824                      struct address_space *aspace, CORE_ADDR bp_addr,
12825                      const struct target_waitstatus *ws)
12826 {
12827   if (ws->kind != TARGET_WAITKIND_STOPPED
12828       || ws->value.sig != GDB_SIGNAL_TRAP)
12829     return 0;
12830
12831   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12832                                  aspace, bp_addr))
12833     return 0;
12834
12835   if (overlay_debugging         /* unmapped overlay section */
12836       && section_is_overlay (bl->section)
12837       && !section_is_mapped (bl->section))
12838     return 0;
12839
12840   return 1;
12841 }
12842
12843 static int
12844 bkpt_resources_needed (const struct bp_location *bl)
12845 {
12846   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12847
12848   return 1;
12849 }
12850
12851 static enum print_stop_action
12852 bkpt_print_it (bpstat bs)
12853 {
12854   struct breakpoint *b;
12855   const struct bp_location *bl;
12856   int bp_temp;
12857   struct ui_out *uiout = current_uiout;
12858
12859   gdb_assert (bs->bp_location_at != NULL);
12860
12861   bl = bs->bp_location_at;
12862   b = bs->breakpoint_at;
12863
12864   bp_temp = b->disposition == disp_del;
12865   if (bl->address != bl->requested_address)
12866     breakpoint_adjustment_warning (bl->requested_address,
12867                                    bl->address,
12868                                    b->number, 1);
12869   annotate_breakpoint (b->number);
12870   if (bp_temp)
12871     ui_out_text (uiout, "\nTemporary breakpoint ");
12872   else
12873     ui_out_text (uiout, "\nBreakpoint ");
12874   if (ui_out_is_mi_like_p (uiout))
12875     {
12876       ui_out_field_string (uiout, "reason",
12877                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12878       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12879     }
12880   ui_out_field_int (uiout, "bkptno", b->number);
12881   ui_out_text (uiout, ", ");
12882
12883   return PRINT_SRC_AND_LOC;
12884 }
12885
12886 static void
12887 bkpt_print_mention (struct breakpoint *b)
12888 {
12889   if (ui_out_is_mi_like_p (current_uiout))
12890     return;
12891
12892   switch (b->type)
12893     {
12894     case bp_breakpoint:
12895     case bp_gnu_ifunc_resolver:
12896       if (b->disposition == disp_del)
12897         printf_filtered (_("Temporary breakpoint"));
12898       else
12899         printf_filtered (_("Breakpoint"));
12900       printf_filtered (_(" %d"), b->number);
12901       if (b->type == bp_gnu_ifunc_resolver)
12902         printf_filtered (_(" at gnu-indirect-function resolver"));
12903       break;
12904     case bp_hardware_breakpoint:
12905       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12906       break;
12907     case bp_dprintf:
12908       printf_filtered (_("Dprintf %d"), b->number);
12909       break;
12910     }
12911
12912   say_where (b);
12913 }
12914
12915 static void
12916 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12917 {
12918   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12919     fprintf_unfiltered (fp, "tbreak");
12920   else if (tp->type == bp_breakpoint)
12921     fprintf_unfiltered (fp, "break");
12922   else if (tp->type == bp_hardware_breakpoint
12923            && tp->disposition == disp_del)
12924     fprintf_unfiltered (fp, "thbreak");
12925   else if (tp->type == bp_hardware_breakpoint)
12926     fprintf_unfiltered (fp, "hbreak");
12927   else
12928     internal_error (__FILE__, __LINE__,
12929                     _("unhandled breakpoint type %d"), (int) tp->type);
12930
12931   fprintf_unfiltered (fp, " %s", tp->addr_string);
12932   print_recreate_thread (tp, fp);
12933 }
12934
12935 static void
12936 bkpt_create_sals_from_address (char **arg,
12937                                struct linespec_result *canonical,
12938                                enum bptype type_wanted,
12939                                char *addr_start, char **copy_arg)
12940 {
12941   create_sals_from_address_default (arg, canonical, type_wanted,
12942                                     addr_start, copy_arg);
12943 }
12944
12945 static void
12946 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12947                              struct linespec_result *canonical,
12948                              struct linespec_sals *lsal,
12949                              char *cond_string,
12950                              char *extra_string,
12951                              enum bptype type_wanted,
12952                              enum bpdisp disposition,
12953                              int thread,
12954                              int task, int ignore_count,
12955                              const struct breakpoint_ops *ops,
12956                              int from_tty, int enabled,
12957                              int internal, unsigned flags)
12958 {
12959   create_breakpoints_sal_default (gdbarch, canonical,
12960                                   cond_string, extra_string,
12961                                   type_wanted,
12962                                   disposition, thread, task,
12963                                   ignore_count, ops, from_tty,
12964                                   enabled, internal, flags);
12965 }
12966
12967 static void
12968 bkpt_decode_linespec (struct breakpoint *b, char **s,
12969                       struct symtabs_and_lines *sals)
12970 {
12971   decode_linespec_default (b, s, sals);
12972 }
12973
12974 /* Virtual table for internal breakpoints.  */
12975
12976 static void
12977 internal_bkpt_re_set (struct breakpoint *b)
12978 {
12979   switch (b->type)
12980     {
12981       /* Delete overlay event and longjmp master breakpoints; they
12982          will be reset later by breakpoint_re_set.  */
12983     case bp_overlay_event:
12984     case bp_longjmp_master:
12985     case bp_std_terminate_master:
12986     case bp_exception_master:
12987       delete_breakpoint (b);
12988       break;
12989
12990       /* This breakpoint is special, it's set up when the inferior
12991          starts and we really don't want to touch it.  */
12992     case bp_shlib_event:
12993
12994       /* Like bp_shlib_event, this breakpoint type is special.  Once
12995          it is set up, we do not want to touch it.  */
12996     case bp_thread_event:
12997       break;
12998     }
12999 }
13000
13001 static void
13002 internal_bkpt_check_status (bpstat bs)
13003 {
13004   if (bs->breakpoint_at->type == bp_shlib_event)
13005     {
13006       /* If requested, stop when the dynamic linker notifies GDB of
13007          events.  This allows the user to get control and place
13008          breakpoints in initializer routines for dynamically loaded
13009          objects (among other things).  */
13010       bs->stop = stop_on_solib_events;
13011       bs->print = stop_on_solib_events;
13012     }
13013   else
13014     bs->stop = 0;
13015 }
13016
13017 static enum print_stop_action
13018 internal_bkpt_print_it (bpstat bs)
13019 {
13020   struct breakpoint *b;
13021
13022   b = bs->breakpoint_at;
13023
13024   switch (b->type)
13025     {
13026     case bp_shlib_event:
13027       /* Did we stop because the user set the stop_on_solib_events
13028          variable?  (If so, we report this as a generic, "Stopped due
13029          to shlib event" message.) */
13030       print_solib_event (0);
13031       break;
13032
13033     case bp_thread_event:
13034       /* Not sure how we will get here.
13035          GDB should not stop for these breakpoints.  */
13036       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13037       break;
13038
13039     case bp_overlay_event:
13040       /* By analogy with the thread event, GDB should not stop for these.  */
13041       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13042       break;
13043
13044     case bp_longjmp_master:
13045       /* These should never be enabled.  */
13046       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13047       break;
13048
13049     case bp_std_terminate_master:
13050       /* These should never be enabled.  */
13051       printf_filtered (_("std::terminate Master Breakpoint: "
13052                          "gdb should not stop!\n"));
13053       break;
13054
13055     case bp_exception_master:
13056       /* These should never be enabled.  */
13057       printf_filtered (_("Exception Master Breakpoint: "
13058                          "gdb should not stop!\n"));
13059       break;
13060     }
13061
13062   return PRINT_NOTHING;
13063 }
13064
13065 static void
13066 internal_bkpt_print_mention (struct breakpoint *b)
13067 {
13068   /* Nothing to mention.  These breakpoints are internal.  */
13069 }
13070
13071 /* Virtual table for momentary breakpoints  */
13072
13073 static void
13074 momentary_bkpt_re_set (struct breakpoint *b)
13075 {
13076   /* Keep temporary breakpoints, which can be encountered when we step
13077      over a dlopen call and solib_add is resetting the breakpoints.
13078      Otherwise these should have been blown away via the cleanup chain
13079      or by breakpoint_init_inferior when we rerun the executable.  */
13080 }
13081
13082 static void
13083 momentary_bkpt_check_status (bpstat bs)
13084 {
13085   /* Nothing.  The point of these breakpoints is causing a stop.  */
13086 }
13087
13088 static enum print_stop_action
13089 momentary_bkpt_print_it (bpstat bs)
13090 {
13091   struct ui_out *uiout = current_uiout;
13092
13093   if (ui_out_is_mi_like_p (uiout))
13094     {
13095       struct breakpoint *b = bs->breakpoint_at;
13096
13097       switch (b->type)
13098         {
13099         case bp_finish:
13100           ui_out_field_string
13101             (uiout, "reason",
13102              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13103           break;
13104
13105         case bp_until:
13106           ui_out_field_string
13107             (uiout, "reason",
13108              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13109           break;
13110         }
13111     }
13112
13113   return PRINT_UNKNOWN;
13114 }
13115
13116 static void
13117 momentary_bkpt_print_mention (struct breakpoint *b)
13118 {
13119   /* Nothing to mention.  These breakpoints are internal.  */
13120 }
13121
13122 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13123
13124    It gets cleared already on the removal of the first one of such placed
13125    breakpoints.  This is OK as they get all removed altogether.  */
13126
13127 static void
13128 longjmp_bkpt_dtor (struct breakpoint *self)
13129 {
13130   struct thread_info *tp = find_thread_id (self->thread);
13131
13132   if (tp)
13133     tp->initiating_frame = null_frame_id;
13134
13135   momentary_breakpoint_ops.dtor (self);
13136 }
13137
13138 /* Specific methods for probe breakpoints.  */
13139
13140 static int
13141 bkpt_probe_insert_location (struct bp_location *bl)
13142 {
13143   int v = bkpt_insert_location (bl);
13144
13145   if (v == 0)
13146     {
13147       /* The insertion was successful, now let's set the probe's semaphore
13148          if needed.  */
13149       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13150     }
13151
13152   return v;
13153 }
13154
13155 static int
13156 bkpt_probe_remove_location (struct bp_location *bl)
13157 {
13158   /* Let's clear the semaphore before removing the location.  */
13159   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13160
13161   return bkpt_remove_location (bl);
13162 }
13163
13164 static void
13165 bkpt_probe_create_sals_from_address (char **arg,
13166                                      struct linespec_result *canonical,
13167                                      enum bptype type_wanted,
13168                                      char *addr_start, char **copy_arg)
13169 {
13170   struct linespec_sals lsal;
13171
13172   lsal.sals = parse_probes (arg, canonical);
13173
13174   *copy_arg = xstrdup (canonical->addr_string);
13175   lsal.canonical = xstrdup (*copy_arg);
13176
13177   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13178 }
13179
13180 static void
13181 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13182                             struct symtabs_and_lines *sals)
13183 {
13184   *sals = parse_probes (s, NULL);
13185   if (!sals->sals)
13186     error (_("probe not found"));
13187 }
13188
13189 /* The breakpoint_ops structure to be used in tracepoints.  */
13190
13191 static void
13192 tracepoint_re_set (struct breakpoint *b)
13193 {
13194   breakpoint_re_set_default (b);
13195 }
13196
13197 static int
13198 tracepoint_breakpoint_hit (const struct bp_location *bl,
13199                            struct address_space *aspace, CORE_ADDR bp_addr,
13200                            const struct target_waitstatus *ws)
13201 {
13202   /* By definition, the inferior does not report stops at
13203      tracepoints.  */
13204   return 0;
13205 }
13206
13207 static void
13208 tracepoint_print_one_detail (const struct breakpoint *self,
13209                              struct ui_out *uiout)
13210 {
13211   struct tracepoint *tp = (struct tracepoint *) self;
13212   if (tp->static_trace_marker_id)
13213     {
13214       gdb_assert (self->type == bp_static_tracepoint);
13215
13216       ui_out_text (uiout, "\tmarker id is ");
13217       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13218                            tp->static_trace_marker_id);
13219       ui_out_text (uiout, "\n");
13220     }
13221 }
13222
13223 static void
13224 tracepoint_print_mention (struct breakpoint *b)
13225 {
13226   if (ui_out_is_mi_like_p (current_uiout))
13227     return;
13228
13229   switch (b->type)
13230     {
13231     case bp_tracepoint:
13232       printf_filtered (_("Tracepoint"));
13233       printf_filtered (_(" %d"), b->number);
13234       break;
13235     case bp_fast_tracepoint:
13236       printf_filtered (_("Fast tracepoint"));
13237       printf_filtered (_(" %d"), b->number);
13238       break;
13239     case bp_static_tracepoint:
13240       printf_filtered (_("Static tracepoint"));
13241       printf_filtered (_(" %d"), b->number);
13242       break;
13243     default:
13244       internal_error (__FILE__, __LINE__,
13245                       _("unhandled tracepoint type %d"), (int) b->type);
13246     }
13247
13248   say_where (b);
13249 }
13250
13251 static void
13252 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13253 {
13254   struct tracepoint *tp = (struct tracepoint *) self;
13255
13256   if (self->type == bp_fast_tracepoint)
13257     fprintf_unfiltered (fp, "ftrace");
13258   if (self->type == bp_static_tracepoint)
13259     fprintf_unfiltered (fp, "strace");
13260   else if (self->type == bp_tracepoint)
13261     fprintf_unfiltered (fp, "trace");
13262   else
13263     internal_error (__FILE__, __LINE__,
13264                     _("unhandled tracepoint type %d"), (int) self->type);
13265
13266   fprintf_unfiltered (fp, " %s", self->addr_string);
13267   print_recreate_thread (self, fp);
13268
13269   if (tp->pass_count)
13270     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13271 }
13272
13273 static void
13274 tracepoint_create_sals_from_address (char **arg,
13275                                      struct linespec_result *canonical,
13276                                      enum bptype type_wanted,
13277                                      char *addr_start, char **copy_arg)
13278 {
13279   create_sals_from_address_default (arg, canonical, type_wanted,
13280                                     addr_start, copy_arg);
13281 }
13282
13283 static void
13284 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13285                                    struct linespec_result *canonical,
13286                                    struct linespec_sals *lsal,
13287                                    char *cond_string,
13288                                    char *extra_string,
13289                                    enum bptype type_wanted,
13290                                    enum bpdisp disposition,
13291                                    int thread,
13292                                    int task, int ignore_count,
13293                                    const struct breakpoint_ops *ops,
13294                                    int from_tty, int enabled,
13295                                    int internal, unsigned flags)
13296 {
13297   create_breakpoints_sal_default (gdbarch, canonical,
13298                                   cond_string, extra_string,
13299                                   type_wanted,
13300                                   disposition, thread, task,
13301                                   ignore_count, ops, from_tty,
13302                                   enabled, internal, flags);
13303 }
13304
13305 static void
13306 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13307                             struct symtabs_and_lines *sals)
13308 {
13309   decode_linespec_default (b, s, sals);
13310 }
13311
13312 struct breakpoint_ops tracepoint_breakpoint_ops;
13313
13314 /* The breakpoint_ops structure to be use on tracepoints placed in a
13315    static probe.  */
13316
13317 static void
13318 tracepoint_probe_create_sals_from_address (char **arg,
13319                                            struct linespec_result *canonical,
13320                                            enum bptype type_wanted,
13321                                            char *addr_start, char **copy_arg)
13322 {
13323   /* We use the same method for breakpoint on probes.  */
13324   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13325                                        addr_start, copy_arg);
13326 }
13327
13328 static void
13329 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13330                                   struct symtabs_and_lines *sals)
13331 {
13332   /* We use the same method for breakpoint on probes.  */
13333   bkpt_probe_decode_linespec (b, s, sals);
13334 }
13335
13336 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13337
13338 /* Dprintf breakpoint_ops methods.  */
13339
13340 static void
13341 dprintf_re_set (struct breakpoint *b)
13342 {
13343   breakpoint_re_set_default (b);
13344
13345   /* This breakpoint could have been pending, and be resolved now, and
13346      if so, we should now have the extra string.  If we don't, the
13347      dprintf was malformed when created, but we couldn't tell because
13348      we can't extract the extra string until the location is
13349      resolved.  */
13350   if (b->loc != NULL && b->extra_string == NULL)
13351     error (_("Format string required"));
13352
13353   /* 1 - connect to target 1, that can run breakpoint commands.
13354      2 - create a dprintf, which resolves fine.
13355      3 - disconnect from target 1
13356      4 - connect to target 2, that can NOT run breakpoint commands.
13357
13358      After steps #3/#4, you'll want the dprintf command list to
13359      be updated, because target 1 and 2 may well return different
13360      answers for target_can_run_breakpoint_commands().
13361      Given absence of finer grained resetting, we get to do
13362      it all the time.  */
13363   if (b->extra_string != NULL)
13364     update_dprintf_command_list (b);
13365 }
13366
13367 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13368
13369 static void
13370 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13371 {
13372   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13373                       tp->extra_string);
13374   print_recreate_thread (tp, fp);
13375 }
13376
13377 /* Implement the "after_condition_true" breakpoint_ops method for
13378    dprintf.
13379
13380    dprintf's are implemented with regular commands in their command
13381    list, but we run the commands here instead of before presenting the
13382    stop to the user, as dprintf's don't actually cause a stop.  This
13383    also makes it so that the commands of multiple dprintfs at the same
13384    address are all handled.  */
13385
13386 static void
13387 dprintf_after_condition_true (struct bpstats *bs)
13388 {
13389   struct cleanup *old_chain;
13390   struct bpstats tmp_bs = { NULL };
13391   struct bpstats *tmp_bs_p = &tmp_bs;
13392
13393   /* dprintf's never cause a stop.  This wasn't set in the
13394      check_status hook instead because that would make the dprintf's
13395      condition not be evaluated.  */
13396   bs->stop = 0;
13397
13398   /* Run the command list here.  Take ownership of it instead of
13399      copying.  We never want these commands to run later in
13400      bpstat_do_actions, if a breakpoint that causes a stop happens to
13401      be set at same address as this dprintf, or even if running the
13402      commands here throws.  */
13403   tmp_bs.commands = bs->commands;
13404   bs->commands = NULL;
13405   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13406
13407   bpstat_do_actions_1 (&tmp_bs_p);
13408
13409   /* 'tmp_bs.commands' will usually be NULL by now, but
13410      bpstat_do_actions_1 may return early without processing the whole
13411      list.  */
13412   do_cleanups (old_chain);
13413 }
13414
13415 /* The breakpoint_ops structure to be used on static tracepoints with
13416    markers (`-m').  */
13417
13418 static void
13419 strace_marker_create_sals_from_address (char **arg,
13420                                         struct linespec_result *canonical,
13421                                         enum bptype type_wanted,
13422                                         char *addr_start, char **copy_arg)
13423 {
13424   struct linespec_sals lsal;
13425
13426   lsal.sals = decode_static_tracepoint_spec (arg);
13427
13428   *copy_arg = savestring (addr_start, *arg - addr_start);
13429
13430   canonical->addr_string = xstrdup (*copy_arg);
13431   lsal.canonical = xstrdup (*copy_arg);
13432   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13433 }
13434
13435 static void
13436 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13437                                       struct linespec_result *canonical,
13438                                       struct linespec_sals *lsal,
13439                                       char *cond_string,
13440                                       char *extra_string,
13441                                       enum bptype type_wanted,
13442                                       enum bpdisp disposition,
13443                                       int thread,
13444                                       int task, int ignore_count,
13445                                       const struct breakpoint_ops *ops,
13446                                       int from_tty, int enabled,
13447                                       int internal, unsigned flags)
13448 {
13449   int i;
13450
13451   /* If the user is creating a static tracepoint by marker id
13452      (strace -m MARKER_ID), then store the sals index, so that
13453      breakpoint_re_set can try to match up which of the newly
13454      found markers corresponds to this one, and, don't try to
13455      expand multiple locations for each sal, given than SALS
13456      already should contain all sals for MARKER_ID.  */
13457
13458   for (i = 0; i < lsal->sals.nelts; ++i)
13459     {
13460       struct symtabs_and_lines expanded;
13461       struct tracepoint *tp;
13462       struct cleanup *old_chain;
13463       char *addr_string;
13464
13465       expanded.nelts = 1;
13466       expanded.sals = &lsal->sals.sals[i];
13467
13468       addr_string = xstrdup (canonical->addr_string);
13469       old_chain = make_cleanup (xfree, addr_string);
13470
13471       tp = XCNEW (struct tracepoint);
13472       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13473                            addr_string, NULL,
13474                            cond_string, extra_string,
13475                            type_wanted, disposition,
13476                            thread, task, ignore_count, ops,
13477                            from_tty, enabled, internal, flags,
13478                            canonical->special_display);
13479       /* Given that its possible to have multiple markers with
13480          the same string id, if the user is creating a static
13481          tracepoint by marker id ("strace -m MARKER_ID"), then
13482          store the sals index, so that breakpoint_re_set can
13483          try to match up which of the newly found markers
13484          corresponds to this one  */
13485       tp->static_trace_marker_id_idx = i;
13486
13487       install_breakpoint (internal, &tp->base, 0);
13488
13489       discard_cleanups (old_chain);
13490     }
13491 }
13492
13493 static void
13494 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13495                                struct symtabs_and_lines *sals)
13496 {
13497   struct tracepoint *tp = (struct tracepoint *) b;
13498
13499   *sals = decode_static_tracepoint_spec (s);
13500   if (sals->nelts > tp->static_trace_marker_id_idx)
13501     {
13502       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13503       sals->nelts = 1;
13504     }
13505   else
13506     error (_("marker %s not found"), tp->static_trace_marker_id);
13507 }
13508
13509 static struct breakpoint_ops strace_marker_breakpoint_ops;
13510
13511 static int
13512 strace_marker_p (struct breakpoint *b)
13513 {
13514   return b->ops == &strace_marker_breakpoint_ops;
13515 }
13516
13517 /* Delete a breakpoint and clean up all traces of it in the data
13518    structures.  */
13519
13520 void
13521 delete_breakpoint (struct breakpoint *bpt)
13522 {
13523   struct breakpoint *b;
13524
13525   gdb_assert (bpt != NULL);
13526
13527   /* Has this bp already been deleted?  This can happen because
13528      multiple lists can hold pointers to bp's.  bpstat lists are
13529      especial culprits.
13530
13531      One example of this happening is a watchpoint's scope bp.  When
13532      the scope bp triggers, we notice that the watchpoint is out of
13533      scope, and delete it.  We also delete its scope bp.  But the
13534      scope bp is marked "auto-deleting", and is already on a bpstat.
13535      That bpstat is then checked for auto-deleting bp's, which are
13536      deleted.
13537
13538      A real solution to this problem might involve reference counts in
13539      bp's, and/or giving them pointers back to their referencing
13540      bpstat's, and teaching delete_breakpoint to only free a bp's
13541      storage when no more references were extent.  A cheaper bandaid
13542      was chosen.  */
13543   if (bpt->type == bp_none)
13544     return;
13545
13546   /* At least avoid this stale reference until the reference counting
13547      of breakpoints gets resolved.  */
13548   if (bpt->related_breakpoint != bpt)
13549     {
13550       struct breakpoint *related;
13551       struct watchpoint *w;
13552
13553       if (bpt->type == bp_watchpoint_scope)
13554         w = (struct watchpoint *) bpt->related_breakpoint;
13555       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13556         w = (struct watchpoint *) bpt;
13557       else
13558         w = NULL;
13559       if (w != NULL)
13560         watchpoint_del_at_next_stop (w);
13561
13562       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13563       for (related = bpt; related->related_breakpoint != bpt;
13564            related = related->related_breakpoint);
13565       related->related_breakpoint = bpt->related_breakpoint;
13566       bpt->related_breakpoint = bpt;
13567     }
13568
13569   /* watch_command_1 creates a watchpoint but only sets its number if
13570      update_watchpoint succeeds in creating its bp_locations.  If there's
13571      a problem in that process, we'll be asked to delete the half-created
13572      watchpoint.  In that case, don't announce the deletion.  */
13573   if (bpt->number)
13574     observer_notify_breakpoint_deleted (bpt);
13575
13576   if (breakpoint_chain == bpt)
13577     breakpoint_chain = bpt->next;
13578
13579   ALL_BREAKPOINTS (b)
13580     if (b->next == bpt)
13581     {
13582       b->next = bpt->next;
13583       break;
13584     }
13585
13586   /* Be sure no bpstat's are pointing at the breakpoint after it's
13587      been freed.  */
13588   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13589      in all threads for now.  Note that we cannot just remove bpstats
13590      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13591      commands are associated with the bpstat; if we remove it here,
13592      then the later call to bpstat_do_actions (&stop_bpstat); in
13593      event-top.c won't do anything, and temporary breakpoints with
13594      commands won't work.  */
13595
13596   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13597
13598   /* Now that breakpoint is removed from breakpoint list, update the
13599      global location list.  This will remove locations that used to
13600      belong to this breakpoint.  Do this before freeing the breakpoint
13601      itself, since remove_breakpoint looks at location's owner.  It
13602      might be better design to have location completely
13603      self-contained, but it's not the case now.  */
13604   update_global_location_list (0);
13605
13606   bpt->ops->dtor (bpt);
13607   /* On the chance that someone will soon try again to delete this
13608      same bp, we mark it as deleted before freeing its storage.  */
13609   bpt->type = bp_none;
13610   xfree (bpt);
13611 }
13612
13613 static void
13614 do_delete_breakpoint_cleanup (void *b)
13615 {
13616   delete_breakpoint (b);
13617 }
13618
13619 struct cleanup *
13620 make_cleanup_delete_breakpoint (struct breakpoint *b)
13621 {
13622   return make_cleanup (do_delete_breakpoint_cleanup, b);
13623 }
13624
13625 /* Iterator function to call a user-provided callback function once
13626    for each of B and its related breakpoints.  */
13627
13628 static void
13629 iterate_over_related_breakpoints (struct breakpoint *b,
13630                                   void (*function) (struct breakpoint *,
13631                                                     void *),
13632                                   void *data)
13633 {
13634   struct breakpoint *related;
13635
13636   related = b;
13637   do
13638     {
13639       struct breakpoint *next;
13640
13641       /* FUNCTION may delete RELATED.  */
13642       next = related->related_breakpoint;
13643
13644       if (next == related)
13645         {
13646           /* RELATED is the last ring entry.  */
13647           function (related, data);
13648
13649           /* FUNCTION may have deleted it, so we'd never reach back to
13650              B.  There's nothing left to do anyway, so just break
13651              out.  */
13652           break;
13653         }
13654       else
13655         function (related, data);
13656
13657       related = next;
13658     }
13659   while (related != b);
13660 }
13661
13662 static void
13663 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13664 {
13665   delete_breakpoint (b);
13666 }
13667
13668 /* A callback for map_breakpoint_numbers that calls
13669    delete_breakpoint.  */
13670
13671 static void
13672 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13673 {
13674   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13675 }
13676
13677 void
13678 delete_command (char *arg, int from_tty)
13679 {
13680   struct breakpoint *b, *b_tmp;
13681
13682   dont_repeat ();
13683
13684   if (arg == 0)
13685     {
13686       int breaks_to_delete = 0;
13687
13688       /* Delete all breakpoints if no argument.  Do not delete
13689          internal breakpoints, these have to be deleted with an
13690          explicit breakpoint number argument.  */
13691       ALL_BREAKPOINTS (b)
13692         if (user_breakpoint_p (b))
13693           {
13694             breaks_to_delete = 1;
13695             break;
13696           }
13697
13698       /* Ask user only if there are some breakpoints to delete.  */
13699       if (!from_tty
13700           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13701         {
13702           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13703             if (user_breakpoint_p (b))
13704               delete_breakpoint (b);
13705         }
13706     }
13707   else
13708     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13709 }
13710
13711 static int
13712 all_locations_are_pending (struct bp_location *loc)
13713 {
13714   for (; loc; loc = loc->next)
13715     if (!loc->shlib_disabled
13716         && !loc->pspace->executing_startup)
13717       return 0;
13718   return 1;
13719 }
13720
13721 /* Subroutine of update_breakpoint_locations to simplify it.
13722    Return non-zero if multiple fns in list LOC have the same name.
13723    Null names are ignored.  */
13724
13725 static int
13726 ambiguous_names_p (struct bp_location *loc)
13727 {
13728   struct bp_location *l;
13729   htab_t htab = htab_create_alloc (13, htab_hash_string,
13730                                    (int (*) (const void *, 
13731                                              const void *)) streq,
13732                                    NULL, xcalloc, xfree);
13733
13734   for (l = loc; l != NULL; l = l->next)
13735     {
13736       const char **slot;
13737       const char *name = l->function_name;
13738
13739       /* Allow for some names to be NULL, ignore them.  */
13740       if (name == NULL)
13741         continue;
13742
13743       slot = (const char **) htab_find_slot (htab, (const void *) name,
13744                                              INSERT);
13745       /* NOTE: We can assume slot != NULL here because xcalloc never
13746          returns NULL.  */
13747       if (*slot != NULL)
13748         {
13749           htab_delete (htab);
13750           return 1;
13751         }
13752       *slot = name;
13753     }
13754
13755   htab_delete (htab);
13756   return 0;
13757 }
13758
13759 /* When symbols change, it probably means the sources changed as well,
13760    and it might mean the static tracepoint markers are no longer at
13761    the same address or line numbers they used to be at last we
13762    checked.  Losing your static tracepoints whenever you rebuild is
13763    undesirable.  This function tries to resync/rematch gdb static
13764    tracepoints with the markers on the target, for static tracepoints
13765    that have not been set by marker id.  Static tracepoint that have
13766    been set by marker id are reset by marker id in breakpoint_re_set.
13767    The heuristic is:
13768
13769    1) For a tracepoint set at a specific address, look for a marker at
13770    the old PC.  If one is found there, assume to be the same marker.
13771    If the name / string id of the marker found is different from the
13772    previous known name, assume that means the user renamed the marker
13773    in the sources, and output a warning.
13774
13775    2) For a tracepoint set at a given line number, look for a marker
13776    at the new address of the old line number.  If one is found there,
13777    assume to be the same marker.  If the name / string id of the
13778    marker found is different from the previous known name, assume that
13779    means the user renamed the marker in the sources, and output a
13780    warning.
13781
13782    3) If a marker is no longer found at the same address or line, it
13783    may mean the marker no longer exists.  But it may also just mean
13784    the code changed a bit.  Maybe the user added a few lines of code
13785    that made the marker move up or down (in line number terms).  Ask
13786    the target for info about the marker with the string id as we knew
13787    it.  If found, update line number and address in the matching
13788    static tracepoint.  This will get confused if there's more than one
13789    marker with the same ID (possible in UST, although unadvised
13790    precisely because it confuses tools).  */
13791
13792 static struct symtab_and_line
13793 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13794 {
13795   struct tracepoint *tp = (struct tracepoint *) b;
13796   struct static_tracepoint_marker marker;
13797   CORE_ADDR pc;
13798
13799   pc = sal.pc;
13800   if (sal.line)
13801     find_line_pc (sal.symtab, sal.line, &pc);
13802
13803   if (target_static_tracepoint_marker_at (pc, &marker))
13804     {
13805       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13806         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13807                  b->number,
13808                  tp->static_trace_marker_id, marker.str_id);
13809
13810       xfree (tp->static_trace_marker_id);
13811       tp->static_trace_marker_id = xstrdup (marker.str_id);
13812       release_static_tracepoint_marker (&marker);
13813
13814       return sal;
13815     }
13816
13817   /* Old marker wasn't found on target at lineno.  Try looking it up
13818      by string ID.  */
13819   if (!sal.explicit_pc
13820       && sal.line != 0
13821       && sal.symtab != NULL
13822       && tp->static_trace_marker_id != NULL)
13823     {
13824       VEC(static_tracepoint_marker_p) *markers;
13825
13826       markers
13827         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13828
13829       if (!VEC_empty(static_tracepoint_marker_p, markers))
13830         {
13831           struct symtab_and_line sal2;
13832           struct symbol *sym;
13833           struct static_tracepoint_marker *tpmarker;
13834           struct ui_out *uiout = current_uiout;
13835
13836           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13837
13838           xfree (tp->static_trace_marker_id);
13839           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13840
13841           warning (_("marker for static tracepoint %d (%s) not "
13842                      "found at previous line number"),
13843                    b->number, tp->static_trace_marker_id);
13844
13845           init_sal (&sal2);
13846
13847           sal2.pc = tpmarker->address;
13848
13849           sal2 = find_pc_line (tpmarker->address, 0);
13850           sym = find_pc_sect_function (tpmarker->address, NULL);
13851           ui_out_text (uiout, "Now in ");
13852           if (sym)
13853             {
13854               ui_out_field_string (uiout, "func",
13855                                    SYMBOL_PRINT_NAME (sym));
13856               ui_out_text (uiout, " at ");
13857             }
13858           ui_out_field_string (uiout, "file",
13859                                symtab_to_filename_for_display (sal2.symtab));
13860           ui_out_text (uiout, ":");
13861
13862           if (ui_out_is_mi_like_p (uiout))
13863             {
13864               const char *fullname = symtab_to_fullname (sal2.symtab);
13865
13866               ui_out_field_string (uiout, "fullname", fullname);
13867             }
13868
13869           ui_out_field_int (uiout, "line", sal2.line);
13870           ui_out_text (uiout, "\n");
13871
13872           b->loc->line_number = sal2.line;
13873           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13874
13875           xfree (b->addr_string);
13876           b->addr_string = xstrprintf ("%s:%d",
13877                                    symtab_to_filename_for_display (sal2.symtab),
13878                                        b->loc->line_number);
13879
13880           /* Might be nice to check if function changed, and warn if
13881              so.  */
13882
13883           release_static_tracepoint_marker (tpmarker);
13884         }
13885     }
13886   return sal;
13887 }
13888
13889 /* Returns 1 iff locations A and B are sufficiently same that
13890    we don't need to report breakpoint as changed.  */
13891
13892 static int
13893 locations_are_equal (struct bp_location *a, struct bp_location *b)
13894 {
13895   while (a && b)
13896     {
13897       if (a->address != b->address)
13898         return 0;
13899
13900       if (a->shlib_disabled != b->shlib_disabled)
13901         return 0;
13902
13903       if (a->enabled != b->enabled)
13904         return 0;
13905
13906       a = a->next;
13907       b = b->next;
13908     }
13909
13910   if ((a == NULL) != (b == NULL))
13911     return 0;
13912
13913   return 1;
13914 }
13915
13916 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13917    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13918    a ranged breakpoint.  */
13919
13920 void
13921 update_breakpoint_locations (struct breakpoint *b,
13922                              struct symtabs_and_lines sals,
13923                              struct symtabs_and_lines sals_end)
13924 {
13925   int i;
13926   struct bp_location *existing_locations = b->loc;
13927
13928   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13929     {
13930       /* Ranged breakpoints have only one start location and one end
13931          location.  */
13932       b->enable_state = bp_disabled;
13933       update_global_location_list (1);
13934       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13935                            "multiple locations found\n"),
13936                          b->number);
13937       return;
13938     }
13939
13940   /* If there's no new locations, and all existing locations are
13941      pending, don't do anything.  This optimizes the common case where
13942      all locations are in the same shared library, that was unloaded.
13943      We'd like to retain the location, so that when the library is
13944      loaded again, we don't loose the enabled/disabled status of the
13945      individual locations.  */
13946   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13947     return;
13948
13949   b->loc = NULL;
13950
13951   for (i = 0; i < sals.nelts; ++i)
13952     {
13953       struct bp_location *new_loc;
13954
13955       switch_to_program_space_and_thread (sals.sals[i].pspace);
13956
13957       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13958
13959       /* Reparse conditions, they might contain references to the
13960          old symtab.  */
13961       if (b->cond_string != NULL)
13962         {
13963           const char *s;
13964           volatile struct gdb_exception e;
13965
13966           s = b->cond_string;
13967           TRY_CATCH (e, RETURN_MASK_ERROR)
13968             {
13969               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13970                                            block_for_pc (sals.sals[i].pc), 
13971                                            0);
13972             }
13973           if (e.reason < 0)
13974             {
13975               warning (_("failed to reevaluate condition "
13976                          "for breakpoint %d: %s"), 
13977                        b->number, e.message);
13978               new_loc->enabled = 0;
13979             }
13980         }
13981
13982       if (sals_end.nelts)
13983         {
13984           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13985
13986           new_loc->length = end - sals.sals[0].pc + 1;
13987         }
13988     }
13989
13990   /* Update locations of permanent breakpoints.  */
13991   if (b->enable_state == bp_permanent)
13992     make_breakpoint_permanent (b);
13993
13994   /* If possible, carry over 'disable' status from existing
13995      breakpoints.  */
13996   {
13997     struct bp_location *e = existing_locations;
13998     /* If there are multiple breakpoints with the same function name,
13999        e.g. for inline functions, comparing function names won't work.
14000        Instead compare pc addresses; this is just a heuristic as things
14001        may have moved, but in practice it gives the correct answer
14002        often enough until a better solution is found.  */
14003     int have_ambiguous_names = ambiguous_names_p (b->loc);
14004
14005     for (; e; e = e->next)
14006       {
14007         if (!e->enabled && e->function_name)
14008           {
14009             struct bp_location *l = b->loc;
14010             if (have_ambiguous_names)
14011               {
14012                 for (; l; l = l->next)
14013                   if (breakpoint_locations_match (e, l))
14014                     {
14015                       l->enabled = 0;
14016                       break;
14017                     }
14018               }
14019             else
14020               {
14021                 for (; l; l = l->next)
14022                   if (l->function_name
14023                       && strcmp (e->function_name, l->function_name) == 0)
14024                     {
14025                       l->enabled = 0;
14026                       break;
14027                     }
14028               }
14029           }
14030       }
14031   }
14032
14033   if (!locations_are_equal (existing_locations, b->loc))
14034     observer_notify_breakpoint_modified (b);
14035
14036   update_global_location_list (1);
14037 }
14038
14039 /* Find the SaL locations corresponding to the given ADDR_STRING.
14040    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14041
14042 static struct symtabs_and_lines
14043 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14044 {
14045   char *s;
14046   struct symtabs_and_lines sals = {0};
14047   volatile struct gdb_exception e;
14048
14049   gdb_assert (b->ops != NULL);
14050   s = addr_string;
14051
14052   TRY_CATCH (e, RETURN_MASK_ERROR)
14053     {
14054       b->ops->decode_linespec (b, &s, &sals);
14055     }
14056   if (e.reason < 0)
14057     {
14058       int not_found_and_ok = 0;
14059       /* For pending breakpoints, it's expected that parsing will
14060          fail until the right shared library is loaded.  User has
14061          already told to create pending breakpoints and don't need
14062          extra messages.  If breakpoint is in bp_shlib_disabled
14063          state, then user already saw the message about that
14064          breakpoint being disabled, and don't want to see more
14065          errors.  */
14066       if (e.error == NOT_FOUND_ERROR
14067           && (b->condition_not_parsed 
14068               || (b->loc && b->loc->shlib_disabled)
14069               || (b->loc && b->loc->pspace->executing_startup)
14070               || b->enable_state == bp_disabled))
14071         not_found_and_ok = 1;
14072
14073       if (!not_found_and_ok)
14074         {
14075           /* We surely don't want to warn about the same breakpoint
14076              10 times.  One solution, implemented here, is disable
14077              the breakpoint on error.  Another solution would be to
14078              have separate 'warning emitted' flag.  Since this
14079              happens only when a binary has changed, I don't know
14080              which approach is better.  */
14081           b->enable_state = bp_disabled;
14082           throw_exception (e);
14083         }
14084     }
14085
14086   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14087     {
14088       int i;
14089
14090       for (i = 0; i < sals.nelts; ++i)
14091         resolve_sal_pc (&sals.sals[i]);
14092       if (b->condition_not_parsed && s && s[0])
14093         {
14094           char *cond_string, *extra_string;
14095           int thread, task;
14096
14097           find_condition_and_thread (s, sals.sals[0].pc,
14098                                      &cond_string, &thread, &task,
14099                                      &extra_string);
14100           if (cond_string)
14101             b->cond_string = cond_string;
14102           b->thread = thread;
14103           b->task = task;
14104           if (extra_string)
14105             b->extra_string = extra_string;
14106           b->condition_not_parsed = 0;
14107         }
14108
14109       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14110         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14111
14112       *found = 1;
14113     }
14114   else
14115     *found = 0;
14116
14117   return sals;
14118 }
14119
14120 /* The default re_set method, for typical hardware or software
14121    breakpoints.  Reevaluate the breakpoint and recreate its
14122    locations.  */
14123
14124 static void
14125 breakpoint_re_set_default (struct breakpoint *b)
14126 {
14127   int found;
14128   struct symtabs_and_lines sals, sals_end;
14129   struct symtabs_and_lines expanded = {0};
14130   struct symtabs_and_lines expanded_end = {0};
14131
14132   sals = addr_string_to_sals (b, b->addr_string, &found);
14133   if (found)
14134     {
14135       make_cleanup (xfree, sals.sals);
14136       expanded = sals;
14137     }
14138
14139   if (b->addr_string_range_end)
14140     {
14141       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14142       if (found)
14143         {
14144           make_cleanup (xfree, sals_end.sals);
14145           expanded_end = sals_end;
14146         }
14147     }
14148
14149   update_breakpoint_locations (b, expanded, expanded_end);
14150 }
14151
14152 /* Default method for creating SALs from an address string.  It basically
14153    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14154
14155 static void
14156 create_sals_from_address_default (char **arg,
14157                                   struct linespec_result *canonical,
14158                                   enum bptype type_wanted,
14159                                   char *addr_start, char **copy_arg)
14160 {
14161   parse_breakpoint_sals (arg, canonical);
14162 }
14163
14164 /* Call create_breakpoints_sal for the given arguments.  This is the default
14165    function for the `create_breakpoints_sal' method of
14166    breakpoint_ops.  */
14167
14168 static void
14169 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14170                                 struct linespec_result *canonical,
14171                                 char *cond_string,
14172                                 char *extra_string,
14173                                 enum bptype type_wanted,
14174                                 enum bpdisp disposition,
14175                                 int thread,
14176                                 int task, int ignore_count,
14177                                 const struct breakpoint_ops *ops,
14178                                 int from_tty, int enabled,
14179                                 int internal, unsigned flags)
14180 {
14181   create_breakpoints_sal (gdbarch, canonical, cond_string,
14182                           extra_string,
14183                           type_wanted, disposition,
14184                           thread, task, ignore_count, ops, from_tty,
14185                           enabled, internal, flags);
14186 }
14187
14188 /* Decode the line represented by S by calling decode_line_full.  This is the
14189    default function for the `decode_linespec' method of breakpoint_ops.  */
14190
14191 static void
14192 decode_linespec_default (struct breakpoint *b, char **s,
14193                          struct symtabs_and_lines *sals)
14194 {
14195   struct linespec_result canonical;
14196
14197   init_linespec_result (&canonical);
14198   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14199                     (struct symtab *) NULL, 0,
14200                     &canonical, multiple_symbols_all,
14201                     b->filter);
14202
14203   /* We should get 0 or 1 resulting SALs.  */
14204   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14205
14206   if (VEC_length (linespec_sals, canonical.sals) > 0)
14207     {
14208       struct linespec_sals *lsal;
14209
14210       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14211       *sals = lsal->sals;
14212       /* Arrange it so the destructor does not free the
14213          contents.  */
14214       lsal->sals.sals = NULL;
14215     }
14216
14217   destroy_linespec_result (&canonical);
14218 }
14219
14220 /* Prepare the global context for a re-set of breakpoint B.  */
14221
14222 static struct cleanup *
14223 prepare_re_set_context (struct breakpoint *b)
14224 {
14225   struct cleanup *cleanups;
14226
14227   input_radix = b->input_radix;
14228   cleanups = save_current_space_and_thread ();
14229   if (b->pspace != NULL)
14230     switch_to_program_space_and_thread (b->pspace);
14231   set_language (b->language);
14232
14233   return cleanups;
14234 }
14235
14236 /* Reset a breakpoint given it's struct breakpoint * BINT.
14237    The value we return ends up being the return value from catch_errors.
14238    Unused in this case.  */
14239
14240 static int
14241 breakpoint_re_set_one (void *bint)
14242 {
14243   /* Get past catch_errs.  */
14244   struct breakpoint *b = (struct breakpoint *) bint;
14245   struct cleanup *cleanups;
14246
14247   cleanups = prepare_re_set_context (b);
14248   b->ops->re_set (b);
14249   do_cleanups (cleanups);
14250   return 0;
14251 }
14252
14253 /* Re-set all breakpoints after symbols have been re-loaded.  */
14254 void
14255 breakpoint_re_set (void)
14256 {
14257   struct breakpoint *b, *b_tmp;
14258   enum language save_language;
14259   int save_input_radix;
14260   struct cleanup *old_chain;
14261
14262   save_language = current_language->la_language;
14263   save_input_radix = input_radix;
14264   old_chain = save_current_program_space ();
14265
14266   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14267   {
14268     /* Format possible error msg.  */
14269     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14270                                 b->number);
14271     struct cleanup *cleanups = make_cleanup (xfree, message);
14272     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14273     do_cleanups (cleanups);
14274   }
14275   set_language (save_language);
14276   input_radix = save_input_radix;
14277
14278   jit_breakpoint_re_set ();
14279
14280   do_cleanups (old_chain);
14281
14282   create_overlay_event_breakpoint ();
14283   create_longjmp_master_breakpoint ();
14284   create_std_terminate_master_breakpoint ();
14285   create_exception_master_breakpoint ();
14286 }
14287 \f
14288 /* Reset the thread number of this breakpoint:
14289
14290    - If the breakpoint is for all threads, leave it as-is.
14291    - Else, reset it to the current thread for inferior_ptid.  */
14292 void
14293 breakpoint_re_set_thread (struct breakpoint *b)
14294 {
14295   if (b->thread != -1)
14296     {
14297       if (in_thread_list (inferior_ptid))
14298         b->thread = pid_to_thread_id (inferior_ptid);
14299
14300       /* We're being called after following a fork.  The new fork is
14301          selected as current, and unless this was a vfork will have a
14302          different program space from the original thread.  Reset that
14303          as well.  */
14304       b->loc->pspace = current_program_space;
14305     }
14306 }
14307
14308 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14309    If from_tty is nonzero, it prints a message to that effect,
14310    which ends with a period (no newline).  */
14311
14312 void
14313 set_ignore_count (int bptnum, int count, int from_tty)
14314 {
14315   struct breakpoint *b;
14316
14317   if (count < 0)
14318     count = 0;
14319
14320   ALL_BREAKPOINTS (b)
14321     if (b->number == bptnum)
14322     {
14323       if (is_tracepoint (b))
14324         {
14325           if (from_tty && count != 0)
14326             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14327                              bptnum);
14328           return;
14329         }
14330       
14331       b->ignore_count = count;
14332       if (from_tty)
14333         {
14334           if (count == 0)
14335             printf_filtered (_("Will stop next time "
14336                                "breakpoint %d is reached."),
14337                              bptnum);
14338           else if (count == 1)
14339             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14340                              bptnum);
14341           else
14342             printf_filtered (_("Will ignore next %d "
14343                                "crossings of breakpoint %d."),
14344                              count, bptnum);
14345         }
14346       observer_notify_breakpoint_modified (b);
14347       return;
14348     }
14349
14350   error (_("No breakpoint number %d."), bptnum);
14351 }
14352
14353 /* Command to set ignore-count of breakpoint N to COUNT.  */
14354
14355 static void
14356 ignore_command (char *args, int from_tty)
14357 {
14358   char *p = args;
14359   int num;
14360
14361   if (p == 0)
14362     error_no_arg (_("a breakpoint number"));
14363
14364   num = get_number (&p);
14365   if (num == 0)
14366     error (_("bad breakpoint number: '%s'"), args);
14367   if (*p == 0)
14368     error (_("Second argument (specified ignore-count) is missing."));
14369
14370   set_ignore_count (num,
14371                     longest_to_int (value_as_long (parse_and_eval (p))),
14372                     from_tty);
14373   if (from_tty)
14374     printf_filtered ("\n");
14375 }
14376 \f
14377 /* Call FUNCTION on each of the breakpoints
14378    whose numbers are given in ARGS.  */
14379
14380 static void
14381 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14382                                                       void *),
14383                         void *data)
14384 {
14385   int num;
14386   struct breakpoint *b, *tmp;
14387   int match;
14388   struct get_number_or_range_state state;
14389
14390   if (args == 0)
14391     error_no_arg (_("one or more breakpoint numbers"));
14392
14393   init_number_or_range (&state, args);
14394
14395   while (!state.finished)
14396     {
14397       char *p = state.string;
14398
14399       match = 0;
14400
14401       num = get_number_or_range (&state);
14402       if (num == 0)
14403         {
14404           warning (_("bad breakpoint number at or near '%s'"), p);
14405         }
14406       else
14407         {
14408           ALL_BREAKPOINTS_SAFE (b, tmp)
14409             if (b->number == num)
14410               {
14411                 match = 1;
14412                 function (b, data);
14413                 break;
14414               }
14415           if (match == 0)
14416             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14417         }
14418     }
14419 }
14420
14421 static struct bp_location *
14422 find_location_by_number (char *number)
14423 {
14424   char *dot = strchr (number, '.');
14425   char *p1;
14426   int bp_num;
14427   int loc_num;
14428   struct breakpoint *b;
14429   struct bp_location *loc;  
14430
14431   *dot = '\0';
14432
14433   p1 = number;
14434   bp_num = get_number (&p1);
14435   if (bp_num == 0)
14436     error (_("Bad breakpoint number '%s'"), number);
14437
14438   ALL_BREAKPOINTS (b)
14439     if (b->number == bp_num)
14440       {
14441         break;
14442       }
14443
14444   if (!b || b->number != bp_num)
14445     error (_("Bad breakpoint number '%s'"), number);
14446   
14447   p1 = dot+1;
14448   loc_num = get_number (&p1);
14449   if (loc_num == 0)
14450     error (_("Bad breakpoint location number '%s'"), number);
14451
14452   --loc_num;
14453   loc = b->loc;
14454   for (;loc_num && loc; --loc_num, loc = loc->next)
14455     ;
14456   if (!loc)
14457     error (_("Bad breakpoint location number '%s'"), dot+1);
14458     
14459   return loc;  
14460 }
14461
14462
14463 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14464    If from_tty is nonzero, it prints a message to that effect,
14465    which ends with a period (no newline).  */
14466
14467 void
14468 disable_breakpoint (struct breakpoint *bpt)
14469 {
14470   /* Never disable a watchpoint scope breakpoint; we want to
14471      hit them when we leave scope so we can delete both the
14472      watchpoint and its scope breakpoint at that time.  */
14473   if (bpt->type == bp_watchpoint_scope)
14474     return;
14475
14476   /* You can't disable permanent breakpoints.  */
14477   if (bpt->enable_state == bp_permanent)
14478     return;
14479
14480   bpt->enable_state = bp_disabled;
14481
14482   /* Mark breakpoint locations modified.  */
14483   mark_breakpoint_modified (bpt);
14484
14485   if (target_supports_enable_disable_tracepoint ()
14486       && current_trace_status ()->running && is_tracepoint (bpt))
14487     {
14488       struct bp_location *location;
14489      
14490       for (location = bpt->loc; location; location = location->next)
14491         target_disable_tracepoint (location);
14492     }
14493
14494   update_global_location_list (0);
14495
14496   observer_notify_breakpoint_modified (bpt);
14497 }
14498
14499 /* A callback for iterate_over_related_breakpoints.  */
14500
14501 static void
14502 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14503 {
14504   disable_breakpoint (b);
14505 }
14506
14507 /* A callback for map_breakpoint_numbers that calls
14508    disable_breakpoint.  */
14509
14510 static void
14511 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14512 {
14513   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14514 }
14515
14516 static void
14517 disable_command (char *args, int from_tty)
14518 {
14519   if (args == 0)
14520     {
14521       struct breakpoint *bpt;
14522
14523       ALL_BREAKPOINTS (bpt)
14524         if (user_breakpoint_p (bpt))
14525           disable_breakpoint (bpt);
14526     }
14527   else if (strchr (args, '.'))
14528     {
14529       struct bp_location *loc = find_location_by_number (args);
14530       if (loc)
14531         {
14532           if (loc->enabled)
14533             {
14534               loc->enabled = 0;
14535               mark_breakpoint_location_modified (loc);
14536             }
14537           if (target_supports_enable_disable_tracepoint ()
14538               && current_trace_status ()->running && loc->owner
14539               && is_tracepoint (loc->owner))
14540             target_disable_tracepoint (loc);
14541         }
14542       update_global_location_list (0);
14543     }
14544   else
14545     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14546 }
14547
14548 static void
14549 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14550                         int count)
14551 {
14552   int target_resources_ok;
14553
14554   if (bpt->type == bp_hardware_breakpoint)
14555     {
14556       int i;
14557       i = hw_breakpoint_used_count ();
14558       target_resources_ok = 
14559         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14560                                             i + 1, 0);
14561       if (target_resources_ok == 0)
14562         error (_("No hardware breakpoint support in the target."));
14563       else if (target_resources_ok < 0)
14564         error (_("Hardware breakpoints used exceeds limit."));
14565     }
14566
14567   if (is_watchpoint (bpt))
14568     {
14569       /* Initialize it just to avoid a GCC false warning.  */
14570       enum enable_state orig_enable_state = 0;
14571       volatile struct gdb_exception e;
14572
14573       TRY_CATCH (e, RETURN_MASK_ALL)
14574         {
14575           struct watchpoint *w = (struct watchpoint *) bpt;
14576
14577           orig_enable_state = bpt->enable_state;
14578           bpt->enable_state = bp_enabled;
14579           update_watchpoint (w, 1 /* reparse */);
14580         }
14581       if (e.reason < 0)
14582         {
14583           bpt->enable_state = orig_enable_state;
14584           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14585                              bpt->number);
14586           return;
14587         }
14588     }
14589
14590   if (bpt->enable_state != bp_permanent)
14591     bpt->enable_state = bp_enabled;
14592
14593   bpt->enable_state = bp_enabled;
14594
14595   /* Mark breakpoint locations modified.  */
14596   mark_breakpoint_modified (bpt);
14597
14598   if (target_supports_enable_disable_tracepoint ()
14599       && current_trace_status ()->running && is_tracepoint (bpt))
14600     {
14601       struct bp_location *location;
14602
14603       for (location = bpt->loc; location; location = location->next)
14604         target_enable_tracepoint (location);
14605     }
14606
14607   bpt->disposition = disposition;
14608   bpt->enable_count = count;
14609   update_global_location_list (1);
14610
14611   observer_notify_breakpoint_modified (bpt);
14612 }
14613
14614
14615 void
14616 enable_breakpoint (struct breakpoint *bpt)
14617 {
14618   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14619 }
14620
14621 static void
14622 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14623 {
14624   enable_breakpoint (bpt);
14625 }
14626
14627 /* A callback for map_breakpoint_numbers that calls
14628    enable_breakpoint.  */
14629
14630 static void
14631 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14632 {
14633   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14634 }
14635
14636 /* The enable command enables the specified breakpoints (or all defined
14637    breakpoints) so they once again become (or continue to be) effective
14638    in stopping the inferior.  */
14639
14640 static void
14641 enable_command (char *args, int from_tty)
14642 {
14643   if (args == 0)
14644     {
14645       struct breakpoint *bpt;
14646
14647       ALL_BREAKPOINTS (bpt)
14648         if (user_breakpoint_p (bpt))
14649           enable_breakpoint (bpt);
14650     }
14651   else if (strchr (args, '.'))
14652     {
14653       struct bp_location *loc = find_location_by_number (args);
14654       if (loc)
14655         {
14656           if (!loc->enabled)
14657             {
14658               loc->enabled = 1;
14659               mark_breakpoint_location_modified (loc);
14660             }
14661           if (target_supports_enable_disable_tracepoint ()
14662               && current_trace_status ()->running && loc->owner
14663               && is_tracepoint (loc->owner))
14664             target_enable_tracepoint (loc);
14665         }
14666       update_global_location_list (1);
14667     }
14668   else
14669     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14670 }
14671
14672 /* This struct packages up disposition data for application to multiple
14673    breakpoints.  */
14674
14675 struct disp_data
14676 {
14677   enum bpdisp disp;
14678   int count;
14679 };
14680
14681 static void
14682 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14683 {
14684   struct disp_data disp_data = *(struct disp_data *) arg;
14685
14686   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14687 }
14688
14689 static void
14690 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14691 {
14692   struct disp_data disp = { disp_disable, 1 };
14693
14694   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14695 }
14696
14697 static void
14698 enable_once_command (char *args, int from_tty)
14699 {
14700   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14701 }
14702
14703 static void
14704 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14705 {
14706   struct disp_data disp = { disp_disable, *(int *) countptr };
14707
14708   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14709 }
14710
14711 static void
14712 enable_count_command (char *args, int from_tty)
14713 {
14714   int count = get_number (&args);
14715
14716   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14717 }
14718
14719 static void
14720 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14721 {
14722   struct disp_data disp = { disp_del, 1 };
14723
14724   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14725 }
14726
14727 static void
14728 enable_delete_command (char *args, int from_tty)
14729 {
14730   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14731 }
14732 \f
14733 static void
14734 set_breakpoint_cmd (char *args, int from_tty)
14735 {
14736 }
14737
14738 static void
14739 show_breakpoint_cmd (char *args, int from_tty)
14740 {
14741 }
14742
14743 /* Invalidate last known value of any hardware watchpoint if
14744    the memory which that value represents has been written to by
14745    GDB itself.  */
14746
14747 static void
14748 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14749                                       CORE_ADDR addr, ssize_t len,
14750                                       const bfd_byte *data)
14751 {
14752   struct breakpoint *bp;
14753
14754   ALL_BREAKPOINTS (bp)
14755     if (bp->enable_state == bp_enabled
14756         && bp->type == bp_hardware_watchpoint)
14757       {
14758         struct watchpoint *wp = (struct watchpoint *) bp;
14759
14760         if (wp->val_valid && wp->val)
14761           {
14762             struct bp_location *loc;
14763
14764             for (loc = bp->loc; loc != NULL; loc = loc->next)
14765               if (loc->loc_type == bp_loc_hardware_watchpoint
14766                   && loc->address + loc->length > addr
14767                   && addr + len > loc->address)
14768                 {
14769                   value_free (wp->val);
14770                   wp->val = NULL;
14771                   wp->val_valid = 0;
14772                 }
14773           }
14774       }
14775 }
14776
14777 /* Create and insert a raw software breakpoint at PC.  Return an
14778    identifier, which should be used to remove the breakpoint later.
14779    In general, places which call this should be using something on the
14780    breakpoint chain instead; this function should be eliminated
14781    someday.  */
14782
14783 void *
14784 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14785                                   struct address_space *aspace, CORE_ADDR pc)
14786 {
14787   struct bp_target_info *bp_tgt;
14788
14789   bp_tgt = XZALLOC (struct bp_target_info);
14790
14791   bp_tgt->placed_address_space = aspace;
14792   bp_tgt->placed_address = pc;
14793
14794   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14795     {
14796       /* Could not insert the breakpoint.  */
14797       xfree (bp_tgt);
14798       return NULL;
14799     }
14800
14801   return bp_tgt;
14802 }
14803
14804 /* Remove a breakpoint BP inserted by
14805    deprecated_insert_raw_breakpoint.  */
14806
14807 int
14808 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14809 {
14810   struct bp_target_info *bp_tgt = bp;
14811   int ret;
14812
14813   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14814   xfree (bp_tgt);
14815
14816   return ret;
14817 }
14818
14819 /* One (or perhaps two) breakpoints used for software single
14820    stepping.  */
14821
14822 static void *single_step_breakpoints[2];
14823 static struct gdbarch *single_step_gdbarch[2];
14824
14825 /* Create and insert a breakpoint for software single step.  */
14826
14827 void
14828 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14829                                struct address_space *aspace, 
14830                                CORE_ADDR next_pc)
14831 {
14832   void **bpt_p;
14833
14834   if (single_step_breakpoints[0] == NULL)
14835     {
14836       bpt_p = &single_step_breakpoints[0];
14837       single_step_gdbarch[0] = gdbarch;
14838     }
14839   else
14840     {
14841       gdb_assert (single_step_breakpoints[1] == NULL);
14842       bpt_p = &single_step_breakpoints[1];
14843       single_step_gdbarch[1] = gdbarch;
14844     }
14845
14846   /* NOTE drow/2006-04-11: A future improvement to this function would
14847      be to only create the breakpoints once, and actually put them on
14848      the breakpoint chain.  That would let us use set_raw_breakpoint.
14849      We could adjust the addresses each time they were needed.  Doing
14850      this requires corresponding changes elsewhere where single step
14851      breakpoints are handled, however.  So, for now, we use this.  */
14852
14853   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14854   if (*bpt_p == NULL)
14855     error (_("Could not insert single-step breakpoint at %s"),
14856              paddress (gdbarch, next_pc));
14857 }
14858
14859 /* Check if the breakpoints used for software single stepping
14860    were inserted or not.  */
14861
14862 int
14863 single_step_breakpoints_inserted (void)
14864 {
14865   return (single_step_breakpoints[0] != NULL
14866           || single_step_breakpoints[1] != NULL);
14867 }
14868
14869 /* Remove and delete any breakpoints used for software single step.  */
14870
14871 void
14872 remove_single_step_breakpoints (void)
14873 {
14874   gdb_assert (single_step_breakpoints[0] != NULL);
14875
14876   /* See insert_single_step_breakpoint for more about this deprecated
14877      call.  */
14878   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14879                                     single_step_breakpoints[0]);
14880   single_step_gdbarch[0] = NULL;
14881   single_step_breakpoints[0] = NULL;
14882
14883   if (single_step_breakpoints[1] != NULL)
14884     {
14885       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14886                                         single_step_breakpoints[1]);
14887       single_step_gdbarch[1] = NULL;
14888       single_step_breakpoints[1] = NULL;
14889     }
14890 }
14891
14892 /* Delete software single step breakpoints without removing them from
14893    the inferior.  This is intended to be used if the inferior's address
14894    space where they were inserted is already gone, e.g. after exit or
14895    exec.  */
14896
14897 void
14898 cancel_single_step_breakpoints (void)
14899 {
14900   int i;
14901
14902   for (i = 0; i < 2; i++)
14903     if (single_step_breakpoints[i])
14904       {
14905         xfree (single_step_breakpoints[i]);
14906         single_step_breakpoints[i] = NULL;
14907         single_step_gdbarch[i] = NULL;
14908       }
14909 }
14910
14911 /* Detach software single-step breakpoints from INFERIOR_PTID without
14912    removing them.  */
14913
14914 static void
14915 detach_single_step_breakpoints (void)
14916 {
14917   int i;
14918
14919   for (i = 0; i < 2; i++)
14920     if (single_step_breakpoints[i])
14921       target_remove_breakpoint (single_step_gdbarch[i],
14922                                 single_step_breakpoints[i]);
14923 }
14924
14925 /* Check whether a software single-step breakpoint is inserted at
14926    PC.  */
14927
14928 static int
14929 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14930                                         CORE_ADDR pc)
14931 {
14932   int i;
14933
14934   for (i = 0; i < 2; i++)
14935     {
14936       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14937       if (bp_tgt
14938           && breakpoint_address_match (bp_tgt->placed_address_space,
14939                                        bp_tgt->placed_address,
14940                                        aspace, pc))
14941         return 1;
14942     }
14943
14944   return 0;
14945 }
14946
14947 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14948    non-zero otherwise.  */
14949 static int
14950 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14951 {
14952   if (syscall_catchpoint_p (bp)
14953       && bp->enable_state != bp_disabled
14954       && bp->enable_state != bp_call_disabled)
14955     return 1;
14956   else
14957     return 0;
14958 }
14959
14960 int
14961 catch_syscall_enabled (void)
14962 {
14963   struct catch_syscall_inferior_data *inf_data
14964     = get_catch_syscall_inferior_data (current_inferior ());
14965
14966   return inf_data->total_syscalls_count != 0;
14967 }
14968
14969 int
14970 catching_syscall_number (int syscall_number)
14971 {
14972   struct breakpoint *bp;
14973
14974   ALL_BREAKPOINTS (bp)
14975     if (is_syscall_catchpoint_enabled (bp))
14976       {
14977         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14978
14979         if (c->syscalls_to_be_caught)
14980           {
14981             int i, iter;
14982             for (i = 0;
14983                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14984                  i++)
14985               if (syscall_number == iter)
14986                 return 1;
14987           }
14988         else
14989           return 1;
14990       }
14991
14992   return 0;
14993 }
14994
14995 /* Complete syscall names.  Used by "catch syscall".  */
14996 static VEC (char_ptr) *
14997 catch_syscall_completer (struct cmd_list_element *cmd,
14998                          const char *text, const char *word)
14999 {
15000   const char **list = get_syscall_names ();
15001   VEC (char_ptr) *retlist
15002     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15003
15004   xfree (list);
15005   return retlist;
15006 }
15007
15008 /* Tracepoint-specific operations.  */
15009
15010 /* Set tracepoint count to NUM.  */
15011 static void
15012 set_tracepoint_count (int num)
15013 {
15014   tracepoint_count = num;
15015   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15016 }
15017
15018 static void
15019 trace_command (char *arg, int from_tty)
15020 {
15021   struct breakpoint_ops *ops;
15022   const char *arg_cp = arg;
15023
15024   if (arg && probe_linespec_to_ops (&arg_cp))
15025     ops = &tracepoint_probe_breakpoint_ops;
15026   else
15027     ops = &tracepoint_breakpoint_ops;
15028
15029   create_breakpoint (get_current_arch (),
15030                      arg,
15031                      NULL, 0, NULL, 1 /* parse arg */,
15032                      0 /* tempflag */,
15033                      bp_tracepoint /* type_wanted */,
15034                      0 /* Ignore count */,
15035                      pending_break_support,
15036                      ops,
15037                      from_tty,
15038                      1 /* enabled */,
15039                      0 /* internal */, 0);
15040 }
15041
15042 static void
15043 ftrace_command (char *arg, int from_tty)
15044 {
15045   create_breakpoint (get_current_arch (),
15046                      arg,
15047                      NULL, 0, NULL, 1 /* parse arg */,
15048                      0 /* tempflag */,
15049                      bp_fast_tracepoint /* type_wanted */,
15050                      0 /* Ignore count */,
15051                      pending_break_support,
15052                      &tracepoint_breakpoint_ops,
15053                      from_tty,
15054                      1 /* enabled */,
15055                      0 /* internal */, 0);
15056 }
15057
15058 /* strace command implementation.  Creates a static tracepoint.  */
15059
15060 static void
15061 strace_command (char *arg, int from_tty)
15062 {
15063   struct breakpoint_ops *ops;
15064
15065   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15066      or with a normal static tracepoint.  */
15067   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15068     ops = &strace_marker_breakpoint_ops;
15069   else
15070     ops = &tracepoint_breakpoint_ops;
15071
15072   create_breakpoint (get_current_arch (),
15073                      arg,
15074                      NULL, 0, NULL, 1 /* parse arg */,
15075                      0 /* tempflag */,
15076                      bp_static_tracepoint /* type_wanted */,
15077                      0 /* Ignore count */,
15078                      pending_break_support,
15079                      ops,
15080                      from_tty,
15081                      1 /* enabled */,
15082                      0 /* internal */, 0);
15083 }
15084
15085 /* Set up a fake reader function that gets command lines from a linked
15086    list that was acquired during tracepoint uploading.  */
15087
15088 static struct uploaded_tp *this_utp;
15089 static int next_cmd;
15090
15091 static char *
15092 read_uploaded_action (void)
15093 {
15094   char *rslt;
15095
15096   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15097
15098   next_cmd++;
15099
15100   return rslt;
15101 }
15102
15103 /* Given information about a tracepoint as recorded on a target (which
15104    can be either a live system or a trace file), attempt to create an
15105    equivalent GDB tracepoint.  This is not a reliable process, since
15106    the target does not necessarily have all the information used when
15107    the tracepoint was originally defined.  */
15108   
15109 struct tracepoint *
15110 create_tracepoint_from_upload (struct uploaded_tp *utp)
15111 {
15112   char *addr_str, small_buf[100];
15113   struct tracepoint *tp;
15114
15115   if (utp->at_string)
15116     addr_str = utp->at_string;
15117   else
15118     {
15119       /* In the absence of a source location, fall back to raw
15120          address.  Since there is no way to confirm that the address
15121          means the same thing as when the trace was started, warn the
15122          user.  */
15123       warning (_("Uploaded tracepoint %d has no "
15124                  "source location, using raw address"),
15125                utp->number);
15126       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15127       addr_str = small_buf;
15128     }
15129
15130   /* There's not much we can do with a sequence of bytecodes.  */
15131   if (utp->cond && !utp->cond_string)
15132     warning (_("Uploaded tracepoint %d condition "
15133                "has no source form, ignoring it"),
15134              utp->number);
15135
15136   if (!create_breakpoint (get_current_arch (),
15137                           addr_str,
15138                           utp->cond_string, -1, NULL,
15139                           0 /* parse cond/thread */,
15140                           0 /* tempflag */,
15141                           utp->type /* type_wanted */,
15142                           0 /* Ignore count */,
15143                           pending_break_support,
15144                           &tracepoint_breakpoint_ops,
15145                           0 /* from_tty */,
15146                           utp->enabled /* enabled */,
15147                           0 /* internal */,
15148                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15149     return NULL;
15150
15151   /* Get the tracepoint we just created.  */
15152   tp = get_tracepoint (tracepoint_count);
15153   gdb_assert (tp != NULL);
15154
15155   if (utp->pass > 0)
15156     {
15157       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15158                  tp->base.number);
15159
15160       trace_pass_command (small_buf, 0);
15161     }
15162
15163   /* If we have uploaded versions of the original commands, set up a
15164      special-purpose "reader" function and call the usual command line
15165      reader, then pass the result to the breakpoint command-setting
15166      function.  */
15167   if (!VEC_empty (char_ptr, utp->cmd_strings))
15168     {
15169       struct command_line *cmd_list;
15170
15171       this_utp = utp;
15172       next_cmd = 0;
15173
15174       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15175
15176       breakpoint_set_commands (&tp->base, cmd_list);
15177     }
15178   else if (!VEC_empty (char_ptr, utp->actions)
15179            || !VEC_empty (char_ptr, utp->step_actions))
15180     warning (_("Uploaded tracepoint %d actions "
15181                "have no source form, ignoring them"),
15182              utp->number);
15183
15184   /* Copy any status information that might be available.  */
15185   tp->base.hit_count = utp->hit_count;
15186   tp->traceframe_usage = utp->traceframe_usage;
15187
15188   return tp;
15189 }
15190   
15191 /* Print information on tracepoint number TPNUM_EXP, or all if
15192    omitted.  */
15193
15194 static void
15195 tracepoints_info (char *args, int from_tty)
15196 {
15197   struct ui_out *uiout = current_uiout;
15198   int num_printed;
15199
15200   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15201
15202   if (num_printed == 0)
15203     {
15204       if (args == NULL || *args == '\0')
15205         ui_out_message (uiout, 0, "No tracepoints.\n");
15206       else
15207         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15208     }
15209
15210   default_collect_info ();
15211 }
15212
15213 /* The 'enable trace' command enables tracepoints.
15214    Not supported by all targets.  */
15215 static void
15216 enable_trace_command (char *args, int from_tty)
15217 {
15218   enable_command (args, from_tty);
15219 }
15220
15221 /* The 'disable trace' command disables tracepoints.
15222    Not supported by all targets.  */
15223 static void
15224 disable_trace_command (char *args, int from_tty)
15225 {
15226   disable_command (args, from_tty);
15227 }
15228
15229 /* Remove a tracepoint (or all if no argument).  */
15230 static void
15231 delete_trace_command (char *arg, int from_tty)
15232 {
15233   struct breakpoint *b, *b_tmp;
15234
15235   dont_repeat ();
15236
15237   if (arg == 0)
15238     {
15239       int breaks_to_delete = 0;
15240
15241       /* Delete all breakpoints if no argument.
15242          Do not delete internal or call-dummy breakpoints, these
15243          have to be deleted with an explicit breakpoint number 
15244          argument.  */
15245       ALL_TRACEPOINTS (b)
15246         if (is_tracepoint (b) && user_breakpoint_p (b))
15247           {
15248             breaks_to_delete = 1;
15249             break;
15250           }
15251
15252       /* Ask user only if there are some breakpoints to delete.  */
15253       if (!from_tty
15254           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15255         {
15256           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15257             if (is_tracepoint (b) && user_breakpoint_p (b))
15258               delete_breakpoint (b);
15259         }
15260     }
15261   else
15262     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15263 }
15264
15265 /* Helper function for trace_pass_command.  */
15266
15267 static void
15268 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15269 {
15270   tp->pass_count = count;
15271   observer_notify_breakpoint_modified (&tp->base);
15272   if (from_tty)
15273     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15274                      tp->base.number, count);
15275 }
15276
15277 /* Set passcount for tracepoint.
15278
15279    First command argument is passcount, second is tracepoint number.
15280    If tracepoint number omitted, apply to most recently defined.
15281    Also accepts special argument "all".  */
15282
15283 static void
15284 trace_pass_command (char *args, int from_tty)
15285 {
15286   struct tracepoint *t1;
15287   unsigned int count;
15288
15289   if (args == 0 || *args == 0)
15290     error (_("passcount command requires an "
15291              "argument (count + optional TP num)"));
15292
15293   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15294
15295   args = skip_spaces (args);
15296   if (*args && strncasecmp (args, "all", 3) == 0)
15297     {
15298       struct breakpoint *b;
15299
15300       args += 3;                        /* Skip special argument "all".  */
15301       if (*args)
15302         error (_("Junk at end of arguments."));
15303
15304       ALL_TRACEPOINTS (b)
15305       {
15306         t1 = (struct tracepoint *) b;
15307         trace_pass_set_count (t1, count, from_tty);
15308       }
15309     }
15310   else if (*args == '\0')
15311     {
15312       t1 = get_tracepoint_by_number (&args, NULL, 1);
15313       if (t1)
15314         trace_pass_set_count (t1, count, from_tty);
15315     }
15316   else
15317     {
15318       struct get_number_or_range_state state;
15319
15320       init_number_or_range (&state, args);
15321       while (!state.finished)
15322         {
15323           t1 = get_tracepoint_by_number (&args, &state, 1);
15324           if (t1)
15325             trace_pass_set_count (t1, count, from_tty);
15326         }
15327     }
15328 }
15329
15330 struct tracepoint *
15331 get_tracepoint (int num)
15332 {
15333   struct breakpoint *t;
15334
15335   ALL_TRACEPOINTS (t)
15336     if (t->number == num)
15337       return (struct tracepoint *) t;
15338
15339   return NULL;
15340 }
15341
15342 /* Find the tracepoint with the given target-side number (which may be
15343    different from the tracepoint number after disconnecting and
15344    reconnecting).  */
15345
15346 struct tracepoint *
15347 get_tracepoint_by_number_on_target (int num)
15348 {
15349   struct breakpoint *b;
15350
15351   ALL_TRACEPOINTS (b)
15352     {
15353       struct tracepoint *t = (struct tracepoint *) b;
15354
15355       if (t->number_on_target == num)
15356         return t;
15357     }
15358
15359   return NULL;
15360 }
15361
15362 /* Utility: parse a tracepoint number and look it up in the list.
15363    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15364    If OPTIONAL_P is true, then if the argument is missing, the most
15365    recent tracepoint (tracepoint_count) is returned.  */
15366 struct tracepoint *
15367 get_tracepoint_by_number (char **arg,
15368                           struct get_number_or_range_state *state,
15369                           int optional_p)
15370 {
15371   struct breakpoint *t;
15372   int tpnum;
15373   char *instring = arg == NULL ? NULL : *arg;
15374
15375   if (state)
15376     {
15377       gdb_assert (!state->finished);
15378       tpnum = get_number_or_range (state);
15379     }
15380   else if (arg == NULL || *arg == NULL || ! **arg)
15381     {
15382       if (optional_p)
15383         tpnum = tracepoint_count;
15384       else
15385         error_no_arg (_("tracepoint number"));
15386     }
15387   else
15388     tpnum = get_number (arg);
15389
15390   if (tpnum <= 0)
15391     {
15392       if (instring && *instring)
15393         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15394                          instring);
15395       else
15396         printf_filtered (_("Tracepoint argument missing "
15397                            "and no previous tracepoint\n"));
15398       return NULL;
15399     }
15400
15401   ALL_TRACEPOINTS (t)
15402     if (t->number == tpnum)
15403     {
15404       return (struct tracepoint *) t;
15405     }
15406
15407   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15408   return NULL;
15409 }
15410
15411 void
15412 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15413 {
15414   if (b->thread != -1)
15415     fprintf_unfiltered (fp, " thread %d", b->thread);
15416
15417   if (b->task != 0)
15418     fprintf_unfiltered (fp, " task %d", b->task);
15419
15420   fprintf_unfiltered (fp, "\n");
15421 }
15422
15423 /* Save information on user settable breakpoints (watchpoints, etc) to
15424    a new script file named FILENAME.  If FILTER is non-NULL, call it
15425    on each breakpoint and only include the ones for which it returns
15426    non-zero.  */
15427
15428 static void
15429 save_breakpoints (char *filename, int from_tty,
15430                   int (*filter) (const struct breakpoint *))
15431 {
15432   struct breakpoint *tp;
15433   int any = 0;
15434   char *pathname;
15435   struct cleanup *cleanup;
15436   struct ui_file *fp;
15437   int extra_trace_bits = 0;
15438
15439   if (filename == 0 || *filename == 0)
15440     error (_("Argument required (file name in which to save)"));
15441
15442   /* See if we have anything to save.  */
15443   ALL_BREAKPOINTS (tp)
15444   {
15445     /* Skip internal and momentary breakpoints.  */
15446     if (!user_breakpoint_p (tp))
15447       continue;
15448
15449     /* If we have a filter, only save the breakpoints it accepts.  */
15450     if (filter && !filter (tp))
15451       continue;
15452
15453     any = 1;
15454
15455     if (is_tracepoint (tp))
15456       {
15457         extra_trace_bits = 1;
15458
15459         /* We can stop searching.  */
15460         break;
15461       }
15462   }
15463
15464   if (!any)
15465     {
15466       warning (_("Nothing to save."));
15467       return;
15468     }
15469
15470   pathname = tilde_expand (filename);
15471   cleanup = make_cleanup (xfree, pathname);
15472   fp = gdb_fopen (pathname, "w");
15473   if (!fp)
15474     error (_("Unable to open file '%s' for saving (%s)"),
15475            filename, safe_strerror (errno));
15476   make_cleanup_ui_file_delete (fp);
15477
15478   if (extra_trace_bits)
15479     save_trace_state_variables (fp);
15480
15481   ALL_BREAKPOINTS (tp)
15482   {
15483     /* Skip internal and momentary breakpoints.  */
15484     if (!user_breakpoint_p (tp))
15485       continue;
15486
15487     /* If we have a filter, only save the breakpoints it accepts.  */
15488     if (filter && !filter (tp))
15489       continue;
15490
15491     tp->ops->print_recreate (tp, fp);
15492
15493     /* Note, we can't rely on tp->number for anything, as we can't
15494        assume the recreated breakpoint numbers will match.  Use $bpnum
15495        instead.  */
15496
15497     if (tp->cond_string)
15498       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15499
15500     if (tp->ignore_count)
15501       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15502
15503     if (tp->type != bp_dprintf && tp->commands)
15504       {
15505         volatile struct gdb_exception ex;       
15506
15507         fprintf_unfiltered (fp, "  commands\n");
15508         
15509         ui_out_redirect (current_uiout, fp);
15510         TRY_CATCH (ex, RETURN_MASK_ALL)
15511           {
15512             print_command_lines (current_uiout, tp->commands->commands, 2);
15513           }
15514         ui_out_redirect (current_uiout, NULL);
15515
15516         if (ex.reason < 0)
15517           throw_exception (ex);
15518
15519         fprintf_unfiltered (fp, "  end\n");
15520       }
15521
15522     if (tp->enable_state == bp_disabled)
15523       fprintf_unfiltered (fp, "disable\n");
15524
15525     /* If this is a multi-location breakpoint, check if the locations
15526        should be individually disabled.  Watchpoint locations are
15527        special, and not user visible.  */
15528     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15529       {
15530         struct bp_location *loc;
15531         int n = 1;
15532
15533         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15534           if (!loc->enabled)
15535             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15536       }
15537   }
15538
15539   if (extra_trace_bits && *default_collect)
15540     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15541
15542   do_cleanups (cleanup);
15543   if (from_tty)
15544     printf_filtered (_("Saved to file '%s'.\n"), filename);
15545 }
15546
15547 /* The `save breakpoints' command.  */
15548
15549 static void
15550 save_breakpoints_command (char *args, int from_tty)
15551 {
15552   save_breakpoints (args, from_tty, NULL);
15553 }
15554
15555 /* The `save tracepoints' command.  */
15556
15557 static void
15558 save_tracepoints_command (char *args, int from_tty)
15559 {
15560   save_breakpoints (args, from_tty, is_tracepoint);
15561 }
15562
15563 /* Create a vector of all tracepoints.  */
15564
15565 VEC(breakpoint_p) *
15566 all_tracepoints (void)
15567 {
15568   VEC(breakpoint_p) *tp_vec = 0;
15569   struct breakpoint *tp;
15570
15571   ALL_TRACEPOINTS (tp)
15572   {
15573     VEC_safe_push (breakpoint_p, tp_vec, tp);
15574   }
15575
15576   return tp_vec;
15577 }
15578
15579 \f
15580 /* This help string is used for the break, hbreak, tbreak and thbreak
15581    commands.  It is defined as a macro to prevent duplication.
15582    COMMAND should be a string constant containing the name of the
15583    command.  */
15584 #define BREAK_ARGS_HELP(command) \
15585 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15586 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15587 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15588 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15589 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15590 If a line number is specified, break at start of code for that line.\n\
15591 If a function is specified, break at start of code for that function.\n\
15592 If an address is specified, break at that exact address.\n\
15593 With no LOCATION, uses current execution address of the selected\n\
15594 stack frame.  This is useful for breaking on return to a stack frame.\n\
15595 \n\
15596 THREADNUM is the number from \"info threads\".\n\
15597 CONDITION is a boolean expression.\n\
15598 \n\
15599 Multiple breakpoints at one place are permitted, and useful if their\n\
15600 conditions are different.\n\
15601 \n\
15602 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15603
15604 /* List of subcommands for "catch".  */
15605 static struct cmd_list_element *catch_cmdlist;
15606
15607 /* List of subcommands for "tcatch".  */
15608 static struct cmd_list_element *tcatch_cmdlist;
15609
15610 void
15611 add_catch_command (char *name, char *docstring,
15612                    void (*sfunc) (char *args, int from_tty,
15613                                   struct cmd_list_element *command),
15614                    completer_ftype *completer,
15615                    void *user_data_catch,
15616                    void *user_data_tcatch)
15617 {
15618   struct cmd_list_element *command;
15619
15620   command = add_cmd (name, class_breakpoint, NULL, docstring,
15621                      &catch_cmdlist);
15622   set_cmd_sfunc (command, sfunc);
15623   set_cmd_context (command, user_data_catch);
15624   set_cmd_completer (command, completer);
15625
15626   command = add_cmd (name, class_breakpoint, NULL, docstring,
15627                      &tcatch_cmdlist);
15628   set_cmd_sfunc (command, sfunc);
15629   set_cmd_context (command, user_data_tcatch);
15630   set_cmd_completer (command, completer);
15631 }
15632
15633 static void
15634 clear_syscall_counts (struct inferior *inf)
15635 {
15636   struct catch_syscall_inferior_data *inf_data
15637     = get_catch_syscall_inferior_data (inf);
15638
15639   inf_data->total_syscalls_count = 0;
15640   inf_data->any_syscall_count = 0;
15641   VEC_free (int, inf_data->syscalls_counts);
15642 }
15643
15644 static void
15645 save_command (char *arg, int from_tty)
15646 {
15647   printf_unfiltered (_("\"save\" must be followed by "
15648                        "the name of a save subcommand.\n"));
15649   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15650 }
15651
15652 struct breakpoint *
15653 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15654                           void *data)
15655 {
15656   struct breakpoint *b, *b_tmp;
15657
15658   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15659     {
15660       if ((*callback) (b, data))
15661         return b;
15662     }
15663
15664   return NULL;
15665 }
15666
15667 /* Zero if any of the breakpoint's locations could be a location where
15668    functions have been inlined, nonzero otherwise.  */
15669
15670 static int
15671 is_non_inline_function (struct breakpoint *b)
15672 {
15673   /* The shared library event breakpoint is set on the address of a
15674      non-inline function.  */
15675   if (b->type == bp_shlib_event)
15676     return 1;
15677
15678   return 0;
15679 }
15680
15681 /* Nonzero if the specified PC cannot be a location where functions
15682    have been inlined.  */
15683
15684 int
15685 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15686                            const struct target_waitstatus *ws)
15687 {
15688   struct breakpoint *b;
15689   struct bp_location *bl;
15690
15691   ALL_BREAKPOINTS (b)
15692     {
15693       if (!is_non_inline_function (b))
15694         continue;
15695
15696       for (bl = b->loc; bl != NULL; bl = bl->next)
15697         {
15698           if (!bl->shlib_disabled
15699               && bpstat_check_location (bl, aspace, pc, ws))
15700             return 1;
15701         }
15702     }
15703
15704   return 0;
15705 }
15706
15707 /* Remove any references to OBJFILE which is going to be freed.  */
15708
15709 void
15710 breakpoint_free_objfile (struct objfile *objfile)
15711 {
15712   struct bp_location **locp, *loc;
15713
15714   ALL_BP_LOCATIONS (loc, locp)
15715     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15716       loc->symtab = NULL;
15717 }
15718
15719 void
15720 initialize_breakpoint_ops (void)
15721 {
15722   static int initialized = 0;
15723
15724   struct breakpoint_ops *ops;
15725
15726   if (initialized)
15727     return;
15728   initialized = 1;
15729
15730   /* The breakpoint_ops structure to be inherit by all kinds of
15731      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15732      internal and momentary breakpoints, etc.).  */
15733   ops = &bkpt_base_breakpoint_ops;
15734   *ops = base_breakpoint_ops;
15735   ops->re_set = bkpt_re_set;
15736   ops->insert_location = bkpt_insert_location;
15737   ops->remove_location = bkpt_remove_location;
15738   ops->breakpoint_hit = bkpt_breakpoint_hit;
15739   ops->create_sals_from_address = bkpt_create_sals_from_address;
15740   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15741   ops->decode_linespec = bkpt_decode_linespec;
15742
15743   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15744   ops = &bkpt_breakpoint_ops;
15745   *ops = bkpt_base_breakpoint_ops;
15746   ops->re_set = bkpt_re_set;
15747   ops->resources_needed = bkpt_resources_needed;
15748   ops->print_it = bkpt_print_it;
15749   ops->print_mention = bkpt_print_mention;
15750   ops->print_recreate = bkpt_print_recreate;
15751
15752   /* Ranged breakpoints.  */
15753   ops = &ranged_breakpoint_ops;
15754   *ops = bkpt_breakpoint_ops;
15755   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15756   ops->resources_needed = resources_needed_ranged_breakpoint;
15757   ops->print_it = print_it_ranged_breakpoint;
15758   ops->print_one = print_one_ranged_breakpoint;
15759   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15760   ops->print_mention = print_mention_ranged_breakpoint;
15761   ops->print_recreate = print_recreate_ranged_breakpoint;
15762
15763   /* Internal breakpoints.  */
15764   ops = &internal_breakpoint_ops;
15765   *ops = bkpt_base_breakpoint_ops;
15766   ops->re_set = internal_bkpt_re_set;
15767   ops->check_status = internal_bkpt_check_status;
15768   ops->print_it = internal_bkpt_print_it;
15769   ops->print_mention = internal_bkpt_print_mention;
15770
15771   /* Momentary breakpoints.  */
15772   ops = &momentary_breakpoint_ops;
15773   *ops = bkpt_base_breakpoint_ops;
15774   ops->re_set = momentary_bkpt_re_set;
15775   ops->check_status = momentary_bkpt_check_status;
15776   ops->print_it = momentary_bkpt_print_it;
15777   ops->print_mention = momentary_bkpt_print_mention;
15778
15779   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15780   ops = &longjmp_breakpoint_ops;
15781   *ops = momentary_breakpoint_ops;
15782   ops->dtor = longjmp_bkpt_dtor;
15783
15784   /* Probe breakpoints.  */
15785   ops = &bkpt_probe_breakpoint_ops;
15786   *ops = bkpt_breakpoint_ops;
15787   ops->insert_location = bkpt_probe_insert_location;
15788   ops->remove_location = bkpt_probe_remove_location;
15789   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15790   ops->decode_linespec = bkpt_probe_decode_linespec;
15791
15792   /* Watchpoints.  */
15793   ops = &watchpoint_breakpoint_ops;
15794   *ops = base_breakpoint_ops;
15795   ops->dtor = dtor_watchpoint;
15796   ops->re_set = re_set_watchpoint;
15797   ops->insert_location = insert_watchpoint;
15798   ops->remove_location = remove_watchpoint;
15799   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15800   ops->check_status = check_status_watchpoint;
15801   ops->resources_needed = resources_needed_watchpoint;
15802   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15803   ops->print_it = print_it_watchpoint;
15804   ops->print_mention = print_mention_watchpoint;
15805   ops->print_recreate = print_recreate_watchpoint;
15806   ops->explains_signal = explains_signal_watchpoint;
15807
15808   /* Masked watchpoints.  */
15809   ops = &masked_watchpoint_breakpoint_ops;
15810   *ops = watchpoint_breakpoint_ops;
15811   ops->insert_location = insert_masked_watchpoint;
15812   ops->remove_location = remove_masked_watchpoint;
15813   ops->resources_needed = resources_needed_masked_watchpoint;
15814   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15815   ops->print_it = print_it_masked_watchpoint;
15816   ops->print_one_detail = print_one_detail_masked_watchpoint;
15817   ops->print_mention = print_mention_masked_watchpoint;
15818   ops->print_recreate = print_recreate_masked_watchpoint;
15819
15820   /* Tracepoints.  */
15821   ops = &tracepoint_breakpoint_ops;
15822   *ops = base_breakpoint_ops;
15823   ops->re_set = tracepoint_re_set;
15824   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15825   ops->print_one_detail = tracepoint_print_one_detail;
15826   ops->print_mention = tracepoint_print_mention;
15827   ops->print_recreate = tracepoint_print_recreate;
15828   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15829   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15830   ops->decode_linespec = tracepoint_decode_linespec;
15831
15832   /* Probe tracepoints.  */
15833   ops = &tracepoint_probe_breakpoint_ops;
15834   *ops = tracepoint_breakpoint_ops;
15835   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15836   ops->decode_linespec = tracepoint_probe_decode_linespec;
15837
15838   /* Static tracepoints with marker (`-m').  */
15839   ops = &strace_marker_breakpoint_ops;
15840   *ops = tracepoint_breakpoint_ops;
15841   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15842   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15843   ops->decode_linespec = strace_marker_decode_linespec;
15844
15845   /* Fork catchpoints.  */
15846   ops = &catch_fork_breakpoint_ops;
15847   *ops = base_breakpoint_ops;
15848   ops->insert_location = insert_catch_fork;
15849   ops->remove_location = remove_catch_fork;
15850   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15851   ops->print_it = print_it_catch_fork;
15852   ops->print_one = print_one_catch_fork;
15853   ops->print_mention = print_mention_catch_fork;
15854   ops->print_recreate = print_recreate_catch_fork;
15855
15856   /* Vfork catchpoints.  */
15857   ops = &catch_vfork_breakpoint_ops;
15858   *ops = base_breakpoint_ops;
15859   ops->insert_location = insert_catch_vfork;
15860   ops->remove_location = remove_catch_vfork;
15861   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15862   ops->print_it = print_it_catch_vfork;
15863   ops->print_one = print_one_catch_vfork;
15864   ops->print_mention = print_mention_catch_vfork;
15865   ops->print_recreate = print_recreate_catch_vfork;
15866
15867   /* Exec catchpoints.  */
15868   ops = &catch_exec_breakpoint_ops;
15869   *ops = base_breakpoint_ops;
15870   ops->dtor = dtor_catch_exec;
15871   ops->insert_location = insert_catch_exec;
15872   ops->remove_location = remove_catch_exec;
15873   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15874   ops->print_it = print_it_catch_exec;
15875   ops->print_one = print_one_catch_exec;
15876   ops->print_mention = print_mention_catch_exec;
15877   ops->print_recreate = print_recreate_catch_exec;
15878
15879   /* Syscall catchpoints.  */
15880   ops = &catch_syscall_breakpoint_ops;
15881   *ops = base_breakpoint_ops;
15882   ops->dtor = dtor_catch_syscall;
15883   ops->insert_location = insert_catch_syscall;
15884   ops->remove_location = remove_catch_syscall;
15885   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15886   ops->print_it = print_it_catch_syscall;
15887   ops->print_one = print_one_catch_syscall;
15888   ops->print_mention = print_mention_catch_syscall;
15889   ops->print_recreate = print_recreate_catch_syscall;
15890
15891   /* Solib-related catchpoints.  */
15892   ops = &catch_solib_breakpoint_ops;
15893   *ops = base_breakpoint_ops;
15894   ops->dtor = dtor_catch_solib;
15895   ops->insert_location = insert_catch_solib;
15896   ops->remove_location = remove_catch_solib;
15897   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15898   ops->check_status = check_status_catch_solib;
15899   ops->print_it = print_it_catch_solib;
15900   ops->print_one = print_one_catch_solib;
15901   ops->print_mention = print_mention_catch_solib;
15902   ops->print_recreate = print_recreate_catch_solib;
15903
15904   ops = &dprintf_breakpoint_ops;
15905   *ops = bkpt_base_breakpoint_ops;
15906   ops->re_set = dprintf_re_set;
15907   ops->resources_needed = bkpt_resources_needed;
15908   ops->print_it = bkpt_print_it;
15909   ops->print_mention = bkpt_print_mention;
15910   ops->print_recreate = dprintf_print_recreate;
15911   ops->after_condition_true = dprintf_after_condition_true;
15912 }
15913
15914 /* Chain containing all defined "enable breakpoint" subcommands.  */
15915
15916 static struct cmd_list_element *enablebreaklist = NULL;
15917
15918 void
15919 _initialize_breakpoint (void)
15920 {
15921   struct cmd_list_element *c;
15922
15923   initialize_breakpoint_ops ();
15924
15925   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15926   observer_attach_inferior_exit (clear_syscall_counts);
15927   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15928
15929   breakpoint_objfile_key
15930     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15931
15932   catch_syscall_inferior_data
15933     = register_inferior_data_with_cleanup (NULL,
15934                                            catch_syscall_inferior_data_cleanup);
15935
15936   breakpoint_chain = 0;
15937   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15938      before a breakpoint is set.  */
15939   breakpoint_count = 0;
15940
15941   tracepoint_count = 0;
15942
15943   add_com ("ignore", class_breakpoint, ignore_command, _("\
15944 Set ignore-count of breakpoint number N to COUNT.\n\
15945 Usage is `ignore N COUNT'."));
15946   if (xdb_commands)
15947     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15948
15949   add_com ("commands", class_breakpoint, commands_command, _("\
15950 Set commands to be executed when a breakpoint is hit.\n\
15951 Give breakpoint number as argument after \"commands\".\n\
15952 With no argument, the targeted breakpoint is the last one set.\n\
15953 The commands themselves follow starting on the next line.\n\
15954 Type a line containing \"end\" to indicate the end of them.\n\
15955 Give \"silent\" as the first line to make the breakpoint silent;\n\
15956 then no output is printed when it is hit, except what the commands print."));
15957
15958   c = add_com ("condition", class_breakpoint, condition_command, _("\
15959 Specify breakpoint number N to break only if COND is true.\n\
15960 Usage is `condition N COND', where N is an integer and COND is an\n\
15961 expression to be evaluated whenever breakpoint N is reached."));
15962   set_cmd_completer (c, condition_completer);
15963
15964   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15965 Set a temporary breakpoint.\n\
15966 Like \"break\" except the breakpoint is only temporary,\n\
15967 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15968 by using \"enable delete\" on the breakpoint number.\n\
15969 \n"
15970 BREAK_ARGS_HELP ("tbreak")));
15971   set_cmd_completer (c, location_completer);
15972
15973   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15974 Set a hardware assisted breakpoint.\n\
15975 Like \"break\" except the breakpoint requires hardware support,\n\
15976 some target hardware may not have this support.\n\
15977 \n"
15978 BREAK_ARGS_HELP ("hbreak")));
15979   set_cmd_completer (c, location_completer);
15980
15981   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15982 Set a temporary hardware assisted breakpoint.\n\
15983 Like \"hbreak\" except the breakpoint is only temporary,\n\
15984 so it will be deleted when hit.\n\
15985 \n"
15986 BREAK_ARGS_HELP ("thbreak")));
15987   set_cmd_completer (c, location_completer);
15988
15989   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15990 Enable some breakpoints.\n\
15991 Give breakpoint numbers (separated by spaces) as arguments.\n\
15992 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15993 This is used to cancel the effect of the \"disable\" command.\n\
15994 With a subcommand you can enable temporarily."),
15995                   &enablelist, "enable ", 1, &cmdlist);
15996   if (xdb_commands)
15997     add_com ("ab", class_breakpoint, enable_command, _("\
15998 Enable some breakpoints.\n\
15999 Give breakpoint numbers (separated by spaces) as arguments.\n\
16000 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16001 This is used to cancel the effect of the \"disable\" command.\n\
16002 With a subcommand you can enable temporarily."));
16003
16004   add_com_alias ("en", "enable", class_breakpoint, 1);
16005
16006   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16007 Enable some breakpoints.\n\
16008 Give breakpoint numbers (separated by spaces) as arguments.\n\
16009 This is used to cancel the effect of the \"disable\" command.\n\
16010 May be abbreviated to simply \"enable\".\n"),
16011                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16012
16013   add_cmd ("once", no_class, enable_once_command, _("\
16014 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16015 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16016            &enablebreaklist);
16017
16018   add_cmd ("delete", no_class, enable_delete_command, _("\
16019 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16020 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16021            &enablebreaklist);
16022
16023   add_cmd ("count", no_class, enable_count_command, _("\
16024 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16025 If a breakpoint is hit while enabled in this fashion,\n\
16026 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16027            &enablebreaklist);
16028
16029   add_cmd ("delete", no_class, enable_delete_command, _("\
16030 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16031 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16032            &enablelist);
16033
16034   add_cmd ("once", no_class, enable_once_command, _("\
16035 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16036 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16037            &enablelist);
16038
16039   add_cmd ("count", no_class, enable_count_command, _("\
16040 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16041 If a breakpoint is hit while enabled in this fashion,\n\
16042 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16043            &enablelist);
16044
16045   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16046 Disable some breakpoints.\n\
16047 Arguments are breakpoint numbers with spaces in between.\n\
16048 To disable all breakpoints, give no argument.\n\
16049 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16050                   &disablelist, "disable ", 1, &cmdlist);
16051   add_com_alias ("dis", "disable", class_breakpoint, 1);
16052   add_com_alias ("disa", "disable", class_breakpoint, 1);
16053   if (xdb_commands)
16054     add_com ("sb", class_breakpoint, disable_command, _("\
16055 Disable some breakpoints.\n\
16056 Arguments are breakpoint numbers with spaces in between.\n\
16057 To disable all breakpoints, give no argument.\n\
16058 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16059
16060   add_cmd ("breakpoints", class_alias, disable_command, _("\
16061 Disable some breakpoints.\n\
16062 Arguments are breakpoint numbers with spaces in between.\n\
16063 To disable all breakpoints, give no argument.\n\
16064 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16065 This command may be abbreviated \"disable\"."),
16066            &disablelist);
16067
16068   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16069 Delete some breakpoints or auto-display expressions.\n\
16070 Arguments are breakpoint numbers with spaces in between.\n\
16071 To delete all breakpoints, give no argument.\n\
16072 \n\
16073 Also a prefix command for deletion of other GDB objects.\n\
16074 The \"unset\" command is also an alias for \"delete\"."),
16075                   &deletelist, "delete ", 1, &cmdlist);
16076   add_com_alias ("d", "delete", class_breakpoint, 1);
16077   add_com_alias ("del", "delete", class_breakpoint, 1);
16078   if (xdb_commands)
16079     add_com ("db", class_breakpoint, delete_command, _("\
16080 Delete some breakpoints.\n\
16081 Arguments are breakpoint numbers with spaces in between.\n\
16082 To delete all breakpoints, give no argument.\n"));
16083
16084   add_cmd ("breakpoints", class_alias, delete_command, _("\
16085 Delete some breakpoints or auto-display expressions.\n\
16086 Arguments are breakpoint numbers with spaces in between.\n\
16087 To delete all breakpoints, give no argument.\n\
16088 This command may be abbreviated \"delete\"."),
16089            &deletelist);
16090
16091   add_com ("clear", class_breakpoint, clear_command, _("\
16092 Clear breakpoint at specified line or function.\n\
16093 Argument may be line number, function name, or \"*\" and an address.\n\
16094 If line number is specified, all breakpoints in that line are cleared.\n\
16095 If function is specified, breakpoints at beginning of function are cleared.\n\
16096 If an address is specified, breakpoints at that address are cleared.\n\
16097 \n\
16098 With no argument, clears all breakpoints in the line that the selected frame\n\
16099 is executing in.\n\
16100 \n\
16101 See also the \"delete\" command which clears breakpoints by number."));
16102   add_com_alias ("cl", "clear", class_breakpoint, 1);
16103
16104   c = add_com ("break", class_breakpoint, break_command, _("\
16105 Set breakpoint at specified line or function.\n"
16106 BREAK_ARGS_HELP ("break")));
16107   set_cmd_completer (c, location_completer);
16108
16109   add_com_alias ("b", "break", class_run, 1);
16110   add_com_alias ("br", "break", class_run, 1);
16111   add_com_alias ("bre", "break", class_run, 1);
16112   add_com_alias ("brea", "break", class_run, 1);
16113
16114   if (xdb_commands)
16115    add_com_alias ("ba", "break", class_breakpoint, 1);
16116
16117   if (dbx_commands)
16118     {
16119       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16120 Break in function/address or break at a line in the current file."),
16121                              &stoplist, "stop ", 1, &cmdlist);
16122       add_cmd ("in", class_breakpoint, stopin_command,
16123                _("Break in function or address."), &stoplist);
16124       add_cmd ("at", class_breakpoint, stopat_command,
16125                _("Break at a line in the current file."), &stoplist);
16126       add_com ("status", class_info, breakpoints_info, _("\
16127 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16128 The \"Type\" column indicates one of:\n\
16129 \tbreakpoint     - normal breakpoint\n\
16130 \twatchpoint     - watchpoint\n\
16131 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16132 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16133 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16134 address and file/line number respectively.\n\
16135 \n\
16136 Convenience variable \"$_\" and default examine address for \"x\"\n\
16137 are set to the address of the last breakpoint listed unless the command\n\
16138 is prefixed with \"server \".\n\n\
16139 Convenience variable \"$bpnum\" contains the number of the last\n\
16140 breakpoint set."));
16141     }
16142
16143   add_info ("breakpoints", breakpoints_info, _("\
16144 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16145 The \"Type\" column indicates one of:\n\
16146 \tbreakpoint     - normal breakpoint\n\
16147 \twatchpoint     - watchpoint\n\
16148 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16149 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16150 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16151 address and file/line number respectively.\n\
16152 \n\
16153 Convenience variable \"$_\" and default examine address for \"x\"\n\
16154 are set to the address of the last breakpoint listed unless the command\n\
16155 is prefixed with \"server \".\n\n\
16156 Convenience variable \"$bpnum\" contains the number of the last\n\
16157 breakpoint set."));
16158
16159   add_info_alias ("b", "breakpoints", 1);
16160
16161   if (xdb_commands)
16162     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16163 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16164 The \"Type\" column indicates one of:\n\
16165 \tbreakpoint     - normal breakpoint\n\
16166 \twatchpoint     - watchpoint\n\
16167 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16168 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16169 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16170 address and file/line number respectively.\n\
16171 \n\
16172 Convenience variable \"$_\" and default examine address for \"x\"\n\
16173 are set to the address of the last breakpoint listed unless the command\n\
16174 is prefixed with \"server \".\n\n\
16175 Convenience variable \"$bpnum\" contains the number of the last\n\
16176 breakpoint set."));
16177
16178   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16179 Status of all breakpoints, or breakpoint number NUMBER.\n\
16180 The \"Type\" column indicates one of:\n\
16181 \tbreakpoint     - normal breakpoint\n\
16182 \twatchpoint     - watchpoint\n\
16183 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16184 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16185 \tuntil          - internal breakpoint used by the \"until\" command\n\
16186 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16187 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16188 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16189 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16190 address and file/line number respectively.\n\
16191 \n\
16192 Convenience variable \"$_\" and default examine address for \"x\"\n\
16193 are set to the address of the last breakpoint listed unless the command\n\
16194 is prefixed with \"server \".\n\n\
16195 Convenience variable \"$bpnum\" contains the number of the last\n\
16196 breakpoint set."),
16197            &maintenanceinfolist);
16198
16199   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16200 Set catchpoints to catch events."),
16201                   &catch_cmdlist, "catch ",
16202                   0/*allow-unknown*/, &cmdlist);
16203
16204   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16205 Set temporary catchpoints to catch events."),
16206                   &tcatch_cmdlist, "tcatch ",
16207                   0/*allow-unknown*/, &cmdlist);
16208
16209   add_catch_command ("fork", _("Catch calls to fork."),
16210                      catch_fork_command_1,
16211                      NULL,
16212                      (void *) (uintptr_t) catch_fork_permanent,
16213                      (void *) (uintptr_t) catch_fork_temporary);
16214   add_catch_command ("vfork", _("Catch calls to vfork."),
16215                      catch_fork_command_1,
16216                      NULL,
16217                      (void *) (uintptr_t) catch_vfork_permanent,
16218                      (void *) (uintptr_t) catch_vfork_temporary);
16219   add_catch_command ("exec", _("Catch calls to exec."),
16220                      catch_exec_command_1,
16221                      NULL,
16222                      CATCH_PERMANENT,
16223                      CATCH_TEMPORARY);
16224   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16225 Usage: catch load [REGEX]\n\
16226 If REGEX is given, only stop for libraries matching the regular expression."),
16227                      catch_load_command_1,
16228                      NULL,
16229                      CATCH_PERMANENT,
16230                      CATCH_TEMPORARY);
16231   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16232 Usage: catch unload [REGEX]\n\
16233 If REGEX is given, only stop for libraries matching the regular expression."),
16234                      catch_unload_command_1,
16235                      NULL,
16236                      CATCH_PERMANENT,
16237                      CATCH_TEMPORARY);
16238   add_catch_command ("syscall", _("\
16239 Catch system calls by their names and/or numbers.\n\
16240 Arguments say which system calls to catch.  If no arguments\n\
16241 are given, every system call will be caught.\n\
16242 Arguments, if given, should be one or more system call names\n\
16243 (if your system supports that), or system call numbers."),
16244                      catch_syscall_command_1,
16245                      catch_syscall_completer,
16246                      CATCH_PERMANENT,
16247                      CATCH_TEMPORARY);
16248
16249   c = add_com ("watch", class_breakpoint, watch_command, _("\
16250 Set a watchpoint for an expression.\n\
16251 Usage: watch [-l|-location] EXPRESSION\n\
16252 A watchpoint stops execution of your program whenever the value of\n\
16253 an expression changes.\n\
16254 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16255 the memory to which it refers."));
16256   set_cmd_completer (c, expression_completer);
16257
16258   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16259 Set a read watchpoint for an expression.\n\
16260 Usage: rwatch [-l|-location] EXPRESSION\n\
16261 A watchpoint stops execution of your program whenever the value of\n\
16262 an expression is read.\n\
16263 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16264 the memory to which it refers."));
16265   set_cmd_completer (c, expression_completer);
16266
16267   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16268 Set a watchpoint for an expression.\n\
16269 Usage: awatch [-l|-location] EXPRESSION\n\
16270 A watchpoint stops execution of your program whenever the value of\n\
16271 an expression is either read or written.\n\
16272 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16273 the memory to which it refers."));
16274   set_cmd_completer (c, expression_completer);
16275
16276   add_info ("watchpoints", watchpoints_info, _("\
16277 Status of specified watchpoints (all watchpoints if no argument)."));
16278
16279   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16280      respond to changes - contrary to the description.  */
16281   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16282                             &can_use_hw_watchpoints, _("\
16283 Set debugger's willingness to use watchpoint hardware."), _("\
16284 Show debugger's willingness to use watchpoint hardware."), _("\
16285 If zero, gdb will not use hardware for new watchpoints, even if\n\
16286 such is available.  (However, any hardware watchpoints that were\n\
16287 created before setting this to nonzero, will continue to use watchpoint\n\
16288 hardware.)"),
16289                             NULL,
16290                             show_can_use_hw_watchpoints,
16291                             &setlist, &showlist);
16292
16293   can_use_hw_watchpoints = 1;
16294
16295   /* Tracepoint manipulation commands.  */
16296
16297   c = add_com ("trace", class_breakpoint, trace_command, _("\
16298 Set a tracepoint at specified line or function.\n\
16299 \n"
16300 BREAK_ARGS_HELP ("trace") "\n\
16301 Do \"help tracepoints\" for info on other tracepoint commands."));
16302   set_cmd_completer (c, location_completer);
16303
16304   add_com_alias ("tp", "trace", class_alias, 0);
16305   add_com_alias ("tr", "trace", class_alias, 1);
16306   add_com_alias ("tra", "trace", class_alias, 1);
16307   add_com_alias ("trac", "trace", class_alias, 1);
16308
16309   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16310 Set a fast tracepoint at specified line or function.\n\
16311 \n"
16312 BREAK_ARGS_HELP ("ftrace") "\n\
16313 Do \"help tracepoints\" for info on other tracepoint commands."));
16314   set_cmd_completer (c, location_completer);
16315
16316   c = add_com ("strace", class_breakpoint, strace_command, _("\
16317 Set a static tracepoint at specified line, function or marker.\n\
16318 \n\
16319 strace [LOCATION] [if CONDITION]\n\
16320 LOCATION may be a line number, function name, \"*\" and an address,\n\
16321 or -m MARKER_ID.\n\
16322 If a line number is specified, probe the marker at start of code\n\
16323 for that line.  If a function is specified, probe the marker at start\n\
16324 of code for that function.  If an address is specified, probe the marker\n\
16325 at that exact address.  If a marker id is specified, probe the marker\n\
16326 with that name.  With no LOCATION, uses current execution address of\n\
16327 the selected stack frame.\n\
16328 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16329 This collects arbitrary user data passed in the probe point call to the\n\
16330 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16331 by printing the $_sdata variable like any other convenience variable.\n\
16332 \n\
16333 CONDITION is a boolean expression.\n\
16334 \n\
16335 Multiple tracepoints at one place are permitted, and useful if their\n\
16336 conditions are different.\n\
16337 \n\
16338 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16339 Do \"help tracepoints\" for info on other tracepoint commands."));
16340   set_cmd_completer (c, location_completer);
16341
16342   add_info ("tracepoints", tracepoints_info, _("\
16343 Status of specified tracepoints (all tracepoints if no argument).\n\
16344 Convenience variable \"$tpnum\" contains the number of the\n\
16345 last tracepoint set."));
16346
16347   add_info_alias ("tp", "tracepoints", 1);
16348
16349   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16350 Delete specified tracepoints.\n\
16351 Arguments are tracepoint numbers, separated by spaces.\n\
16352 No argument means delete all tracepoints."),
16353            &deletelist);
16354   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16355
16356   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16357 Disable specified tracepoints.\n\
16358 Arguments are tracepoint numbers, separated by spaces.\n\
16359 No argument means disable all tracepoints."),
16360            &disablelist);
16361   deprecate_cmd (c, "disable");
16362
16363   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16364 Enable specified tracepoints.\n\
16365 Arguments are tracepoint numbers, separated by spaces.\n\
16366 No argument means enable all tracepoints."),
16367            &enablelist);
16368   deprecate_cmd (c, "enable");
16369
16370   add_com ("passcount", class_trace, trace_pass_command, _("\
16371 Set the passcount for a tracepoint.\n\
16372 The trace will end when the tracepoint has been passed 'count' times.\n\
16373 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16374 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16375
16376   add_prefix_cmd ("save", class_breakpoint, save_command,
16377                   _("Save breakpoint definitions as a script."),
16378                   &save_cmdlist, "save ",
16379                   0/*allow-unknown*/, &cmdlist);
16380
16381   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16382 Save current breakpoint definitions as a script.\n\
16383 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16384 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16385 session to restore them."),
16386                &save_cmdlist);
16387   set_cmd_completer (c, filename_completer);
16388
16389   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16390 Save current tracepoint definitions as a script.\n\
16391 Use the 'source' command in another debug session to restore them."),
16392                &save_cmdlist);
16393   set_cmd_completer (c, filename_completer);
16394
16395   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16396   deprecate_cmd (c, "save tracepoints");
16397
16398   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16399 Breakpoint specific settings\n\
16400 Configure various breakpoint-specific variables such as\n\
16401 pending breakpoint behavior"),
16402                   &breakpoint_set_cmdlist, "set breakpoint ",
16403                   0/*allow-unknown*/, &setlist);
16404   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16405 Breakpoint specific settings\n\
16406 Configure various breakpoint-specific variables such as\n\
16407 pending breakpoint behavior"),
16408                   &breakpoint_show_cmdlist, "show breakpoint ",
16409                   0/*allow-unknown*/, &showlist);
16410
16411   add_setshow_auto_boolean_cmd ("pending", no_class,
16412                                 &pending_break_support, _("\
16413 Set debugger's behavior regarding pending breakpoints."), _("\
16414 Show debugger's behavior regarding pending breakpoints."), _("\
16415 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16416 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16417 an error.  If auto, an unrecognized breakpoint location results in a\n\
16418 user-query to see if a pending breakpoint should be created."),
16419                                 NULL,
16420                                 show_pending_break_support,
16421                                 &breakpoint_set_cmdlist,
16422                                 &breakpoint_show_cmdlist);
16423
16424   pending_break_support = AUTO_BOOLEAN_AUTO;
16425
16426   add_setshow_boolean_cmd ("auto-hw", no_class,
16427                            &automatic_hardware_breakpoints, _("\
16428 Set automatic usage of hardware breakpoints."), _("\
16429 Show automatic usage of hardware breakpoints."), _("\
16430 If set, the debugger will automatically use hardware breakpoints for\n\
16431 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16432 a warning will be emitted for such breakpoints."),
16433                            NULL,
16434                            show_automatic_hardware_breakpoints,
16435                            &breakpoint_set_cmdlist,
16436                            &breakpoint_show_cmdlist);
16437
16438   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16439                                 &always_inserted_mode, _("\
16440 Set mode for inserting breakpoints."), _("\
16441 Show mode for inserting breakpoints."), _("\
16442 When this mode is off, breakpoints are inserted in inferior when it is\n\
16443 resumed, and removed when execution stops.  When this mode is on,\n\
16444 breakpoints are inserted immediately and removed only when the user\n\
16445 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16446 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16447 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16448 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16449 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16450                                 NULL,
16451                                 &show_always_inserted_mode,
16452                                 &breakpoint_set_cmdlist,
16453                                 &breakpoint_show_cmdlist);
16454
16455   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16456                         condition_evaluation_enums,
16457                         &condition_evaluation_mode_1, _("\
16458 Set mode of breakpoint condition evaluation."), _("\
16459 Show mode of breakpoint condition evaluation."), _("\
16460 When this is set to \"host\", breakpoint conditions will be\n\
16461 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16462 breakpoint conditions will be downloaded to the target (if the target\n\
16463 supports such feature) and conditions will be evaluated on the target's side.\n\
16464 If this is set to \"auto\" (default), this will be automatically set to\n\
16465 \"target\" if it supports condition evaluation, otherwise it will\n\
16466 be set to \"gdb\""),
16467                            &set_condition_evaluation_mode,
16468                            &show_condition_evaluation_mode,
16469                            &breakpoint_set_cmdlist,
16470                            &breakpoint_show_cmdlist);
16471
16472   add_com ("break-range", class_breakpoint, break_range_command, _("\
16473 Set a breakpoint for an address range.\n\
16474 break-range START-LOCATION, END-LOCATION\n\
16475 where START-LOCATION and END-LOCATION can be one of the following:\n\
16476   LINENUM, for that line in the current file,\n\
16477   FILE:LINENUM, for that line in that file,\n\
16478   +OFFSET, for that number of lines after the current line\n\
16479            or the start of the range\n\
16480   FUNCTION, for the first line in that function,\n\
16481   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16482   *ADDRESS, for the instruction at that address.\n\
16483 \n\
16484 The breakpoint will stop execution of the inferior whenever it executes\n\
16485 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16486 range (including START-LOCATION and END-LOCATION)."));
16487
16488   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16489 Set a dynamic printf at specified line or function.\n\
16490 dprintf location,format string,arg1,arg2,...\n\
16491 location may be a line number, function name, or \"*\" and an address.\n\
16492 If a line number is specified, break at start of code for that line.\n\
16493 If a function is specified, break at start of code for that function."));
16494   set_cmd_completer (c, location_completer);
16495
16496   add_setshow_enum_cmd ("dprintf-style", class_support,
16497                         dprintf_style_enums, &dprintf_style, _("\
16498 Set the style of usage for dynamic printf."), _("\
16499 Show the style of usage for dynamic printf."), _("\
16500 This setting chooses how GDB will do a dynamic printf.\n\
16501 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16502 console, as with the \"printf\" command.\n\
16503 If the value is \"call\", the print is done by calling a function in your\n\
16504 program; by default printf(), but you can choose a different function or\n\
16505 output stream by setting dprintf-function and dprintf-channel."),
16506                         update_dprintf_commands, NULL,
16507                         &setlist, &showlist);
16508
16509   dprintf_function = xstrdup ("printf");
16510   add_setshow_string_cmd ("dprintf-function", class_support,
16511                           &dprintf_function, _("\
16512 Set the function to use for dynamic printf"), _("\
16513 Show the function to use for dynamic printf"), NULL,
16514                           update_dprintf_commands, NULL,
16515                           &setlist, &showlist);
16516
16517   dprintf_channel = xstrdup ("");
16518   add_setshow_string_cmd ("dprintf-channel", class_support,
16519                           &dprintf_channel, _("\
16520 Set the channel to use for dynamic printf"), _("\
16521 Show the channel to use for dynamic printf"), NULL,
16522                           update_dprintf_commands, NULL,
16523                           &setlist, &showlist);
16524
16525   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16526                            &disconnected_dprintf, _("\
16527 Set whether dprintf continues after GDB disconnects."), _("\
16528 Show whether dprintf continues after GDB disconnects."), _("\
16529 Use this to let dprintf commands continue to hit and produce output\n\
16530 even if GDB disconnects or detaches from the target."),
16531                            NULL,
16532                            NULL,
16533                            &setlist, &showlist);
16534
16535   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16536 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16537 (target agent only) This is useful for formatted output in user-defined commands."));
16538
16539   automatic_hardware_breakpoints = 1;
16540
16541   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16542 }