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